From 06f89491595baeb4097a7dc68222a9818ad44cbf Mon Sep 17 00:00:00 2001 From: Sebastian Kupke Date: Mon, 4 Nov 2019 09:45:10 +0100 Subject: [PATCH] Updated dependencies. --- dist/iwmlib.3rdparty.js | 14924 ++++++++-------- dist/iwmlib.3rdparty.min.js | 2 +- dist/iwmlib.js | 25 - dist/iwmlib.pixi.js | 19 - .../bonus-files-for-npm-users/GSDevTools.js | 8 +- .../MorphSVGPlugin.js | 8 +- .../umd/GSDevTools.js | 12 +- .../umd/MorphSVGPlugin.js | 8 +- lib/3rdparty/gsap/src/esm/BezierPlugin.js | 34 +- lib/3rdparty/gsap/src/esm/CSSPlugin.js | 24 +- lib/3rdparty/gsap/src/esm/CSSRulePlugin.js | 13 +- lib/3rdparty/gsap/src/esm/Draggable.js | 8 +- lib/3rdparty/gsap/src/esm/PixiPlugin.js | 18 +- lib/3rdparty/gsap/src/esm/TimelineLite.js | 65 +- lib/3rdparty/gsap/src/esm/TimelineMax.js | 53 +- lib/3rdparty/gsap/src/esm/TweenLite.js | 6 +- lib/3rdparty/gsap/src/esm/TweenMax.js | 4 +- lib/3rdparty/gsap/src/esm/TweenMaxBase.js | 19 +- lib/3rdparty/gsap/src/esm/all.js | 4 +- lib/3rdparty/gsap/src/esm/index.js | 4 +- lib/3rdparty/gsap/src/esm/package.json | 4 +- .../gsap/src/minified/TimelineLite.min.js | 6 +- .../gsap/src/minified/TimelineMax.min.js | 6 +- .../gsap/src/minified/TweenLite.min.js | 6 +- .../gsap/src/minified/TweenMax.min.js | 12 +- .../src/minified/plugins/BezierPlugin.min.js | 6 +- .../src/minified/plugins/CSSPlugin.min.js | 8 +- .../src/minified/plugins/CSSRulePlugin.min.js | 6 +- .../minified/plugins/MorphSVGPlugin.min.js | 6 +- .../src/minified/plugins/PixiPlugin.min.js | 6 +- .../gsap/src/minified/utils/Draggable.min.js | 8 +- .../gsap/src/minified/utils/GSDevTools.min.js | 10 +- .../gsap/src/uncompressed/TimelineLite.js | 65 +- .../gsap/src/uncompressed/TimelineMax.js | 114 +- .../gsap/src/uncompressed/TweenLite.js | 6 +- .../gsap/src/uncompressed/TweenMax.js | 181 +- .../src/uncompressed/plugins/BezierPlugin.js | 34 +- .../src/uncompressed/plugins/CSSPlugin.js | 24 +- .../src/uncompressed/plugins/CSSRulePlugin.js | 13 +- .../uncompressed/plugins/MorphSVGPlugin.js | 8 +- .../src/uncompressed/plugins/PixiPlugin.js | 18 +- .../gsap/src/uncompressed/utils/Draggable.js | 8 +- .../gsap/src/uncompressed/utils/GSDevTools.js | 12 +- package-lock.json | 191 +- package.json | 12 +- 45 files changed, 8019 insertions(+), 8009 deletions(-) diff --git a/dist/iwmlib.3rdparty.js b/dist/iwmlib.3rdparty.js index 9a4879a..4f197ed 100644 --- a/dist/iwmlib.3rdparty.js +++ b/dist/iwmlib.3rdparty.js @@ -47998,1109 +47998,1109 @@ var PIXI = (function (exports) { PIXI.useDeprecated(); -var e;e||(e=eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));var aa={},k;for(k in e)e.hasOwnProperty(k)&&(aa[k]=e[k]);var ba="object"===typeof window,ca="function"===typeof importScripts,da="object"===typeof process&&"function"===typeof require&&!ba&&!ca,ea=!ba&&!da&&!ca; -if(da){e.print||(e.print=function(a){process.stdout.write(a+"\n")});e.printErr||(e.printErr=function(a){process.stderr.write(a+"\n")});var fa=require("fs"),ga=require("path");e.read=function(a,b){a=ga.normalize(a);var c=fa.readFileSync(a);c||a==ga.resolve(a)||(a=path.join(__dirname,"..","src",a),c=fa.readFileSync(a));c&&!b&&(c=c.toString());return c};e.readBinary=function(a){a=e.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};e.load=function(a){ha(read(a))};e.thisProgram||(e.thisProgram= -1 0) var gc = undefined");else if(ba||ca)e.read=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},"undefined"!=typeof arguments&&(e.arguments=arguments),"undefined"!== -typeof console?(e.print||(e.print=function(a){console.log(a)}),e.printErr||(e.printErr=function(a){console.log(a)})):e.print||(e.print=function(){}),ca&&(e.load=importScripts),"undefined"===typeof e.setWindowTitle&&(e.setWindowTitle=function(a){document.title=a});else throw"Unknown runtime environment. Where are we?";function ha(a){eval.call(null,a)}!e.load&&e.read&&(e.load=function(a){ha(e.read(a))});e.print||(e.print=function(){});e.printErr||(e.printErr=e.print);e.arguments||(e.arguments=[]); -e.thisProgram||(e.thisProgram="./this.program");e.print=e.print;e.W=e.printErr;e.preRun=[];e.postRun=[];for(k in aa)aa.hasOwnProperty(k)&&(e[k]=aa[k]); -var n={rb:function(a){ka=a},fb:function(){return ka},ua:function(){return m},ba:function(a){m=a},Ka:function(a){switch(a){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;default:return"*"===a[a.length-1]?n.J:"i"===a[0]?(a=parseInt(a.substr(1)),assert(0===a%8),a/8):0}},eb:function(a){return Math.max(n.Ka(a),n.J)},ud:16,Qd:function(a,b){"double"===b||"i64"===b?a&7&&(assert(4===(a&7)),a+=4):assert(0===(a&3));return a}, -Ed:function(a,b,c){return c||"i64"!=a&&"double"!=a?a?Math.min(b||(a?n.eb(a):0),n.J):Math.min(b,8):8},L:function(a,b,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,b),e["dynCall_"+a].apply(null,c)):e["dynCall_"+a].call(null,b)},Z:[],Xa:function(a){for(var b=0;b=t&&!ma()?(r=b,0): -b},ja:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},Nd:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},Ua:8,J:4,vd:0};e.Runtime=n;n.addFunction=n.Xa;n.removeFunction=n.nb;var na=!1,oa,pa,ka;function assert(a,b){a||x("Assertion failed: "+b)}function qa(a){var b=e["_"+a];if(!b)try{b=eval("_"+a)}catch(c){}assert(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return b}var ra,sa; -(function(){function a(a){a=a.toString().match(d).slice(1);return{arguments:a[0],body:a[1],returnValue:a[2]}}var b={stackSave:function(){n.ua()},stackRestore:function(){n.ba()},arrayToC:function(a){var b=n.aa(a.length);ta(a,b);return b},stringToC:function(a){var b=0;null!==a&&void 0!==a&&0!==a&&(b=n.aa((a.length<<2)+1),ua(a,b));return b}},c={string:b.stringToC,array:b.arrayToC};sa=function(a,b,d,f,g){a=qa(a);var v=[],B=0;if(f)for(var G=0;G>0]=b;break;case "i8":y[a>>0]=b;break;case "i16":z[a>>1]=b;break;case "i32":C[a>>2]=b;break;case "i64":pa=[b>>>0,(oa=b,1<=+xa(oa)?0>>0:~~+Aa((oa-+(~~oa>>>0))/4294967296)>>>0:0)];C[a>>2]=pa[0];C[a+4>>2]=pa[1];break;case "float":Ba[a>>2]=b;break;case "double":Ca[a>>3]=b;break;default:x("invalid type for setValue: "+c)}}e.setValue=wa; -function Da(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return y[a>>0];case "i8":return y[a>>0];case "i16":return z[a>>1];case "i32":return C[a>>2];case "i64":return C[a>>2];case "float":return Ba[a>>2];case "double":return Ca[a>>3];default:x("invalid type for setValue: "+b)}return null}e.getValue=Da;e.ALLOC_NORMAL=0;e.ALLOC_STACK=1;e.ALLOC_STATIC=2;e.ALLOC_DYNAMIC=3;e.ALLOC_NONE=4; -function D(a,b,c,d){var f,g;"number"===typeof a?(f=!0,g=a):(f=!1,g=a.length);var h="string"===typeof b?b:null;c=4==c?d:[Ea,n.aa,n.Ra,n.R][void 0===c?2:c](Math.max(g,h?1:b.length));if(f){d=c;assert(0==(c&3));for(a=c+(g&-4);d>2]=0;for(a=c+g;d>0]=0;return c}if("i8"===h)return a.subarray||a.slice?E.set(a,c):E.set(new Uint8Array(a),c),c;d=0;for(var l,w;d>0];c|=d;if(0==d&&!b)break;f++;if(b&&f==b)break}b||(b=f);d="";if(128>c){for(;0>0];if(!c)return b;b+=String.fromCharCode(c)}}; -e.stringToAscii=function(a,b){return Ia(a,b,!1)}; -function Ja(a,b){for(var c,d,f,g,h,l,w="";;){c=a[b++];if(!c)return w;c&128?(d=a[b++]&63,192==(c&224)?w+=String.fromCharCode((c&31)<<6|d):(f=a[b++]&63,224==(c&240)?c=(c&15)<<12|d<<6|f:(g=a[b++]&63,240==(c&248)?c=(c&7)<<18|d<<12|f<<6|g:(h=a[b++]&63,248==(c&252)?c=(c&3)<<24|d<<18|f<<12|g<<6|h:(l=a[b++]&63,c=(c&1)<<30|d<<24|f<<18|g<<12|h<<6|l))),65536>c?w+=String.fromCharCode(c):(c-=65536,w+=String.fromCharCode(55296|c>>10,56320|c&1023)))):w+=String.fromCharCode(c)}}e.UTF8ArrayToString=Ja; -e.UTF8ToString=function(a){return Ja(E,a)}; -function Ka(a,b,c,d){if(!(0=h&&(h=65536+((h&1023)<<10)|a.charCodeAt(++g)&1023);if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(2097151>=h){if(c+3>=d)break;b[c++]=240|h>>18}else{if(67108863>=h){if(c+4>=d)break;b[c++]=248|h>>24}else{if(c+5>=d)break;b[c++]=252|h>>30;b[c++]=128|h>>24&63}b[c++]=128|h>>18&63}b[c++]=128| -h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0;return c-f}e.stringToUTF8Array=Ka;e.stringToUTF8=function(a,b,c){return Ka(a,E,b,c)};function La(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:2097151>=d?b+4:67108863>=d?b+5:b+6}return b}e.lengthBytesUTF8=La;e.UTF16ToString=function(a){for(var b=0,c="";;){var d=z[a+2*b>>1];if(0==d)return c;++b;c+=String.fromCharCode(d)}}; -e.stringToUTF16=function(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),b+=2;z[b>>1]=0;return b-d};e.lengthBytesUTF16=function(a){return 2*a.length};e.UTF32ToString=function(a){for(var b=0,c="";;){var d=C[a+4*b>>2];if(0==d)return c;++b;65536<=d?(d=d-65536,c+=String.fromCharCode(55296|d>>10,56320|d&1023)):c+=String.fromCharCode(d)}}; -e.stringToUTF32=function(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f=g)var h=a.charCodeAt(++f),g=65536+((g&1023)<<10)|h&1023;C[b>>2]=g;b+=4;if(b+4>c)break}C[b>>2]=0;return b-d};e.lengthBytesUTF32=function(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}; -function Ma(a){function b(c,d,f){d=d||Infinity;var g="",h=[],v;if("N"===a[l]){l++;"K"===a[l]&&l++;for(v=[];"E"!==a[l];)if("S"===a[l]){l++;var A=a.indexOf("_",l);v.push(u[a.substring(l,A)||0]||"?");l=A+1}else if("C"===a[l])v.push(v[v.length-1]),l+=2;else{var A=parseInt(a.substr(l)),U=A.toString().length;if(!A||!U){l--;break}var Ub=a.substr(l+U,A);v.push(Ub);u.push(Ub);l+=U+A}l++;v=v.join("::");d--;if(0===d)return c?[v]:v}else if(("K"===a[l]||q&&"L"===a[l])&&l++,A=parseInt(a.substr(l)))U=A.toString().length, -v=a.substr(l+U,A),l+=U+A;q=!1;"I"===a[l]?(l++,A=b(!0),U=b(!0,1,!0),g+=U[0]+" "+v+"<"+A.join(", ")+">"):g=v;a:for(;l=a)return!1;for(;t<=r;)if(t=a)return!1;try{if(ArrayBuffer.p)buffer=ArrayBuffer.p(buffer,t);else{var c=y;buffer=new ArrayBuffer(t)}}catch(d){return!1}if(!Xa(buffer))return!1;e.buffer=buffer;e.HEAP8=y=new Int8Array(buffer);e.HEAP16=z=new Int16Array(buffer);e.HEAP32=C=new Int32Array(buffer);e.HEAPU8=E=new Uint8Array(buffer);e.HEAPU16=Ra=new Uint16Array(buffer);e.HEAPU32=Sa= -new Uint32Array(buffer);e.HEAPF32=Ba=new Float32Array(buffer);e.HEAPF64=Ca=new Float64Array(buffer);ArrayBuffer.p||y.set(c);return!0}var Ya;try{Ya=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get),Ya(new ArrayBuffer(4))}catch(Za){Ya=function(a){return a.byteLength}}for(var $a=e.TOTAL_STACK||5242880,t=e.TOTAL_MEMORY||16777216,F=65536;FF?2*F:F+16777216;F=Math.max(F,16777216);F!==t&&(t=F); -assert("undefined"!==typeof Int32Array&&"undefined"!==typeof Float64Array&&!!(new Int32Array(1)).subarray&&!!(new Int32Array(1)).set,"JS engine does not provide full typed array support");var buffer;buffer=new ArrayBuffer(t);y=new Int8Array(buffer);z=new Int16Array(buffer);C=new Int32Array(buffer);E=new Uint8Array(buffer);Ra=new Uint16Array(buffer);Sa=new Uint32Array(buffer);Ba=new Float32Array(buffer);Ca=new Float64Array(buffer);C[0]=255;assert(255===E[0]&&0===E[3],"Typed arrays 2 must be run on a little-endian system"); -e.HEAP=void 0;e.buffer=buffer;e.HEAP8=y;e.HEAP16=z;e.HEAP32=C;e.HEAPU8=E;e.HEAPU16=Ra;e.HEAPU32=Sa;e.HEAPF32=Ba;e.HEAPF64=Ca;function ab(a){for(;0>0]=a[c],c+=1}e.writeStringToMemory=ua;function ta(a,b){for(var c=0;c>0]=a[c]}e.writeArrayToMemory=ta; -function Ia(a,b,c){for(var d=0;d>0]=a.charCodeAt(d);c||(y[b>>0]=0)}e.writeAsciiToMemory=Ia;Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(a,b){var c=a&65535,d=b&65535;return c*d+((a>>>16)*d+c*(b>>>16)<<16)|0});Math.Jd=Math.imul;Math.clz32||(Math.clz32=function(a){a=a>>>0;for(var b=0;32>b;b++)if(a&1<<31-b)return b;return 32});Math.Ad=Math.clz32;var xa=Math.abs,Aa=Math.ceil,za=Math.floor,ya=Math.min,I=0,ib=null,jb=null; -function kb(){I++;e.monitorRunDependencies&&e.monitorRunDependencies(I)}e.addRunDependency=kb;function lb(){I--;e.monitorRunDependencies&&e.monitorRunDependencies(I);if(0==I&&(null!==ib&&(clearInterval(ib),ib=null),jb)){var a=jb;jb=null;a()}}e.removeRunDependency=lb;e.preloadedImages={};e.preloadedAudios={};Ta=8;la=Ta+5888;cb.push(); -D([124,0,0,0,98,7,0,0,124,0,0,0,111,7,0,0,164,0,0,0,124,7,0,0,16,0,0,0,0,0,0,0,164,0,0,0,157,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,227,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,191,7,0,0,56,0,0,0,0,0,0,0,164,0,0,0,5,8,0,0,40,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,114,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,124,1,0,0,236,1,0,0,236,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,231,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,40,37,117,41,58,32,65,115,115,101,114,116,105,111,110,32,102,97,105,108,117,114,101,58,32,34,37,115,34,10,0,109,95,115,105,122,101,32,60,61,32,109,95,99,97,112,97,99,105,116,121,0,46,47,99,114,110,95,100,101,99,111,109,112,46,104,0,109,105, -110,95,110,101,119,95,99,97,112,97,99,105,116,121,32,60,32,40,48,120,55,70,70,70,48,48,48,48,85,32,47,32,101,108,101,109,101,110,116,95,115,105,122,101,41,0,110,101,119,95,99,97,112,97,99,105,116,121,32,38,38,32,40,110,101,119,95,99,97,112,97,99,105,116,121,32,62,32,109,95,99,97,112,97,99,105,116,121,41,0,110,117,109,95,99,111,100,101,115,91,99,93,0,115,111,114,116,101,100,95,112,111,115,32,60,32,116,111,116,97,108,95,117,115,101,100,95,115,121,109,115,0,112,67,111,100,101,115,105,122,101,115,91, -115,121,109,95,105,110,100,101,120,93,32,61,61,32,99,111,100,101,115,105,122,101,0,116,32,60,32,40,49,85,32,60,60,32,116,97,98,108,101,95,98,105,116,115,41,0,109,95,108,111,111,107,117,112,91,116,93,32,61,61,32,99,85,73,78,84,51,50,95,77,65,88,0,99,114,110,100,95,109,97,108,108,111,99,58,32,115,105,122,101,32,116,111,111,32,98,105,103,0,99,114,110,100,95,109,97,108,108,111,99,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,40,40,117,105,110,116,51,50,41,112,95,110,101,119,32,38,32,40,67, -82,78,68,95,77,73,78,95,65,76,76,79,67,95,65,76,73,71,78,77,69,78,84,32,45,32,49,41,41,32,61,61,32,48,0,99,114,110,100,95,114,101,97,108,108,111,99,58,32,98,97,100,32,112,116,114,0,99,114,110,100,95,102,114,101,101,58,32,98,97,100,32,112,116,114,0,102,97,108,115,101,0,40,116,111,116,97,108,95,115,121,109,115,32,62,61,32,49,41,32,38,38,32,40,116,111,116,97,108,95,115,121,109,115,32,60,61,32,112,114,101,102,105,120,95,99,111,100,105,110,103,58,58,99,77,97,120,83,117,112,112,111,114,116,101,100,83,121, -109,115,41,0,17,18,19,20,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,16,48,0,110,117,109,95,98,105,116,115,32,60,61,32,51,50,85,0,109,95,98,105,116,95,99,111,117,110,116,32,60,61,32,99,66,105,116,66,117,102,83,105,122,101,0,116,32,33,61,32,99,85,73,78,84,51,50,95,77,65,88,0,109,111,100,101,108,46,109,95,99,111,100,101,95,115,105,122,101,115,91,115,121,109,93,32,61,61,32,108,101,110,0,0,2,3,1,0,2,3,4,5,6,7,1,40,108,101,110,32,62,61,32,49,41,32,38,38,32,40,108,101,110,32,60,61,32,99,77,97,120,69,120,112, -101,99,116,101,100,67,111,100,101,83,105,122,101,41,0,105,32,60,32,109,95,115,105,122,101,0,110,101,120,116,95,108,101,118,101,108,95,111,102,115,32,62,32,99,117,114,95,108,101,118,101,108,95,111,102,115,0,1,2,2,3,3,3,3,4,0,0,0,0,0,0,1,1,0,1,0,1,0,0,1,2,1,2,0,0,0,1,0,2,1,0,2,0,0,1,2,3,110,117,109,32,38,38,32,40,110,117,109,32,61,61,32,126,110,117,109,95,99,104,101,99,107,41,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97, -98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115, -105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114, -32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32, -101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95, -96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117, -99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112, -116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101, -116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100, -100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116, -111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111, -99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112, -101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111, -117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115, -32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117, -112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101, -0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116, -32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100, -105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0, -0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0, -0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",4,n.Ua);var mb=n.ja(D(12,"i8",2),8);assert(0==mb%8);e._i64Subtract=nb; -function ob(a){e.___errno_location&&(C[e.___errno_location()>>2]=a);return a} -var J={I:1,F:2,ed:3,bc:4,H:5,Aa:6,vb:7,zc:8,ea:9,Jb:10,va:11,qd:11,Ta:12,da:13,Vb:14,Lc:15,fa:16,wa:17,rd:18,ha:19,ya:20,P:21,q:22,uc:23,Sa:24,Q:25,nd:26,Wb:27,Hc:28,ia:29,bd:30,nc:31,Vc:32,Sb:33,Zc:34,Dc:42,Zb:43,Kb:44,ec:45,fc:46,gc:47,mc:48,od:49,xc:50,dc:51,Pb:35,Ac:37,Bb:52,Eb:53,sd:54,vc:55,Fb:56,Gb:57,Qb:35,Hb:59,Jc:60,yc:61,kd:62,Ic:63,Ec:64,Fc:65,ad:66,Bc:67,yb:68,gd:69,Lb:70,Wc:71,pc:72,Tb:73,Db:74,Qc:76,Cb:77,$c:78,hc:79,ic:80,lc:81,kc:82,jc:83,Kc:38,za:39,qc:36,ga:40,Rc:95,Uc:96,Ob:104, -wc:105,zb:97,Yc:91,Oc:88,Gc:92,cd:108,Nb:111,wb:98,Mb:103,tc:101,rc:100,ld:110,Xb:112,Yb:113,ac:115,Ab:114,Rb:89,oc:90,Xc:93,dd:94,xb:99,sc:102,cc:106,Mc:107,md:109,pd:87,Ub:122,hd:116,Pc:95,Cc:123,$b:84,Sc:75,Ib:125,Nc:131,Tc:130,jd:86};function pb(a,b){H.push(function(){n.L("vi",a,[b])});pb.level=H.length}e._memset=qb;e._bitshift64Lshr=rb;e._bitshift64Shl=sb;function tb(){return!!tb.p}var ub=[],vb={};function wb(a,b){wb.p||(wb.p={});a in wb.p||(n.L("v",b),wb.p[a]=1)} -var xb={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system", -24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed", -44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network", -65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted", -82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available", -100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle", -122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function yb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var f=a[d];"."===f?a.splice(d,1):".."===f?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c--;c)a.unshift("..");return a}function zb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=yb(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} -function Ab(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function Bb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function Cb(){var a=Array.prototype.slice.call(arguments,0);return zb(a.join("/"))}function K(a,b){return zb(a+"/"+b)} -function Db(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=yb(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var Eb=[];function Fb(a,b){Eb[a]={input:[],output:[],N:b};Gb(a,Hb)} -var Hb={open:function(a){var b=Eb[a.g.rdev];if(!b)throw new L(J.ha);a.tty=b;a.seekable=!1},close:function(a){a.tty.N.flush(a.tty)},flush:function(a){a.tty.N.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.N.La)throw new L(J.Aa);for(var f=0,g=0;ga.e.length&& -(a.e=M.cb(a),a.o=a.e.length);if(!a.e||a.e.subarray){var c=a.e?a.e.buffer.byteLength:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.e,a.e=new Uint8Array(b),0b)a.e.length=b;else for(;a.e.length< -b;)a.e.push(0);a.o=b}},k:{D:function(a){var b={};b.dev=8192===(a.mode&61440)?a.id:1;b.ino=a.id;b.mode=a.mode;b.nlink=1;b.uid=0;b.gid=0;b.rdev=a.rdev;N(a.mode)?b.size=4096:32768===(a.mode&61440)?b.size=a.o:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.atime=new Date(a.timestamp);b.mtime=new Date(a.timestamp);b.ctime=new Date(a.timestamp);b.K=4096;b.blocks=Math.ceil(b.size/b.K);return b},u:function(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp);void 0!== -b.size&&M.ob(a,b.size)},lookup:function(){throw Mb[J.F];},T:function(a,b,c,d){return M.createNode(a,b,c,d)},rename:function(a,b,c){if(N(a.mode)){var d;try{d=Nb(b,c)}catch(f){}if(d)for(var g in d.e)throw new L(J.za);}delete a.parent.e[a.name];a.name=c;b.e[c]=a;a.parent=b},unlink:function(a,b){delete a.e[b]},rmdir:function(a,b){var c=Nb(a,b),d;for(d in c.e)throw new L(J.za);delete a.e[b]},readdir:function(a){var b=[".",".."],c;for(c in a.e)a.e.hasOwnProperty(c)&&b.push(c);return b},symlink:function(a, -b,c){a=M.createNode(a,b,41471,0);a.link=c;return a},readlink:function(a){if(40960!==(a.mode&61440))throw new L(J.q);return a.link}},n:{read:function(a,b,c,d,f){var g=a.g.e;if(f>=a.g.o)return 0;a=Math.min(a.g.o-f,d);assert(0<=a);if(8b)throw new L(J.q);return b},Ba:function(a,b,c){M.Ga(a.g,b+c);a.g.o=Math.max(a.g.o,b+c)},Na:function(a,b,c,d,f,g,h){if(32768!==(a.g.mode&61440))throw new L(J.ha);c=a.g.e;if(h&2||c.buffer!==b&&c.buffer!==b.buffer){if(0< -f||f+d>1)}catch(c){if(!c.code)throw c;throw new L(J[c.code]);}return b.mode},B:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.A.pa.root);b.reverse();return Cb.apply(null,b)},Ha:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+", -4096:"rs",4098:"rs+"},$a:function(a){a&=-32769;if(a in P.Ha)return P.Ha[a];throw new L(J.q);},k:{D:function(a){a=P.B(a);var b;try{b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new L(J[c.code]);}P.$&&!b.K&&(b.K=4096);P.$&&!b.blocks&&(b.blocks=(b.size+b.K-1)/b.K|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink,uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,K:b.K,blocks:b.blocks}},u:function(a,b){var c=P.B(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode), -a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}},lookup:function(a,b){var c=K(P.B(a),b),c=P.Ja(c);return P.createNode(a,b,c)},T:function(a,b,c,d){a=P.createNode(a,b,c,d);b=P.B(a);try{N(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(f){if(!f.code)throw f;throw new L(J[f.code]);}return a},rename:function(a,b,c){a=P.B(a);b=K(P.B(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}}, -unlink:function(a,b){var c=K(P.B(a),b);try{fs.unlinkSync(c)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}},rmdir:function(a,b){var c=K(P.B(a),b);try{fs.rmdirSync(c)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}},readdir:function(a){a=P.B(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new L(J[b.code]);}},symlink:function(a,b,c){a=K(P.B(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}},readlink:function(a){var b=P.B(a);try{return b= -fs.readlinkSync(b),b=Ob.relative(Ob.resolve(a.A.pa.root),b)}catch(c){if(!c.code)throw c;throw new L(J[c.code]);}}},n:{open:function(a){var b=P.B(a.g);try{32768===(a.g.mode&61440)&&(a.V=fs.openSync(b,P.$a(a.flags)))}catch(c){if(!c.code)throw c;throw new L(J[c.code]);}},close:function(a){try{32768===(a.g.mode&61440)&&a.V&&fs.closeSync(a.V)}catch(b){if(!b.code)throw b;throw new L(J[b.code]);}},read:function(a,b,c,d,f){if(0===d)return 0;var g=new Buffer(d),h;try{h=fs.readSync(a.V,g,0,d,f)}catch(l){throw new L(J[l.code]); -}if(0b)throw new L(J.q);return b}}};D(1,"i32*",2);D(1,"i32*",2);D(1,"i32*",2);var Pb=null,Qb=[null],Rb=[],Sb=1,Q=null,Tb=!0,R={},L=null,Mb={}; -function S(a,b){a=Db("/",a);b=b||{};if(!a)return{path:"",g:null};var c={Ia:!0,ra:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%Q.length}function Xb(a){var b=Wb(a.parent.id,a.name);a.M=Q[b];Q[b]=a}function Nb(a,b){var c;if(c=(c=Yb(a,"x"))?c:a.k.lookup?0:J.da)throw new L(c,a);for(c=Q[Wb(a.id,b)];c;c=c.M){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.k.lookup(a,b)} -function Lb(a,b,c,d){Zb||(Zb=function(a,b,c,d){a||(a=this);this.parent=a;this.A=a.A;this.U=null;this.id=Sb++;this.name=b;this.mode=c;this.k={};this.n={};this.rdev=d},Zb.prototype={},Object.defineProperties(Zb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}},kb:{get:function(){return N(this.mode)}},jb:{get:function(){return 8192===(this.mode& -61440)}}}));a=new Zb(a,b,c,d);Xb(a);return a}function N(a){return 16384===(a&61440)}var $b={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Yb(a,b){if(Tb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return J.da}else return J.da;return 0}function ac(a,b){try{return Nb(a,b),J.wa}catch(c){}return Yb(a,"wx")} -function bc(){var a;a=4096;for(var b=0;b<=a;b++)if(!Rb[b])return b;throw new L(J.Sa);}function cc(a){dc||(dc=function(){},dc.prototype={},Object.defineProperties(dc.prototype,{object:{get:function(){return this.g},set:function(a){this.g=a}},Ld:{get:function(){return 1!==(this.flags&2097155)}},Md:{get:function(){return 0!==(this.flags&2097155)}},Kd:{get:function(){return this.flags&1024}}}));var b=new dc,c;for(c in a)b[c]=a[c];a=b;b=bc();a.fd=b;return Rb[b]=a} -var Kb={open:function(a){a.n=Qb[a.g.rdev].n;a.n.open&&a.n.open(a)},G:function(){throw new L(J.ia);}};function Gb(a,b){Qb[a]={n:b}}function ec(a,b){var c="/"===b,d=!b,f;if(c&&Pb)throw new L(J.fa);if(!c&&!d){f=S(b,{Ia:!1});b=f.path;f=f.g;if(f.U)throw new L(J.fa);if(!N(f.mode))throw new L(J.ya);}var d={type:a,pa:{},Oa:b,lb:[]},g=a.A(d);g.A=d;d.root=g;c?Pb=g:f&&(f.U=d,f.A&&f.A.lb.push(d))} -function fc(a,b,c){var d=S(a,{parent:!0}).g;a=Bb(a);if(!a||"."===a||".."===a)throw new L(J.q);var f=ac(d,a);if(f)throw new L(f);if(!d.k.T)throw new L(J.I);return d.k.T(d,a,b,c)}function gc(a,b){b=(void 0!==b?b:438)&4095;b|=32768;return fc(a,b,0)}function V(a,b){b=(void 0!==b?b:511)&1023;b|=16384;return fc(a,b,0)}function hc(a,b,c){"undefined"===typeof c&&(c=b,b=438);return fc(a,b|8192,c)} -function ic(a,b){if(!Db(a))throw new L(J.F);var c=S(b,{parent:!0}).g;if(!c)throw new L(J.F);var d=Bb(b),f=ac(c,d);if(f)throw new L(f);if(!c.k.symlink)throw new L(J.I);return c.k.symlink(c,d,a)}function Vb(a){a=S(a).g;if(!a)throw new L(J.F);if(!a.k.readlink)throw new L(J.q);return Db(T(a.parent),a.k.readlink(a))}function jc(a,b){var c;"string"===typeof a?c=S(a,{la:!0}).g:c=a;if(!c.k.u)throw new L(J.I);c.k.u(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})} -function kc(a,b){var c;if(""===a)throw new L(J.F);var d;if("string"===typeof b){if(d=$b[b],"undefined"===typeof d)throw Error("Unknown file open mode: "+b);}else d=b;b=d;c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;var f;if("object"===typeof a)f=a;else{a=zb(a);try{f=S(a,{la:!(b&131072)}).g}catch(g){}}d=!1;if(b&64)if(f){if(b&128)throw new L(J.wa);}else f=fc(a,c,0),d=!0;if(!f)throw new L(J.F);8192===(f.mode&61440)&&(b&=-513);if(b&65536&&!N(f.mode))throw new L(J.ya);if(!d&&(f?40960===(f.mode&61440)? -c=J.ga:N(f.mode)&&(0!==(b&2097155)||b&512)?c=J.P:(c=["r","w","rw"][b&3],b&512&&(c+="w"),c=Yb(f,c)):c=J.F,c))throw new L(c);if(b&512){c=f;var h;"string"===typeof c?h=S(c,{la:!0}).g:h=c;if(!h.k.u)throw new L(J.I);if(N(h.mode))throw new L(J.P);if(32768!==(h.mode&61440))throw new L(J.q);if(c=Yb(h,"w"))throw new L(c);h.k.u(h,{size:0,timestamp:Date.now()})}b&=-641;f=cc({g:f,path:T(f),flags:b,seekable:!0,position:0,n:f.n,tb:[],error:!1});f.n.open&&f.n.open(f);!e.logReadFiles||b&1||(lc||(lc={}),a in lc|| -(lc[a]=1,e.printErr("read file: "+a)));try{R.onOpenFile&&(h=0,1!==(b&2097155)&&(h|=1),0!==(b&2097155)&&(h|=2),R.onOpenFile(a,h))}catch(l){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+l.message)}return f}function mc(a){a.na&&(a.na=null);try{a.n.close&&a.n.close(a)}catch(b){throw b;}finally{Rb[a.fd]=null}}function nc(a,b,c){if(!a.seekable||!a.n.G)throw new L(J.ia);a.position=a.n.G(a,b,c);a.tb=[]} -function oc(a,b,c,d,f,g){if(0>d||0>f)throw new L(J.q);if(0===(a.flags&2097155))throw new L(J.ea);if(N(a.g.mode))throw new L(J.P);if(!a.n.write)throw new L(J.q);a.flags&1024&&nc(a,0,2);var h=!0;if("undefined"===typeof f)f=a.position,h=!1;else if(!a.seekable)throw new L(J.ia);b=a.n.write(a,b,c,d,f,g);h||(a.position+=b);try{if(a.path&&R.onWriteToFile)R.onWriteToFile(a.path)}catch(l){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+l.message)}return b} -function pc(){L||(L=function(a,b){this.g=b;this.qb=function(a){this.S=a;for(var b in J)if(J[b]===a){this.code=b;break}};this.qb(a);this.message=xb[a]},L.prototype=Error(),L.prototype.constructor=L,[J.F].forEach(function(a){Mb[a]=new L(a);Mb[a].stack=""}))}var qc;function rc(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c}function sc(a,b,c,d){a=K("string"===typeof a?a:T(a),b);return gc(a,rc(c,d))} -function tc(a,b,c,d,f,g){a=b?K("string"===typeof a?a:T(a),b):a;d=rc(d,f);f=gc(a,d);if(c){if("string"===typeof c){a=Array(c.length);b=0;for(var h=c.length;b>2]}function xc(){var a;a=X();a=Rb[a];if(!a)throw new L(J.ea);return a}var yc={};e._i64Add=zc;function Ga(a){Ga.p||(r=Qa(r),Ga.p=!0,assert(n.R),Ga.bb=n.R,n.R=function(){x("cannot dynamically allocate, sbrk now has control")});var b=r;return 0==a||Ga.bb(a)?b:4294967295}var Ac=1;e._memcpy=Bc; -function Cc(a,b){Dc=a;Ec=b;if(!Fc)return 1;if(0==a)Y=function(){setTimeout(Gc,b)},Hc="timeout";else if(1==a)Y=function(){Ic(Gc)},Hc="rAF";else if(2==a){if(!window.setImmediate){var c=[];window.addEventListener("message",function(a){a.source===window&&"__emcc"===a.data&&(a.stopPropagation(),c.shift()())},!0);window.setImmediate=function(a){c.push(a);window.postMessage("__emcc","*")}}Y=function(){window.setImmediate(Gc)};Hc="immediate"}return 0} -function Jc(a,b,c,d,f){e.noExitRuntime=!0;assert(!Fc,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Fc=a;Kc=d;var g=Lc;Gc=function(){if(!na)if(0>h-6&63,h=h-6,c=c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[v];2==h?(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g&3)<<4],c+="=="):4==h&&(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g&15)<<2],c+="=");B.src="data:audio/x-"+b.substr(-3)+";base64,"+c;l(B)}};B.src=q;ad(function(){l(B)})}else return w()}});var c=e.canvas;c&&(c.sa=c.requestPointerLock||c.mozRequestPointerLock|| -c.webkitRequestPointerLock||c.msRequestPointerLock||function(){},c.Fa=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},c.Fa=c.Fa.bind(document),document.addEventListener("pointerlockchange",a,!1),document.addEventListener("mozpointerlockchange",a,!1),document.addEventListener("webkitpointerlockchange",a,!1),document.addEventListener("mspointerlockchange",a,!1),e.elementPointerLock&&c.addEventListener("click",function(a){!Tc&& -c.sa&&(c.sa(),a.preventDefault())},!1))}}function bd(a,b,c,d){if(b&&e.ka&&a==e.canvas)return e.ka;var f,g;if(b){g={antialias:!1,alpha:!1};if(d)for(var h in d)g[h]=d[h];if(g=GL.createContext(a,g))f=GL.getContext(g).td;a.style.backgroundColor="black"}else f=a.getContext("2d");if(!f)return null;c&&(b||assert("undefined"===typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),e.ka=f,b&&GL.Od(g),e.Td=b,Uc.forEach(function(a){a()}),Vc());return f} -var cd=!1,dd=void 0,ed=void 0; -function fd(a,b,c){function d(){Sc=!1;var a=f.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===a?(f.Da=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){}, -f.Da=f.Da.bind(document),dd&&f.sa(),Sc=!0,ed&&gd()):(a.parentNode.insertBefore(f,a),a.parentNode.removeChild(a),ed&&hd());if(e.onFullScreen)e.onFullScreen(Sc);id(f)}dd=a;ed=b;jd=c;"undefined"===typeof dd&&(dd=!0);"undefined"===typeof ed&&(ed=!1);"undefined"===typeof jd&&(jd=null);var f=e.canvas;cd||(cd=!0,document.addEventListener("fullscreenchange",d,!1),document.addEventListener("mozfullscreenchange",d,!1),document.addEventListener("webkitfullscreenchange",d,!1),document.addEventListener("MSFullscreenChange", -d,!1));var g=document.createElement("div");f.parentNode.insertBefore(g,f);g.appendChild(f);g.p=g.requestFullScreen||g.mozRequestFullScreen||g.msRequestFullscreen||(g.webkitRequestFullScreen?function(){g.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null);c?g.p({Ud:c}):g.p()}var kd=0;function ld(a){var b=Date.now();if(0===kd)kd=b+1E3/60;else for(;b+2>=kd;)kd+=1E3/60;b=Math.max(kd-b,0);setTimeout(a,b)} -function Ic(a){"undefined"===typeof window?ld(a):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||ld),window.requestAnimationFrame(a))}function ad(a){e.noExitRuntime=!0;setTimeout(function(){na||a()},1E4)} -function $c(a){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".")+1)]}function md(a,b,c){var d=new XMLHttpRequest;d.open("GET",a,!0);d.responseType="arraybuffer";d.onload=function(){200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)} -function nd(a,b,c){md(a,function(c){assert(c,'Loading data file "'+a+'" failed (no arrayBuffer).');b(new Uint8Array(c));lb()},function(){if(c)c();else throw'Loading data file "'+a+'" failed.';});kb()}var od=[];function pd(){var a=e.canvas;od.forEach(function(b){b(a.width,a.height)})}function gd(){if("undefined"!=typeof SDL){var a=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=a|8388608}pd()} -function hd(){if("undefined"!=typeof SDL){var a=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=a&-8388609}pd()} -function id(a,b,c){b&&c?(a.ub=b,a.hb=c):(b=a.ub,c=a.hb);var d=b,f=c;e.forcedAspectRatio&&0this.length-1||0>a)){var b=a%this.chunkSize;return this.gb(a/this.chunkSize|0)[b]}};l.prototype.pb=function(a){this.gb=a};l.prototype.Ca=function(){var a=new XMLHttpRequest;a.open("HEAD",c,!1);a.send(null);if(!(200<=a.status&&300>a.status||304===a.status))throw Error("Couldn't load "+c+". Status: "+a.status);var b=Number(a.getResponseHeader("Content-length")),d,f=1048576;(d=a.getResponseHeader("Accept-Ranges"))&& -"bytes"===d||(f=b);var g=this;g.pb(function(a){var d=a*f,h=(a+1)*f-1,h=Math.min(h,b-1);if("undefined"===typeof g.Y[a]){var l=g.Y;if(d>h)throw Error("invalid range ("+d+", "+h+") or no bytes requested!");if(h>b-1)throw Error("only "+b+" bytes available! programmer error!");var q=new XMLHttpRequest;q.open("GET",c,!1);b!==f&&q.setRequestHeader("Range","bytes="+d+"-"+h);"undefined"!=typeof Uint8Array&&(q.responseType="arraybuffer");q.overrideMimeType&&q.overrideMimeType("text/plain; charset=x-user-defined"); -q.send(null);if(!(200<=q.status&&300>q.status||304===q.status))throw Error("Couldn't load "+c+". Status: "+q.status);d=void 0!==q.response?new Uint8Array(q.response||[]):hb(q.responseText||"",!0);l[a]=d}if("undefined"===typeof g.Y[a])throw Error("doXHR failed!");return g.Y[a]});this.Wa=b;this.Va=f;this.oa=!0};if("undefined"!==typeof XMLHttpRequest){if(!ca)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";g=new l;Object.defineProperty(g, -"length",{get:function(){this.oa||this.Ca();return this.Wa}});Object.defineProperty(g,"chunkSize",{get:function(){this.oa||this.Ca();return this.Va}});h=void 0}else h=c,g=void 0;var w=sc(a,b,d,f);g?w.e=g:h&&(w.e=null,w.url=h);Object.defineProperty(w,"usedBytes",{get:function(){return this.e.length}});var u={};Object.keys(w.n).forEach(function(a){var b=w.n[a];u[a]=function(){if(!uc(w))throw new L(J.H);return b.apply(null,arguments)}});u.read=function(a,b,c,d,f){if(!uc(w))throw new L(J.H);a=a.g.e;if(f>= -a.length)return 0;d=Math.min(a.length-f,d);assert(0<=d);if(a.slice)for(var g=0;g>2]=0;case 21520:return c.tty?-J.q:-J.Q;case 21531:f=X();if(!c.n.ib)throw new L(J.Q);return c.n.ib(c,d,f);default:x("bad ioctl syscall "+d)}}catch(g){return"undefined"!==typeof vc&&g instanceof L||x(g),-g.S}},___syscall6:function(a,b){wc=b;try{var c=xc();mc(c);return 0}catch(d){return"undefined"!==typeof vc&&d instanceof L||x(d),-d.S}},_emscripten_set_main_loop_timing:Cc,__ZSt18uncaught_exceptionv:tb,___setErrNo:ob,_sbrk:Ga,___cxa_begin_catch:function(a){tb.p--;ub.push(a);var b; -a:{if(a&&!vb[a])for(b in vb)if(vb[b].wd===a)break a;b=a}b&&vb[b].Sd++;return a},_emscripten_memcpy_big:function(a,b,c){E.set(E.subarray(b,b+c),a);return a},_sysconf:function(a){switch(a){case 30:return 4096;case 85:return F/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; -case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; -case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}ob(J.q);return-1}, -_pthread_getspecific:function(a){return yc[a]||0},_pthread_self:function(){return 0},_pthread_once:wb,_pthread_key_create:function(a){if(0==a)return J.q;C[a>>2]=Ac;yc[Ac]=0;Ac++;return 0},___unlock:function(){},_emscripten_set_main_loop:Jc,_pthread_setspecific:function(a,b){if(!(a in yc))return J.q;yc[a]=b;return 0},___lock:function(){},_abort:function(){e.abort()},_pthread_cleanup_push:pb,_time:function(a){var b=Date.now()/1E3|0;a&&(C[a>>2]=b);return b},___syscall140:function(a,b){wc=b;try{var c= -xc(),d=X(),f=X(),g=X(),h=X();assert(0===d);nc(c,f,h);C[g>>2]=c.position;c.na&&0===f&&0===h&&(c.na=null);return 0}catch(l){return"undefined"!==typeof vc&&l instanceof L||x(l),-l.S}},___syscall146:function(a,b){wc=b;try{var c=xc(),d=X(),f;a:{for(var g=X(),h=0,l=0;l>2],C[d+(8*l+4)>>2],void 0);if(0>w){f=-1;break a}h+=w}f=h}return f}catch(u){return"undefined"!==typeof vc&&u instanceof L||x(u),-u.S}},STACKTOP:m,STACK_MAX:Va,tempDoublePtr:mb,ABORT:na,cttz_i8:qd};// EMSCRIPTEN_START_ASM - -var Z=(function(global,env,buffer) { -"use asm";var a=global.Int8Array;var b=global.Int16Array;var c=global.Int32Array;var d=global.Uint8Array;var e=global.Uint16Array;var f=global.Uint32Array;var g=global.Float32Array;var h=global.Float64Array;var i=new a(buffer);var j=new b(buffer);var k=new c(buffer);var l=new d(buffer);var m=new e(buffer);var n=new f(buffer);var o=new g(buffer);var p=new h(buffer);var q=global.byteLength;var r=env.STACKTOP|0;var s=env.STACK_MAX|0;var t=env.tempDoublePtr|0;var u=env.ABORT|0;var v=env.cttz_i8|0;var w=0;var x=0;var y=0;var z=0;var A=global.NaN,B=global.Infinity;var C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0.0;var L=0;var M=0;var N=0;var O=0;var P=0;var Q=0;var R=0;var S=0;var T=0;var U=0;var V=global.Math.floor;var W=global.Math.abs;var X=global.Math.sqrt;var Y=global.Math.pow;var Z=global.Math.cos;var _=global.Math.sin;var $=global.Math.tan;var aa=global.Math.acos;var ba=global.Math.asin;var ca=global.Math.atan;var da=global.Math.atan2;var ea=global.Math.exp;var fa=global.Math.log;var ga=global.Math.ceil;var ha=global.Math.imul;var ia=global.Math.min;var ja=global.Math.clz32;var ka=env.abort;var la=env.assert;var ma=env.invoke_iiii;var na=env.invoke_viiiii;var oa=env.invoke_vi;var pa=env.invoke_ii;var qa=env.invoke_viii;var ra=env.invoke_v;var sa=env.invoke_viiiiii;var ta=env.invoke_iiiiii;var ua=env.invoke_viiii;var va=env._pthread_cleanup_pop;var wa=env.___syscall54;var xa=env.___syscall6;var ya=env._emscripten_set_main_loop_timing;var za=env.__ZSt18uncaught_exceptionv;var Aa=env.___setErrNo;var Ba=env._sbrk;var Ca=env.___cxa_begin_catch;var Da=env._emscripten_memcpy_big;var Ea=env._sysconf;var Fa=env._pthread_getspecific;var Ga=env._pthread_self;var Ha=env._pthread_once;var Ia=env._pthread_key_create;var Ja=env.___unlock;var Ka=env._emscripten_set_main_loop;var La=env._pthread_setspecific;var Ma=env.___lock;var Na=env._abort;var Oa=env._pthread_cleanup_push;var Pa=env._time;var Qa=env.___syscall140;var Ra=env.___syscall146;var Sa=0.0;function Ta(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true} -// EMSCRIPTEN_START_FUNCS -function bb(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;return b|0}function cb(){return r|0}function db(a){a=a|0;r=a}function eb(a,b){a=a|0;b=b|0;r=a;s=b}function fb(a,b){a=a|0;b=b|0;if(!w){w=a;x=b}}function gb(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0]}function hb(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0];i[t+4>>0]=i[a+4>>0];i[t+5>>0]=i[a+5>>0];i[t+6>>0]=i[a+6>>0];i[t+7>>0]=i[a+7>>0]}function ib(a){a=a|0;L=a}function jb(){return L|0}function kb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+608|0;n=q+88|0;m=q+72|0;i=q+64|0;h=q+48|0;g=q+24|0;f=q;l=q+96|0;o=q+92|0;j=a+4|0;p=a+8|0;if((k[j>>2]|0)>>>0>(k[p>>2]|0)>>>0){k[f>>2]=1154;k[f+4>>2]=2120;k[f+8>>2]=1133;Ac(l,1100,f)|0;zc(l,q+16|0)|0}if((2147418112/(d>>>0)|0)>>>0<=b>>>0){k[g>>2]=1154;k[g+4>>2]=2121;k[g+8>>2]=1169;Ac(l,1100,g)|0;zc(l,q+40|0)|0}g=k[p>>2]|0;if(g>>>0>=b>>>0){p=1;r=q;return p|0}do if(c){if(b){f=b+-1|0;if(!(f&b)){f=11;break}else b=f}else b=-1;b=b>>>16|b;b=b>>>8|b;b=b>>>4|b;b=b>>>2|b;b=(b>>>1|b)+1|0;f=10}else f=10;while(0);if((f|0)==10)if(!b){b=0;f=12}else f=11;if((f|0)==11)if(b>>>0<=g>>>0)f=12;if((f|0)==12){k[h>>2]=1154;k[h+4>>2]=2130;k[h+8>>2]=1217;Ac(l,1100,h)|0;zc(l,i)|0}c=ha(b,d)|0;do if(!e){f=lb(k[a>>2]|0,c,o,1)|0;if(!f){p=0;r=q;return p|0}else{k[a>>2]=f;break}}else{g=mb(c,o)|0;if(!g){p=0;r=q;return p|0}Ya[e&0](g,k[a>>2]|0,k[j>>2]|0);f=k[a>>2]|0;do if(f)if(!(f&7)){$a[k[104>>2]&1](f,0,0,1,k[27]|0)|0;break}else{k[m>>2]=1154;k[m+4>>2]=2499;k[m+8>>2]=1516;Ac(l,1100,m)|0;zc(l,n)|0;break}while(0);k[a>>2]=g}while(0);f=k[o>>2]|0;if(f>>>0>c>>>0)b=(f>>>0)/(d>>>0)|0;k[p>>2]=b;p=1;r=q;return p|0}function lb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=r;r=r+592|0;i=j+48|0;f=j+24|0;e=j;h=j+72|0;g=j+68|0;if(a&7){k[e>>2]=1154;k[e+4>>2]=2499;k[e+8>>2]=1494;Ac(h,1100,e)|0;zc(h,j+16|0)|0;i=0;r=j;return i|0}if(b>>>0>2147418112){k[f>>2]=1154;k[f+4>>2]=2499;k[f+8>>2]=1387;Ac(h,1100,f)|0;zc(h,j+40|0)|0;i=0;r=j;return i|0}k[g>>2]=b;d=$a[k[104>>2]&1](a,b,g,d,k[27]|0)|0;if(c)k[c>>2]=k[g>>2];if(!(d&7)){i=d;r=j;return i|0}k[i>>2]=1154;k[i+4>>2]=2551;k[i+8>>2]=1440;Ac(h,1100,i)|0;zc(h,j+64|0)|0;i=d;r=j;return i|0}function mb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+592|0;g=i+48|0;h=i+24|0;c=i;f=i+72|0;e=i+68|0;d=a+3&-4;d=(d|0)!=0?d:4;if(d>>>0>2147418112){k[c>>2]=1154;k[c+4>>2]=2499;k[c+8>>2]=1387;Ac(f,1100,c)|0;zc(f,i+16|0)|0;h=0;r=i;return h|0}k[e>>2]=d;c=$a[k[104>>2]&1](0,d,e,1,k[27]|0)|0;a=k[e>>2]|0;if(b)k[b>>2]=a;if((c|0)==0|a>>>0>>0){k[h>>2]=1154;k[h+4>>2]=2499;k[h+8>>2]=1413;Ac(f,1100,h)|0;zc(f,i+40|0)|0;h=0;r=i;return h|0}if(!(c&7)){h=c;r=i;return h|0}k[g>>2]=1154;k[g+4>>2]=2526;k[g+8>>2]=1440;Ac(f,1100,g)|0;zc(f,i+64|0)|0;h=c;r=i;return h|0}function nb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=r;r=r+960|0;P=S+232|0;O=S+216|0;N=S+208|0;M=S+192|0;L=S+184|0;K=S+168|0;J=S+160|0;I=S+144|0;F=S+136|0;E=S+120|0;D=S+112|0;C=S+96|0;z=S+88|0;y=S+72|0;x=S+64|0;w=S+48|0;q=S+40|0;t=S+24|0;s=S+16|0;p=S;H=S+440|0;Q=S+376|0;R=S+304|0;v=S+236|0;if((b|0)==0|d>>>0>11){a=0;r=S;return a|0}k[a>>2]=b;e=R;f=e+68|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=0;do{e=i[c+f>>0]|0;if(e<<24>>24){G=R+((e&255)<<2)|0;k[G>>2]=(k[G>>2]|0)+1}f=f+1|0}while((f|0)!=(b|0));f=0;o=1;g=0;h=-1;n=0;while(1){e=k[R+(o<<2)>>2]|0;if(!e)k[a+28+(o+-1<<2)>>2]=0;else{G=o+-1|0;k[Q+(G<<2)>>2]=f;f=e+f|0;B=16-o|0;k[a+28+(G<<2)>>2]=(f+-1<>2]=n;k[v+(o<<2)>>2]=n;g=g>>>0>o>>>0?g:o;h=h>>>0>>0?h:o;n=e+n|0}o=o+1|0;if((o|0)==17){G=g;break}else f=f<<1}k[a+4>>2]=n;f=a+172|0;do if(n>>>0>(k[f>>2]|0)>>>0){k[f>>2]=n;if(n){e=n+-1|0;if(e&n)u=14}else{e=-1;u=14}if((u|0)==14){B=e>>>16|e;B=B>>>8|B;B=B>>>4|B;B=B>>>2|B;B=(B>>>1|B)+1|0;k[f>>2]=B>>>0>b>>>0?b:B}g=a+176|0;e=k[g>>2]|0;do if(e){B=k[e+-4>>2]|0;e=e+-8|0;if(!((B|0)!=0?(B|0)==(~k[e>>2]|0):0)){k[p>>2]=1154;k[p+4>>2]=644;k[p+8>>2]=1863;Ac(H,1100,p)|0;zc(H,s)|0}if(!(e&7)){$a[k[104>>2]&1](e,0,0,1,k[27]|0)|0;break}else{k[t>>2]=1154;k[t+4>>2]=2499;k[t+8>>2]=1516;Ac(H,1100,t)|0;zc(H,q)|0;break}}while(0);f=k[f>>2]|0;f=(f|0)!=0?f:1;e=mb((f<<1)+8|0,0)|0;if(!e){k[g>>2]=0;e=0;break}else{k[e+4>>2]=f;k[e>>2]=~f;k[g>>2]=e+8;u=25;break}}else u=25;while(0);a:do if((u|0)==25){B=a+24|0;i[B>>0]=h;i[a+25>>0]=G;f=a+176|0;g=0;do{A=i[c+g>>0]|0;e=A&255;if(A<<24>>24){if(!(k[R+(e<<2)>>2]|0)){k[w>>2]=1154;k[w+4>>2]=2273;k[w+8>>2]=1261;Ac(H,1100,w)|0;zc(H,x)|0}A=v+(e<<2)|0;e=k[A>>2]|0;k[A>>2]=e+1;if(e>>>0>=n>>>0){k[y>>2]=1154;k[y+4>>2]=2277;k[y+8>>2]=1274;Ac(H,1100,y)|0;zc(H,z)|0}j[(k[f>>2]|0)+(e<<1)>>1]=g}g=g+1|0}while((g|0)!=(b|0));e=i[B>>0]|0;z=(e&255)>>>0>>0?d:0;A=a+8|0;k[A>>2]=z;y=(z|0)!=0;if(y){x=1<>>0>(k[e>>2]|0)>>>0){k[e>>2]=x;g=a+168|0;e=k[g>>2]|0;do if(e){w=k[e+-4>>2]|0;e=e+-8|0;if(!((w|0)!=0?(w|0)==(~k[e>>2]|0):0)){k[C>>2]=1154;k[C+4>>2]=644;k[C+8>>2]=1863;Ac(H,1100,C)|0;zc(H,D)|0}if(!(e&7)){$a[k[104>>2]&1](e,0,0,1,k[27]|0)|0;break}else{k[E>>2]=1154;k[E+4>>2]=2499;k[E+8>>2]=1516;Ac(H,1100,E)|0;zc(H,F)|0;break}}while(0);e=x<<2;f=mb(e+8|0,0)|0;if(!f){k[g>>2]=0;e=0;break a}else{F=f+8|0;k[f+4>>2]=x;k[f>>2]=~x;k[g>>2]=F;f=F;break}}else{f=a+168|0;e=x<<2;g=f;f=k[f>>2]|0}while(0);ad(f|0,-1,e|0)|0;u=a+176|0;w=1;do{if(k[R+(w<<2)>>2]|0){b=z-w|0;v=1<>2]|0;if(f>>>0>=16){k[I>>2]=1154;k[I+4>>2]=1953;k[I+8>>2]=1737;Ac(H,1100,I)|0;zc(H,J)|0}e=k[a+28+(f<<2)>>2]|0;if(!e)t=-1;else t=(e+-1|0)>>>(16-w|0);if(h>>>0<=t>>>0){q=(k[a+96+(f<<2)>>2]|0)-h|0;s=w<<16;do{e=m[(k[u>>2]|0)+(q+h<<1)>>1]|0;if((l[c+e>>0]|0|0)!=(w|0)){k[K>>2]=1154;k[K+4>>2]=2319;k[K+8>>2]=1303;Ac(H,1100,K)|0;zc(H,L)|0}p=h<>>0>=x>>>0){k[M>>2]=1154;k[M+4>>2]=2325;k[M+8>>2]=1337;Ac(H,1100,M)|0;zc(H,N)|0}e=k[g>>2]|0;if((k[e+(n<<2)>>2]|0)!=-1){k[O>>2]=1154;k[O+4>>2]=2327;k[O+8>>2]=1360;Ac(H,1100,O)|0;zc(H,P)|0;e=k[g>>2]|0}k[e+(n<<2)>>2]=f;o=o+1|0}while(o>>>0>>0);h=h+1|0}while(h>>>0<=t>>>0)}}w=w+1|0}while(z>>>0>=w>>>0);e=i[B>>0]|0}f=a+96|0;k[f>>2]=(k[f>>2]|0)-(k[Q>>2]|0);f=a+100|0;k[f>>2]=(k[f>>2]|0)-(k[Q+4>>2]|0);f=a+104|0;k[f>>2]=(k[f>>2]|0)-(k[Q+8>>2]|0);f=a+108|0;k[f>>2]=(k[f>>2]|0)-(k[Q+12>>2]|0);f=a+112|0;k[f>>2]=(k[f>>2]|0)-(k[Q+16>>2]|0);f=a+116|0;k[f>>2]=(k[f>>2]|0)-(k[Q+20>>2]|0);f=a+120|0;k[f>>2]=(k[f>>2]|0)-(k[Q+24>>2]|0);f=a+124|0;k[f>>2]=(k[f>>2]|0)-(k[Q+28>>2]|0);f=a+128|0;k[f>>2]=(k[f>>2]|0)-(k[Q+32>>2]|0);f=a+132|0;k[f>>2]=(k[f>>2]|0)-(k[Q+36>>2]|0);f=a+136|0;k[f>>2]=(k[f>>2]|0)-(k[Q+40>>2]|0);f=a+140|0;k[f>>2]=(k[f>>2]|0)-(k[Q+44>>2]|0);f=a+144|0;k[f>>2]=(k[f>>2]|0)-(k[Q+48>>2]|0);f=a+148|0;k[f>>2]=(k[f>>2]|0)-(k[Q+52>>2]|0);f=a+152|0;k[f>>2]=(k[f>>2]|0)-(k[Q+56>>2]|0);f=a+156|0;k[f>>2]=(k[f>>2]|0)-(k[Q+60>>2]|0);f=a+16|0;k[f>>2]=0;g=a+20|0;k[g>>2]=e&255;b:do if(y){while(1){if(!d)break b;e=d+-1|0;if(!(k[R+(d<<2)>>2]|0))d=e;else break}k[f>>2]=k[a+28+(e<<2)>>2];e=z+1|0;k[g>>2]=e;if(e>>>0<=G>>>0){while(1){if(k[R+(e<<2)>>2]|0)break;e=e+1|0;if(e>>>0>G>>>0)break b}k[g>>2]=e}}while(0);k[a+92>>2]=-1;k[a+160>>2]=1048575;k[a+12>>2]=32-(k[A>>2]|0);e=1}while(0);a=e;r=S;return a|0}function ob(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(!a){e=Uc(b)|0;if(!c){c=e;return c|0}if(!e)f=0;else f=Xc(e)|0;k[c>>2]=f;c=e;return c|0}if(!b){Vc(a);if(!c){c=0;return c|0}k[c>>2]=0;c=0;return c|0}e=Wc(a,b)|0;f=(e|0)!=0;if(f|d^1)f=f?e:a;else{e=Wc(a,b)|0;f=(e|0)==0?a:e}if(!c){c=e;return c|0}b=Xc(f)|0;k[c>>2]=b;c=e;return c|0}function pb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!((a|0)!=0&b>>>0>73&(c|0)!=0)){c=0;return c|0}if((k[c>>2]|0)!=40|b>>>0<74){c=0;return c|0}if(((l[a>>0]|0)<<8|(l[a+1>>0]|0)|0)!=18552){c=0;return c|0}if(((l[a+2>>0]|0)<<8|(l[a+3>>0]|0))>>>0<74){c=0;return c|0}if(((l[a+7>>0]|0)<<16|(l[a+6>>0]|0)<<24|(l[a+8>>0]|0)<<8|(l[a+9>>0]|0))>>>0>b>>>0){c=0;return c|0}k[c+4>>2]=(l[a+12>>0]|0)<<8|(l[a+13>>0]|0);k[c+8>>2]=(l[a+14>>0]|0)<<8|(l[a+15>>0]|0);k[c+12>>2]=l[a+16>>0];k[c+16>>2]=l[a+17>>0];b=a+18|0;d=c+32|0;k[d>>2]=l[b>>0];k[d+4>>2]=0;b=i[b>>0]|0;k[c+20>>2]=b<<24>>24==0|b<<24>>24==9?8:16;k[c+24>>2]=(l[a+26>>0]|0)<<16|(l[a+25>>0]|0)<<24|(l[a+27>>0]|0)<<8|(l[a+28>>0]|0);k[c+28>>2]=(l[a+30>>0]|0)<<16|(l[a+29>>0]|0)<<24|(l[a+31>>0]|0)<<8|(l[a+32>>0]|0);c=1;return c|0}function qb(a){a=a|0;Ca(a|0)|0;Vb()}function rb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+544|0;e=f;d=f+24|0;b=k[a+20>>2]|0;if(b)sb(b);b=a+4|0;c=k[b>>2]|0;if(!c){e=a+16|0;i[e>>0]=0;r=f;return}if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[e>>2]=1154;k[e+4>>2]=2499;k[e+8>>2]=1516;Ac(d,1100,e)|0;zc(d,f+16|0)|0}k[b>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;e=a+16|0;i[e>>0]=0;r=f;return}function sb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+640|0;n=o+112|0;m=o+96|0;l=o+88|0;j=o+72|0;i=o+64|0;h=o+48|0;d=o+40|0;f=o+24|0;e=o+16|0;c=o;g=o+120|0;if(!a){r=o;return}b=k[a+168>>2]|0;do if(b){p=k[b+-4>>2]|0;b=b+-8|0;if(!((p|0)!=0?(p|0)==(~k[b>>2]|0):0)){k[c>>2]=1154;k[c+4>>2]=644;k[c+8>>2]=1863;Ac(g,1100,c)|0;zc(g,e)|0}if(!(b&7)){$a[k[104>>2]&1](b,0,0,1,k[27]|0)|0;break}else{k[f>>2]=1154;k[f+4>>2]=2499;k[f+8>>2]=1516;Ac(g,1100,f)|0;zc(g,d)|0;break}}while(0);b=k[a+176>>2]|0;do if(b){p=k[b+-4>>2]|0;b=b+-8|0;if(!((p|0)!=0?(p|0)==(~k[b>>2]|0):0)){k[h>>2]=1154;k[h+4>>2]=644;k[h+8>>2]=1863;Ac(g,1100,h)|0;zc(g,i)|0}if(!(b&7)){$a[k[104>>2]&1](b,0,0,1,k[27]|0)|0;break}else{k[j>>2]=1154;k[j+4>>2]=2499;k[j+8>>2]=1516;Ac(g,1100,j)|0;zc(g,l)|0;break}}while(0);if(!(a&7)){$a[k[104>>2]&1](a,0,0,1,k[27]|0)|0;r=o;return}else{k[m>>2]=1154;k[m+4>>2]=2499;k[m+8>>2]=1516;Ac(g,1100,m)|0;zc(g,n)|0;r=o;return}}function tb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;l=r;r=r+560|0;g=l+40|0;h=l+24|0;b=l;f=l+48|0;e=a+8|0;c=k[e>>2]|0;if((c+-1|0)>>>0>=8192){k[b>>2]=1154;k[b+4>>2]=2997;k[b+8>>2]=1541;Ac(f,1100,b)|0;zc(f,l+16|0)|0}k[a>>2]=c;d=a+20|0;b=k[d>>2]|0;if(!b){b=mb(180,0)|0;if(!b)b=0;else{j=b+164|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0}k[d>>2]=b;j=b;i=k[a>>2]|0}else{j=b;i=c}if(!(k[e>>2]|0)){k[h>>2]=1154;k[h+4>>2]=903;k[h+8>>2]=1781;Ac(f,1100,h)|0;zc(f,g)|0;f=k[a>>2]|0}else f=i;e=k[a+4>>2]|0;if(f>>>0>16){c=f;b=0}else{a=0;j=nb(j,i,e,a)|0;r=l;return j|0}while(1){d=b+1|0;if(c>>>0>3){c=c>>>1;b=d}else{c=d;break}}a=b+2+((c|0)!=32&1<>>0>>0&1)|0;a=a>>>0<11?a&255:11;j=nb(j,i,e,a)|0;r=l;return j|0}function ub(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=r;r=r+800|0;I=N+256|0;H=N+240|0;G=N+232|0;F=N+216|0;E=N+208|0;D=N+192|0;C=N+184|0;B=N+168|0;A=N+160|0;z=N+144|0;y=N+136|0;x=N+120|0;w=N+112|0;v=N+96|0;u=N+88|0;t=N+72|0;o=N+64|0;n=N+48|0;h=N+40|0;j=N+24|0;f=N+16|0;e=N;L=N+288|0;M=N+264|0;J=vb(a,14)|0;if(!J){k[b>>2]=0;c=b+4|0;d=k[c>>2]|0;if(d){if(!(d&7))$a[k[104>>2]&1](d,0,0,1,k[27]|0)|0;else{k[e>>2]=1154;k[e+4>>2]=2499;k[e+8>>2]=1516;Ac(L,1100,e)|0;zc(L,f)|0}k[c>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0}i[b+16>>0]=0;c=b+20|0;d=k[c>>2]|0;if(!d){b=1;r=N;return b|0}sb(d);k[c>>2]=0;b=1;r=N;return b|0}q=b+4|0;s=b+8|0;c=k[s>>2]|0;if((c|0)!=(J|0)){if(c>>>0<=J>>>0){do if((k[b+12>>2]|0)>>>0>>0){if(kb(q,J,(c+1|0)==(J|0),1,0)|0){c=k[s>>2]|0;break}i[b+16>>0]=1;b=0;r=N;return b|0}while(0);ad((k[q>>2]|0)+c|0,0,J-c|0)|0}k[s>>2]=J}ad(k[q>>2]|0,0,J|0)|0;p=a+20|0;c=k[p>>2]|0;if((c|0)<5){f=a+4|0;g=a+8|0;e=a+16|0;do{d=k[f>>2]|0;if((d|0)==(k[g>>2]|0))d=0;else{k[f>>2]=d+1;d=l[d>>0]|0}c=c+8|0;k[p>>2]=c;if((c|0)>=33){k[j>>2]=1154;k[j+4>>2]=3199;k[j+8>>2]=1650;Ac(L,1100,j)|0;zc(L,h)|0;c=k[p>>2]|0}d=d<<32-c|k[e>>2];k[e>>2]=d}while((c|0)<5)}else{d=a+16|0;e=d;d=k[d>>2]|0}m=d>>>27;k[e>>2]=d<<5;k[p>>2]=c+-5;if((m+-1|0)>>>0>20){b=0;r=N;return b|0}k[M+20>>2]=0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;i[M+16>>0]=0;c=M+4|0;d=M+8|0;a:do if(kb(c,21,0,1,0)|0){h=k[d>>2]|0;j=k[c>>2]|0;ad(j+h|0,0,21-h|0)|0;k[d>>2]=21;if(m){e=a+4|0;f=a+8|0;g=a+16|0;h=0;do{c=k[p>>2]|0;if((c|0)<3)do{d=k[e>>2]|0;if((d|0)==(k[f>>2]|0))d=0;else{k[e>>2]=d+1;d=l[d>>0]|0}c=c+8|0;k[p>>2]=c;if((c|0)>=33){k[n>>2]=1154;k[n+4>>2]=3199;k[n+8>>2]=1650;Ac(L,1100,n)|0;zc(L,o)|0;c=k[p>>2]|0}d=d<<32-c|k[g>>2];k[g>>2]=d}while((c|0)<3);else d=k[g>>2]|0;k[g>>2]=d<<3;k[p>>2]=c+-3;i[j+(l[1611+h>>0]|0)>>0]=d>>>29;h=h+1|0}while((h|0)!=(m|0))}if(tb(M)|0){h=a+4|0;j=a+8|0;m=a+16|0;d=0;b:while(1){g=J-d|0;c=wb(a,M)|0;c:do if(c>>>0<17){if((k[s>>2]|0)>>>0<=d>>>0){k[t>>2]=1154;k[t+4>>2]=903;k[t+8>>2]=1781;Ac(L,1100,t)|0;zc(L,u)|0}i[(k[q>>2]|0)+d>>0]=c;c=d+1|0}else switch(c|0){case 17:{c=k[p>>2]|0;if((c|0)<3)do{e=k[h>>2]|0;if((e|0)==(k[j>>2]|0))e=0;else{k[h>>2]=e+1;e=l[e>>0]|0}c=c+8|0;k[p>>2]=c;if((c|0)>=33){k[v>>2]=1154;k[v+4>>2]=3199;k[v+8>>2]=1650;Ac(L,1100,v)|0;zc(L,w)|0;c=k[p>>2]|0}e=e<<32-c|k[m>>2];k[m>>2]=e}while((c|0)<3);else e=k[m>>2]|0;k[m>>2]=e<<3;k[p>>2]=c+-3;c=(e>>>29)+3|0;if(c>>>0>g>>>0){c=0;break a}c=c+d|0;break c}case 18:{c=k[p>>2]|0;if((c|0)<7)do{e=k[h>>2]|0;if((e|0)==(k[j>>2]|0))e=0;else{k[h>>2]=e+1;e=l[e>>0]|0}c=c+8|0;k[p>>2]=c;if((c|0)>=33){k[x>>2]=1154;k[x+4>>2]=3199;k[x+8>>2]=1650;Ac(L,1100,x)|0;zc(L,y)|0;c=k[p>>2]|0}e=e<<32-c|k[m>>2];k[m>>2]=e}while((c|0)<7);else e=k[m>>2]|0;k[m>>2]=e<<7;k[p>>2]=c+-7;c=(e>>>25)+11|0;if(c>>>0>g>>>0){c=0;break a}c=c+d|0;break c}default:{if((c+-19|0)>>>0>=2){K=90;break b}f=k[p>>2]|0;if((c|0)==19){if((f|0)<2){e=f;while(1){c=k[h>>2]|0;if((c|0)==(k[j>>2]|0))f=0;else{k[h>>2]=c+1;f=l[c>>0]|0}c=e+8|0;k[p>>2]=c;if((c|0)>=33){k[z>>2]=1154;k[z+4>>2]=3199;k[z+8>>2]=1650;Ac(L,1100,z)|0;zc(L,A)|0;c=k[p>>2]|0}e=f<<32-c|k[m>>2];k[m>>2]=e;if((c|0)<2)e=c;else break}}else{e=k[m>>2]|0;c=f}k[m>>2]=e<<2;k[p>>2]=c+-2;f=(e>>>30)+3|0}else{if((f|0)<6){e=f;while(1){c=k[h>>2]|0;if((c|0)==(k[j>>2]|0))f=0;else{k[h>>2]=c+1;f=l[c>>0]|0}c=e+8|0;k[p>>2]=c;if((c|0)>=33){k[B>>2]=1154;k[B+4>>2]=3199;k[B+8>>2]=1650;Ac(L,1100,B)|0;zc(L,C)|0;c=k[p>>2]|0}e=f<<32-c|k[m>>2];k[m>>2]=e;if((c|0)<6)e=c;else break}}else{e=k[m>>2]|0;c=f}k[m>>2]=e<<6;k[p>>2]=c+-6;f=(e>>>26)+7|0}if((d|0)==0|f>>>0>g>>>0){c=0;break a}c=d+-1|0;if((k[s>>2]|0)>>>0<=c>>>0){k[D>>2]=1154;k[D+4>>2]=903;k[D+8>>2]=1781;Ac(L,1100,D)|0;zc(L,E)|0}e=i[(k[q>>2]|0)+c>>0]|0;if(!(e<<24>>24)){c=0;break a}c=f+d|0;if(d>>>0>=c>>>0){c=d;break c}do{if((k[s>>2]|0)>>>0<=d>>>0){k[F>>2]=1154;k[F+4>>2]=903;k[F+8>>2]=1781;Ac(L,1100,F)|0;zc(L,G)|0}i[(k[q>>2]|0)+d>>0]=e;d=d+1|0}while((d|0)!=(c|0))}}while(0);if(J>>>0>c>>>0)d=c;else break}if((K|0)==90){k[H>>2]=1154;k[H+4>>2]=3140;k[H+8>>2]=1632;Ac(L,1100,H)|0;zc(L,I)|0;c=0;break}if((J|0)==(c|0))c=tb(b)|0;else c=0}else c=0}else{i[M+16>>0]=1;c=0}while(0);rb(M);b=c;r=N;return b|0}function vb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;m=r;r=r+544|0;h=m+16|0;g=m;f=m+24|0;if(!b){j=0;r=m;return j|0}if(b>>>0<=16){j=xb(a,b)|0;r=m;return j|0}i=xb(a,b+-16|0)|0;j=a+20|0;b=k[j>>2]|0;if((b|0)<16){d=a+4|0;e=a+8|0;c=a+16|0;do{a=k[d>>2]|0;if((a|0)==(k[e>>2]|0))a=0;else{k[d>>2]=a+1;a=l[a>>0]|0}b=b+8|0;k[j>>2]=b;if((b|0)>=33){k[g>>2]=1154;k[g+4>>2]=3199;k[g+8>>2]=1650;Ac(f,1100,g)|0;zc(f,h)|0;b=k[j>>2]|0}a=a<<32-b|k[c>>2];k[c>>2]=a}while((b|0)<16)}else{a=a+16|0;c=a;a=k[a>>2]|0}k[c>>2]=a<<16;k[j>>2]=b+-16;j=a>>>16|i<<16;r=m;return j|0}function wb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+608|0;t=x+88|0;s=x+72|0;p=x+64|0;o=x+48|0;n=x+40|0;q=x+24|0;j=x+16|0;i=x;v=x+96|0;u=k[b+20>>2]|0;w=a+20|0;h=k[w>>2]|0;do if((h|0)<24){g=a+4|0;d=k[g>>2]|0;e=k[a+8>>2]|0;c=d>>>0>>0;if((h|0)>=16){if(c){k[g>>2]=d+1;c=l[d>>0]|0}else c=0;k[w>>2]=h+8;g=a+16|0;f=c<<24-h|k[g>>2];k[g>>2]=f;break}if(c){f=(l[d>>0]|0)<<8;c=d+1|0}else{f=0;c=d}if(c>>>0>>0){d=l[c>>0]|0;c=c+1|0}else d=0;k[g>>2]=c;k[w>>2]=h+16;g=a+16|0;f=(d|f)<<16-h|k[g>>2];k[g>>2]=f}else{f=a+16|0;g=f;f=k[f>>2]|0}while(0);e=(f>>>16)+1|0;do if(e>>>0<=(k[u+16>>2]|0)>>>0){d=k[(k[u+168>>2]|0)+(f>>>(32-(k[u+8>>2]|0)|0)<<2)>>2]|0;if((d|0)==-1){k[i>>2]=1154;k[i+4>>2]=3244;k[i+8>>2]=1677;Ac(v,1100,i)|0;zc(v,j)|0}c=d&65535;d=d>>>16;if((k[b+8>>2]|0)>>>0<=c>>>0){k[q>>2]=1154;k[q+4>>2]=902;k[q+8>>2]=1781;Ac(v,1100,q)|0;zc(v,n)|0}if((l[(k[b+4>>2]|0)+c>>0]|0|0)!=(d|0)){k[o>>2]=1154;k[o+4>>2]=3248;k[o+8>>2]=1694;Ac(v,1100,o)|0;zc(v,p)|0}}else{d=k[u+20>>2]|0;while(1){c=d+-1|0;if(e>>>0>(k[u+28+(c<<2)>>2]|0)>>>0)d=d+1|0;else break}c=(f>>>(32-d|0))+(k[u+96+(c<<2)>>2]|0)|0;if(c>>>0<(k[b>>2]|0)>>>0){c=m[(k[u+176>>2]|0)+(c<<1)>>1]|0;break}k[s>>2]=1154;k[s+4>>2]=3266;k[s+8>>2]=1632;Ac(v,1100,s)|0;zc(v,t)|0;w=0;r=x;return w|0}while(0);k[g>>2]=k[g>>2]<>2]=(k[w>>2]|0)-d;w=c;r=x;return w|0}function xb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;m=r;r=r+560|0;h=m+40|0;i=m+24|0;c=m;g=m+48|0;if(b>>>0>=33){k[c>>2]=1154;k[c+4>>2]=3190;k[c+8>>2]=1634;Ac(g,1100,c)|0;zc(g,m+16|0)|0}j=a+20|0;c=k[j>>2]|0;if((c|0)>=(b|0)){f=a+16|0;g=f;f=k[f>>2]|0;h=c;i=32-b|0;i=f>>>i;f=f<>2]=f;b=h-b|0;k[j>>2]=b;r=m;return i|0}e=a+4|0;f=a+8|0;d=a+16|0;do{a=k[e>>2]|0;if((a|0)==(k[f>>2]|0))a=0;else{k[e>>2]=a+1;a=l[a>>0]|0}c=c+8|0;k[j>>2]=c;if((c|0)>=33){k[i>>2]=1154;k[i+4>>2]=3199;k[i+8>>2]=1650;Ac(g,1100,i)|0;zc(g,h)|0;c=k[j>>2]|0}a=a<<32-c|k[d>>2];k[d>>2]=a}while((c|0)<(b|0));i=32-b|0;i=a>>>i;h=a<>2]=h;b=c-b|0;k[j>>2]=b;r=m;return i|0}function yb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+544|0;p=s+16|0;o=s;n=s+24|0;if((a|0)==0|b>>>0<62){q=0;r=s;return q|0}m=mb(300,0)|0;if(!m){q=0;r=s;return q|0}k[m>>2]=519686845;c=m+4|0;k[c>>2]=0;d=m+8|0;k[d>>2]=0;j=m+88|0;e=m+136|0;f=m+160|0;g=j;h=g+44|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(h|0));i[j+44>>0]=0;t=m+184|0;g=m+208|0;h=m+232|0;u=m+252|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;i[u+12>>0]=0;u=m+268|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;i[u+12>>0]=0;u=m+284|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;i[u+12>>0]=0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;i[e+20>>0]=0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[f+16>>2]=0;i[f+20>>0]=0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[t+16>>2]=0;i[t+20>>0]=0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;i[g+20>>0]=0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;i[h+16>>0]=0;do if(((b>>>0>=74?((l[a>>0]|0)<<8|(l[a+1>>0]|0)|0)==18552:0)?((l[a+2>>0]|0)<<8|(l[a+3>>0]|0))>>>0>=74:0)?((l[a+7>>0]|0)<<16|(l[a+6>>0]|0)<<24|(l[a+8>>0]|0)<<8|(l[a+9>>0]|0))>>>0<=b>>>0:0){k[j>>2]=a;k[c>>2]=a;k[d>>2]=b;if(Hb(m)|0){c=k[j>>2]|0;if((l[c+39>>0]|0)<<8|(l[c+40>>0]|0)){if(!(Ib(m)|0))break;if(!(Jb(m)|0))break;c=k[j>>2]|0}if(!((l[c+55>>0]|0)<<8|(l[c+56>>0]|0))){u=m;r=s;return u|0}if(Kb(m)|0?Lb(m)|0:0){u=m;r=s;return u|0}}}else q=7;while(0);if((q|0)==7)k[j>>2]=0;Qb(m);if(!(m&7)){$a[k[104>>2]&1](m,0,0,1,k[27]|0)|0;u=0;r=s;return u|0}else{k[o>>2]=1154;k[o+4>>2]=2499;k[o+8>>2]=1516;Ac(n,1100,o)|0;zc(n,p)|0;u=0;r=s;return u|0}return 0}function zb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,m=0;m=r;r=r+544|0;j=m;i=m+24|0;f=k[a+88>>2]|0;h=(l[f+70+(e<<2)+1>>0]|0)<<16|(l[f+70+(e<<2)>>0]|0)<<24|(l[f+70+(e<<2)+2>>0]|0)<<8|(l[f+70+(e<<2)+3>>0]|0);g=e+1|0;if(g>>>0<(l[f+16>>0]|0)>>>0)f=(l[f+70+(g<<2)+1>>0]|0)<<16|(l[f+70+(g<<2)>>0]|0)<<24|(l[f+70+(g<<2)+2>>0]|0)<<8|(l[f+70+(g<<2)+3>>0]|0);else f=k[a+8>>2]|0;if(f>>>0>h>>>0){i=a+4|0;i=k[i>>2]|0;i=i+h|0;j=f-h|0;j=Ab(a,i,j,b,c,d,e)|0;r=m;return j|0}k[j>>2]=1154;k[j+4>>2]=3704;k[j+8>>2]=1792;Ac(i,1100,j)|0;zc(i,m+16|0)|0;i=a+4|0;i=k[i>>2]|0;i=i+h|0;j=f-h|0;j=Ab(a,i,j,b,c,d,e)|0;r=m;return j|0}function Ab(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,m=0,n=0;n=k[a+88>>2]|0;j=((l[n+12>>0]|0)<<8|(l[n+13>>0]|0))>>>g;m=((l[n+14>>0]|0)<<8|(l[n+15>>0]|0))>>>g;j=j>>>0>1?(j+3|0)>>>2:1;m=m>>>0>1?(m+3|0)>>>2:1;n=n+18|0;g=i[n>>0]|0;g=ha(g<<24>>24==0|g<<24>>24==9?8:16,j)|0;if(f)if((f&3|0)==0&g>>>0<=f>>>0)g=f;else{a=0;return a|0}if((ha(g,m)|0)>>>0>e>>>0){a=0;return a|0}f=(j+1|0)>>>1;h=(m+1|0)>>>1;if(!c){a=0;return a|0}k[a+92>>2]=b;k[a+96>>2]=b;k[a+104>>2]=c;k[a+100>>2]=b+c;k[a+108>>2]=0;k[a+112>>2]=0;switch(l[n>>0]|0|0){case 0:{Mb(a,d,e,g,j,m,f,h)|0;a=1;return a|0}case 4:case 6:case 5:case 3:case 2:{Nb(a,d,e,g,j,m,f,h)|0;a=1;return a|0}case 9:{Ob(a,d,e,g,j,m,f,h)|0;a=1;return a|0}case 8:case 7:{Pb(a,d,e,g,j,m,f,h)|0;a=1;return a|0}default:{a=0;return a|0}}return 0}function Bb(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+48|0;c=d;k[c>>2]=40;pb(a,b,c)|0;r=d;return k[c+4>>2]|0}function Cb(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+48|0;c=d;k[c>>2]=40;pb(a,b,c)|0;r=d;return k[c+8>>2]|0}function Db(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+48|0;c=d;k[c>>2]=40;pb(a,b,c)|0;r=d;return k[c+12>>2]|0}function Eb(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+48|0;c=d;k[c>>2]=40;pb(a,b,c)|0;r=d;return k[c+32>>2]|0}function Fb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=r;r=r+576|0;g=i+56|0;f=i+40|0;e=i+64|0;j=i;k[j>>2]=40;pb(a,b,j)|0;d=(((k[j+4>>2]|0)>>>c)+3|0)>>>2;b=(((k[j+8>>2]|0)>>>c)+3|0)>>>2;c=j+32|0;a=k[c+4>>2]|0;do switch(k[c>>2]|0){case 0:{if(!a)a=8;else h=13;break}case 1:{if(!a)h=12;else h=13;break}case 2:{if(!a)h=12;else h=13;break}case 3:{if(!a)h=12;else h=13;break}case 4:{if(!a)h=12;else h=13;break}case 5:{if(!a)h=12;else h=13;break}case 6:{if(!a)h=12;else h=13;break}case 7:{if(!a)h=12;else h=13;break}case 8:{if(!a)h=12;else h=13;break}case 9:{if(!a)a=8;else h=13;break}default:h=13}while(0);if((h|0)==12)a=16;else if((h|0)==13){k[f>>2]=1154;k[f+4>>2]=2663;k[f+8>>2]=1535;Ac(e,1100,f)|0;zc(e,g)|0;a=0}j=ha(ha(b,d)|0,a)|0;r=i;return j|0}function Gb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=r;r=r+608|0;n=p+80|0;o=p+64|0;h=p+56|0;g=p+40|0;l=p+88|0;q=p;m=p+84|0;k[q>>2]=40;pb(a,b,q)|0;i=(((k[q+4>>2]|0)>>>e)+3|0)>>>2;q=q+32|0;f=k[q+4>>2]|0;do switch(k[q>>2]|0){case 0:{if(!f)f=8;else j=13;break}case 1:{if(!f)j=12;else j=13;break}case 2:{if(!f)j=12;else j=13;break}case 3:{if(!f)j=12;else j=13;break}case 4:{if(!f)j=12;else j=13;break}case 5:{if(!f)j=12;else j=13;break}case 6:{if(!f)j=12;else j=13;break}case 7:{if(!f)j=12;else j=13;break}case 8:{if(!f)j=12;else j=13;break}case 9:{if(!f)f=8;else j=13;break}default:j=13}while(0);if((j|0)==12)f=16;else if((j|0)==13){k[g>>2]=1154;k[g+4>>2]=2663;k[g+8>>2]=1535;Ac(l,1100,g)|0;zc(l,h)|0;f=0}h=ha(f,i)|0;g=yb(a,b)|0;k[m>>2]=c;f=(g|0)==0;if(!(e>>>0>15|(d>>>0<8|f))?(k[g>>2]|0)==519686845:0)zb(g,m,d,h,e)|0;if(f){r=p;return}if((k[g>>2]|0)!=519686845){r=p;return}Qb(g);if(!(g&7)){$a[k[104>>2]&1](g,0,0,1,k[27]|0)|0;r=p;return}else{k[o>>2]=1154;k[o+4>>2]=2499;k[o+8>>2]=1516;Ac(l,1100,o)|0;zc(l,n)|0;r=p;return}}function Hb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=a+92|0;d=k[a+4>>2]|0;f=a+88|0;e=k[f>>2]|0;b=(l[e+68>>0]|0)<<8|(l[e+67>>0]|0)<<16|(l[e+69>>0]|0);c=d+b|0;e=(l[e+65>>0]|0)<<8|(l[e+66>>0]|0);if(!e){a=0;return a|0}k[g>>2]=c;k[a+96>>2]=c;k[a+104>>2]=e;k[a+100>>2]=d+(e+b);k[a+108>>2]=0;k[a+112>>2]=0;if(!(ub(g,a+116|0)|0)){a=0;return a|0}b=k[f>>2]|0;do if(!((l[b+39>>0]|0)<<8|(l[b+40>>0]|0))){if(!((l[b+55>>0]|0)<<8|(l[b+56>>0]|0))){a=0;return a|0}}else{if(!(ub(g,a+140|0)|0)){a=0;return a|0}if(ub(g,a+188|0)|0){b=k[f>>2]|0;break}else{a=0;return a|0}}while(0);if((l[b+55>>0]|0)<<8|(l[b+56>>0]|0)){if(!(ub(g,a+164|0)|0)){a=0;return a|0}if(!(ub(g,a+212|0)|0)){a=0;return a|0}}a=1;return a|0}function Ib(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+592|0;j=s+16|0;h=s;g=s+72|0;q=s+24|0;d=a+88|0;b=k[d>>2]|0;p=(l[b+39>>0]|0)<<8|(l[b+40>>0]|0);n=a+236|0;f=a+240|0;c=k[f>>2]|0;if((c|0)!=(p|0)){if(c>>>0<=p>>>0){do if((k[a+244>>2]|0)>>>0

>>0){if(kb(n,p,(c+1|0)==(p|0),4,0)|0){b=k[f>>2]|0;break}i[a+248>>0]=1;q=0;r=s;return q|0}else b=c;while(0);ad((k[n>>2]|0)+(b<<2)|0,0,p-b<<2|0)|0;b=k[d>>2]|0}k[f>>2]=p}m=a+92|0;c=k[a+4>>2]|0;d=(l[b+34>>0]|0)<<8|(l[b+33>>0]|0)<<16|(l[b+35>>0]|0);e=c+d|0;b=(l[b+37>>0]|0)<<8|(l[b+36>>0]|0)<<16|(l[b+38>>0]|0);if(!b){q=0;r=s;return q|0}k[m>>2]=e;k[a+96>>2]=e;k[a+104>>2]=b;k[a+100>>2]=c+(b+d);k[a+108>>2]=0;k[a+112>>2]=0;k[q+20>>2]=0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;i[q+16>>0]=0;a=q+24|0;k[q+44>>2]=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;i[a+16>>0]=0;if(ub(m,q)|0?(o=q+24|0,ub(m,o)|0):0){if(!(k[f>>2]|0)){k[h>>2]=1154;k[h+4>>2]=903;k[h+8>>2]=1781;Ac(g,1100,h)|0;zc(g,j)|0}if(!p)b=1;else{d=0;e=0;f=0;b=0;g=0;a=0;h=0;c=k[n>>2]|0;while(1){d=(wb(m,q)|0)+d&31;e=(wb(m,o)|0)+e&63;f=(wb(m,q)|0)+f&31;b=(wb(m,q)|0)+b|0;g=(wb(m,o)|0)+g&63;a=(wb(m,q)|0)+a&31;k[c>>2]=e<<5|d<<11|f|b<<27|g<<21|a<<16;h=h+1|0;if((h|0)==(p|0)){b=1;break}else{b=b&31;c=c+4|0}}}}else b=0;rb(q+24|0);rb(q);q=b;r=s;return q|0}function Jb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;D=r;r=r+1024|0;h=D+16|0;g=D;f=D+504|0;C=D+480|0;A=D+284|0;B=D+88|0;z=D+24|0;e=k[a+88>>2]|0;y=(l[e+47>>0]|0)<<8|(l[e+48>>0]|0);x=a+92|0;b=k[a+4>>2]|0;c=(l[e+42>>0]|0)<<8|(l[e+41>>0]|0)<<16|(l[e+43>>0]|0);d=b+c|0;e=(l[e+45>>0]|0)<<8|(l[e+44>>0]|0)<<16|(l[e+46>>0]|0);if(!e){C=0;r=D;return C|0}k[x>>2]=d;k[a+96>>2]=d;k[a+104>>2]=e;k[a+100>>2]=b+(e+c);k[a+108>>2]=0;k[a+112>>2]=0;k[C+20>>2]=0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;i[C+16>>0]=0;if(ub(x,C)|0){c=0;d=-3;e=-3;while(1){k[A+(c<<2)>>2]=d;k[B+(c<<2)>>2]=e;b=(d|0)>2;c=c+1|0;if((c|0)==49)break;else{d=b?-3:d+1|0;e=(b&1)+e|0}}b=z;c=b+64|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));w=a+252|0;c=a+256|0;b=k[c>>2]|0;a:do if((b|0)==(y|0))j=13;else{if(b>>>0<=y>>>0){do if((k[a+260>>2]|0)>>>0>>0)if(kb(w,y,(b+1|0)==(y|0),4,0)|0){b=k[c>>2]|0;break}else{i[a+264>>0]=1;b=0;break a}while(0);ad((k[w>>2]|0)+(b<<2)|0,0,y-b<<2|0)|0}k[c>>2]=y;j=13}while(0);do if((j|0)==13){if(!y){k[g>>2]=1154;k[g+4>>2]=903;k[g+8>>2]=1781;Ac(f,1100,g)|0;zc(f,h)|0;b=1;break}d=z+4|0;e=z+8|0;a=z+12|0;f=z+16|0;g=z+20|0;h=z+24|0;j=z+28|0;m=z+32|0;n=z+36|0;o=z+40|0;p=z+44|0;q=z+48|0;s=z+52|0;t=z+56|0;u=z+60|0;v=0;c=k[w>>2]|0;while(1){b=0;do{E=wb(x,C)|0;w=b<<1;F=z+(w<<2)|0;k[F>>2]=(k[F>>2]|0)+(k[A+(E<<2)>>2]|0)&3;w=z+((w|1)<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[B+(E<<2)>>2]|0)&3;b=b+1|0}while((b|0)!=8);k[c>>2]=(l[1725+(k[d>>2]|0)>>0]|0)<<2|(l[1725+(k[z>>2]|0)>>0]|0)|(l[1725+(k[e>>2]|0)>>0]|0)<<4|(l[1725+(k[a>>2]|0)>>0]|0)<<6|(l[1725+(k[f>>2]|0)>>0]|0)<<8|(l[1725+(k[g>>2]|0)>>0]|0)<<10|(l[1725+(k[h>>2]|0)>>0]|0)<<12|(l[1725+(k[j>>2]|0)>>0]|0)<<14|(l[1725+(k[m>>2]|0)>>0]|0)<<16|(l[1725+(k[n>>2]|0)>>0]|0)<<18|(l[1725+(k[o>>2]|0)>>0]|0)<<20|(l[1725+(k[p>>2]|0)>>0]|0)<<22|(l[1725+(k[q>>2]|0)>>0]|0)<<24|(l[1725+(k[s>>2]|0)>>0]|0)<<26|(l[1725+(k[t>>2]|0)>>0]|0)<<28|(l[1725+(k[u>>2]|0)>>0]|0)<<30;v=v+1|0;if((v|0)==(y|0)){b=1;break}else c=c+4|0}}while(0)}else b=0;rb(C);F=b;r=D;return F|0}function Kb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+560|0;m=q+16|0;h=q;g=q+48|0;p=q+24|0;e=k[a+88>>2]|0;o=(l[e+55>>0]|0)<<8|(l[e+56>>0]|0);n=a+92|0;b=k[a+4>>2]|0;c=(l[e+50>>0]|0)<<8|(l[e+49>>0]|0)<<16|(l[e+51>>0]|0);d=b+c|0;e=(l[e+53>>0]|0)<<8|(l[e+52>>0]|0)<<16|(l[e+54>>0]|0);if(!e){p=0;r=q;return p|0}k[n>>2]=d;k[a+96>>2]=d;k[a+104>>2]=e;k[a+100>>2]=b+(e+c);k[a+108>>2]=0;k[a+112>>2]=0;k[p+20>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;i[p+16>>0]=0;a:do if(ub(n,p)|0){f=a+268|0;c=a+272|0;b=k[c>>2]|0;if((b|0)!=(o|0)){if(b>>>0<=o>>>0){do if((k[a+276>>2]|0)>>>0>>0)if(kb(f,o,(b+1|0)==(o|0),2,0)|0){b=k[c>>2]|0;break}else{i[a+280>>0]=1;b=0;break a}while(0);ad((k[f>>2]|0)+(b<<1)|0,0,o-b<<1|0)|0}k[c>>2]=o}if(!o){k[h>>2]=1154;k[h+4>>2]=903;k[h+8>>2]=1781;Ac(g,1100,h)|0;zc(g,m)|0;b=1;break}c=0;d=0;e=0;b=k[f>>2]|0;while(1){m=wb(n,p)|0;c=m+c&255;d=(wb(n,p)|0)+d&255;j[b>>1]=d<<8|c;e=e+1|0;if((e|0)==(o|0)){b=1;break}else b=b+2|0}}else b=0;while(0);rb(p);p=b;r=q;return p|0}function Lb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;E=r;r=r+2432|0;h=E+16|0;g=E;f=E+1912|0;D=E+1888|0;B=E+988|0;C=E+88|0;A=E+24|0;e=k[a+88>>2]|0;z=(l[e+63>>0]|0)<<8|(l[e+64>>0]|0);y=a+92|0;b=k[a+4>>2]|0;c=(l[e+58>>0]|0)<<8|(l[e+57>>0]|0)<<16|(l[e+59>>0]|0);d=b+c|0;e=(l[e+61>>0]|0)<<8|(l[e+60>>0]|0)<<16|(l[e+62>>0]|0);if(!e){D=0;r=E;return D|0}k[y>>2]=d;k[a+96>>2]=d;k[a+104>>2]=e;k[a+100>>2]=b+(e+c);k[a+108>>2]=0;k[a+112>>2]=0;k[D+20>>2]=0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;i[D+16>>0]=0;if(ub(y,D)|0){c=0;d=-7;e=-7;while(1){k[B+(c<<2)>>2]=d;k[C+(c<<2)>>2]=e;b=(d|0)>6;c=c+1|0;if((c|0)==225)break;else{d=b?-7:d+1|0;e=(b&1)+e|0}}b=A;c=b+64|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));x=a+284|0;c=z*3|0;d=a+288|0;b=k[d>>2]|0;a:do if((b|0)==(c|0))m=13;else{if(b>>>0<=c>>>0){do if((k[a+292>>2]|0)>>>0>>0)if(kb(x,c,(b+1|0)==(c|0),2,0)|0){b=k[d>>2]|0;break}else{i[a+296>>0]=1;b=0;break a}while(0);ad((k[x>>2]|0)+(b<<1)|0,0,c-b<<1|0)|0}k[d>>2]=c;m=13}while(0);do if((m|0)==13){if(!z){k[g>>2]=1154;k[g+4>>2]=903;k[g+8>>2]=1781;Ac(f,1100,g)|0;zc(f,h)|0;b=1;break}d=A+4|0;e=A+8|0;a=A+12|0;f=A+16|0;g=A+20|0;h=A+24|0;m=A+28|0;n=A+32|0;o=A+36|0;p=A+40|0;q=A+44|0;s=A+48|0;t=A+52|0;u=A+56|0;v=A+60|0;w=0;c=k[x>>2]|0;while(1){b=0;do{F=wb(y,D)|0;x=b<<1;G=A+(x<<2)|0;k[G>>2]=(k[G>>2]|0)+(k[B+(F<<2)>>2]|0)&7;x=A+((x|1)<<2)|0;k[x>>2]=(k[x>>2]|0)+(k[C+(F<<2)>>2]|0)&7;b=b+1|0}while((b|0)!=8);F=l[1729+(k[g>>2]|0)>>0]|0;j[c>>1]=(l[1729+(k[d>>2]|0)>>0]|0)<<3|(l[1729+(k[A>>2]|0)>>0]|0)|(l[1729+(k[e>>2]|0)>>0]|0)<<6|(l[1729+(k[a>>2]|0)>>0]|0)<<9|(l[1729+(k[f>>2]|0)>>0]|0)<<12|F<<15;G=l[1729+(k[p>>2]|0)>>0]|0;j[c+2>>1]=(l[1729+(k[h>>2]|0)>>0]|0)<<2|F>>>1|(l[1729+(k[m>>2]|0)>>0]|0)<<5|(l[1729+(k[n>>2]|0)>>0]|0)<<8|(l[1729+(k[o>>2]|0)>>0]|0)<<11|G<<14;j[c+4>>1]=(l[1729+(k[q>>2]|0)>>0]|0)<<1|G>>>2|(l[1729+(k[s>>2]|0)>>0]|0)<<4|(l[1729+(k[t>>2]|0)>>0]|0)<<7|(l[1729+(k[u>>2]|0)>>0]|0)<<10|(l[1729+(k[v>>2]|0)>>0]|0)<<13;w=w+1|0;if((w|0)==(z|0)){b=1;break}else c=c+6|0}}while(0)}else b=0;rb(D);G=b;r=E;return G|0}function Mb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;pa=r;r=r+720|0;oa=pa+184|0;ma=pa+168|0;la=pa+160|0;ka=pa+144|0;ja=pa+136|0;ia=pa+120|0;ga=pa+112|0;ea=pa+96|0;da=pa+88|0;ca=pa+72|0;ba=pa+64|0;aa=pa+48|0;$=pa+40|0;na=pa+24|0;fa=pa+16|0;_=pa;Y=pa+208|0;Z=pa+192|0;R=a+240|0;S=k[R>>2]|0;V=a+256|0;W=k[V>>2]|0;c=i[(k[a+88>>2]|0)+17>>0]|0;X=d>>>2;if(!(c<<24>>24)){r=pa;return 1}T=(h|0)==0;U=h+-1|0;K=(f&1|0)!=0;L=d<<1;M=a+92|0;N=a+116|0;O=a+140|0;P=a+236|0;Q=g+-1|0;J=(e&1|0)!=0;I=a+188|0;D=a+252|0;E=X+1|0;F=X+2|0;G=X+3|0;H=Q<<4;B=c&255;c=0;f=0;e=1;C=0;do{if(!T){z=k[b+(C<<2)>>2]|0;A=0;while(1){w=A&1;j=(w|0)==0;v=(w<<5^32)+-16|0;w=(w<<1^2)+-1|0;y=j?g:-1;m=j?0:Q;a=(A|0)==(U|0);x=K&a;if((m|0)!=(y|0)){u=K&a^1;t=j?z:z+H|0;while(1){if((e|0)==1)e=wb(M,N)|0|512;s=e&7;e=e>>>3;j=l[1823+s>>0]|0;a=0;do{p=(wb(M,O)|0)+f|0;q=p-S|0;f=q>>31;f=f&p|q&~f;if((k[R>>2]|0)>>>0<=f>>>0){k[_>>2]=1154;k[_+4>>2]=903;k[_+8>>2]=1781;Ac(Y,1100,_)|0;zc(Y,fa)|0}k[Z+(a<<2)>>2]=k[(k[P>>2]|0)+(f<<2)>>2];a=a+1|0}while(a>>>0>>0);q=J&(m|0)==(Q|0);if(x|q){p=0;do{n=ha(p,d)|0;a=t+n|0;j=(p|0)==0|u;o=p<<1;ra=(wb(M,I)|0)+c|0;qa=ra-W|0;c=qa>>31;c=c&ra|qa&~c;do if(q){if(!j){qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;break}k[a>>2]=k[Z+((l[1831+(s<<2)+o>>0]|0)<<2)>>2];if((k[V>>2]|0)>>>0<=c>>>0){k[ka>>2]=1154;k[ka+4>>2]=903;k[ka+8>>2]=1781;Ac(Y,1100,ka)|0;zc(Y,la)|0}k[t+(n+4)>>2]=k[(k[D>>2]|0)+(c<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c}else{if(!j){qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;break}k[a>>2]=k[Z+((l[1831+(s<<2)+o>>0]|0)<<2)>>2];if((k[V>>2]|0)>>>0<=c>>>0){k[ia>>2]=1154;k[ia+4>>2]=903;k[ia+8>>2]=1781;Ac(Y,1100,ia)|0;zc(Y,ja)|0}k[t+(n+4)>>2]=k[(k[D>>2]|0)+(c<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;k[t+(n+8)>>2]=k[Z+((l[(o|1)+(1831+(s<<2))>>0]|0)<<2)>>2];if((k[V>>2]|0)>>>0<=c>>>0){k[ma>>2]=1154;k[ma+4>>2]=903;k[ma+8>>2]=1781;Ac(Y,1100,ma)|0;zc(Y,oa)|0}k[t+(n+12)>>2]=k[(k[D>>2]|0)+(c<<2)>>2]}while(0);p=p+1|0}while((p|0)!=2)}else{k[t>>2]=k[Z+((l[1831+(s<<2)>>0]|0)<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;if((k[V>>2]|0)>>>0<=c>>>0){k[na>>2]=1154;k[na+4>>2]=903;k[na+8>>2]=1781;Ac(Y,1100,na)|0;zc(Y,$)|0}k[t+4>>2]=k[(k[D>>2]|0)+(c<<2)>>2];k[t+8>>2]=k[Z+((l[1831+(s<<2)+1>>0]|0)<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;if((k[V>>2]|0)>>>0<=c>>>0){k[aa>>2]=1154;k[aa+4>>2]=903;k[aa+8>>2]=1781;Ac(Y,1100,aa)|0;zc(Y,ba)|0}k[t+12>>2]=k[(k[D>>2]|0)+(c<<2)>>2];k[t+(X<<2)>>2]=k[Z+((l[1831+(s<<2)+2>>0]|0)<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;if((k[V>>2]|0)>>>0<=c>>>0){k[ca>>2]=1154;k[ca+4>>2]=903;k[ca+8>>2]=1781;Ac(Y,1100,ca)|0;zc(Y,da)|0}k[t+(E<<2)>>2]=k[(k[D>>2]|0)+(c<<2)>>2];k[t+(F<<2)>>2]=k[Z+((l[1831+(s<<2)+3>>0]|0)<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;if((k[V>>2]|0)>>>0<=c>>>0){k[ea>>2]=1154;k[ea+4>>2]=903;k[ea+8>>2]=1781;Ac(Y,1100,ea)|0;zc(Y,ga)|0}k[t+(G<<2)>>2]=k[(k[D>>2]|0)+(c<<2)>>2]}m=m+w|0;if((m|0)==(y|0))break;else t=t+v|0}}A=A+1|0;if((A|0)==(h|0))break;else z=z+L|0}}C=C+1|0}while((C|0)!=(B|0));r=pa;return 1}function Nb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;qa=r;r=r+640|0;na=qa+88|0;ma=qa+72|0;la=qa+64|0;ka=qa+48|0;ja=qa+40|0;pa=qa+24|0;oa=qa+16|0;ia=qa;ga=qa+128|0;ha=qa+112|0;fa=qa+96|0;S=a+240|0;T=k[S>>2]|0;W=a+256|0;ca=k[W>>2]|0;da=a+272|0;ea=k[da>>2]|0;c=k[a+88>>2]|0;U=(l[c+63>>0]|0)<<8|(l[c+64>>0]|0);c=i[c+17>>0]|0;if(!(c<<24>>24)){r=qa;return 1}V=(h|0)==0;X=h+-1|0;Y=d<<1;Z=a+92|0;_=a+116|0;$=g+-1|0;aa=a+212|0;ba=a+188|0;R=(e&1|0)==0;Q=(f&1|0)==0;K=a+288|0;L=a+284|0;M=a+252|0;N=a+140|0;O=a+236|0;P=a+164|0;I=a+268|0;J=$<<5;G=c&255;c=0;e=0;f=0;a=0;j=1;H=0;do{if(!V){E=k[b+(H<<2)>>2]|0;F=0;while(1){C=F&1;n=(C|0)==0;B=(C<<6^64)+-32|0;C=(C<<1^2)+-1|0;D=n?g:-1;o=n?0:$;if((o|0)!=(D|0)){A=Q|(F|0)!=(X|0);z=n?E:E+J|0;while(1){if((j|0)==1)j=wb(Z,_)|0|512;y=j&7;j=j>>>3;p=l[1823+y>>0]|0;n=0;do{w=(wb(Z,P)|0)+e|0;x=w-ea|0;e=x>>31;e=e&w|x&~e;if((k[da>>2]|0)>>>0<=e>>>0){k[ia>>2]=1154;k[ia+4>>2]=903;k[ia+8>>2]=1781;Ac(ga,1100,ia)|0;zc(ga,oa)|0}k[fa+(n<<2)>>2]=m[(k[I>>2]|0)+(e<<1)>>1];n=n+1|0}while(n>>>0

>>0);n=0;do{w=(wb(Z,N)|0)+a|0;x=w-T|0;a=x>>31;a=a&w|x&~a;if((k[S>>2]|0)>>>0<=a>>>0){k[pa>>2]=1154;k[pa+4>>2]=903;k[pa+8>>2]=1781;Ac(ga,1100,pa)|0;zc(ga,ja)|0}k[ha+(n<<2)>>2]=k[(k[O>>2]|0)+(a<<2)>>2];n=n+1|0}while(n>>>0

>>0);x=R|(o|0)!=($|0);v=0;w=z;while(1){u=A|(v|0)==0;t=v<<1;q=0;s=w;while(1){p=(wb(Z,aa)|0)+c|0;n=p-U|0;c=n>>31;c=c&p|n&~c;n=(wb(Z,ba)|0)+f|0;p=n-ca|0;f=p>>31;f=f&n|p&~f;if((x|(q|0)==0)&u){n=l[q+t+(1831+(y<<2))>>0]|0;p=c*3|0;if((k[K>>2]|0)>>>0<=p>>>0){k[ka>>2]=1154;k[ka+4>>2]=903;k[ka+8>>2]=1781;Ac(ga,1100,ka)|0;zc(ga,la)|0}ra=k[L>>2]|0;k[s>>2]=(m[ra+(p<<1)>>1]|0)<<16|k[fa+(n<<2)>>2];k[s+4>>2]=(m[ra+(p+2<<1)>>1]|0)<<16|(m[ra+(p+1<<1)>>1]|0);k[s+8>>2]=k[ha+(n<<2)>>2];if((k[W>>2]|0)>>>0<=f>>>0){k[ma>>2]=1154;k[ma+4>>2]=903;k[ma+8>>2]=1781;Ac(ga,1100,ma)|0;zc(ga,na)|0}k[s+12>>2]=k[(k[M>>2]|0)+(f<<2)>>2]}q=q+1|0;if((q|0)==2)break;else s=s+16|0}v=v+1|0;if((v|0)==2)break;else w=w+d|0}o=o+C|0;if((o|0)==(D|0))break;else z=z+B|0}}F=F+1|0;if((F|0)==(h|0))break;else E=E+Y|0}}H=H+1|0}while((H|0)!=(G|0));r=qa;return 1}function Ob(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=r;r=r+608|0;$=ca+64|0;_=ca+48|0;Z=ca+40|0;ba=ca+24|0;aa=ca+16|0;Y=ca;X=ca+88|0;W=ca+72|0;M=a+272|0;N=k[M>>2]|0;c=k[a+88>>2]|0;O=(l[c+63>>0]|0)<<8|(l[c+64>>0]|0);c=i[c+17>>0]|0;if(!(c<<24>>24)){r=ca;return 1}P=(h|0)==0;Q=h+-1|0;R=d<<1;S=a+92|0;T=a+116|0;U=g+-1|0;V=a+212|0;L=(f&1|0)==0;I=a+288|0;J=a+284|0;K=a+164|0;G=a+268|0;H=U<<4;F=c&255;E=(e&1|0)!=0;c=0;f=0;a=1;D=0;do{if(!P){B=k[b+(D<<2)>>2]|0;C=0;while(1){z=C&1;e=(z|0)==0;y=(z<<5^32)+-16|0;z=(z<<1^2)+-1|0;A=e?g:-1;j=e?0:U;if((j|0)!=(A|0)){x=L|(C|0)!=(Q|0);w=e?B:B+H|0;while(1){if((a|0)==1)a=wb(S,T)|0|512;v=a&7;a=a>>>3;n=l[1823+v>>0]|0;e=0;do{t=(wb(S,K)|0)+f|0;u=t-N|0;f=u>>31;f=f&t|u&~f;if((k[M>>2]|0)>>>0<=f>>>0){k[Y>>2]=1154;k[Y+4>>2]=903;k[Y+8>>2]=1781;Ac(X,1100,Y)|0;zc(X,aa)|0}k[W+(e<<2)>>2]=m[(k[G>>2]|0)+(f<<1)>>1];e=e+1|0}while(e>>>0>>0);u=(j|0)==(U|0)&E;s=0;t=w;while(1){q=x|(s|0)==0;p=s<<1;e=(wb(S,V)|0)+c|0;o=e-O|0;n=o>>31;n=n&e|o&~n;if(q){c=l[1831+(v<<2)+p>>0]|0;e=n*3|0;if((k[I>>2]|0)>>>0<=e>>>0){k[ba>>2]=1154;k[ba+4>>2]=903;k[ba+8>>2]=1781;Ac(X,1100,ba)|0;zc(X,Z)|0}o=k[J>>2]|0;k[t>>2]=(m[o+(e<<1)>>1]|0)<<16|k[W+(c<<2)>>2];k[t+4>>2]=(m[o+(e+2<<1)>>1]|0)<<16|(m[o+(e+1<<1)>>1]|0)}o=t+8|0;e=(wb(S,V)|0)+n|0;n=e-O|0;c=n>>31;c=c&e|n&~c;if(!(u|q^1)){e=l[(p|1)+(1831+(v<<2))>>0]|0;n=c*3|0;if((k[I>>2]|0)>>>0<=n>>>0){k[_>>2]=1154;k[_+4>>2]=903;k[_+8>>2]=1781;Ac(X,1100,_)|0;zc(X,$)|0}q=k[J>>2]|0;k[o>>2]=(m[q+(n<<1)>>1]|0)<<16|k[W+(e<<2)>>2];k[t+12>>2]=(m[q+(n+2<<1)>>1]|0)<<16|(m[q+(n+1<<1)>>1]|0)}s=s+1|0;if((s|0)==2)break;else t=t+d|0}j=j+z|0;if((j|0)==(A|0))break;else w=w+y|0}}C=C+1|0;if((C|0)==(h|0))break;else B=B+R|0}}D=D+1|0}while((D|0)!=(F|0));r=ca;return 1}function Pb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=r;r=r+640|0;ia=la+88|0;ha=la+72|0;ga=la+64|0;fa=la+48|0;ea=la+40|0;ka=la+24|0;ja=la+16|0;da=la;ca=la+128|0;aa=la+112|0;ba=la+96|0;S=a+272|0;T=k[S>>2]|0;c=k[a+88>>2]|0;U=(l[c+63>>0]|0)<<8|(l[c+64>>0]|0);c=i[c+17>>0]|0;if(!(c<<24>>24)){r=la;return 1}V=(h|0)==0;W=h+-1|0;X=d<<1;Y=a+92|0;Z=a+116|0;_=g+-1|0;$=a+212|0;R=(e&1|0)==0;Q=(f&1|0)==0;N=a+288|0;O=a+284|0;P=a+164|0;L=a+268|0;M=_<<5;J=c&255;c=0;e=0;f=0;a=0;j=1;K=0;do{if(!V){H=k[b+(K<<2)>>2]|0;I=0;while(1){F=I&1;n=(F|0)==0;E=(F<<6^64)+-32|0;F=(F<<1^2)+-1|0;G=n?g:-1;o=n?0:_;if((o|0)!=(G|0)){D=Q|(I|0)!=(W|0);C=n?H:H+M|0;while(1){if((j|0)==1)j=wb(Y,Z)|0|512;B=j&7;j=j>>>3;p=l[1823+B>>0]|0;n=0;do{z=(wb(Y,P)|0)+a|0;A=z-T|0;a=A>>31;a=a&z|A&~a;if((k[S>>2]|0)>>>0<=a>>>0){k[da>>2]=1154;k[da+4>>2]=903;k[da+8>>2]=1781;Ac(ca,1100,da)|0;zc(ca,ja)|0}k[aa+(n<<2)>>2]=m[(k[L>>2]|0)+(a<<1)>>1];n=n+1|0}while(n>>>0

>>0);n=0;do{z=(wb(Y,P)|0)+e|0;A=z-T|0;e=A>>31;e=e&z|A&~e;if((k[S>>2]|0)>>>0<=e>>>0){k[ka>>2]=1154;k[ka+4>>2]=903;k[ka+8>>2]=1781;Ac(ca,1100,ka)|0;zc(ca,ea)|0}k[ba+(n<<2)>>2]=m[(k[L>>2]|0)+(e<<1)>>1];n=n+1|0}while(n>>>0

>>0);A=R|(o|0)!=(_|0);y=0;z=C;while(1){x=D|(y|0)==0;w=y<<1;u=0;v=z;while(1){t=(wb(Y,$)|0)+f|0;s=t-U|0;f=s>>31;f=f&t|s&~f;s=(wb(Y,$)|0)+c|0;t=s-U|0;c=t>>31;c=c&s|t&~c;if((A|(u|0)==0)&x){s=l[u+w+(1831+(B<<2))>>0]|0;t=f*3|0;n=k[N>>2]|0;if(n>>>0<=t>>>0){k[fa>>2]=1154;k[fa+4>>2]=903;k[fa+8>>2]=1781;Ac(ca,1100,fa)|0;zc(ca,ga)|0;n=k[N>>2]|0}p=k[O>>2]|0;q=c*3|0;if(n>>>0>q>>>0)n=p;else{k[ha>>2]=1154;k[ha+4>>2]=903;k[ha+8>>2]=1781;Ac(ca,1100,ha)|0;zc(ca,ia)|0;n=k[O>>2]|0}k[v>>2]=(m[p+(t<<1)>>1]|0)<<16|k[aa+(s<<2)>>2];k[v+4>>2]=(m[p+(t+2<<1)>>1]|0)<<16|(m[p+(t+1<<1)>>1]|0);k[v+8>>2]=(m[n+(q<<1)>>1]|0)<<16|k[ba+(s<<2)>>2];k[v+12>>2]=(m[n+(q+2<<1)>>1]|0)<<16|(m[n+(q+1<<1)>>1]|0)}u=u+1|0;if((u|0)==2)break;else v=v+16|0}y=y+1|0;if((y|0)==2)break;else z=z+d|0}o=o+F|0;if((o|0)==(G|0))break;else C=C+E|0}}I=I+1|0;if((I|0)==(h|0))break;else H=H+X|0}}K=K+1|0}while((K|0)!=(J|0));r=la;return 1}function Qb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+608|0;n=o+88|0;m=o+72|0;j=o+64|0;h=o+48|0;f=o+40|0;g=o+24|0;e=o+16|0;d=o;l=o+96|0;k[a>>2]=0;b=a+284|0;c=k[b>>2]|0;if(c){if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[d>>2]=1154;k[d+4>>2]=2499;k[d+8>>2]=1516;Ac(l,1100,d)|0;zc(l,e)|0}k[b>>2]=0;k[a+288>>2]=0;k[a+292>>2]=0}i[a+296>>0]=0;b=a+268|0;c=k[b>>2]|0;if(c){if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[g>>2]=1154;k[g+4>>2]=2499;k[g+8>>2]=1516;Ac(l,1100,g)|0;zc(l,f)|0}k[b>>2]=0;k[a+272>>2]=0;k[a+276>>2]=0}i[a+280>>0]=0;b=a+252|0;c=k[b>>2]|0;if(c){if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[h>>2]=1154;k[h+4>>2]=2499;k[h+8>>2]=1516;Ac(l,1100,h)|0;zc(l,j)|0}k[b>>2]=0;k[a+256>>2]=0;k[a+260>>2]=0}i[a+264>>0]=0;b=a+236|0;c=k[b>>2]|0;if(!c){n=a+248|0;i[n>>0]=0;n=a+212|0;rb(n);n=a+188|0;rb(n);n=a+164|0;rb(n);n=a+140|0;rb(n);n=a+116|0;rb(n);r=o;return}if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[m>>2]=1154;k[m+4>>2]=2499;k[m+8>>2]=1516;Ac(l,1100,m)|0;zc(l,n)|0}k[b>>2]=0;k[a+240>>2]=0;k[a+244>>2]=0;n=a+248|0;i[n>>0]=0;n=a+212|0;rb(n);n=a+188|0;rb(n);n=a+164|0;rb(n);n=a+140|0;rb(n);n=a+116|0;rb(n);r=o;return}function Rb(a,b){a=a|0;b=b|0;var c=0;c=r;r=r+16|0;k[c>>2]=b;b=k[63]|0;Bc(b,a,c)|0;xc(10,b)|0;Na()}function Sb(){var a=0,b=0;a=r;r=r+16|0;if(!(Ha(200,2)|0)){b=Fa(k[49]|0)|0;r=a;return b|0}else Rb(2090,a);return 0}function Tb(a){a=a|0;Vc(a);return}function Ub(a){a=a|0;var b=0;b=r;r=r+16|0;Za[a&3]();Rb(2139,b)}function Vb(){var a=0,b=0;a=Sb()|0;if(((a|0)!=0?(b=k[a>>2]|0,(b|0)!=0):0)?(a=b+48|0,(k[a>>2]&-256|0)==1126902528?(k[a+4>>2]|0)==1129074247:0):0)Ub(k[b+12>>2]|0);b=k[28]|0;k[28]=b+0;Ub(b)}function Wb(a){a=a|0;return}function Xb(a){a=a|0;return}function Yb(a){a=a|0;return}function Zb(a){a=a|0;return}function _b(a){a=a|0;Tb(a);return}function $b(a){a=a|0;Tb(a);return}function ac(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+64|0;f=g;if((a|0)!=(b|0))if((b|0)!=0?(e=ec(b,24,40,0)|0,(e|0)!=0):0){b=f;d=b+56|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(d|0));k[f>>2]=e;k[f+8>>2]=a;k[f+12>>2]=-1;k[f+48>>2]=1;ab[k[(k[e>>2]|0)+28>>2]&3](e,f,k[c>>2]|0,1);if((k[f+24>>2]|0)==1){k[c>>2]=k[f+16>>2];b=1}else b=0}else b=0;else b=1;r=g;return b|0}function bc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a=b+16|0;e=k[a>>2]|0;do if(e){if((e|0)!=(c|0)){d=b+36|0;k[d>>2]=(k[d>>2]|0)+1;k[b+24>>2]=2;i[b+54>>0]=1;break}a=b+24|0;if((k[a>>2]|0)==2)k[a>>2]=d}else{k[a>>2]=c;k[b+24>>2]=d;k[b+36>>2]=1}while(0);return}function cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))bc(0,b,c,d);return}function dc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))bc(0,b,c,d);else{a=k[a+8>>2]|0;ab[k[(k[a>>2]|0)+28>>2]&3](a,b,c,d)}return}function ec(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+64|0;p=q;o=k[a>>2]|0;n=a+(k[o+-8>>2]|0)|0;o=k[o+-4>>2]|0;k[p>>2]=c;k[p+4>>2]=a;k[p+8>>2]=b;k[p+12>>2]=d;d=p+16|0;a=p+20|0;b=p+24|0;e=p+28|0;f=p+32|0;g=p+40|0;h=(o|0)==(c|0);l=d;m=l+36|0;do{k[l>>2]=0;l=l+4|0}while((l|0)<(m|0));j[d+36>>1]=0;i[d+38>>0]=0;a:do if(h){k[p+48>>2]=1;_a[k[(k[c>>2]|0)+20>>2]&3](c,p,n,n,1,0);d=(k[b>>2]|0)==1?n:0}else{Va[k[(k[o>>2]|0)+24>>2]&3](o,p,n,1,0);switch(k[p+36>>2]|0){case 0:{d=(k[g>>2]|0)==1&(k[e>>2]|0)==1&(k[f>>2]|0)==1?k[a>>2]|0:0;break a}case 1:break;default:{d=0;break a}}if((k[b>>2]|0)!=1?!((k[g>>2]|0)==0&(k[e>>2]|0)==1&(k[f>>2]|0)==1):0){d=0;break}d=k[d>>2]|0}while(0);r=q;return d|0}function fc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;i[b+53>>0]=1;do if((k[b+4>>2]|0)==(d|0)){i[b+52>>0]=1;d=b+16|0;a=k[d>>2]|0;if(!a){k[d>>2]=c;k[b+24>>2]=e;k[b+36>>2]=1;if(!((e|0)==1?(k[b+48>>2]|0)==1:0))break;i[b+54>>0]=1;break}if((a|0)!=(c|0)){e=b+36|0;k[e>>2]=(k[e>>2]|0)+1;i[b+54>>0]=1;break}a=b+24|0;d=k[a>>2]|0;if((d|0)==2){k[a>>2]=e;d=e}if((d|0)==1?(k[b+48>>2]|0)==1:0)i[b+54>>0]=1}while(0);return}function gc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;a:do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){h=k[a+8>>2]|0;Va[k[(k[h>>2]|0)+24>>2]&3](h,b,c,d,e);break}if((k[b+16>>2]|0)!=(c|0)?(g=b+20|0,(k[g>>2]|0)!=(c|0)):0){k[b+32>>2]=d;d=b+44|0;if((k[d>>2]|0)==4)break;f=b+52|0;i[f>>0]=0;j=b+53|0;i[j>>0]=0;a=k[a+8>>2]|0;_a[k[(k[a>>2]|0)+20>>2]&3](a,b,c,c,1,e);if(i[j>>0]|0){if(!(i[f>>0]|0)){f=1;h=13}}else{f=0;h=13}do if((h|0)==13){k[g>>2]=c;j=b+40|0;k[j>>2]=(k[j>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0){i[b+54>>0]=1;if(f)break}else h=16;if((h|0)==16?f:0)break;k[d>>2]=4;break a}while(0);k[d>>2]=3;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function hc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(g=b+28|0,(k[g>>2]|0)!=1):0)k[g>>2]=d}else if((a|0)==(k[b>>2]|0)){if((k[b+16>>2]|0)!=(c|0)?(f=b+20|0,(k[f>>2]|0)!=(c|0)):0){k[b+32>>2]=d;k[f>>2]=c;e=b+40|0;k[e>>2]=(k[e>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1;k[b+44>>2]=4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function ic(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))fc(0,b,c,d,e);else{a=k[a+8>>2]|0;_a[k[(k[a>>2]|0)+20>>2]&3](a,b,c,d,e,f)}return}function jc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))fc(0,b,c,d,e);return}function kc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[d>>2]=k[c>>2];a=Ua[k[(k[a>>2]|0)+16>>2]&7](a,b,d)|0;if(a)k[c>>2]=k[d>>2];r=e;return a&1|0}function lc(a){a=a|0;if(!a)a=0;else a=(ec(a,24,72,0)|0)!=0;return a&1|0}function mc(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+48|0;g=e+32|0;c=e+24|0;h=e+16|0;f=e;e=e+36|0;a=Sb()|0;if((a|0)!=0?(d=k[a>>2]|0,(d|0)!=0):0){a=d+48|0;b=k[a>>2]|0;a=k[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){k[c>>2]=k[51];Rb(2368,c)}if((b|0)==1126902529&(a|0)==1129074247)a=k[d+44>>2]|0;else a=d+80|0;k[e>>2]=a;d=k[d>>2]|0;a=k[d+4>>2]|0;if(Ua[k[(k[8>>2]|0)+16>>2]&7](8,d,e)|0){h=k[e>>2]|0;e=k[51]|0;h=Xa[k[(k[h>>2]|0)+8>>2]&1](h)|0;k[f>>2]=e;k[f+4>>2]=a;k[f+8>>2]=h;Rb(2282,f)}else{k[h>>2]=k[51];k[h+4>>2]=a;Rb(2327,h)}}Rb(2406,g)}function nc(){var a=0;a=r;r=r+16|0;if(!(Ia(196,6)|0)){r=a;return}else Rb(2179,a)}function oc(a){a=a|0;var b=0;b=r;r=r+16|0;Vc(a);if(!(La(k[49]|0,0)|0)){r=b;return}else Rb(2229,b)}function pc(a){a=a|0;var b=0,c=0;b=0;while(1){if((l[2427+b>>0]|0)==(a|0)){c=2;break}b=b+1|0;if((b|0)==87){b=87;a=2515;c=5;break}}if((c|0)==2)if(!b)a=2515;else{a=2515;c=5}if((c|0)==5)while(1){c=a;while(1){a=c+1|0;if(!(i[c>>0]|0))break;else c=a}b=b+-1|0;if(!b)break;else c=5}return a|0}function qc(){var a=0;if(!(k[52]|0))a=264;else{a=(Ga()|0)+60|0;a=k[a>>2]|0}return a|0}function rc(a){a=a|0;var b=0;if(a>>>0>4294963200){b=qc()|0;k[b>>2]=0-a;a=-1}return a|0}function sc(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;e=bd(c|0,d|0,52)|0;e=e&2047;switch(e|0){case 0:{if(a!=0.0){a=+sc(a*18446744073709552.0e3,b);c=(k[b>>2]|0)+-64|0}else c=0;k[b>>2]=c;break}case 2047:break;default:{k[b>>2]=e+-1022;k[t>>2]=c;k[t+4>>2]=d&-2146435073|1071644672;a=+p[t>>3]}}return +a}function tc(a,b){a=+a;b=b|0;return +(+sc(a,b))}function uc(a,b,c){a=a|0;b=b|0;c=c|0;do if(a){if(b>>>0<128){i[a>>0]=b;a=1;break}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;a=2;break}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;a=3;break}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;a=4;break}else{a=qc()|0;k[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function vc(a,b){a=a|0;b=b|0;if(!a)a=0;else a=uc(a,b,0)|0;return a|0}function wc(a){a=a|0;var b=0,c=0;do if(a){if((k[a+76>>2]|0)<=-1){b=Nc(a)|0;break}c=(Ec(a)|0)==0;b=Nc(a)|0;if(!c)Fc(a)}else{if(!(k[65]|0))b=0;else b=wc(k[65]|0)|0;Ma(236);a=k[58]|0;if(a)do{if((k[a+76>>2]|0)>-1)c=Ec(a)|0;else c=0;if((k[a+20>>2]|0)>>>0>(k[a+28>>2]|0)>>>0)b=Nc(a)|0|b;if(c)Fc(a);a=k[a+56>>2]|0}while((a|0)!=0);Ja(236)}while(0);return b|0}function xc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((k[b+76>>2]|0)>=0?(Ec(b)|0)!=0:0){if((i[b+75>>0]|0)!=(a|0)?(d=b+20|0,e=k[d>>2]|0,e>>>0<(k[b+16>>2]|0)>>>0):0){k[d>>2]=e+1;i[e>>0]=a;c=a&255}else c=Gc(b,a)|0;Fc(b)}else g=3;do if((g|0)==3){if((i[b+75>>0]|0)!=(a|0)?(f=b+20|0,c=k[f>>2]|0,c>>>0<(k[b+16>>2]|0)>>>0):0){k[f>>2]=c+1;i[c>>0]=a;c=a&255;break}c=Gc(b,a)|0}while(0);return c|0}function yc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=c+16|0;e=k[d>>2]|0;if(!e)if(!(Lc(c)|0)){e=k[d>>2]|0;f=4}else d=0;else f=4;a:do if((f|0)==4){g=c+20|0;f=k[g>>2]|0;if((e-f|0)>>>0>>0){d=Ua[k[c+36>>2]&7](c,a,b)|0;break}b:do if((i[c+75>>0]|0)>-1){d=b;while(1){if(!d){e=f;d=0;break b}e=d+-1|0;if((i[a+e>>0]|0)==10)break;else d=e}if((Ua[k[c+36>>2]&7](c,a,d)|0)>>>0>>0)break a;b=b-d|0;a=a+d|0;e=k[g>>2]|0}else{e=f;d=0}while(0);ed(e|0,a|0,b|0)|0;k[g>>2]=(k[g>>2]|0)+b;d=d+b|0}while(0);return d|0}function zc(a,b){a=a|0;b=b|0;var c=0,d=0;c=r;r=r+16|0;d=c;k[d>>2]=b;b=Bc(k[64]|0,a,d)|0;r=c;return b|0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=Dc(a,b,e)|0;r=d;return c|0}function Bc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+224|0;n=s+120|0;q=s+80|0;p=s;o=s+136|0;d=q;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[n>>2]=k[c>>2];if((Oc(0,b,n,p,q)|0)<0)c=-1;else{if((k[a+76>>2]|0)>-1)l=Ec(a)|0;else l=0;c=k[a>>2]|0;m=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;c=a+48|0;if(!(k[c>>2]|0)){e=a+44|0;f=k[e>>2]|0;k[e>>2]=o;g=a+28|0;k[g>>2]=o;h=a+20|0;k[h>>2]=o;k[c>>2]=80;j=a+16|0;k[j>>2]=o+80;d=Oc(a,b,n,p,q)|0;if(f){Ua[k[a+36>>2]&7](a,0,0)|0;d=(k[h>>2]|0)==0?-1:d;k[e>>2]=f;k[c>>2]=0;k[j>>2]=0;k[g>>2]=0;k[h>>2]=0}}else d=Oc(a,b,n,p,q)|0;c=k[a>>2]|0;k[a>>2]=c|m;if(l)Fc(a);c=(c&32|0)==0?d:-1}r=s;return c|0}function Cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+128|0;e=m+112|0;l=m;f=l;g=268;h=f+112|0;do{k[f>>2]=k[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if((b+-1|0)>>>0>2147483646)if(!b){b=1;j=4}else{b=qc()|0;k[b>>2]=75;b=-1}else{e=a;j=4}if((j|0)==4){j=-2-e|0;j=b>>>0>j>>>0?j:b;k[l+48>>2]=j;a=l+20|0;k[a>>2]=e;k[l+44>>2]=e;b=e+j|0;e=l+16|0;k[e>>2]=b;k[l+28>>2]=b;b=Bc(l,c,d)|0;if(j){c=k[a>>2]|0;i[c+(((c|0)==(k[e>>2]|0))<<31>>31)>>0]=0}}r=m;return b|0}function Dc(a,b,c){a=a|0;b=b|0;c=c|0;return Cc(a,2147483647,b,c)|0}function Ec(a){a=a|0;return 0}function Fc(a){a=a|0;return}function Gc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;h=j;g=b&255;i[h>>0]=g;d=a+16|0;e=k[d>>2]|0;if(!e)if(!(Lc(a)|0)){e=k[d>>2]|0;f=4}else c=-1;else f=4;do if((f|0)==4){d=a+20|0;f=k[d>>2]|0;if(f>>>0>>0?(c=b&255,(c|0)!=(i[a+75>>0]|0)):0){k[d>>2]=f+1;i[f>>0]=g;break}if((Ua[k[a+36>>2]&7](a,h,1)|0)==1)c=l[h>>0]|0;else c=-1}while(0);r=j;return c|0}function Hc(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=k[a+60>>2];a=rc(xa(6,c|0)|0)|0;r=b;return a|0}function Ic(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+32|0;f=e;d=e+20|0;k[f>>2]=k[a+60>>2];k[f+4>>2]=0;k[f+8>>2]=b;k[f+12>>2]=d;k[f+16>>2]=c;if((rc(Qa(140,f|0)|0)|0)<0){k[d>>2]=-1;a=-1}else a=k[d>>2]|0;r=e;return a|0}function Jc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+48|0;m=p+16|0;l=p;d=p+32|0;n=a+28|0;e=k[n>>2]|0;k[d>>2]=e;o=a+20|0;e=(k[o>>2]|0)-e|0;k[d+4>>2]=e;k[d+8>>2]=b;k[d+12>>2]=c;i=a+60|0;j=a+44|0;b=2;e=e+c|0;while(1){if(!(k[52]|0)){k[m>>2]=k[i>>2];k[m+4>>2]=d;k[m+8>>2]=b;g=rc(Ra(146,m|0)|0)|0}else{Oa(7,a|0);k[l>>2]=k[i>>2];k[l+4>>2]=d;k[l+8>>2]=b;g=rc(Ra(146,l|0)|0)|0;va(0)}if((e|0)==(g|0)){e=6;break}if((g|0)<0){e=8;break}e=e-g|0;f=k[d+4>>2]|0;if(g>>>0<=f>>>0)if((b|0)==2){k[n>>2]=(k[n>>2]|0)+g;h=f;b=2}else h=f;else{h=k[j>>2]|0;k[n>>2]=h;k[o>>2]=h;h=k[d+12>>2]|0;g=g-f|0;d=d+8|0;b=b+-1|0}k[d>>2]=(k[d>>2]|0)+g;k[d+4>>2]=h-g}if((e|0)==6){m=k[j>>2]|0;k[a+16>>2]=m+(k[a+48>>2]|0);a=m;k[n>>2]=a;k[o>>2]=a}else if((e|0)==8){k[a+16>>2]=0;k[n>>2]=0;k[o>>2]=0;k[a>>2]=k[a>>2]|32;if((b|0)==2)c=0;else c=c-(k[d+4>>2]|0)|0}r=p;return c|0}function Kc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+80|0;d=e;k[a+36>>2]=3;if((k[a>>2]&64|0)==0?(k[d>>2]=k[a+60>>2],k[d+4>>2]=21505,k[d+8>>2]=e+12,(wa(54,d|0)|0)!=0):0)i[a+75>>0]=-1;d=Jc(a,b,c)|0;r=e;return d|0}function Lc(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=k[a>>2]|0;if(!(b&8)){k[a+8>>2]=0;k[a+4>>2]=0;b=k[a+44>>2]|0;k[a+28>>2]=b;k[a+20>>2]=b;k[a+16>>2]=b+(k[a+48>>2]|0);b=0}else{k[a>>2]=b|32;b=-1}return b|0}function Mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b&255;d=(c|0)!=0;a:do if(d&(a&3|0)!=0){e=b&255;while(1){if((i[a>>0]|0)==e<<24>>24){g=6;break a}a=a+1|0;c=c+-1|0;d=(c|0)!=0;if(!(d&(a&3|0)!=0)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(d)g=6;else c=0;b:do if((g|0)==6){e=b&255;if((i[a>>0]|0)!=e<<24>>24){d=ha(f,16843009)|0;c:do if(c>>>0>3)while(1){f=k[a>>2]^d;if((f&-2139062144^-2139062144)&f+-16843009)break;a=a+4|0;c=c+-4|0;if(c>>>0<=3){g=11;break c}}else g=11;while(0);if((g|0)==11)if(!c){c=0;break}while(1){if((i[a>>0]|0)==e<<24>>24)break b;a=a+1|0;c=c+-1|0;if(!c){c=0;break}}}}while(0);return ((c|0)!=0?a:0)|0}function Nc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+20|0;f=a+28|0;if((k[b>>2]|0)>>>0>(k[f>>2]|0)>>>0?(Ua[k[a+36>>2]&7](a,0,0)|0,(k[b>>2]|0)==0):0)b=-1;else{g=a+4|0;c=k[g>>2]|0;d=a+8|0;e=k[d>>2]|0;if(c>>>0>>0)Ua[k[a+40>>2]&7](a,c-e|0,1)|0;k[a+16>>2]=0;k[f>>2]=0;k[b>>2]=0;k[d>>2]=0;k[g>>2]=0;b=0}return b|0}function Oc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,m=0,n=0.0,o=0,q=0,s=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;ga=r;r=r+624|0;ba=ga+24|0;da=ga+16|0;ca=ga+588|0;Y=ga+576|0;aa=ga;V=ga+536|0;fa=ga+8|0;ea=ga+528|0;M=(a|0)!=0;N=V+40|0;U=N;V=V+39|0;W=fa+4|0;X=Y+12|0;Y=Y+11|0;Z=ca;_=X;$=_-Z|0;O=-2-Z|0;P=_+2|0;Q=ba+288|0;R=ca+9|0;S=R;T=ca+8|0;f=0;w=b;g=0;b=0;a:while(1){do if((f|0)>-1)if((g|0)>(2147483647-f|0)){f=qc()|0;k[f>>2]=75;f=-1;break}else{f=g+f|0;break}while(0);g=i[w>>0]|0;if(!(g<<24>>24)){K=245;break}else h=w;b:while(1){switch(g<<24>>24){case 37:{g=h;K=9;break b}case 0:{g=h;break b}default:{}}J=h+1|0;g=i[J>>0]|0;h=J}c:do if((K|0)==9)while(1){K=0;if((i[g+1>>0]|0)!=37)break c;h=h+1|0;g=g+2|0;if((i[g>>0]|0)==37)K=9;else break}while(0);y=h-w|0;if(M?(k[a>>2]&32|0)==0:0)yc(w,y,a)|0;if((h|0)!=(w|0)){w=g;g=y;continue}o=g+1|0;h=i[o>>0]|0;m=(h<<24>>24)+-48|0;if(m>>>0<10){J=(i[g+2>>0]|0)==36;o=J?g+3|0:o;h=i[o>>0]|0;u=J?m:-1;b=J?1:b}else u=-1;g=h<<24>>24;d:do if((g&-32|0)==32){m=0;while(1){if(!(1<>24)+-32|m;o=o+1|0;h=i[o>>0]|0;g=h<<24>>24;if((g&-32|0)!=32){q=m;g=o;break}}}else{q=0;g=o}while(0);do if(h<<24>>24==42){m=g+1|0;h=(i[m>>0]|0)+-48|0;if(h>>>0<10?(i[g+2>>0]|0)==36:0){k[e+(h<<2)>>2]=10;b=1;g=g+3|0;h=k[d+((i[m>>0]|0)+-48<<3)>>2]|0}else{if(b){f=-1;break a}if(!M){x=q;g=m;b=0;J=0;break}b=(k[c>>2]|0)+(4-1)&~(4-1);h=k[b>>2]|0;k[c>>2]=b+4;b=0;g=m}if((h|0)<0){x=q|8192;J=0-h|0}else{x=q;J=h}}else{m=(h<<24>>24)+-48|0;if(m>>>0<10){h=0;do{h=(h*10|0)+m|0;g=g+1|0;m=(i[g>>0]|0)+-48|0}while(m>>>0<10);if((h|0)<0){f=-1;break a}else{x=q;J=h}}else{x=q;J=0}}while(0);e:do if((i[g>>0]|0)==46){m=g+1|0;h=i[m>>0]|0;if(h<<24>>24!=42){o=(h<<24>>24)+-48|0;if(o>>>0<10){g=m;h=0}else{g=m;o=0;break}while(1){h=(h*10|0)+o|0;g=g+1|0;o=(i[g>>0]|0)+-48|0;if(o>>>0>=10){o=h;break e}}}m=g+2|0;h=(i[m>>0]|0)+-48|0;if(h>>>0<10?(i[g+3>>0]|0)==36:0){k[e+(h<<2)>>2]=10;g=g+4|0;o=k[d+((i[m>>0]|0)+-48<<3)>>2]|0;break}if(b){f=-1;break a}if(M){g=(k[c>>2]|0)+(4-1)&~(4-1);o=k[g>>2]|0;k[c>>2]=g+4;g=m}else{g=m;o=0}}else o=-1;while(0);s=0;while(1){h=(i[g>>0]|0)+-65|0;if(h>>>0>57){f=-1;break a}m=g+1|0;h=i[5359+(s*58|0)+h>>0]|0;q=h&255;if((q+-1|0)>>>0<8){g=m;s=q}else{I=m;break}}if(!(h<<24>>24)){f=-1;break}m=(u|0)>-1;do if(h<<24>>24==19)if(m){f=-1;break a}else K=52;else{if(m){k[e+(u<<2)>>2]=q;G=d+(u<<3)|0;H=k[G+4>>2]|0;K=aa;k[K>>2]=k[G>>2];k[K+4>>2]=H;K=52;break}if(!M){f=0;break a}Rc(aa,q,c)}while(0);if((K|0)==52?(K=0,!M):0){w=I;g=y;continue}u=i[g>>0]|0;u=(s|0)!=0&(u&15|0)==3?u&-33:u;m=x&-65537;H=(x&8192|0)==0?x:m;f:do switch(u|0){case 110:switch(s|0){case 0:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 1:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 2:{w=k[aa>>2]|0;k[w>>2]=f;k[w+4>>2]=((f|0)<0)<<31>>31;w=I;g=y;continue a}case 3:{j[k[aa>>2]>>1]=f;w=I;g=y;continue a}case 4:{i[k[aa>>2]>>0]=f;w=I;g=y;continue a}case 6:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 7:{w=k[aa>>2]|0;k[w>>2]=f;k[w+4>>2]=((f|0)<0)<<31>>31;w=I;g=y;continue a}default:{w=I;g=y;continue a}}case 112:{s=H|8;o=o>>>0>8?o:8;u=120;K=64;break}case 88:case 120:{s=H;K=64;break}case 111:{m=aa;h=k[m>>2]|0;m=k[m+4>>2]|0;if((h|0)==0&(m|0)==0)g=N;else{g=N;do{g=g+-1|0;i[g>>0]=h&7|48;h=bd(h|0,m|0,3)|0;m=L}while(!((h|0)==0&(m|0)==0))}if(!(H&8)){h=H;s=0;q=5839;K=77}else{s=U-g+1|0;h=H;o=(o|0)<(s|0)?s:o;s=0;q=5839;K=77}break}case 105:case 100:{h=aa;g=k[h>>2]|0;h=k[h+4>>2]|0;if((h|0)<0){g=$c(0,0,g|0,h|0)|0;h=L;m=aa;k[m>>2]=g;k[m+4>>2]=h;m=1;q=5839;K=76;break f}if(!(H&2048)){q=H&1;m=q;q=(q|0)==0?5839:5841;K=76}else{m=1;q=5840;K=76}break}case 117:{h=aa;g=k[h>>2]|0;h=k[h+4>>2]|0;m=0;q=5839;K=76;break}case 99:{i[V>>0]=k[aa>>2];w=V;h=1;s=0;u=5839;g=N;break}case 109:{g=qc()|0;g=pc(k[g>>2]|0)|0;K=82;break}case 115:{g=k[aa>>2]|0;g=(g|0)!=0?g:5849;K=82;break}case 67:{k[fa>>2]=k[aa>>2];k[W>>2]=0;k[aa>>2]=fa;o=-1;K=86;break}case 83:{if(!o){Tc(a,32,J,0,H);g=0;K=98}else K=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{n=+p[aa>>3];k[da>>2]=0;p[t>>3]=n;if((k[t+4>>2]|0)>=0)if(!(H&2048)){G=H&1;F=G;G=(G|0)==0?5857:5862}else{F=1;G=5859}else{n=-n;F=1;G=5856}p[t>>3]=n;E=k[t+4>>2]&2146435072;do if(E>>>0<2146435072|(E|0)==2146435072&0<0){v=+tc(n,da)*2.0;h=v!=0.0;if(h)k[da>>2]=(k[da>>2]|0)+-1;C=u|32;if((C|0)==97){w=u&32;y=(w|0)==0?G:G+9|0;x=F|2;g=12-o|0;do if(!(o>>>0>11|(g|0)==0)){n=8.0;do{g=g+-1|0;n=n*16.0}while((g|0)!=0);if((i[y>>0]|0)==45){n=-(n+(-v-n));break}else{n=v+n-n;break}}else n=v;while(0);h=k[da>>2]|0;g=(h|0)<0?0-h|0:h;g=Sc(g,((g|0)<0)<<31>>31,X)|0;if((g|0)==(X|0)){i[Y>>0]=48;g=Y}i[g+-1>>0]=(h>>31&2)+43;s=g+-2|0;i[s>>0]=u+15;q=(o|0)<1;m=(H&8|0)==0;h=ca;while(1){G=~~n;g=h+1|0;i[h>>0]=l[5823+G>>0]|w;n=(n-+(G|0))*16.0;do if((g-Z|0)==1){if(m&(q&n==0.0))break;i[g>>0]=46;g=h+2|0}while(0);if(!(n!=0.0))break;else h=g}o=(o|0)!=0&(O+g|0)<(o|0)?P+o-s|0:$-s+g|0;m=o+x|0;Tc(a,32,J,m,H);if(!(k[a>>2]&32))yc(y,x,a)|0;Tc(a,48,J,m,H^65536);g=g-Z|0;if(!(k[a>>2]&32))yc(ca,g,a)|0;h=_-s|0;Tc(a,48,o-(g+h)|0,0,0);if(!(k[a>>2]&32))yc(s,h,a)|0;Tc(a,32,J,m,H^8192);g=(m|0)<(J|0)?J:m;break}g=(o|0)<0?6:o;if(h){h=(k[da>>2]|0)+-28|0;k[da>>2]=h;n=v*268435456.0}else{n=v;h=k[da>>2]|0}E=(h|0)<0?ba:Q;D=E;h=E;do{B=~~n>>>0;k[h>>2]=B;h=h+4|0;n=(n-+(B>>>0))*1.0e9}while(n!=0.0);m=h;h=k[da>>2]|0;if((h|0)>0){q=E;while(1){s=(h|0)>29?29:h;o=m+-4|0;do if(o>>>0>>0)o=q;else{h=0;do{B=cd(k[o>>2]|0,0,s|0)|0;B=dd(B|0,L|0,h|0,0)|0;h=L;A=md(B|0,h|0,1e9,0)|0;k[o>>2]=A;h=ld(B|0,h|0,1e9,0)|0;o=o+-4|0}while(o>>>0>=q>>>0);if(!h){o=q;break}o=q+-4|0;k[o>>2]=h}while(0);while(1){if(m>>>0<=o>>>0)break;h=m+-4|0;if(!(k[h>>2]|0))m=h;else break}h=(k[da>>2]|0)-s|0;k[da>>2]=h;if((h|0)>0)q=o;else break}}else o=E;if((h|0)<0){y=((g+25|0)/9|0)+1|0;z=(C|0)==102;w=o;while(1){x=0-h|0;x=(x|0)>9?9:x;do if(w>>>0>>0){h=(1<>>x;o=0;s=w;do{B=k[s>>2]|0;k[s>>2]=(B>>>x)+o;o=ha(B&h,q)|0;s=s+4|0}while(s>>>0>>0);h=(k[w>>2]|0)==0?w+4|0:w;if(!o){o=h;break}k[m>>2]=o;o=h;m=m+4|0}else o=(k[w>>2]|0)==0?w+4|0:w;while(0);h=z?E:o;m=(m-h>>2|0)>(y|0)?h+(y<<2)|0:m;h=(k[da>>2]|0)+x|0;k[da>>2]=h;if((h|0)>=0){w=o;break}else w=o}}else w=o;do if(w>>>0>>0){h=(D-w>>2)*9|0;q=k[w>>2]|0;if(q>>>0<10)break;else o=10;do{o=o*10|0;h=h+1|0}while(q>>>0>=o>>>0)}else h=0;while(0);A=(C|0)==103;B=(g|0)!=0;o=g-((C|0)!=102?h:0)+((B&A)<<31>>31)|0;if((o|0)<(((m-D>>2)*9|0)+-9|0)){s=o+9216|0;z=(s|0)/9|0;o=E+(z+-1023<<2)|0;s=((s|0)%9|0)+1|0;if((s|0)<9){q=10;do{q=q*10|0;s=s+1|0}while((s|0)!=9)}else q=10;x=k[o>>2]|0;y=(x>>>0)%(q>>>0)|0;if((y|0)==0?(E+(z+-1022<<2)|0)==(m|0):0)q=w;else K=163;do if((K|0)==163){K=0;v=(((x>>>0)/(q>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;s=(q|0)/2|0;do if(y>>>0>>0)n=.5;else{if((y|0)==(s|0)?(E+(z+-1022<<2)|0)==(m|0):0){n=1.0;break}n=1.5}while(0);do if(F){if((i[G>>0]|0)!=45)break;v=-v;n=-n}while(0);s=x-y|0;k[o>>2]=s;if(!(v+n!=v)){q=w;break}C=s+q|0;k[o>>2]=C;if(C>>>0>999999999){h=w;while(1){q=o+-4|0;k[o>>2]=0;if(q>>>0>>0){h=h+-4|0;k[h>>2]=0}C=(k[q>>2]|0)+1|0;k[q>>2]=C;if(C>>>0>999999999)o=q;else{w=h;o=q;break}}}h=(D-w>>2)*9|0;s=k[w>>2]|0;if(s>>>0<10){q=w;break}else q=10;do{q=q*10|0;h=h+1|0}while(s>>>0>=q>>>0);q=w}while(0);C=o+4|0;w=q;m=m>>>0>C>>>0?C:m}y=0-h|0;while(1){if(m>>>0<=w>>>0){z=0;C=m;break}o=m+-4|0;if(!(k[o>>2]|0))m=o;else{z=1;C=m;break}}do if(A){g=(B&1^1)+g|0;if((g|0)>(h|0)&(h|0)>-5){u=u+-1|0;g=g+-1-h|0}else{u=u+-2|0;g=g+-1|0}m=H&8;if(m)break;do if(z){m=k[C+-4>>2]|0;if(!m){o=9;break}if(!((m>>>0)%10|0)){q=10;o=0}else{o=0;break}do{q=q*10|0;o=o+1|0}while(((m>>>0)%(q>>>0)|0|0)==0)}else o=9;while(0);m=((C-D>>2)*9|0)+-9|0;if((u|32|0)==102){m=m-o|0;m=(m|0)<0?0:m;g=(g|0)<(m|0)?g:m;m=0;break}else{m=m+h-o|0;m=(m|0)<0?0:m;g=(g|0)<(m|0)?g:m;m=0;break}}else m=H&8;while(0);x=g|m;q=(x|0)!=0&1;s=(u|32|0)==102;if(s){h=(h|0)>0?h:0;u=0}else{o=(h|0)<0?y:h;o=Sc(o,((o|0)<0)<<31>>31,X)|0;if((_-o|0)<2)do{o=o+-1|0;i[o>>0]=48}while((_-o|0)<2);i[o+-1>>0]=(h>>31&2)+43;D=o+-2|0;i[D>>0]=u;h=_-D|0;u=D}y=F+1+g+q+h|0;Tc(a,32,J,y,H);if(!(k[a>>2]&32))yc(G,F,a)|0;Tc(a,48,J,y,H^65536);do if(s){o=w>>>0>E>>>0?E:w;h=o;do{m=Sc(k[h>>2]|0,0,R)|0;do if((h|0)==(o|0)){if((m|0)!=(R|0))break;i[T>>0]=48;m=T}else{if(m>>>0<=ca>>>0)break;do{m=m+-1|0;i[m>>0]=48}while(m>>>0>ca>>>0)}while(0);if(!(k[a>>2]&32))yc(m,S-m|0,a)|0;h=h+4|0}while(h>>>0<=E>>>0);do if(x){if(k[a>>2]&32)break;yc(5891,1,a)|0}while(0);if((g|0)>0&h>>>0>>0){m=h;while(1){h=Sc(k[m>>2]|0,0,R)|0;if(h>>>0>ca>>>0)do{h=h+-1|0;i[h>>0]=48}while(h>>>0>ca>>>0);if(!(k[a>>2]&32))yc(h,(g|0)>9?9:g,a)|0;m=m+4|0;h=g+-9|0;if(!((g|0)>9&m>>>0>>0)){g=h;break}else g=h}}Tc(a,48,g+9|0,9,0)}else{s=z?C:w+4|0;if((g|0)>-1){q=(m|0)==0;o=w;do{h=Sc(k[o>>2]|0,0,R)|0;if((h|0)==(R|0)){i[T>>0]=48;h=T}do if((o|0)==(w|0)){m=h+1|0;if(!(k[a>>2]&32))yc(h,1,a)|0;if(q&(g|0)<1){h=m;break}if(k[a>>2]&32){h=m;break}yc(5891,1,a)|0;h=m}else{if(h>>>0<=ca>>>0)break;do{h=h+-1|0;i[h>>0]=48}while(h>>>0>ca>>>0)}while(0);m=S-h|0;if(!(k[a>>2]&32))yc(h,(g|0)>(m|0)?m:g,a)|0;g=g-m|0;o=o+4|0}while(o>>>0>>0&(g|0)>-1)}Tc(a,48,g+18|0,18,0);if(k[a>>2]&32)break;yc(u,_-u|0,a)|0}while(0);Tc(a,32,J,y,H^8192);g=(y|0)<(J|0)?J:y}else{s=(u&32|0)!=0;q=n!=n|0.0!=0.0;h=q?0:F;o=h+3|0;Tc(a,32,J,o,m);g=k[a>>2]|0;if(!(g&32)){yc(G,h,a)|0;g=k[a>>2]|0}if(!(g&32))yc(q?(s?5883:5887):s?5875:5879,3,a)|0;Tc(a,32,J,o,H^8192);g=(o|0)<(J|0)?J:o}while(0);w=I;continue a}default:{m=H;h=o;s=0;u=5839;g=N}}while(0);g:do if((K|0)==64){m=aa;h=k[m>>2]|0;m=k[m+4>>2]|0;q=u&32;if(!((h|0)==0&(m|0)==0)){g=N;do{g=g+-1|0;i[g>>0]=l[5823+(h&15)>>0]|q;h=bd(h|0,m|0,4)|0;m=L}while(!((h|0)==0&(m|0)==0));K=aa;if((s&8|0)==0|(k[K>>2]|0)==0&(k[K+4>>2]|0)==0){h=s;s=0;q=5839;K=77}else{h=s;s=2;q=5839+(u>>4)|0;K=77}}else{g=N;h=s;s=0;q=5839;K=77}}else if((K|0)==76){g=Sc(g,h,N)|0;h=H;s=m;K=77}else if((K|0)==82){K=0;H=Mc(g,0,o)|0;G=(H|0)==0;w=g;h=G?o:H-g|0;s=0;u=5839;g=G?g+o|0:H}else if((K|0)==86){K=0;h=0;g=0;q=k[aa>>2]|0;while(1){m=k[q>>2]|0;if(!m)break;g=vc(ea,m)|0;if((g|0)<0|g>>>0>(o-h|0)>>>0)break;h=g+h|0;if(o>>>0>h>>>0)q=q+4|0;else break}if((g|0)<0){f=-1;break a}Tc(a,32,J,h,H);if(!h){g=0;K=98}else{m=0;o=k[aa>>2]|0;while(1){g=k[o>>2]|0;if(!g){g=h;K=98;break g}g=vc(ea,g)|0;m=g+m|0;if((m|0)>(h|0)){g=h;K=98;break g}if(!(k[a>>2]&32))yc(ea,g,a)|0;if(m>>>0>=h>>>0){g=h;K=98;break}else o=o+4|0}}}while(0);if((K|0)==98){K=0;Tc(a,32,J,g,H^8192);w=I;g=(J|0)>(g|0)?J:g;continue}if((K|0)==77){K=0;m=(o|0)>-1?h&-65537:h;h=aa;h=(k[h>>2]|0)!=0|(k[h+4>>2]|0)!=0;if((o|0)!=0|h){h=(h&1^1)+(U-g)|0;w=g;h=(o|0)>(h|0)?o:h;u=q;g=N}else{w=N;h=0;u=q;g=N}}q=g-w|0;h=(h|0)<(q|0)?q:h;o=s+h|0;g=(J|0)<(o|0)?o:J;Tc(a,32,g,o,m);if(!(k[a>>2]&32))yc(u,s,a)|0;Tc(a,48,g,o,m^65536);Tc(a,48,h,q,0);if(!(k[a>>2]&32))yc(w,q,a)|0;Tc(a,32,g,o,m^8192);w=I}h:do if((K|0)==245)if(!a)if(b){f=1;while(1){b=k[e+(f<<2)>>2]|0;if(!b)break;Rc(d+(f<<3)|0,b,c);f=f+1|0;if((f|0)>=10){f=1;break h}}if((f|0)<10)while(1){if(k[e+(f<<2)>>2]|0){f=-1;break h}f=f+1|0;if((f|0)>=10){f=1;break}}else f=1}else f=0;while(0);r=ga;return f|0}function Pc(a){a=a|0;if(!(k[a+68>>2]|0))Fc(a);return}function Qc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;e=k[d>>2]|0;a=(k[a+16>>2]|0)-e|0;a=a>>>0>c>>>0?c:a;ed(e|0,b|0,a|0)|0;k[d>>2]=(k[d>>2]|0)+a;return c|0}function Rc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=b;break a}case 10:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=0;break a}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);b=d;e=k[b>>2]|0;b=k[b+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=e;k[d+4>>2]=b;break a}case 13:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&65535;k[e+4>>2]=0;break a}case 15:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&255)<<24>>24;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&255;k[e+4>>2]=0;break a}case 17:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}case 18:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}default:break a}while(0);while(0);return}function Sc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295)while(1){d=md(a|0,b|0,10,0)|0;c=c+-1|0;i[c>>0]=d|48;d=ld(a|0,b|0,10,0)|0;if(b>>>0>9|(b|0)==9&a>>>0>4294967295){a=d;b=L}else{a=d;break}}if(a)while(1){c=c+-1|0;i[c>>0]=(a>>>0)%10|0|48;if(a>>>0<10)break;else a=(a>>>0)/10|0}return c|0}function Tc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=r;r=r+256|0;g=h;do if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;ad(g|0,b|0,(e>>>0>256?256:e)|0)|0;b=k[a>>2]|0;f=(b&32|0)==0;if(e>>>0>255){d=c-d|0;do{if(f){yc(g,256,a)|0;b=k[a>>2]|0}e=e+-256|0;f=(b&32|0)==0}while(e>>>0>255);if(f)e=d&255;else break}else if(!f)break;yc(g,e,a)|0}while(0);r=h;return}function Uc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;h=k[151]|0;c=h>>>a;if(c&3){a=(c&1^1)+a|0;d=a<<1;c=644+(d<<2)|0;d=644+(d+2<<2)|0;e=k[d>>2]|0;f=e+8|0;g=k[f>>2]|0;do if((c|0)!=(g|0)){if(g>>>0<(k[155]|0)>>>0)Na();b=g+12|0;if((k[b>>2]|0)==(e|0)){k[b>>2]=c;k[d>>2]=g;break}else Na()}else k[151]=h&~(1<>2]=M|3;M=e+(M|4)|0;k[M>>2]=k[M>>2]|1;M=f;return M|0}g=k[153]|0;if(o>>>0>g>>>0){if(c){d=2<>>12&16;d=d>>>i;e=d>>>5&8;d=d>>>e;f=d>>>2&4;d=d>>>f;c=d>>>1&2;d=d>>>c;a=d>>>1&1;a=(e|i|f|c|a)+(d>>>a)|0;d=a<<1;c=644+(d<<2)|0;d=644+(d+2<<2)|0;f=k[d>>2]|0;i=f+8|0;e=k[i>>2]|0;do if((c|0)!=(e|0)){if(e>>>0<(k[155]|0)>>>0)Na();b=e+12|0;if((k[b>>2]|0)==(f|0)){k[b>>2]=c;k[d>>2]=e;j=k[153]|0;break}else Na()}else{k[151]=h&~(1<>2]=o|3;h=f+o|0;k[f+(o|4)>>2]=g|1;k[f+M>>2]=g;if(j){e=k[156]|0;c=j>>>3;b=c<<1;d=644+(b<<2)|0;a=k[151]|0;c=1<>2]|0;if(b>>>0<(k[155]|0)>>>0)Na();else{l=a;m=b}}else{k[151]=a|c;l=644+(b+2<<2)|0;m=d}k[l>>2]=e;k[m+12>>2]=e;k[e+8>>2]=m;k[e+12>>2]=d}k[153]=g;k[156]=h;M=i;return M|0}a=k[152]|0;if(a){c=(a&0-a)+-1|0;L=c>>>12&16;c=c>>>L;K=c>>>5&8;c=c>>>K;M=c>>>2&4;c=c>>>M;a=c>>>1&2;c=c>>>a;d=c>>>1&1;d=k[908+((K|L|M|a|d)+(c>>>d)<<2)>>2]|0;c=(k[d+4>>2]&-8)-o|0;a=d;while(1){b=k[a+16>>2]|0;if(!b){b=k[a+20>>2]|0;if(!b){i=c;break}}a=(k[b+4>>2]&-8)-o|0;M=a>>>0>>0;c=M?a:c;a=b;d=M?b:d}f=k[155]|0;if(d>>>0>>0)Na();h=d+o|0;if(d>>>0>=h>>>0)Na();g=k[d+24>>2]|0;c=k[d+12>>2]|0;do if((c|0)==(d|0)){a=d+20|0;b=k[a>>2]|0;if(!b){a=d+16|0;b=k[a>>2]|0;if(!b){n=0;break}}while(1){c=b+20|0;e=k[c>>2]|0;if(e){b=e;a=c;continue}c=b+16|0;e=k[c>>2]|0;if(!e)break;else{b=e;a=c}}if(a>>>0>>0)Na();else{k[a>>2]=0;n=b;break}}else{e=k[d+8>>2]|0;if(e>>>0>>0)Na();b=e+12|0;if((k[b>>2]|0)!=(d|0))Na();a=c+8|0;if((k[a>>2]|0)==(d|0)){k[b>>2]=c;k[a>>2]=e;n=c;break}else Na()}while(0);do if(g){b=k[d+28>>2]|0;a=908+(b<<2)|0;if((d|0)==(k[a>>2]|0)){k[a>>2]=n;if(!n){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();b=g+16|0;if((k[b>>2]|0)==(d|0))k[b>>2]=n;else k[g+20>>2]=n;if(!n)break}a=k[155]|0;if(n>>>0>>0)Na();k[n+24>>2]=g;b=k[d+16>>2]|0;do if(b)if(b>>>0>>0)Na();else{k[n+16>>2]=b;k[b+24>>2]=n;break}while(0);b=k[d+20>>2]|0;if(b)if(b>>>0<(k[155]|0)>>>0)Na();else{k[n+20>>2]=b;k[b+24>>2]=n;break}}while(0);if(i>>>0<16){M=i+o|0;k[d+4>>2]=M|3;M=d+(M+4)|0;k[M>>2]=k[M>>2]|1}else{k[d+4>>2]=o|3;k[d+(o|4)>>2]=i|1;k[d+(i+o)>>2]=i;b=k[153]|0;if(b){f=k[156]|0;c=b>>>3;b=c<<1;e=644+(b<<2)|0;a=k[151]|0;c=1<>2]|0;if(a>>>0<(k[155]|0)>>>0)Na();else{p=b;q=a}}else{k[151]=a|c;p=644+(b+2<<2)|0;q=e}k[p>>2]=f;k[q+12>>2]=f;k[f+8>>2]=q;k[f+12>>2]=e}k[153]=i;k[156]=h}M=d+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=k[152]|0;if(l){c=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(p|q|j)+(v<>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;a=k[908+(j<<2)>>2]|0;a:do if(!a){e=0;a=0;v=86}else{g=c;e=0;h=m<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){f=k[i+4>>2]&-8;c=f-m|0;if(c>>>0>>0)if((f|0)==(m|0)){f=i;a=i;v=90;break a}else a=i;else c=g;v=k[i+20>>2]|0;i=k[i+16+(h>>>31<<2)>>2]|0;e=(v|0)==0|(v|0)==(i|0)?e:v;if(!i){v=86;break}else{g=c;h=h<<1}}}while(0);if((v|0)==86){if((e|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;e=a>>>1&1;e=k[908+((l|n|p|q|e)+(a>>>e)<<2)>>2]|0;a=0}if(!e){h=c;i=a}else{f=e;v=90}}if((v|0)==90)while(1){v=0;q=(k[f+4>>2]&-8)-m|0;e=q>>>0>>0;c=e?q:c;a=e?f:a;e=k[f+16>>2]|0;if(e){f=e;v=90;continue}f=k[f+20>>2]|0;if(!f){h=c;i=a;break}else v=90}if((i|0)!=0?h>>>0<((k[153]|0)-m|0)>>>0:0){e=k[155]|0;if(i>>>0>>0)Na();g=i+m|0;if(i>>>0>=g>>>0)Na();f=k[i+24>>2]|0;c=k[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;b=k[a>>2]|0;if(!b){a=i+16|0;b=k[a>>2]|0;if(!b){o=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Na();else{k[a>>2]=0;o=b;break}}else{d=k[i+8>>2]|0;if(d>>>0>>0)Na();b=d+12|0;if((k[b>>2]|0)!=(i|0))Na();a=c+8|0;if((k[a>>2]|0)==(i|0)){k[b>>2]=c;k[a>>2]=d;o=c;break}else Na()}while(0);do if(f){b=k[i+28>>2]|0;a=908+(b<<2)|0;if((i|0)==(k[a>>2]|0)){k[a>>2]=o;if(!o){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();b=f+16|0;if((k[b>>2]|0)==(i|0))k[b>>2]=o;else k[f+20>>2]=o;if(!o)break}a=k[155]|0;if(o>>>0>>0)Na();k[o+24>>2]=f;b=k[i+16>>2]|0;do if(b)if(b>>>0>>0)Na();else{k[o+16>>2]=b;k[b+24>>2]=o;break}while(0);b=k[i+20>>2]|0;if(b)if(b>>>0<(k[155]|0)>>>0)Na();else{k[o+20>>2]=b;k[b+24>>2]=o;break}}while(0);b:do if(h>>>0>=16){k[i+4>>2]=m|3;k[i+(m|4)>>2]=h|1;k[i+(h+m)>>2]=h;b=h>>>3;if(h>>>0<256){a=b<<1;d=644+(a<<2)|0;c=k[151]|0;b=1<>2]|0;if(a>>>0<(k[155]|0)>>>0)Na();else{s=b;t=a}}else{k[151]=c|b;s=644+(a+2<<2)|0;t=d}k[s>>2]=g;k[t+12>>2]=g;k[i+(m+8)>>2]=t;k[i+(m+12)>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;d=14-(K|L|d)+(M<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=908+(d<<2)|0;k[i+(m+28)>>2]=d;k[i+(m+20)>>2]=0;k[i+(m+16)>>2]=0;a=k[152]|0;c=1<>2]=g;k[i+(m+24)>>2]=b;k[i+(m+12)>>2]=g;k[i+(m+8)>>2]=g;break}b=k[b>>2]|0;c:do if((k[b+4>>2]&-8|0)!=(h|0)){d=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(h|0)){y=c;break c}else{d=d<<1;b=c}}if(a>>>0<(k[155]|0)>>>0)Na();else{k[a>>2]=g;k[i+(m+24)>>2]=b;k[i+(m+12)>>2]=g;k[i+(m+8)>>2]=g;break b}}else y=b;while(0);b=y+8|0;a=k[b>>2]|0;M=k[155]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){k[a+12>>2]=g;k[b>>2]=g;k[i+(m+8)>>2]=a;k[i+(m+12)>>2]=y;k[i+(m+24)>>2]=0;break}else Na()}else{M=h+m|0;k[i+4>>2]=M|3;M=i+(M+4)|0;k[M>>2]=k[M>>2]|1}while(0);M=i+8|0;return M|0}else q=m}else q=m}else q=-1;while(0);c=k[153]|0;if(c>>>0>=q>>>0){b=c-q|0;a=k[156]|0;if(b>>>0>15){k[156]=a+q;k[153]=b;k[a+(q+4)>>2]=b|1;k[a+c>>2]=b;k[a+4>>2]=q|3}else{k[153]=0;k[156]=0;k[a+4>>2]=c|3;M=a+(c+4)|0;k[M>>2]=k[M>>2]|1}M=a+8|0;return M|0}a=k[154]|0;if(a>>>0>q>>>0){L=a-q|0;k[154]=L;M=k[157]|0;k[157]=M+q;k[M+(q+4)>>2]=L|1;k[M+4>>2]=q|3;M=M+8|0;return M|0}do if(!(k[269]|0)){a=Ea(30)|0;if(!(a+-1&a)){k[271]=a;k[270]=a;k[272]=-1;k[273]=-1;k[274]=0;k[262]=0;y=(Pa(0)|0)&-16^1431655768;k[269]=y;break}else Na()}while(0);i=q+48|0;h=k[271]|0;j=q+47|0;g=h+j|0;h=0-h|0;l=g&h;if(l>>>0<=q>>>0){M=0;return M|0}a=k[261]|0;if((a|0)!=0?(t=k[259]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do if(!(k[262]&4)){a=k[157]|0;e:do if(a){e=1052;while(1){c=k[e>>2]|0;if(c>>>0<=a>>>0?(r=e+4|0,(c+(k[r>>2]|0)|0)>>>0>a>>>0):0){f=e;a=r;break}e=k[e+8>>2]|0;if(!e){v=174;break e}}c=g-(k[154]|0)&h;if(c>>>0<2147483647){e=Ba(c|0)|0;y=(e|0)==((k[f>>2]|0)+(k[a>>2]|0)|0);a=y?c:0;if(y){if((e|0)!=(-1|0)){w=e;p=a;v=194;break d}}else v=184}else a=0}else v=174;while(0);do if((v|0)==174){f=Ba(0)|0;if((f|0)!=(-1|0)){a=f;c=k[270]|0;e=c+-1|0;if(!(e&a))c=l;else c=l-a+(e+a&0-c)|0;a=k[259]|0;e=a+c|0;if(c>>>0>q>>>0&c>>>0<2147483647){y=k[261]|0;if((y|0)!=0?e>>>0<=a>>>0|e>>>0>y>>>0:0){a=0;break}e=Ba(c|0)|0;y=(e|0)==(f|0);a=y?c:0;if(y){w=f;p=a;v=194;break d}else v=184}else a=0}else a=0}while(0);f:do if((v|0)==184){f=0-c|0;do if(i>>>0>c>>>0&(c>>>0<2147483647&(e|0)!=(-1|0))?(u=k[271]|0,u=j-c+u&0-u,u>>>0<2147483647):0)if((Ba(u|0)|0)==(-1|0)){Ba(f|0)|0;break f}else{c=u+c|0;break}while(0);if((e|0)!=(-1|0)){w=e;p=c;v=194;break d}}while(0);k[262]=k[262]|4;v=191}else{a=0;v=191}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=Ba(l|0)|0,x=Ba(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(k[259]|0)+p|0;k[259]=a;if(a>>>0>(k[260]|0)>>>0)k[260]=a;g=k[157]|0;g:do if(g){f=1052;do{a=k[f>>2]|0;c=f+4|0;e=k[c>>2]|0;if((w|0)==(a+e|0)){B=a;C=c;D=e;E=f;v=204;break}f=k[f+8>>2]|0}while((f|0)!=0);if(((v|0)==204?(k[E+12>>2]&8|0)==0:0)?g>>>0>>0&g>>>0>=B>>>0:0){k[C>>2]=D+p;M=(k[154]|0)+p|0;L=g+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;k[157]=g+L;k[154]=K;k[g+(L+4)>>2]=K|1;k[g+(M+4)>>2]=40;k[158]=k[273];break}a=k[155]|0;if(w>>>0>>0){k[155]=w;a=w}c=w+p|0;f=1052;while(1){if((k[f>>2]|0)==(c|0)){e=f;c=f;v=212;break}f=k[f+8>>2]|0;if(!f){c=1052;break}}if((v|0)==212)if(!(k[c+12>>2]&8)){k[e>>2]=w;n=c+4|0;k[n>>2]=(k[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;j=w+(p+8)|0;j=(j&7|0)==0?0:0-j&7;b=w+(j+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;k[w+(n+4)>>2]=q|3;h:do if((b|0)!=(g|0)){if((b|0)==(k[156]|0)){M=(k[153]|0)+l|0;k[153]=M;k[156]=o;k[w+(m+4)>>2]=M|1;k[w+(M+m)>>2]=M;break}h=p+4|0;c=k[w+(h+j)>>2]|0;if((c&3|0)==1){i=c&-8;f=c>>>3;i:do if(c>>>0>=256){g=k[w+((j|24)+p)>>2]|0;d=k[w+(p+12+j)>>2]|0;do if((d|0)==(b|0)){e=j|16;d=w+(h+e)|0;c=k[d>>2]|0;if(!c){d=w+(e+p)|0;c=k[d>>2]|0;if(!c){J=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Na();else{k[d>>2]=0;J=c;break}}else{e=k[w+((j|8)+p)>>2]|0;if(e>>>0>>0)Na();a=e+12|0;if((k[a>>2]|0)!=(b|0))Na();c=d+8|0;if((k[c>>2]|0)==(b|0)){k[a>>2]=d;k[c>>2]=e;J=d;break}else Na()}while(0);if(!g)break;a=k[w+(p+28+j)>>2]|0;c=908+(a<<2)|0;do if((b|0)!=(k[c>>2]|0)){if(g>>>0<(k[155]|0)>>>0)Na();a=g+16|0;if((k[a>>2]|0)==(b|0))k[a>>2]=J;else k[g+20>>2]=J;if(!J)break i}else{k[c>>2]=J;if(J)break;k[152]=k[152]&~(1<>>0>>0)Na();k[J+24>>2]=g;b=j|16;a=k[w+(b+p)>>2]|0;do if(a)if(a>>>0>>0)Na();else{k[J+16>>2]=a;k[a+24>>2]=J;break}while(0);b=k[w+(h+b)>>2]|0;if(!b)break;if(b>>>0<(k[155]|0)>>>0)Na();else{k[J+20>>2]=b;k[b+24>>2]=J;break}}else{d=k[w+((j|8)+p)>>2]|0;e=k[w+(p+12+j)>>2]|0;c=644+(f<<1<<2)|0;do if((d|0)!=(c|0)){if(d>>>0>>0)Na();if((k[d+12>>2]|0)==(b|0))break;Na()}while(0);if((e|0)==(d|0)){k[151]=k[151]&~(1<>>0>>0)Na();a=e+8|0;if((k[a>>2]|0)==(b|0)){F=a;break}Na()}while(0);k[d+12>>2]=e;k[F>>2]=d}while(0);b=w+((i|j)+p)|0;e=i+l|0}else e=l;b=b+4|0;k[b>>2]=k[b>>2]&-2;k[w+(m+4)>>2]=e|1;k[w+(e+m)>>2]=e;b=e>>>3;if(e>>>0<256){a=b<<1;d=644+(a<<2)|0;c=k[151]|0;b=1<>2]|0;if(a>>>0>=(k[155]|0)>>>0){K=b;L=a;break}Na()}while(0);k[K>>2]=o;k[L+12>>2]=o;k[w+(m+8)>>2]=L;k[w+(m+12)>>2]=d;break}b=e>>>8;do if(!b)d=0;else{if(e>>>0>16777215){d=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;d=14-(J|K|d)+(L<>>15)|0;d=e>>>(d+7|0)&1|d<<1}while(0);b=908+(d<<2)|0;k[w+(m+28)>>2]=d;k[w+(m+20)>>2]=0;k[w+(m+16)>>2]=0;a=k[152]|0;c=1<>2]=o;k[w+(m+24)>>2]=b;k[w+(m+12)>>2]=o;k[w+(m+8)>>2]=o;break}b=k[b>>2]|0;j:do if((k[b+4>>2]&-8|0)!=(e|0)){d=e<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(e|0)){M=c;break j}else{d=d<<1;b=c}}if(a>>>0<(k[155]|0)>>>0)Na();else{k[a>>2]=o;k[w+(m+24)>>2]=b;k[w+(m+12)>>2]=o;k[w+(m+8)>>2]=o;break h}}else M=b;while(0);b=M+8|0;a=k[b>>2]|0;L=k[155]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){k[a+12>>2]=o;k[b>>2]=o;k[w+(m+8)>>2]=a;k[w+(m+12)>>2]=M;k[w+(m+24)>>2]=0;break}else Na()}else{M=(k[154]|0)+l|0;k[154]=M;k[157]=o;k[w+(m+4)>>2]=M|1}while(0);M=w+(n|8)|0;return M|0}else c=1052;while(1){a=k[c>>2]|0;if(a>>>0<=g>>>0?(b=k[c+4>>2]|0,d=a+b|0,d>>>0>g>>>0):0)break;c=k[c+8>>2]|0}e=a+(b+-39)|0;a=a+(b+-47+((e&7|0)==0?0:0-e&7))|0;e=g+16|0;a=a>>>0>>0?g:a;b=a+8|0;c=w+8|0;c=(c&7|0)==0?0:0-c&7;M=p+-40-c|0;k[157]=w+c;k[154]=M;k[w+(c+4)>>2]=M|1;k[w+(p+-36)>>2]=40;k[158]=k[273];c=a+4|0;k[c>>2]=27;k[b>>2]=k[263];k[b+4>>2]=k[264];k[b+8>>2]=k[265];k[b+12>>2]=k[266];k[263]=w;k[264]=p;k[266]=0;k[265]=b;b=a+28|0;k[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;k[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(g|0)){f=a-g|0;k[c>>2]=k[c>>2]&-2;k[g+4>>2]=f|1;k[a>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;d=644+(a<<2)|0;c=k[151]|0;b=1<>2]|0;if(a>>>0<(k[155]|0)>>>0)Na();else{G=b;H=a}}else{k[151]=c|b;G=644+(a+2<<2)|0;H=d}k[G>>2]=g;k[H+12>>2]=g;k[g+8>>2]=H;k[g+12>>2]=d;break}b=f>>>8;if(b)if(f>>>0>16777215)d=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;d=14-(K|L|d)+(M<>>15)|0;d=f>>>(d+7|0)&1|d<<1}else d=0;c=908+(d<<2)|0;k[g+28>>2]=d;k[g+20>>2]=0;k[e>>2]=0;b=k[152]|0;a=1<>2]=g;k[g+24>>2]=c;k[g+12>>2]=g;k[g+8>>2]=g;break}b=k[c>>2]|0;k:do if((k[b+4>>2]&-8|0)!=(f|0)){d=f<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(f|0)){I=c;break k}else{d=d<<1;b=c}}if(a>>>0<(k[155]|0)>>>0)Na();else{k[a>>2]=g;k[g+24>>2]=b;k[g+12>>2]=g;k[g+8>>2]=g;break g}}else I=b;while(0);b=I+8|0;a=k[b>>2]|0;M=k[155]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){k[a+12>>2]=g;k[b>>2]=g;k[g+8>>2]=a;k[g+12>>2]=I;k[g+24>>2]=0;break}else Na()}}else{M=k[155]|0;if((M|0)==0|w>>>0>>0)k[155]=w;k[263]=w;k[264]=p;k[266]=0;k[160]=k[269];k[159]=-1;b=0;do{M=b<<1;L=644+(M<<2)|0;k[644+(M+3<<2)>>2]=L;k[644+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;k[157]=w+M;k[154]=L;k[w+(M+4)>>2]=L|1;k[w+(p+-36)>>2]=40;k[158]=k[273]}while(0);b=k[154]|0;if(b>>>0>q>>>0){L=b-q|0;k[154]=L;M=k[157]|0;k[157]=M+q;k[M+(q+4)>>2]=L|1;k[M+4>>2]=q|3;M=M+8|0;return M|0}}M=qc()|0;k[M>>2]=12;M=0;return M|0}function Vc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;h=k[155]|0;if(b>>>0>>0)Na();c=k[a+-4>>2]|0;d=c&3;if((d|0)==1)Na();o=c&-8;q=a+(o+-8)|0;do if(!(c&1)){b=k[b>>2]|0;if(!d)return;i=-8-b|0;l=a+i|0;m=b+o|0;if(l>>>0>>0)Na();if((l|0)==(k[156]|0)){b=a+(o+-4)|0;c=k[b>>2]|0;if((c&3|0)!=3){u=l;f=m;break}k[153]=m;k[b>>2]=c&-2;k[a+(i+4)>>2]=m|1;k[q>>2]=m;return}e=b>>>3;if(b>>>0<256){d=k[a+(i+8)>>2]|0;c=k[a+(i+12)>>2]|0;b=644+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0>>0)Na();if((k[d+12>>2]|0)!=(l|0))Na()}if((c|0)==(d|0)){k[151]=k[151]&~(1<>>0>>0)Na();b=c+8|0;if((k[b>>2]|0)==(l|0))g=b;else Na()}else g=c+8|0;k[d+12>>2]=c;k[g>>2]=d;u=l;f=m;break}g=k[a+(i+24)>>2]|0;d=k[a+(i+12)>>2]|0;do if((d|0)==(l|0)){c=a+(i+20)|0;b=k[c>>2]|0;if(!b){c=a+(i+16)|0;b=k[c>>2]|0;if(!b){j=0;break}}while(1){d=b+20|0;e=k[d>>2]|0;if(e){b=e;c=d;continue}d=b+16|0;e=k[d>>2]|0;if(!e)break;else{b=e;c=d}}if(c>>>0>>0)Na();else{k[c>>2]=0;j=b;break}}else{e=k[a+(i+8)>>2]|0;if(e>>>0>>0)Na();b=e+12|0;if((k[b>>2]|0)!=(l|0))Na();c=d+8|0;if((k[c>>2]|0)==(l|0)){k[b>>2]=d;k[c>>2]=e;j=d;break}else Na()}while(0);if(g){b=k[a+(i+28)>>2]|0;c=908+(b<<2)|0;if((l|0)==(k[c>>2]|0)){k[c>>2]=j;if(!j){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();b=g+16|0;if((k[b>>2]|0)==(l|0))k[b>>2]=j;else k[g+20>>2]=j;if(!j){u=l;f=m;break}}c=k[155]|0;if(j>>>0>>0)Na();k[j+24>>2]=g;b=k[a+(i+16)>>2]|0;do if(b)if(b>>>0>>0)Na();else{k[j+16>>2]=b;k[b+24>>2]=j;break}while(0);b=k[a+(i+20)>>2]|0;if(b)if(b>>>0<(k[155]|0)>>>0)Na();else{k[j+20>>2]=b;k[b+24>>2]=j;u=l;f=m;break}else{u=l;f=m}}else{u=l;f=m}}else{u=b;f=o}while(0);if(u>>>0>=q>>>0)Na();b=a+(o+-4)|0;c=k[b>>2]|0;if(!(c&1))Na();if(!(c&2)){if((q|0)==(k[157]|0)){t=(k[154]|0)+f|0;k[154]=t;k[157]=u;k[u+4>>2]=t|1;if((u|0)!=(k[156]|0))return;k[156]=0;k[153]=0;return}if((q|0)==(k[156]|0)){t=(k[153]|0)+f|0;k[153]=t;k[156]=u;k[u+4>>2]=t|1;k[u+t>>2]=t;return}f=(c&-8)+f|0;e=c>>>3;do if(c>>>0>=256){g=k[a+(o+16)>>2]|0;b=k[a+(o|4)>>2]|0;do if((b|0)==(q|0)){c=a+(o+12)|0;b=k[c>>2]|0;if(!b){c=a+(o+8)|0;b=k[c>>2]|0;if(!b){p=0;break}}while(1){d=b+20|0;e=k[d>>2]|0;if(e){b=e;c=d;continue}d=b+16|0;e=k[d>>2]|0;if(!e)break;else{b=e;c=d}}if(c>>>0<(k[155]|0)>>>0)Na();else{k[c>>2]=0;p=b;break}}else{c=k[a+o>>2]|0;if(c>>>0<(k[155]|0)>>>0)Na();d=c+12|0;if((k[d>>2]|0)!=(q|0))Na();e=b+8|0;if((k[e>>2]|0)==(q|0)){k[d>>2]=b;k[e>>2]=c;p=b;break}else Na()}while(0);if(g){b=k[a+(o+20)>>2]|0;c=908+(b<<2)|0;if((q|0)==(k[c>>2]|0)){k[c>>2]=p;if(!p){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();b=g+16|0;if((k[b>>2]|0)==(q|0))k[b>>2]=p;else k[g+20>>2]=p;if(!p)break}c=k[155]|0;if(p>>>0>>0)Na();k[p+24>>2]=g;b=k[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Na();else{k[p+16>>2]=b;k[b+24>>2]=p;break}while(0);b=k[a+(o+12)>>2]|0;if(b)if(b>>>0<(k[155]|0)>>>0)Na();else{k[p+20>>2]=b;k[b+24>>2]=p;break}}}else{d=k[a+o>>2]|0;c=k[a+(o|4)>>2]|0;b=644+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0<(k[155]|0)>>>0)Na();if((k[d+12>>2]|0)!=(q|0))Na()}if((c|0)==(d|0)){k[151]=k[151]&~(1<>>0<(k[155]|0)>>>0)Na();b=c+8|0;if((k[b>>2]|0)==(q|0))n=b;else Na()}else n=c+8|0;k[d+12>>2]=c;k[n>>2]=d}while(0);k[u+4>>2]=f|1;k[u+f>>2]=f;if((u|0)==(k[156]|0)){k[153]=f;return}}else{k[b>>2]=c&-2;k[u+4>>2]=f|1;k[u+f>>2]=f}b=f>>>3;if(f>>>0<256){c=b<<1;e=644+(c<<2)|0;d=k[151]|0;b=1<>2]|0;if(c>>>0<(k[155]|0)>>>0)Na();else{r=b;s=c}}else{k[151]=d|b;r=644+(c+2<<2)|0;s=e}k[r>>2]=u;k[s+12>>2]=u;k[u+8>>2]=s;k[u+12>>2]=e;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;e=14-(q|r|e)+(s<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=908+(e<<2)|0;k[u+28>>2]=e;k[u+20>>2]=0;k[u+16>>2]=0;c=k[152]|0;d=1<>2]|0;b:do if((k[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){c=b+16+(e>>>31<<2)|0;d=k[c>>2]|0;if(!d)break;if((k[d+4>>2]&-8|0)==(f|0)){t=d;break b}else{e=e<<1;b=d}}if(c>>>0<(k[155]|0)>>>0)Na();else{k[c>>2]=u;k[u+24>>2]=b;k[u+12>>2]=u;k[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;c=k[b>>2]|0;s=k[155]|0;if(c>>>0>=s>>>0&t>>>0>=s>>>0){k[c+12>>2]=u;k[b>>2]=u;k[u+8>>2]=c;k[u+12>>2]=t;k[u+24>>2]=0;break}else Na()}else{k[152]=c|d;k[b>>2]=u;k[u+24>>2]=b;k[u+12>>2]=u;k[u+8>>2]=u}while(0);u=(k[159]|0)+-1|0;k[159]=u;if(!u)b=1060;else return;while(1){b=k[b>>2]|0;if(!b)break;else b=b+8|0}k[159]=-1;return}function Wc(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){a=Uc(b)|0;return a|0}if(b>>>0>4294967231){a=qc()|0;k[a>>2]=12;a=0;return a|0}c=Yc(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(c){a=c+8|0;return a|0}c=Uc(b)|0;if(!c){a=0;return a|0}d=k[a+-4>>2]|0;d=(d&-8)-((d&3|0)==0?8:4)|0;ed(c|0,a|0,(d>>>0>>0?d:b)|0)|0;Vc(a);a=c;return a|0}function Xc(a){a=a|0;var b=0;if(!a){b=0;return b|0}a=k[a+-4>>2]|0;b=a&3;if((b|0)==1){b=0;return b|0}b=(a&-8)-((b|0)==0?8:4)|0;return b|0}function Yc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=k[o>>2]|0;i=p&-8;l=a+i|0;h=k[155]|0;c=p&3;if(!((c|0)!=1&a>>>0>=h>>>0&a>>>0>>0))Na();d=a+(i|4)|0;e=k[d>>2]|0;if(!(e&1))Na();if(!c){if(b>>>0<256){a=0;return a|0}if(i>>>0>=(b+4|0)>>>0?(i-b|0)>>>0<=k[271]<<1>>>0:0)return a|0;a=0;return a|0}if(i>>>0>=b>>>0){c=i-b|0;if(c>>>0<=15)return a|0;k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=c|3;k[d>>2]=k[d>>2]|1;Zc(a+b|0,c);return a|0}if((l|0)==(k[157]|0)){c=(k[154]|0)+i|0;if(c>>>0<=b>>>0){a=0;return a|0}n=c-b|0;k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=n|1;k[157]=a+b;k[154]=n;return a|0}if((l|0)==(k[156]|0)){d=(k[153]|0)+i|0;if(d>>>0>>0){a=0;return a|0}c=d-b|0;if(c>>>0>15){k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=c|1;k[a+d>>2]=c;d=a+(d+4)|0;k[d>>2]=k[d>>2]&-2;d=a+b|0}else{k[o>>2]=p&1|d|2;d=a+(d+4)|0;k[d>>2]=k[d>>2]|1;d=0;c=0}k[153]=c;k[156]=d;return a|0}if(e&2){a=0;return a|0}m=(e&-8)+i|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;f=e>>>3;do if(e>>>0>=256){g=k[a+(i+24)>>2]|0;f=k[a+(i+12)>>2]|0;do if((f|0)==(l|0)){d=a+(i+20)|0;c=k[d>>2]|0;if(!c){d=a+(i+16)|0;c=k[d>>2]|0;if(!c){j=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Na();else{k[d>>2]=0;j=c;break}}else{e=k[a+(i+8)>>2]|0;if(e>>>0>>0)Na();c=e+12|0;if((k[c>>2]|0)!=(l|0))Na();d=f+8|0;if((k[d>>2]|0)==(l|0)){k[c>>2]=f;k[d>>2]=e;j=f;break}else Na()}while(0);if(g){c=k[a+(i+28)>>2]|0;d=908+(c<<2)|0;if((l|0)==(k[d>>2]|0)){k[d>>2]=j;if(!j){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();c=g+16|0;if((k[c>>2]|0)==(l|0))k[c>>2]=j;else k[g+20>>2]=j;if(!j)break}d=k[155]|0;if(j>>>0>>0)Na();k[j+24>>2]=g;c=k[a+(i+16)>>2]|0;do if(c)if(c>>>0>>0)Na();else{k[j+16>>2]=c;k[c+24>>2]=j;break}while(0);c=k[a+(i+20)>>2]|0;if(c)if(c>>>0<(k[155]|0)>>>0)Na();else{k[j+20>>2]=c;k[c+24>>2]=j;break}}}else{e=k[a+(i+8)>>2]|0;d=k[a+(i+12)>>2]|0;c=644+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Na();if((k[e+12>>2]|0)!=(l|0))Na()}if((d|0)==(e|0)){k[151]=k[151]&~(1<>>0>>0)Na();c=d+8|0;if((k[c>>2]|0)==(l|0))g=c;else Na()}else g=d+8|0;k[e+12>>2]=d;k[g>>2]=e}while(0);if(n>>>0<16){k[o>>2]=m|p&1|2;b=a+(m|4)|0;k[b>>2]=k[b>>2]|1;return a|0}else{k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=n|3;p=a+(m|4)|0;k[p>>2]=k[p>>2]|1;Zc(a+b|0,n);return a|0}return 0}function Zc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;c=k[a+4>>2]|0;do if(!(c&1)){j=k[a>>2]|0;if(!(c&3))return;n=a+(0-j)|0;m=j+b|0;i=k[155]|0;if(n>>>0>>0)Na();if((n|0)==(k[156]|0)){d=a+(b+4)|0;c=k[d>>2]|0;if((c&3|0)!=3){t=n;g=m;break}k[153]=m;k[d>>2]=c&-2;k[a+(4-j)>>2]=m|1;k[q>>2]=m;return}f=j>>>3;if(j>>>0<256){e=k[a+(8-j)>>2]|0;d=k[a+(12-j)>>2]|0;c=644+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Na();if((k[e+12>>2]|0)!=(n|0))Na()}if((d|0)==(e|0)){k[151]=k[151]&~(1<>>0>>0)Na();c=d+8|0;if((k[c>>2]|0)==(n|0))h=c;else Na()}else h=d+8|0;k[e+12>>2]=d;k[h>>2]=e;t=n;g=m;break}h=k[a+(24-j)>>2]|0;e=k[a+(12-j)>>2]|0;do if((e|0)==(n|0)){e=16-j|0;d=a+(e+4)|0;c=k[d>>2]|0;if(!c){d=a+e|0;c=k[d>>2]|0;if(!c){l=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Na();else{k[d>>2]=0;l=c;break}}else{f=k[a+(8-j)>>2]|0;if(f>>>0>>0)Na();c=f+12|0;if((k[c>>2]|0)!=(n|0))Na();d=e+8|0;if((k[d>>2]|0)==(n|0)){k[c>>2]=e;k[d>>2]=f;l=e;break}else Na()}while(0);if(h){c=k[a+(28-j)>>2]|0;d=908+(c<<2)|0;if((n|0)==(k[d>>2]|0)){k[d>>2]=l;if(!l){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();c=h+16|0;if((k[c>>2]|0)==(n|0))k[c>>2]=l;else k[h+20>>2]=l;if(!l){t=n;g=m;break}}e=k[155]|0;if(l>>>0>>0)Na();k[l+24>>2]=h;c=16-j|0;d=k[a+c>>2]|0;do if(d)if(d>>>0>>0)Na();else{k[l+16>>2]=d;k[d+24>>2]=l;break}while(0);c=k[a+(c+4)>>2]|0;if(c)if(c>>>0<(k[155]|0)>>>0)Na();else{k[l+20>>2]=c;k[c+24>>2]=l;t=n;g=m;break}else{t=n;g=m}}else{t=n;g=m}}else{t=a;g=b}while(0);i=k[155]|0;if(q>>>0>>0)Na();c=a+(b+4)|0;d=k[c>>2]|0;if(!(d&2)){if((q|0)==(k[157]|0)){s=(k[154]|0)+g|0;k[154]=s;k[157]=t;k[t+4>>2]=s|1;if((t|0)!=(k[156]|0))return;k[156]=0;k[153]=0;return}if((q|0)==(k[156]|0)){s=(k[153]|0)+g|0;k[153]=s;k[156]=t;k[t+4>>2]=s|1;k[t+s>>2]=s;return}g=(d&-8)+g|0;f=d>>>3;do if(d>>>0>=256){h=k[a+(b+24)>>2]|0;e=k[a+(b+12)>>2]|0;do if((e|0)==(q|0)){d=a+(b+20)|0;c=k[d>>2]|0;if(!c){d=a+(b+16)|0;c=k[d>>2]|0;if(!c){p=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Na();else{k[d>>2]=0;p=c;break}}else{f=k[a+(b+8)>>2]|0;if(f>>>0>>0)Na();c=f+12|0;if((k[c>>2]|0)!=(q|0))Na();d=e+8|0;if((k[d>>2]|0)==(q|0)){k[c>>2]=e;k[d>>2]=f;p=e;break}else Na()}while(0);if(h){c=k[a+(b+28)>>2]|0;d=908+(c<<2)|0;if((q|0)==(k[d>>2]|0)){k[d>>2]=p;if(!p){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();c=h+16|0;if((k[c>>2]|0)==(q|0))k[c>>2]=p;else k[h+20>>2]=p;if(!p)break}d=k[155]|0;if(p>>>0>>0)Na();k[p+24>>2]=h;c=k[a+(b+16)>>2]|0;do if(c)if(c>>>0>>0)Na();else{k[p+16>>2]=c;k[c+24>>2]=p;break}while(0);c=k[a+(b+20)>>2]|0;if(c)if(c>>>0<(k[155]|0)>>>0)Na();else{k[p+20>>2]=c;k[c+24>>2]=p;break}}}else{e=k[a+(b+8)>>2]|0;d=k[a+(b+12)>>2]|0;c=644+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Na();if((k[e+12>>2]|0)!=(q|0))Na()}if((d|0)==(e|0)){k[151]=k[151]&~(1<>>0>>0)Na();c=d+8|0;if((k[c>>2]|0)==(q|0))o=c;else Na()}else o=d+8|0;k[e+12>>2]=d;k[o>>2]=e}while(0);k[t+4>>2]=g|1;k[t+g>>2]=g;if((t|0)==(k[156]|0)){k[153]=g;return}}else{k[c>>2]=d&-2;k[t+4>>2]=g|1;k[t+g>>2]=g}c=g>>>3;if(g>>>0<256){d=c<<1;f=644+(d<<2)|0;e=k[151]|0;c=1<>2]|0;if(d>>>0<(k[155]|0)>>>0)Na();else{r=c;s=d}}else{k[151]=e|c;r=644+(d+2<<2)|0;s=f}k[r>>2]=t;k[s+12>>2]=t;k[t+8>>2]=s;k[t+12>>2]=f;return}c=g>>>8;if(c)if(g>>>0>16777215)f=31;else{r=(c+1048320|0)>>>16&8;s=c<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;c=908+(f<<2)|0;k[t+28>>2]=f;k[t+20>>2]=0;k[t+16>>2]=0;d=k[152]|0;e=1<>2]=t;k[t+24>>2]=c;k[t+12>>2]=t;k[t+8>>2]=t;return}c=k[c>>2]|0;a:do if((k[c+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=c+16+(f>>>31<<2)|0;e=k[d>>2]|0;if(!e)break;if((k[e+4>>2]&-8|0)==(g|0)){c=e;break a}else{f=f<<1;c=e}}if(d>>>0<(k[155]|0)>>>0)Na();k[d>>2]=t;k[t+24>>2]=c;k[t+12>>2]=t;k[t+8>>2]=t;return}while(0);d=c+8|0;e=k[d>>2]|0;s=k[155]|0;if(!(e>>>0>=s>>>0&c>>>0>=s>>>0))Na();k[e+12>>2]=t;k[d>>2]=t;k[t+8>>2]=e;k[t+12>>2]=c;k[t+24>>2]=0;return}function _c(){}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (L=d,a-c>>>0|0)|0}function ad(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+c|0;if((c|0)>=20){b=b&255;f=a&3;g=b|b<<8|b<<16|b<<24;e=d&~3;if(f){f=a+4-f|0;while((a|0)<(f|0)){i[a>>0]=b;a=a+1|0}}while((a|0)<(e|0)){k[a>>2]=g;a=a+4|0}}while((a|0)<(d|0)){i[a>>0]=b;a=a+1|0}return a-c|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b>>>c;return a>>>c|(b&(1<>>c-32|0}function cd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b<>>32-c;return a<>>0;return (L=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function ed(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return Da(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function fd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b>>c;return a>>>c|(b&(1<>c-32|0}function gd(a){a=a|0;var b=0;b=i[v+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[v+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[v+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[v+(a>>>24)>>0]|0)+24|0}function hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=ha(e,f)|0;d=a>>>16;a=(c>>>16)+(ha(e,d)|0)|0;e=b>>>16;b=ha(e,f)|0;return (L=(a>>>16)+(ha(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=$c(j^a,i^b,j,i)|0;g=L;a=f^j;b=e^i;return $c((nd(h,g,$c(f^c,e^d,f,e)|0,L,0)|0)^a,L^b,a,b)|0}function jd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=r;r=r+16|0;h=e|0;g=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;j=d>>31|((d|0)<0?-1:0)<<1;i=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;a=$c(g^a,f^b,g,f)|0;b=L;nd(a,b,$c(j^c,i^d,j,i)|0,L,h)|0;d=$c(k[h>>2]^g,k[h+4>>2]^f,g,f)|0;c=L;r=e;return (L=c,d)|0}function kd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=hd(e,f)|0;a=L;return (L=(ha(b,f)|0)+(ha(d,e)|0)+a|a&0,c|0|0)|0}function ld(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nd(a,b,c,d,0)|0}function md(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=r;r=r+16|0;e=f|0;nd(a,b,c,d,e)|0;r=f;return (L=k[e+4>>2]|0,k[e>>2]|0)|0}function nd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;l=a;i=b;j=i;g=c;n=d;h=n;if(!j){f=(e|0)!=0;if(!h){if(f){k[e>>2]=(l>>>0)%(g>>>0);k[e+4>>2]=0}n=0;e=(l>>>0)/(g>>>0)>>>0;return (L=n,e)|0}else{if(!f){n=0;e=0;return (L=n,e)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;e=0;return (L=n,e)|0}}f=(h|0)==0;do if(g){if(!f){f=(ja(h|0)|0)-(ja(j|0)|0)|0;if(f>>>0<=31){m=f+1|0;h=31-f|0;b=f-31>>31;g=m;a=l>>>(m>>>0)&b|j<>>(m>>>0)&b;f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;n=0;e=0;return (L=n,e)|0}f=g-1|0;if(f&g){h=(ja(g|0)|0)+33-(ja(j|0)|0)|0;p=64-h|0;m=32-h|0;i=m>>31;o=h-32|0;b=o>>31;g=h;a=m-1>>31&j>>>(o>>>0)|(j<>>(h>>>0))&b;b=b&j>>>(h>>>0);f=l<>>(o>>>0))&i|l<>31;break}if(e){k[e>>2]=f&l;k[e+4>>2]=0}if((g|0)==1){o=i|b&0;p=a|0|0;return (L=o,p)|0}else{p=gd(g|0)|0;o=j>>>(p>>>0)|0;p=j<<32-p|l>>>(p>>>0)|0;return (L=o,p)|0}}else{if(f){if(e){k[e>>2]=(j>>>0)%(g>>>0);k[e+4>>2]=0}o=0;p=(j>>>0)/(g>>>0)>>>0;return (L=o,p)|0}if(!l){if(e){k[e>>2]=0;k[e+4>>2]=(j>>>0)%(h>>>0)}o=0;p=(j>>>0)/(h>>>0)>>>0;return (L=o,p)|0}f=h-1|0;if(!(f&h)){if(e){k[e>>2]=a|0;k[e+4>>2]=f&j|b&0}o=0;p=j>>>((gd(h|0)|0)>>>0);return (L=o,p)|0}f=(ja(h|0)|0)-(ja(j|0)|0)|0;if(f>>>0<=30){b=f+1|0;h=31-f|0;g=b;a=j<>>(b>>>0);b=j>>>(b>>>0);f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;o=0;p=0;return (L=o,p)|0}while(0);if(!g){j=h;i=0;h=0}else{m=c|0|0;l=n|d&0;j=dd(m|0,l|0,-1,-1)|0;c=L;i=h;h=0;do{d=i;i=f>>>31|i<<1;f=h|f<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;$c(j,c,d,n)|0;p=L;o=p>>31|((p|0)<0?-1:0)<<1;h=o&1;a=$c(d,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=L;g=g-1|0}while((g|0)!=0);j=i;i=0}g=0;if(e){k[e>>2]=a;k[e+4>>2]=b}o=(f|0)>>>31|(j|g)<<1|(g<<1|f>>>31)&0|i;p=(f<<1|0>>>31)&-2|h;return (L=o,p)|0}function od(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ua[a&7](b|0,c|0,d|0)|0}function pd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Va[a&3](b|0,c|0,d|0,e|0,f|0)}function qd(a,b){a=a|0;b=b|0;Wa[a&7](b|0)}function rd(a,b){a=a|0;b=b|0;return Xa[a&1](b|0)|0}function sd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ya[a&0](b|0,c|0,d|0)}function td(a){a=a|0;Za[a&3]()}function ud(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;_a[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function vd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return $a[a&1](b|0,c|0,d|0,e|0,f|0)|0}function wd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ab[a&3](b|0,c|0,d|0,e|0)}function xd(a,b,c){a=a|0;b=b|0;c=c|0;ka(0);return 0}function yd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ka(1)}function zd(a){a=a|0;ka(2)}function Ad(a){a=a|0;ka(3);return 0}function Bd(a,b,c){a=a|0;b=b|0;c=c|0;ka(4)}function Cd(){ka(5)}function Dd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ka(6)}function Ed(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ka(7);return 0}function Fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ka(8)} - -// EMSCRIPTEN_END_FUNCS -var Ua=[xd,ac,Qc,Jc,Ic,Kc,xd,xd];var Va=[yd,hc,gc,yd];var Wa=[zd,Xb,_b,Yb,Zb,$b,oc,Pc];var Xa=[Ad,Hc];var Ya=[Bd];var Za=[Cd,mc,nc,Cd];var _a=[Dd,jc,ic,Dd];var $a=[Ed,ob];var ab=[Fd,cc,dc,Fd];return{___cxa_can_catch:kc,_crn_get_levels:Db,_crn_get_uncompressed_size:Fb,_crn_decompress:Gb,_i64Add:dd,_crn_get_width:Bb,___cxa_is_pointer_type:lc,_i64Subtract:$c,_memset:ad,_malloc:Uc,_free:Vc,_memcpy:ed,_bitshift64Lshr:bd,_fflush:wc,_bitshift64Shl:cd,_crn_get_height:Cb,___errno_location:qc,_crn_get_dxt_format:Eb,runPostSets:_c,_emscripten_replace_memory:Ta,stackAlloc:bb,stackSave:cb,stackRestore:db,establishStackSpace:eb,setThrew:fb,setTempRet0:ib,getTempRet0:jb,dynCall_iiii:od,dynCall_viiiii:pd,dynCall_vi:qd,dynCall_ii:rd,dynCall_viii:sd,dynCall_v:td,dynCall_viiiiii:ud,dynCall_iiiiii:vd,dynCall_viiii:wd}}) - - -// EMSCRIPTEN_END_ASM -(e.Ya,e.Za,buffer);e.___cxa_can_catch=Z.___cxa_can_catch;e._crn_get_levels=Z._crn_get_levels;e.runPostSets=Z.runPostSets;e._crn_get_uncompressed_size=Z._crn_get_uncompressed_size;e._crn_decompress=Z._crn_decompress;var zc=e._i64Add=Z._i64Add;e._crn_get_height=Z._crn_get_height;e.___cxa_is_pointer_type=Z.___cxa_is_pointer_type; -var nb=e._i64Subtract=Z._i64Subtract,qb=e._memset=Z._memset,Ea=e._malloc=Z._malloc,Bc=e._memcpy=Z._memcpy,Xa=e._emscripten_replace_memory=Z._emscripten_replace_memory;e._crn_get_dxt_format=Z._crn_get_dxt_format;var rb=e._bitshift64Lshr=Z._bitshift64Lshr,Na=e._free=Z._free;e._fflush=Z._fflush;e._crn_get_width=Z._crn_get_width;e.___errno_location=Z.___errno_location;var sb=e._bitshift64Shl=Z._bitshift64Shl;e.dynCall_iiii=Z.dynCall_iiii;e.dynCall_viiiii=Z.dynCall_viiiii;e.dynCall_vi=Z.dynCall_vi; -e.dynCall_ii=Z.dynCall_ii;e.dynCall_viii=Z.dynCall_viii;e.dynCall_v=Z.dynCall_v;e.dynCall_viiiiii=Z.dynCall_viiiiii;e.dynCall_iiiiii=Z.dynCall_iiiiii;e.dynCall_viiii=Z.dynCall_viiii;n.aa=Z.stackAlloc;n.ua=Z.stackSave;n.ba=Z.stackRestore;n.Cd=Z.establishStackSpace;n.rb=Z.setTempRet0;n.fb=Z.getTempRet0;function ia(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}ia.prototype=Error();ia.prototype.constructor=ia; -var rd=null,jb=function sd(){e.calledRun||td();e.calledRun||(jb=sd)}; -e.callMain=e.zd=function(a){function b(){for(var a=0;3>a;a++)d.push(0)}assert(0==I,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(0==bb.length,"cannot call main when preRun functions remain to be called");a=a||[];Ha||(Ha=!0,ab(cb));var c=a.length+1,d=[D(hb(e.thisProgram),"i8",0)];b();for(var f=0;f 0) var gc = undefined");else if(ba||ca)e.read=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},"undefined"!=typeof arguments&&(e.arguments=arguments),"undefined"!== +typeof console?(e.print||(e.print=function(a){console.log(a)}),e.printErr||(e.printErr=function(a){console.log(a)})):e.print||(e.print=function(){}),ca&&(e.load=importScripts),"undefined"===typeof e.setWindowTitle&&(e.setWindowTitle=function(a){document.title=a});else throw"Unknown runtime environment. Where are we?";function ha(a){eval.call(null,a)}!e.load&&e.read&&(e.load=function(a){ha(e.read(a))});e.print||(e.print=function(){});e.printErr||(e.printErr=e.print);e.arguments||(e.arguments=[]); +e.thisProgram||(e.thisProgram="./this.program");e.print=e.print;e.W=e.printErr;e.preRun=[];e.postRun=[];for(k in aa)aa.hasOwnProperty(k)&&(e[k]=aa[k]); +var n={rb:function(a){ka=a},fb:function(){return ka},ua:function(){return m},ba:function(a){m=a},Ka:function(a){switch(a){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;default:return"*"===a[a.length-1]?n.J:"i"===a[0]?(a=parseInt(a.substr(1)),assert(0===a%8),a/8):0}},eb:function(a){return Math.max(n.Ka(a),n.J)},ud:16,Qd:function(a,b){"double"===b||"i64"===b?a&7&&(assert(4===(a&7)),a+=4):assert(0===(a&3));return a}, +Ed:function(a,b,c){return c||"i64"!=a&&"double"!=a?a?Math.min(b||(a?n.eb(a):0),n.J):Math.min(b,8):8},L:function(a,b,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,b),e["dynCall_"+a].apply(null,c)):e["dynCall_"+a].call(null,b)},Z:[],Xa:function(a){for(var b=0;b=t&&!ma()?(r=b,0): +b},ja:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},Nd:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},Ua:8,J:4,vd:0};e.Runtime=n;n.addFunction=n.Xa;n.removeFunction=n.nb;var na=!1,oa,pa,ka;function assert(a,b){a||x("Assertion failed: "+b)}function qa(a){var b=e["_"+a];if(!b)try{b=eval("_"+a)}catch(c){}assert(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return b}var ra,sa; +(function(){function a(a){a=a.toString().match(d).slice(1);return{arguments:a[0],body:a[1],returnValue:a[2]}}var b={stackSave:function(){n.ua()},stackRestore:function(){n.ba()},arrayToC:function(a){var b=n.aa(a.length);ta(a,b);return b},stringToC:function(a){var b=0;null!==a&&void 0!==a&&0!==a&&(b=n.aa((a.length<<2)+1),ua(a,b));return b}},c={string:b.stringToC,array:b.arrayToC};sa=function(a,b,d,f,g){a=qa(a);var v=[],B=0;if(f)for(var G=0;G>0]=b;break;case "i8":y[a>>0]=b;break;case "i16":z[a>>1]=b;break;case "i32":C[a>>2]=b;break;case "i64":pa=[b>>>0,(oa=b,1<=+xa(oa)?0>>0:~~+Aa((oa-+(~~oa>>>0))/4294967296)>>>0:0)];C[a>>2]=pa[0];C[a+4>>2]=pa[1];break;case "float":Ba[a>>2]=b;break;case "double":Ca[a>>3]=b;break;default:x("invalid type for setValue: "+c)}}e.setValue=wa; +function Da(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return y[a>>0];case "i8":return y[a>>0];case "i16":return z[a>>1];case "i32":return C[a>>2];case "i64":return C[a>>2];case "float":return Ba[a>>2];case "double":return Ca[a>>3];default:x("invalid type for setValue: "+b)}return null}e.getValue=Da;e.ALLOC_NORMAL=0;e.ALLOC_STACK=1;e.ALLOC_STATIC=2;e.ALLOC_DYNAMIC=3;e.ALLOC_NONE=4; +function D(a,b,c,d){var f,g;"number"===typeof a?(f=!0,g=a):(f=!1,g=a.length);var h="string"===typeof b?b:null;c=4==c?d:[Ea,n.aa,n.Ra,n.R][void 0===c?2:c](Math.max(g,h?1:b.length));if(f){d=c;assert(0==(c&3));for(a=c+(g&-4);d>2]=0;for(a=c+g;d>0]=0;return c}if("i8"===h)return a.subarray||a.slice?E.set(a,c):E.set(new Uint8Array(a),c),c;d=0;for(var l,w;d>0];c|=d;if(0==d&&!b)break;f++;if(b&&f==b)break}b||(b=f);d="";if(128>c){for(;0>0];if(!c)return b;b+=String.fromCharCode(c)}}; +e.stringToAscii=function(a,b){return Ia(a,b,!1)}; +function Ja(a,b){for(var c,d,f,g,h,l,w="";;){c=a[b++];if(!c)return w;c&128?(d=a[b++]&63,192==(c&224)?w+=String.fromCharCode((c&31)<<6|d):(f=a[b++]&63,224==(c&240)?c=(c&15)<<12|d<<6|f:(g=a[b++]&63,240==(c&248)?c=(c&7)<<18|d<<12|f<<6|g:(h=a[b++]&63,248==(c&252)?c=(c&3)<<24|d<<18|f<<12|g<<6|h:(l=a[b++]&63,c=(c&1)<<30|d<<24|f<<18|g<<12|h<<6|l))),65536>c?w+=String.fromCharCode(c):(c-=65536,w+=String.fromCharCode(55296|c>>10,56320|c&1023)))):w+=String.fromCharCode(c)}}e.UTF8ArrayToString=Ja; +e.UTF8ToString=function(a){return Ja(E,a)}; +function Ka(a,b,c,d){if(!(0=h&&(h=65536+((h&1023)<<10)|a.charCodeAt(++g)&1023);if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(2097151>=h){if(c+3>=d)break;b[c++]=240|h>>18}else{if(67108863>=h){if(c+4>=d)break;b[c++]=248|h>>24}else{if(c+5>=d)break;b[c++]=252|h>>30;b[c++]=128|h>>24&63}b[c++]=128|h>>18&63}b[c++]=128| +h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0;return c-f}e.stringToUTF8Array=Ka;e.stringToUTF8=function(a,b,c){return Ka(a,E,b,c)};function La(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:2097151>=d?b+4:67108863>=d?b+5:b+6}return b}e.lengthBytesUTF8=La;e.UTF16ToString=function(a){for(var b=0,c="";;){var d=z[a+2*b>>1];if(0==d)return c;++b;c+=String.fromCharCode(d)}}; +e.stringToUTF16=function(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),b+=2;z[b>>1]=0;return b-d};e.lengthBytesUTF16=function(a){return 2*a.length};e.UTF32ToString=function(a){for(var b=0,c="";;){var d=C[a+4*b>>2];if(0==d)return c;++b;65536<=d?(d=d-65536,c+=String.fromCharCode(55296|d>>10,56320|d&1023)):c+=String.fromCharCode(d)}}; +e.stringToUTF32=function(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f=g)var h=a.charCodeAt(++f),g=65536+((g&1023)<<10)|h&1023;C[b>>2]=g;b+=4;if(b+4>c)break}C[b>>2]=0;return b-d};e.lengthBytesUTF32=function(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}; +function Ma(a){function b(c,d,f){d=d||Infinity;var g="",h=[],v;if("N"===a[l]){l++;"K"===a[l]&&l++;for(v=[];"E"!==a[l];)if("S"===a[l]){l++;var A=a.indexOf("_",l);v.push(u[a.substring(l,A)||0]||"?");l=A+1}else if("C"===a[l])v.push(v[v.length-1]),l+=2;else{var A=parseInt(a.substr(l)),U=A.toString().length;if(!A||!U){l--;break}var Ub=a.substr(l+U,A);v.push(Ub);u.push(Ub);l+=U+A}l++;v=v.join("::");d--;if(0===d)return c?[v]:v}else if(("K"===a[l]||q&&"L"===a[l])&&l++,A=parseInt(a.substr(l)))U=A.toString().length, +v=a.substr(l+U,A),l+=U+A;q=!1;"I"===a[l]?(l++,A=b(!0),U=b(!0,1,!0),g+=U[0]+" "+v+"<"+A.join(", ")+">"):g=v;a:for(;l=a)return!1;for(;t<=r;)if(t=a)return!1;try{if(ArrayBuffer.p)buffer=ArrayBuffer.p(buffer,t);else{var c=y;buffer=new ArrayBuffer(t)}}catch(d){return!1}if(!Xa(buffer))return!1;e.buffer=buffer;e.HEAP8=y=new Int8Array(buffer);e.HEAP16=z=new Int16Array(buffer);e.HEAP32=C=new Int32Array(buffer);e.HEAPU8=E=new Uint8Array(buffer);e.HEAPU16=Ra=new Uint16Array(buffer);e.HEAPU32=Sa= +new Uint32Array(buffer);e.HEAPF32=Ba=new Float32Array(buffer);e.HEAPF64=Ca=new Float64Array(buffer);ArrayBuffer.p||y.set(c);return!0}var Ya;try{Ya=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get),Ya(new ArrayBuffer(4))}catch(Za){Ya=function(a){return a.byteLength}}for(var $a=e.TOTAL_STACK||5242880,t=e.TOTAL_MEMORY||16777216,F=65536;FF?2*F:F+16777216;F=Math.max(F,16777216);F!==t&&(t=F); +assert("undefined"!==typeof Int32Array&&"undefined"!==typeof Float64Array&&!!(new Int32Array(1)).subarray&&!!(new Int32Array(1)).set,"JS engine does not provide full typed array support");var buffer;buffer=new ArrayBuffer(t);y=new Int8Array(buffer);z=new Int16Array(buffer);C=new Int32Array(buffer);E=new Uint8Array(buffer);Ra=new Uint16Array(buffer);Sa=new Uint32Array(buffer);Ba=new Float32Array(buffer);Ca=new Float64Array(buffer);C[0]=255;assert(255===E[0]&&0===E[3],"Typed arrays 2 must be run on a little-endian system"); +e.HEAP=void 0;e.buffer=buffer;e.HEAP8=y;e.HEAP16=z;e.HEAP32=C;e.HEAPU8=E;e.HEAPU16=Ra;e.HEAPU32=Sa;e.HEAPF32=Ba;e.HEAPF64=Ca;function ab(a){for(;0>0]=a[c],c+=1}e.writeStringToMemory=ua;function ta(a,b){for(var c=0;c>0]=a[c]}e.writeArrayToMemory=ta; +function Ia(a,b,c){for(var d=0;d>0]=a.charCodeAt(d);c||(y[b>>0]=0)}e.writeAsciiToMemory=Ia;Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(a,b){var c=a&65535,d=b&65535;return c*d+((a>>>16)*d+c*(b>>>16)<<16)|0});Math.Jd=Math.imul;Math.clz32||(Math.clz32=function(a){a=a>>>0;for(var b=0;32>b;b++)if(a&1<<31-b)return b;return 32});Math.Ad=Math.clz32;var xa=Math.abs,Aa=Math.ceil,za=Math.floor,ya=Math.min,I=0,ib=null,jb=null; +function kb(){I++;e.monitorRunDependencies&&e.monitorRunDependencies(I)}e.addRunDependency=kb;function lb(){I--;e.monitorRunDependencies&&e.monitorRunDependencies(I);if(0==I&&(null!==ib&&(clearInterval(ib),ib=null),jb)){var a=jb;jb=null;a()}}e.removeRunDependency=lb;e.preloadedImages={};e.preloadedAudios={};Ta=8;la=Ta+5888;cb.push(); +D([124,0,0,0,98,7,0,0,124,0,0,0,111,7,0,0,164,0,0,0,124,7,0,0,16,0,0,0,0,0,0,0,164,0,0,0,157,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,227,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,191,7,0,0,56,0,0,0,0,0,0,0,164,0,0,0,5,8,0,0,40,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,114,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,124,1,0,0,236,1,0,0,236,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,231,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,40,37,117,41,58,32,65,115,115,101,114,116,105,111,110,32,102,97,105,108,117,114,101,58,32,34,37,115,34,10,0,109,95,115,105,122,101,32,60,61,32,109,95,99,97,112,97,99,105,116,121,0,46,47,99,114,110,95,100,101,99,111,109,112,46,104,0,109,105, +110,95,110,101,119,95,99,97,112,97,99,105,116,121,32,60,32,40,48,120,55,70,70,70,48,48,48,48,85,32,47,32,101,108,101,109,101,110,116,95,115,105,122,101,41,0,110,101,119,95,99,97,112,97,99,105,116,121,32,38,38,32,40,110,101,119,95,99,97,112,97,99,105,116,121,32,62,32,109,95,99,97,112,97,99,105,116,121,41,0,110,117,109,95,99,111,100,101,115,91,99,93,0,115,111,114,116,101,100,95,112,111,115,32,60,32,116,111,116,97,108,95,117,115,101,100,95,115,121,109,115,0,112,67,111,100,101,115,105,122,101,115,91, +115,121,109,95,105,110,100,101,120,93,32,61,61,32,99,111,100,101,115,105,122,101,0,116,32,60,32,40,49,85,32,60,60,32,116,97,98,108,101,95,98,105,116,115,41,0,109,95,108,111,111,107,117,112,91,116,93,32,61,61,32,99,85,73,78,84,51,50,95,77,65,88,0,99,114,110,100,95,109,97,108,108,111,99,58,32,115,105,122,101,32,116,111,111,32,98,105,103,0,99,114,110,100,95,109,97,108,108,111,99,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,40,40,117,105,110,116,51,50,41,112,95,110,101,119,32,38,32,40,67, +82,78,68,95,77,73,78,95,65,76,76,79,67,95,65,76,73,71,78,77,69,78,84,32,45,32,49,41,41,32,61,61,32,48,0,99,114,110,100,95,114,101,97,108,108,111,99,58,32,98,97,100,32,112,116,114,0,99,114,110,100,95,102,114,101,101,58,32,98,97,100,32,112,116,114,0,102,97,108,115,101,0,40,116,111,116,97,108,95,115,121,109,115,32,62,61,32,49,41,32,38,38,32,40,116,111,116,97,108,95,115,121,109,115,32,60,61,32,112,114,101,102,105,120,95,99,111,100,105,110,103,58,58,99,77,97,120,83,117,112,112,111,114,116,101,100,83,121, +109,115,41,0,17,18,19,20,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,16,48,0,110,117,109,95,98,105,116,115,32,60,61,32,51,50,85,0,109,95,98,105,116,95,99,111,117,110,116,32,60,61,32,99,66,105,116,66,117,102,83,105,122,101,0,116,32,33,61,32,99,85,73,78,84,51,50,95,77,65,88,0,109,111,100,101,108,46,109,95,99,111,100,101,95,115,105,122,101,115,91,115,121,109,93,32,61,61,32,108,101,110,0,0,2,3,1,0,2,3,4,5,6,7,1,40,108,101,110,32,62,61,32,49,41,32,38,38,32,40,108,101,110,32,60,61,32,99,77,97,120,69,120,112, +101,99,116,101,100,67,111,100,101,83,105,122,101,41,0,105,32,60,32,109,95,115,105,122,101,0,110,101,120,116,95,108,101,118,101,108,95,111,102,115,32,62,32,99,117,114,95,108,101,118,101,108,95,111,102,115,0,1,2,2,3,3,3,3,4,0,0,0,0,0,0,1,1,0,1,0,1,0,0,1,2,1,2,0,0,0,1,0,2,1,0,2,0,0,1,2,3,110,117,109,32,38,38,32,40,110,117,109,32,61,61,32,126,110,117,109,95,99,104,101,99,107,41,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97, +98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115, +105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114, +32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32, +101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95, +96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117, +99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112, +116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101, +116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100, +100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116, +111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111, +99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112, +101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111, +117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115, +32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117, +112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101, +0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116, +32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100, +105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0, +0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0, +0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",4,n.Ua);var mb=n.ja(D(12,"i8",2),8);assert(0==mb%8);e._i64Subtract=nb; +function ob(a){e.___errno_location&&(C[e.___errno_location()>>2]=a);return a} +var J={I:1,F:2,ed:3,bc:4,H:5,Aa:6,vb:7,zc:8,ea:9,Jb:10,va:11,qd:11,Ta:12,da:13,Vb:14,Lc:15,fa:16,wa:17,rd:18,ha:19,ya:20,P:21,q:22,uc:23,Sa:24,Q:25,nd:26,Wb:27,Hc:28,ia:29,bd:30,nc:31,Vc:32,Sb:33,Zc:34,Dc:42,Zb:43,Kb:44,ec:45,fc:46,gc:47,mc:48,od:49,xc:50,dc:51,Pb:35,Ac:37,Bb:52,Eb:53,sd:54,vc:55,Fb:56,Gb:57,Qb:35,Hb:59,Jc:60,yc:61,kd:62,Ic:63,Ec:64,Fc:65,ad:66,Bc:67,yb:68,gd:69,Lb:70,Wc:71,pc:72,Tb:73,Db:74,Qc:76,Cb:77,$c:78,hc:79,ic:80,lc:81,kc:82,jc:83,Kc:38,za:39,qc:36,ga:40,Rc:95,Uc:96,Ob:104, +wc:105,zb:97,Yc:91,Oc:88,Gc:92,cd:108,Nb:111,wb:98,Mb:103,tc:101,rc:100,ld:110,Xb:112,Yb:113,ac:115,Ab:114,Rb:89,oc:90,Xc:93,dd:94,xb:99,sc:102,cc:106,Mc:107,md:109,pd:87,Ub:122,hd:116,Pc:95,Cc:123,$b:84,Sc:75,Ib:125,Nc:131,Tc:130,jd:86};function pb(a,b){H.push(function(){n.L("vi",a,[b])});pb.level=H.length}e._memset=qb;e._bitshift64Lshr=rb;e._bitshift64Shl=sb;function tb(){return!!tb.p}var ub=[],vb={};function wb(a,b){wb.p||(wb.p={});a in wb.p||(n.L("v",b),wb.p[a]=1)} +var xb={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system", +24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed", +44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network", +65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted", +82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available", +100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle", +122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function yb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var f=a[d];"."===f?a.splice(d,1):".."===f?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c--;c)a.unshift("..");return a}function zb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=yb(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} +function Ab(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function Bb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function Cb(){var a=Array.prototype.slice.call(arguments,0);return zb(a.join("/"))}function K(a,b){return zb(a+"/"+b)} +function Db(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=yb(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var Eb=[];function Fb(a,b){Eb[a]={input:[],output:[],N:b};Gb(a,Hb)} +var Hb={open:function(a){var b=Eb[a.g.rdev];if(!b)throw new L(J.ha);a.tty=b;a.seekable=!1},close:function(a){a.tty.N.flush(a.tty)},flush:function(a){a.tty.N.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.N.La)throw new L(J.Aa);for(var f=0,g=0;ga.e.length&& +(a.e=M.cb(a),a.o=a.e.length);if(!a.e||a.e.subarray){var c=a.e?a.e.buffer.byteLength:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.e,a.e=new Uint8Array(b),0b)a.e.length=b;else for(;a.e.length< +b;)a.e.push(0);a.o=b}},k:{D:function(a){var b={};b.dev=8192===(a.mode&61440)?a.id:1;b.ino=a.id;b.mode=a.mode;b.nlink=1;b.uid=0;b.gid=0;b.rdev=a.rdev;N(a.mode)?b.size=4096:32768===(a.mode&61440)?b.size=a.o:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.atime=new Date(a.timestamp);b.mtime=new Date(a.timestamp);b.ctime=new Date(a.timestamp);b.K=4096;b.blocks=Math.ceil(b.size/b.K);return b},u:function(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp);void 0!== +b.size&&M.ob(a,b.size)},lookup:function(){throw Mb[J.F];},T:function(a,b,c,d){return M.createNode(a,b,c,d)},rename:function(a,b,c){if(N(a.mode)){var d;try{d=Nb(b,c)}catch(f){}if(d)for(var g in d.e)throw new L(J.za);}delete a.parent.e[a.name];a.name=c;b.e[c]=a;a.parent=b},unlink:function(a,b){delete a.e[b]},rmdir:function(a,b){var c=Nb(a,b),d;for(d in c.e)throw new L(J.za);delete a.e[b]},readdir:function(a){var b=[".",".."],c;for(c in a.e)a.e.hasOwnProperty(c)&&b.push(c);return b},symlink:function(a, +b,c){a=M.createNode(a,b,41471,0);a.link=c;return a},readlink:function(a){if(40960!==(a.mode&61440))throw new L(J.q);return a.link}},n:{read:function(a,b,c,d,f){var g=a.g.e;if(f>=a.g.o)return 0;a=Math.min(a.g.o-f,d);assert(0<=a);if(8b)throw new L(J.q);return b},Ba:function(a,b,c){M.Ga(a.g,b+c);a.g.o=Math.max(a.g.o,b+c)},Na:function(a,b,c,d,f,g,h){if(32768!==(a.g.mode&61440))throw new L(J.ha);c=a.g.e;if(h&2||c.buffer!==b&&c.buffer!==b.buffer){if(0< +f||f+d>1)}catch(c){if(!c.code)throw c;throw new L(J[c.code]);}return b.mode},B:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.A.pa.root);b.reverse();return Cb.apply(null,b)},Ha:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+", +4096:"rs",4098:"rs+"},$a:function(a){a&=-32769;if(a in P.Ha)return P.Ha[a];throw new L(J.q);},k:{D:function(a){a=P.B(a);var b;try{b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new L(J[c.code]);}P.$&&!b.K&&(b.K=4096);P.$&&!b.blocks&&(b.blocks=(b.size+b.K-1)/b.K|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink,uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,K:b.K,blocks:b.blocks}},u:function(a,b){var c=P.B(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode), +a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}},lookup:function(a,b){var c=K(P.B(a),b),c=P.Ja(c);return P.createNode(a,b,c)},T:function(a,b,c,d){a=P.createNode(a,b,c,d);b=P.B(a);try{N(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(f){if(!f.code)throw f;throw new L(J[f.code]);}return a},rename:function(a,b,c){a=P.B(a);b=K(P.B(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}}, +unlink:function(a,b){var c=K(P.B(a),b);try{fs.unlinkSync(c)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}},rmdir:function(a,b){var c=K(P.B(a),b);try{fs.rmdirSync(c)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}},readdir:function(a){a=P.B(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new L(J[b.code]);}},symlink:function(a,b,c){a=K(P.B(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new L(J[d.code]);}},readlink:function(a){var b=P.B(a);try{return b= +fs.readlinkSync(b),b=Ob.relative(Ob.resolve(a.A.pa.root),b)}catch(c){if(!c.code)throw c;throw new L(J[c.code]);}}},n:{open:function(a){var b=P.B(a.g);try{32768===(a.g.mode&61440)&&(a.V=fs.openSync(b,P.$a(a.flags)))}catch(c){if(!c.code)throw c;throw new L(J[c.code]);}},close:function(a){try{32768===(a.g.mode&61440)&&a.V&&fs.closeSync(a.V)}catch(b){if(!b.code)throw b;throw new L(J[b.code]);}},read:function(a,b,c,d,f){if(0===d)return 0;var g=new Buffer(d),h;try{h=fs.readSync(a.V,g,0,d,f)}catch(l){throw new L(J[l.code]); +}if(0b)throw new L(J.q);return b}}};D(1,"i32*",2);D(1,"i32*",2);D(1,"i32*",2);var Pb=null,Qb=[null],Rb=[],Sb=1,Q=null,Tb=!0,R={},L=null,Mb={}; +function S(a,b){a=Db("/",a);b=b||{};if(!a)return{path:"",g:null};var c={Ia:!0,ra:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%Q.length}function Xb(a){var b=Wb(a.parent.id,a.name);a.M=Q[b];Q[b]=a}function Nb(a,b){var c;if(c=(c=Yb(a,"x"))?c:a.k.lookup?0:J.da)throw new L(c,a);for(c=Q[Wb(a.id,b)];c;c=c.M){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.k.lookup(a,b)} +function Lb(a,b,c,d){Zb||(Zb=function(a,b,c,d){a||(a=this);this.parent=a;this.A=a.A;this.U=null;this.id=Sb++;this.name=b;this.mode=c;this.k={};this.n={};this.rdev=d},Zb.prototype={},Object.defineProperties(Zb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}},kb:{get:function(){return N(this.mode)}},jb:{get:function(){return 8192===(this.mode& +61440)}}}));a=new Zb(a,b,c,d);Xb(a);return a}function N(a){return 16384===(a&61440)}var $b={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Yb(a,b){if(Tb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return J.da}else return J.da;return 0}function ac(a,b){try{return Nb(a,b),J.wa}catch(c){}return Yb(a,"wx")} +function bc(){var a;a=4096;for(var b=0;b<=a;b++)if(!Rb[b])return b;throw new L(J.Sa);}function cc(a){dc||(dc=function(){},dc.prototype={},Object.defineProperties(dc.prototype,{object:{get:function(){return this.g},set:function(a){this.g=a}},Ld:{get:function(){return 1!==(this.flags&2097155)}},Md:{get:function(){return 0!==(this.flags&2097155)}},Kd:{get:function(){return this.flags&1024}}}));var b=new dc,c;for(c in a)b[c]=a[c];a=b;b=bc();a.fd=b;return Rb[b]=a} +var Kb={open:function(a){a.n=Qb[a.g.rdev].n;a.n.open&&a.n.open(a)},G:function(){throw new L(J.ia);}};function Gb(a,b){Qb[a]={n:b}}function ec(a,b){var c="/"===b,d=!b,f;if(c&&Pb)throw new L(J.fa);if(!c&&!d){f=S(b,{Ia:!1});b=f.path;f=f.g;if(f.U)throw new L(J.fa);if(!N(f.mode))throw new L(J.ya);}var d={type:a,pa:{},Oa:b,lb:[]},g=a.A(d);g.A=d;d.root=g;c?Pb=g:f&&(f.U=d,f.A&&f.A.lb.push(d))} +function fc(a,b,c){var d=S(a,{parent:!0}).g;a=Bb(a);if(!a||"."===a||".."===a)throw new L(J.q);var f=ac(d,a);if(f)throw new L(f);if(!d.k.T)throw new L(J.I);return d.k.T(d,a,b,c)}function gc(a,b){b=(void 0!==b?b:438)&4095;b|=32768;return fc(a,b,0)}function V(a,b){b=(void 0!==b?b:511)&1023;b|=16384;return fc(a,b,0)}function hc(a,b,c){"undefined"===typeof c&&(c=b,b=438);return fc(a,b|8192,c)} +function ic(a,b){if(!Db(a))throw new L(J.F);var c=S(b,{parent:!0}).g;if(!c)throw new L(J.F);var d=Bb(b),f=ac(c,d);if(f)throw new L(f);if(!c.k.symlink)throw new L(J.I);return c.k.symlink(c,d,a)}function Vb(a){a=S(a).g;if(!a)throw new L(J.F);if(!a.k.readlink)throw new L(J.q);return Db(T(a.parent),a.k.readlink(a))}function jc(a,b){var c;"string"===typeof a?c=S(a,{la:!0}).g:c=a;if(!c.k.u)throw new L(J.I);c.k.u(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})} +function kc(a,b){var c;if(""===a)throw new L(J.F);var d;if("string"===typeof b){if(d=$b[b],"undefined"===typeof d)throw Error("Unknown file open mode: "+b);}else d=b;b=d;c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;var f;if("object"===typeof a)f=a;else{a=zb(a);try{f=S(a,{la:!(b&131072)}).g}catch(g){}}d=!1;if(b&64)if(f){if(b&128)throw new L(J.wa);}else f=fc(a,c,0),d=!0;if(!f)throw new L(J.F);8192===(f.mode&61440)&&(b&=-513);if(b&65536&&!N(f.mode))throw new L(J.ya);if(!d&&(f?40960===(f.mode&61440)? +c=J.ga:N(f.mode)&&(0!==(b&2097155)||b&512)?c=J.P:(c=["r","w","rw"][b&3],b&512&&(c+="w"),c=Yb(f,c)):c=J.F,c))throw new L(c);if(b&512){c=f;var h;"string"===typeof c?h=S(c,{la:!0}).g:h=c;if(!h.k.u)throw new L(J.I);if(N(h.mode))throw new L(J.P);if(32768!==(h.mode&61440))throw new L(J.q);if(c=Yb(h,"w"))throw new L(c);h.k.u(h,{size:0,timestamp:Date.now()})}b&=-641;f=cc({g:f,path:T(f),flags:b,seekable:!0,position:0,n:f.n,tb:[],error:!1});f.n.open&&f.n.open(f);!e.logReadFiles||b&1||(lc||(lc={}),a in lc|| +(lc[a]=1,e.printErr("read file: "+a)));try{R.onOpenFile&&(h=0,1!==(b&2097155)&&(h|=1),0!==(b&2097155)&&(h|=2),R.onOpenFile(a,h))}catch(l){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+l.message)}return f}function mc(a){a.na&&(a.na=null);try{a.n.close&&a.n.close(a)}catch(b){throw b;}finally{Rb[a.fd]=null}}function nc(a,b,c){if(!a.seekable||!a.n.G)throw new L(J.ia);a.position=a.n.G(a,b,c);a.tb=[]} +function oc(a,b,c,d,f,g){if(0>d||0>f)throw new L(J.q);if(0===(a.flags&2097155))throw new L(J.ea);if(N(a.g.mode))throw new L(J.P);if(!a.n.write)throw new L(J.q);a.flags&1024&&nc(a,0,2);var h=!0;if("undefined"===typeof f)f=a.position,h=!1;else if(!a.seekable)throw new L(J.ia);b=a.n.write(a,b,c,d,f,g);h||(a.position+=b);try{if(a.path&&R.onWriteToFile)R.onWriteToFile(a.path)}catch(l){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+l.message)}return b} +function pc(){L||(L=function(a,b){this.g=b;this.qb=function(a){this.S=a;for(var b in J)if(J[b]===a){this.code=b;break}};this.qb(a);this.message=xb[a]},L.prototype=Error(),L.prototype.constructor=L,[J.F].forEach(function(a){Mb[a]=new L(a);Mb[a].stack=""}))}var qc;function rc(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c}function sc(a,b,c,d){a=K("string"===typeof a?a:T(a),b);return gc(a,rc(c,d))} +function tc(a,b,c,d,f,g){a=b?K("string"===typeof a?a:T(a),b):a;d=rc(d,f);f=gc(a,d);if(c){if("string"===typeof c){a=Array(c.length);b=0;for(var h=c.length;b>2]}function xc(){var a;a=X();a=Rb[a];if(!a)throw new L(J.ea);return a}var yc={};e._i64Add=zc;function Ga(a){Ga.p||(r=Qa(r),Ga.p=!0,assert(n.R),Ga.bb=n.R,n.R=function(){x("cannot dynamically allocate, sbrk now has control")});var b=r;return 0==a||Ga.bb(a)?b:4294967295}var Ac=1;e._memcpy=Bc; +function Cc(a,b){Dc=a;Ec=b;if(!Fc)return 1;if(0==a)Y=function(){setTimeout(Gc,b)},Hc="timeout";else if(1==a)Y=function(){Ic(Gc)},Hc="rAF";else if(2==a){if(!window.setImmediate){var c=[];window.addEventListener("message",function(a){a.source===window&&"__emcc"===a.data&&(a.stopPropagation(),c.shift()())},!0);window.setImmediate=function(a){c.push(a);window.postMessage("__emcc","*")}}Y=function(){window.setImmediate(Gc)};Hc="immediate"}return 0} +function Jc(a,b,c,d,f){e.noExitRuntime=!0;assert(!Fc,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Fc=a;Kc=d;var g=Lc;Gc=function(){if(!na)if(0>h-6&63,h=h-6,c=c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[v];2==h?(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g&3)<<4],c+="=="):4==h&&(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g&15)<<2],c+="=");B.src="data:audio/x-"+b.substr(-3)+";base64,"+c;l(B)}};B.src=q;ad(function(){l(B)})}else return w()}});var c=e.canvas;c&&(c.sa=c.requestPointerLock||c.mozRequestPointerLock|| +c.webkitRequestPointerLock||c.msRequestPointerLock||function(){},c.Fa=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},c.Fa=c.Fa.bind(document),document.addEventListener("pointerlockchange",a,!1),document.addEventListener("mozpointerlockchange",a,!1),document.addEventListener("webkitpointerlockchange",a,!1),document.addEventListener("mspointerlockchange",a,!1),e.elementPointerLock&&c.addEventListener("click",function(a){!Tc&& +c.sa&&(c.sa(),a.preventDefault())},!1))}}function bd(a,b,c,d){if(b&&e.ka&&a==e.canvas)return e.ka;var f,g;if(b){g={antialias:!1,alpha:!1};if(d)for(var h in d)g[h]=d[h];if(g=GL.createContext(a,g))f=GL.getContext(g).td;a.style.backgroundColor="black"}else f=a.getContext("2d");if(!f)return null;c&&(b||assert("undefined"===typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),e.ka=f,b&&GL.Od(g),e.Td=b,Uc.forEach(function(a){a()}),Vc());return f} +var cd=!1,dd=void 0,ed=void 0; +function fd(a,b,c){function d(){Sc=!1;var a=f.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===a?(f.Da=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){}, +f.Da=f.Da.bind(document),dd&&f.sa(),Sc=!0,ed&&gd()):(a.parentNode.insertBefore(f,a),a.parentNode.removeChild(a),ed&&hd());if(e.onFullScreen)e.onFullScreen(Sc);id(f)}dd=a;ed=b;jd=c;"undefined"===typeof dd&&(dd=!0);"undefined"===typeof ed&&(ed=!1);"undefined"===typeof jd&&(jd=null);var f=e.canvas;cd||(cd=!0,document.addEventListener("fullscreenchange",d,!1),document.addEventListener("mozfullscreenchange",d,!1),document.addEventListener("webkitfullscreenchange",d,!1),document.addEventListener("MSFullscreenChange", +d,!1));var g=document.createElement("div");f.parentNode.insertBefore(g,f);g.appendChild(f);g.p=g.requestFullScreen||g.mozRequestFullScreen||g.msRequestFullscreen||(g.webkitRequestFullScreen?function(){g.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null);c?g.p({Ud:c}):g.p()}var kd=0;function ld(a){var b=Date.now();if(0===kd)kd=b+1E3/60;else for(;b+2>=kd;)kd+=1E3/60;b=Math.max(kd-b,0);setTimeout(a,b)} +function Ic(a){"undefined"===typeof window?ld(a):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||ld),window.requestAnimationFrame(a))}function ad(a){e.noExitRuntime=!0;setTimeout(function(){na||a()},1E4)} +function $c(a){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".")+1)]}function md(a,b,c){var d=new XMLHttpRequest;d.open("GET",a,!0);d.responseType="arraybuffer";d.onload=function(){200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)} +function nd(a,b,c){md(a,function(c){assert(c,'Loading data file "'+a+'" failed (no arrayBuffer).');b(new Uint8Array(c));lb()},function(){if(c)c();else throw'Loading data file "'+a+'" failed.';});kb()}var od=[];function pd(){var a=e.canvas;od.forEach(function(b){b(a.width,a.height)})}function gd(){if("undefined"!=typeof SDL){var a=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=a|8388608}pd()} +function hd(){if("undefined"!=typeof SDL){var a=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=a&-8388609}pd()} +function id(a,b,c){b&&c?(a.ub=b,a.hb=c):(b=a.ub,c=a.hb);var d=b,f=c;e.forcedAspectRatio&&0this.length-1||0>a)){var b=a%this.chunkSize;return this.gb(a/this.chunkSize|0)[b]}};l.prototype.pb=function(a){this.gb=a};l.prototype.Ca=function(){var a=new XMLHttpRequest;a.open("HEAD",c,!1);a.send(null);if(!(200<=a.status&&300>a.status||304===a.status))throw Error("Couldn't load "+c+". Status: "+a.status);var b=Number(a.getResponseHeader("Content-length")),d,f=1048576;(d=a.getResponseHeader("Accept-Ranges"))&& +"bytes"===d||(f=b);var g=this;g.pb(function(a){var d=a*f,h=(a+1)*f-1,h=Math.min(h,b-1);if("undefined"===typeof g.Y[a]){var l=g.Y;if(d>h)throw Error("invalid range ("+d+", "+h+") or no bytes requested!");if(h>b-1)throw Error("only "+b+" bytes available! programmer error!");var q=new XMLHttpRequest;q.open("GET",c,!1);b!==f&&q.setRequestHeader("Range","bytes="+d+"-"+h);"undefined"!=typeof Uint8Array&&(q.responseType="arraybuffer");q.overrideMimeType&&q.overrideMimeType("text/plain; charset=x-user-defined"); +q.send(null);if(!(200<=q.status&&300>q.status||304===q.status))throw Error("Couldn't load "+c+". Status: "+q.status);d=void 0!==q.response?new Uint8Array(q.response||[]):hb(q.responseText||"",!0);l[a]=d}if("undefined"===typeof g.Y[a])throw Error("doXHR failed!");return g.Y[a]});this.Wa=b;this.Va=f;this.oa=!0};if("undefined"!==typeof XMLHttpRequest){if(!ca)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";g=new l;Object.defineProperty(g, +"length",{get:function(){this.oa||this.Ca();return this.Wa}});Object.defineProperty(g,"chunkSize",{get:function(){this.oa||this.Ca();return this.Va}});h=void 0}else h=c,g=void 0;var w=sc(a,b,d,f);g?w.e=g:h&&(w.e=null,w.url=h);Object.defineProperty(w,"usedBytes",{get:function(){return this.e.length}});var u={};Object.keys(w.n).forEach(function(a){var b=w.n[a];u[a]=function(){if(!uc(w))throw new L(J.H);return b.apply(null,arguments)}});u.read=function(a,b,c,d,f){if(!uc(w))throw new L(J.H);a=a.g.e;if(f>= +a.length)return 0;d=Math.min(a.length-f,d);assert(0<=d);if(a.slice)for(var g=0;g>2]=0;case 21520:return c.tty?-J.q:-J.Q;case 21531:f=X();if(!c.n.ib)throw new L(J.Q);return c.n.ib(c,d,f);default:x("bad ioctl syscall "+d)}}catch(g){return"undefined"!==typeof vc&&g instanceof L||x(g),-g.S}},___syscall6:function(a,b){wc=b;try{var c=xc();mc(c);return 0}catch(d){return"undefined"!==typeof vc&&d instanceof L||x(d),-d.S}},_emscripten_set_main_loop_timing:Cc,__ZSt18uncaught_exceptionv:tb,___setErrNo:ob,_sbrk:Ga,___cxa_begin_catch:function(a){tb.p--;ub.push(a);var b; +a:{if(a&&!vb[a])for(b in vb)if(vb[b].wd===a)break a;b=a}b&&vb[b].Sd++;return a},_emscripten_memcpy_big:function(a,b,c){E.set(E.subarray(b,b+c),a);return a},_sysconf:function(a){switch(a){case 30:return 4096;case 85:return F/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; +case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; +case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}ob(J.q);return-1}, +_pthread_getspecific:function(a){return yc[a]||0},_pthread_self:function(){return 0},_pthread_once:wb,_pthread_key_create:function(a){if(0==a)return J.q;C[a>>2]=Ac;yc[Ac]=0;Ac++;return 0},___unlock:function(){},_emscripten_set_main_loop:Jc,_pthread_setspecific:function(a,b){if(!(a in yc))return J.q;yc[a]=b;return 0},___lock:function(){},_abort:function(){e.abort()},_pthread_cleanup_push:pb,_time:function(a){var b=Date.now()/1E3|0;a&&(C[a>>2]=b);return b},___syscall140:function(a,b){wc=b;try{var c= +xc(),d=X(),f=X(),g=X(),h=X();assert(0===d);nc(c,f,h);C[g>>2]=c.position;c.na&&0===f&&0===h&&(c.na=null);return 0}catch(l){return"undefined"!==typeof vc&&l instanceof L||x(l),-l.S}},___syscall146:function(a,b){wc=b;try{var c=xc(),d=X(),f;a:{for(var g=X(),h=0,l=0;l>2],C[d+(8*l+4)>>2],void 0);if(0>w){f=-1;break a}h+=w}f=h}return f}catch(u){return"undefined"!==typeof vc&&u instanceof L||x(u),-u.S}},STACKTOP:m,STACK_MAX:Va,tempDoublePtr:mb,ABORT:na,cttz_i8:qd};// EMSCRIPTEN_START_ASM + +var Z=(function(global,env,buffer) { +"use asm";var a=global.Int8Array;var b=global.Int16Array;var c=global.Int32Array;var d=global.Uint8Array;var e=global.Uint16Array;var f=global.Uint32Array;var g=global.Float32Array;var h=global.Float64Array;var i=new a(buffer);var j=new b(buffer);var k=new c(buffer);var l=new d(buffer);var m=new e(buffer);var n=new f(buffer);var o=new g(buffer);var p=new h(buffer);var q=global.byteLength;var r=env.STACKTOP|0;var s=env.STACK_MAX|0;var t=env.tempDoublePtr|0;var u=env.ABORT|0;var v=env.cttz_i8|0;var w=0;var x=0;var y=0;var z=0;var A=global.NaN,B=global.Infinity;var C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0.0;var L=0;var M=0;var N=0;var O=0;var P=0;var Q=0;var R=0;var S=0;var T=0;var U=0;var V=global.Math.floor;var W=global.Math.abs;var X=global.Math.sqrt;var Y=global.Math.pow;var Z=global.Math.cos;var _=global.Math.sin;var $=global.Math.tan;var aa=global.Math.acos;var ba=global.Math.asin;var ca=global.Math.atan;var da=global.Math.atan2;var ea=global.Math.exp;var fa=global.Math.log;var ga=global.Math.ceil;var ha=global.Math.imul;var ia=global.Math.min;var ja=global.Math.clz32;var ka=env.abort;var la=env.assert;var ma=env.invoke_iiii;var na=env.invoke_viiiii;var oa=env.invoke_vi;var pa=env.invoke_ii;var qa=env.invoke_viii;var ra=env.invoke_v;var sa=env.invoke_viiiiii;var ta=env.invoke_iiiiii;var ua=env.invoke_viiii;var va=env._pthread_cleanup_pop;var wa=env.___syscall54;var xa=env.___syscall6;var ya=env._emscripten_set_main_loop_timing;var za=env.__ZSt18uncaught_exceptionv;var Aa=env.___setErrNo;var Ba=env._sbrk;var Ca=env.___cxa_begin_catch;var Da=env._emscripten_memcpy_big;var Ea=env._sysconf;var Fa=env._pthread_getspecific;var Ga=env._pthread_self;var Ha=env._pthread_once;var Ia=env._pthread_key_create;var Ja=env.___unlock;var Ka=env._emscripten_set_main_loop;var La=env._pthread_setspecific;var Ma=env.___lock;var Na=env._abort;var Oa=env._pthread_cleanup_push;var Pa=env._time;var Qa=env.___syscall140;var Ra=env.___syscall146;var Sa=0.0;function Ta(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true} +// EMSCRIPTEN_START_FUNCS +function bb(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;return b|0}function cb(){return r|0}function db(a){a=a|0;r=a}function eb(a,b){a=a|0;b=b|0;r=a;s=b}function fb(a,b){a=a|0;b=b|0;if(!w){w=a;x=b}}function gb(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0]}function hb(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0];i[t+4>>0]=i[a+4>>0];i[t+5>>0]=i[a+5>>0];i[t+6>>0]=i[a+6>>0];i[t+7>>0]=i[a+7>>0]}function ib(a){a=a|0;L=a}function jb(){return L|0}function kb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+608|0;n=q+88|0;m=q+72|0;i=q+64|0;h=q+48|0;g=q+24|0;f=q;l=q+96|0;o=q+92|0;j=a+4|0;p=a+8|0;if((k[j>>2]|0)>>>0>(k[p>>2]|0)>>>0){k[f>>2]=1154;k[f+4>>2]=2120;k[f+8>>2]=1133;Ac(l,1100,f)|0;zc(l,q+16|0)|0}if((2147418112/(d>>>0)|0)>>>0<=b>>>0){k[g>>2]=1154;k[g+4>>2]=2121;k[g+8>>2]=1169;Ac(l,1100,g)|0;zc(l,q+40|0)|0}g=k[p>>2]|0;if(g>>>0>=b>>>0){p=1;r=q;return p|0}do if(c){if(b){f=b+-1|0;if(!(f&b)){f=11;break}else b=f}else b=-1;b=b>>>16|b;b=b>>>8|b;b=b>>>4|b;b=b>>>2|b;b=(b>>>1|b)+1|0;f=10}else f=10;while(0);if((f|0)==10)if(!b){b=0;f=12}else f=11;if((f|0)==11)if(b>>>0<=g>>>0)f=12;if((f|0)==12){k[h>>2]=1154;k[h+4>>2]=2130;k[h+8>>2]=1217;Ac(l,1100,h)|0;zc(l,i)|0}c=ha(b,d)|0;do if(!e){f=lb(k[a>>2]|0,c,o,1)|0;if(!f){p=0;r=q;return p|0}else{k[a>>2]=f;break}}else{g=mb(c,o)|0;if(!g){p=0;r=q;return p|0}Ya[e&0](g,k[a>>2]|0,k[j>>2]|0);f=k[a>>2]|0;do if(f)if(!(f&7)){$a[k[104>>2]&1](f,0,0,1,k[27]|0)|0;break}else{k[m>>2]=1154;k[m+4>>2]=2499;k[m+8>>2]=1516;Ac(l,1100,m)|0;zc(l,n)|0;break}while(0);k[a>>2]=g}while(0);f=k[o>>2]|0;if(f>>>0>c>>>0)b=(f>>>0)/(d>>>0)|0;k[p>>2]=b;p=1;r=q;return p|0}function lb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=r;r=r+592|0;i=j+48|0;f=j+24|0;e=j;h=j+72|0;g=j+68|0;if(a&7){k[e>>2]=1154;k[e+4>>2]=2499;k[e+8>>2]=1494;Ac(h,1100,e)|0;zc(h,j+16|0)|0;i=0;r=j;return i|0}if(b>>>0>2147418112){k[f>>2]=1154;k[f+4>>2]=2499;k[f+8>>2]=1387;Ac(h,1100,f)|0;zc(h,j+40|0)|0;i=0;r=j;return i|0}k[g>>2]=b;d=$a[k[104>>2]&1](a,b,g,d,k[27]|0)|0;if(c)k[c>>2]=k[g>>2];if(!(d&7)){i=d;r=j;return i|0}k[i>>2]=1154;k[i+4>>2]=2551;k[i+8>>2]=1440;Ac(h,1100,i)|0;zc(h,j+64|0)|0;i=d;r=j;return i|0}function mb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+592|0;g=i+48|0;h=i+24|0;c=i;f=i+72|0;e=i+68|0;d=a+3&-4;d=(d|0)!=0?d:4;if(d>>>0>2147418112){k[c>>2]=1154;k[c+4>>2]=2499;k[c+8>>2]=1387;Ac(f,1100,c)|0;zc(f,i+16|0)|0;h=0;r=i;return h|0}k[e>>2]=d;c=$a[k[104>>2]&1](0,d,e,1,k[27]|0)|0;a=k[e>>2]|0;if(b)k[b>>2]=a;if((c|0)==0|a>>>0>>0){k[h>>2]=1154;k[h+4>>2]=2499;k[h+8>>2]=1413;Ac(f,1100,h)|0;zc(f,i+40|0)|0;h=0;r=i;return h|0}if(!(c&7)){h=c;r=i;return h|0}k[g>>2]=1154;k[g+4>>2]=2526;k[g+8>>2]=1440;Ac(f,1100,g)|0;zc(f,i+64|0)|0;h=c;r=i;return h|0}function nb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=r;r=r+960|0;P=S+232|0;O=S+216|0;N=S+208|0;M=S+192|0;L=S+184|0;K=S+168|0;J=S+160|0;I=S+144|0;F=S+136|0;E=S+120|0;D=S+112|0;C=S+96|0;z=S+88|0;y=S+72|0;x=S+64|0;w=S+48|0;q=S+40|0;t=S+24|0;s=S+16|0;p=S;H=S+440|0;Q=S+376|0;R=S+304|0;v=S+236|0;if((b|0)==0|d>>>0>11){a=0;r=S;return a|0}k[a>>2]=b;e=R;f=e+68|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=0;do{e=i[c+f>>0]|0;if(e<<24>>24){G=R+((e&255)<<2)|0;k[G>>2]=(k[G>>2]|0)+1}f=f+1|0}while((f|0)!=(b|0));f=0;o=1;g=0;h=-1;n=0;while(1){e=k[R+(o<<2)>>2]|0;if(!e)k[a+28+(o+-1<<2)>>2]=0;else{G=o+-1|0;k[Q+(G<<2)>>2]=f;f=e+f|0;B=16-o|0;k[a+28+(G<<2)>>2]=(f+-1<>2]=n;k[v+(o<<2)>>2]=n;g=g>>>0>o>>>0?g:o;h=h>>>0>>0?h:o;n=e+n|0}o=o+1|0;if((o|0)==17){G=g;break}else f=f<<1}k[a+4>>2]=n;f=a+172|0;do if(n>>>0>(k[f>>2]|0)>>>0){k[f>>2]=n;if(n){e=n+-1|0;if(e&n)u=14}else{e=-1;u=14}if((u|0)==14){B=e>>>16|e;B=B>>>8|B;B=B>>>4|B;B=B>>>2|B;B=(B>>>1|B)+1|0;k[f>>2]=B>>>0>b>>>0?b:B}g=a+176|0;e=k[g>>2]|0;do if(e){B=k[e+-4>>2]|0;e=e+-8|0;if(!((B|0)!=0?(B|0)==(~k[e>>2]|0):0)){k[p>>2]=1154;k[p+4>>2]=644;k[p+8>>2]=1863;Ac(H,1100,p)|0;zc(H,s)|0}if(!(e&7)){$a[k[104>>2]&1](e,0,0,1,k[27]|0)|0;break}else{k[t>>2]=1154;k[t+4>>2]=2499;k[t+8>>2]=1516;Ac(H,1100,t)|0;zc(H,q)|0;break}}while(0);f=k[f>>2]|0;f=(f|0)!=0?f:1;e=mb((f<<1)+8|0,0)|0;if(!e){k[g>>2]=0;e=0;break}else{k[e+4>>2]=f;k[e>>2]=~f;k[g>>2]=e+8;u=25;break}}else u=25;while(0);a:do if((u|0)==25){B=a+24|0;i[B>>0]=h;i[a+25>>0]=G;f=a+176|0;g=0;do{A=i[c+g>>0]|0;e=A&255;if(A<<24>>24){if(!(k[R+(e<<2)>>2]|0)){k[w>>2]=1154;k[w+4>>2]=2273;k[w+8>>2]=1261;Ac(H,1100,w)|0;zc(H,x)|0}A=v+(e<<2)|0;e=k[A>>2]|0;k[A>>2]=e+1;if(e>>>0>=n>>>0){k[y>>2]=1154;k[y+4>>2]=2277;k[y+8>>2]=1274;Ac(H,1100,y)|0;zc(H,z)|0}j[(k[f>>2]|0)+(e<<1)>>1]=g}g=g+1|0}while((g|0)!=(b|0));e=i[B>>0]|0;z=(e&255)>>>0>>0?d:0;A=a+8|0;k[A>>2]=z;y=(z|0)!=0;if(y){x=1<>>0>(k[e>>2]|0)>>>0){k[e>>2]=x;g=a+168|0;e=k[g>>2]|0;do if(e){w=k[e+-4>>2]|0;e=e+-8|0;if(!((w|0)!=0?(w|0)==(~k[e>>2]|0):0)){k[C>>2]=1154;k[C+4>>2]=644;k[C+8>>2]=1863;Ac(H,1100,C)|0;zc(H,D)|0}if(!(e&7)){$a[k[104>>2]&1](e,0,0,1,k[27]|0)|0;break}else{k[E>>2]=1154;k[E+4>>2]=2499;k[E+8>>2]=1516;Ac(H,1100,E)|0;zc(H,F)|0;break}}while(0);e=x<<2;f=mb(e+8|0,0)|0;if(!f){k[g>>2]=0;e=0;break a}else{F=f+8|0;k[f+4>>2]=x;k[f>>2]=~x;k[g>>2]=F;f=F;break}}else{f=a+168|0;e=x<<2;g=f;f=k[f>>2]|0}while(0);ad(f|0,-1,e|0)|0;u=a+176|0;w=1;do{if(k[R+(w<<2)>>2]|0){b=z-w|0;v=1<>2]|0;if(f>>>0>=16){k[I>>2]=1154;k[I+4>>2]=1953;k[I+8>>2]=1737;Ac(H,1100,I)|0;zc(H,J)|0}e=k[a+28+(f<<2)>>2]|0;if(!e)t=-1;else t=(e+-1|0)>>>(16-w|0);if(h>>>0<=t>>>0){q=(k[a+96+(f<<2)>>2]|0)-h|0;s=w<<16;do{e=m[(k[u>>2]|0)+(q+h<<1)>>1]|0;if((l[c+e>>0]|0|0)!=(w|0)){k[K>>2]=1154;k[K+4>>2]=2319;k[K+8>>2]=1303;Ac(H,1100,K)|0;zc(H,L)|0}p=h<>>0>=x>>>0){k[M>>2]=1154;k[M+4>>2]=2325;k[M+8>>2]=1337;Ac(H,1100,M)|0;zc(H,N)|0}e=k[g>>2]|0;if((k[e+(n<<2)>>2]|0)!=-1){k[O>>2]=1154;k[O+4>>2]=2327;k[O+8>>2]=1360;Ac(H,1100,O)|0;zc(H,P)|0;e=k[g>>2]|0}k[e+(n<<2)>>2]=f;o=o+1|0}while(o>>>0>>0);h=h+1|0}while(h>>>0<=t>>>0)}}w=w+1|0}while(z>>>0>=w>>>0);e=i[B>>0]|0}f=a+96|0;k[f>>2]=(k[f>>2]|0)-(k[Q>>2]|0);f=a+100|0;k[f>>2]=(k[f>>2]|0)-(k[Q+4>>2]|0);f=a+104|0;k[f>>2]=(k[f>>2]|0)-(k[Q+8>>2]|0);f=a+108|0;k[f>>2]=(k[f>>2]|0)-(k[Q+12>>2]|0);f=a+112|0;k[f>>2]=(k[f>>2]|0)-(k[Q+16>>2]|0);f=a+116|0;k[f>>2]=(k[f>>2]|0)-(k[Q+20>>2]|0);f=a+120|0;k[f>>2]=(k[f>>2]|0)-(k[Q+24>>2]|0);f=a+124|0;k[f>>2]=(k[f>>2]|0)-(k[Q+28>>2]|0);f=a+128|0;k[f>>2]=(k[f>>2]|0)-(k[Q+32>>2]|0);f=a+132|0;k[f>>2]=(k[f>>2]|0)-(k[Q+36>>2]|0);f=a+136|0;k[f>>2]=(k[f>>2]|0)-(k[Q+40>>2]|0);f=a+140|0;k[f>>2]=(k[f>>2]|0)-(k[Q+44>>2]|0);f=a+144|0;k[f>>2]=(k[f>>2]|0)-(k[Q+48>>2]|0);f=a+148|0;k[f>>2]=(k[f>>2]|0)-(k[Q+52>>2]|0);f=a+152|0;k[f>>2]=(k[f>>2]|0)-(k[Q+56>>2]|0);f=a+156|0;k[f>>2]=(k[f>>2]|0)-(k[Q+60>>2]|0);f=a+16|0;k[f>>2]=0;g=a+20|0;k[g>>2]=e&255;b:do if(y){while(1){if(!d)break b;e=d+-1|0;if(!(k[R+(d<<2)>>2]|0))d=e;else break}k[f>>2]=k[a+28+(e<<2)>>2];e=z+1|0;k[g>>2]=e;if(e>>>0<=G>>>0){while(1){if(k[R+(e<<2)>>2]|0)break;e=e+1|0;if(e>>>0>G>>>0)break b}k[g>>2]=e}}while(0);k[a+92>>2]=-1;k[a+160>>2]=1048575;k[a+12>>2]=32-(k[A>>2]|0);e=1}while(0);a=e;r=S;return a|0}function ob(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(!a){e=Uc(b)|0;if(!c){c=e;return c|0}if(!e)f=0;else f=Xc(e)|0;k[c>>2]=f;c=e;return c|0}if(!b){Vc(a);if(!c){c=0;return c|0}k[c>>2]=0;c=0;return c|0}e=Wc(a,b)|0;f=(e|0)!=0;if(f|d^1)f=f?e:a;else{e=Wc(a,b)|0;f=(e|0)==0?a:e}if(!c){c=e;return c|0}b=Xc(f)|0;k[c>>2]=b;c=e;return c|0}function pb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!((a|0)!=0&b>>>0>73&(c|0)!=0)){c=0;return c|0}if((k[c>>2]|0)!=40|b>>>0<74){c=0;return c|0}if(((l[a>>0]|0)<<8|(l[a+1>>0]|0)|0)!=18552){c=0;return c|0}if(((l[a+2>>0]|0)<<8|(l[a+3>>0]|0))>>>0<74){c=0;return c|0}if(((l[a+7>>0]|0)<<16|(l[a+6>>0]|0)<<24|(l[a+8>>0]|0)<<8|(l[a+9>>0]|0))>>>0>b>>>0){c=0;return c|0}k[c+4>>2]=(l[a+12>>0]|0)<<8|(l[a+13>>0]|0);k[c+8>>2]=(l[a+14>>0]|0)<<8|(l[a+15>>0]|0);k[c+12>>2]=l[a+16>>0];k[c+16>>2]=l[a+17>>0];b=a+18|0;d=c+32|0;k[d>>2]=l[b>>0];k[d+4>>2]=0;b=i[b>>0]|0;k[c+20>>2]=b<<24>>24==0|b<<24>>24==9?8:16;k[c+24>>2]=(l[a+26>>0]|0)<<16|(l[a+25>>0]|0)<<24|(l[a+27>>0]|0)<<8|(l[a+28>>0]|0);k[c+28>>2]=(l[a+30>>0]|0)<<16|(l[a+29>>0]|0)<<24|(l[a+31>>0]|0)<<8|(l[a+32>>0]|0);c=1;return c|0}function qb(a){a=a|0;Ca(a|0)|0;Vb()}function rb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+544|0;e=f;d=f+24|0;b=k[a+20>>2]|0;if(b)sb(b);b=a+4|0;c=k[b>>2]|0;if(!c){e=a+16|0;i[e>>0]=0;r=f;return}if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[e>>2]=1154;k[e+4>>2]=2499;k[e+8>>2]=1516;Ac(d,1100,e)|0;zc(d,f+16|0)|0}k[b>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;e=a+16|0;i[e>>0]=0;r=f;return}function sb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+640|0;n=o+112|0;m=o+96|0;l=o+88|0;j=o+72|0;i=o+64|0;h=o+48|0;d=o+40|0;f=o+24|0;e=o+16|0;c=o;g=o+120|0;if(!a){r=o;return}b=k[a+168>>2]|0;do if(b){p=k[b+-4>>2]|0;b=b+-8|0;if(!((p|0)!=0?(p|0)==(~k[b>>2]|0):0)){k[c>>2]=1154;k[c+4>>2]=644;k[c+8>>2]=1863;Ac(g,1100,c)|0;zc(g,e)|0}if(!(b&7)){$a[k[104>>2]&1](b,0,0,1,k[27]|0)|0;break}else{k[f>>2]=1154;k[f+4>>2]=2499;k[f+8>>2]=1516;Ac(g,1100,f)|0;zc(g,d)|0;break}}while(0);b=k[a+176>>2]|0;do if(b){p=k[b+-4>>2]|0;b=b+-8|0;if(!((p|0)!=0?(p|0)==(~k[b>>2]|0):0)){k[h>>2]=1154;k[h+4>>2]=644;k[h+8>>2]=1863;Ac(g,1100,h)|0;zc(g,i)|0}if(!(b&7)){$a[k[104>>2]&1](b,0,0,1,k[27]|0)|0;break}else{k[j>>2]=1154;k[j+4>>2]=2499;k[j+8>>2]=1516;Ac(g,1100,j)|0;zc(g,l)|0;break}}while(0);if(!(a&7)){$a[k[104>>2]&1](a,0,0,1,k[27]|0)|0;r=o;return}else{k[m>>2]=1154;k[m+4>>2]=2499;k[m+8>>2]=1516;Ac(g,1100,m)|0;zc(g,n)|0;r=o;return}}function tb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;l=r;r=r+560|0;g=l+40|0;h=l+24|0;b=l;f=l+48|0;e=a+8|0;c=k[e>>2]|0;if((c+-1|0)>>>0>=8192){k[b>>2]=1154;k[b+4>>2]=2997;k[b+8>>2]=1541;Ac(f,1100,b)|0;zc(f,l+16|0)|0}k[a>>2]=c;d=a+20|0;b=k[d>>2]|0;if(!b){b=mb(180,0)|0;if(!b)b=0;else{j=b+164|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0}k[d>>2]=b;j=b;i=k[a>>2]|0}else{j=b;i=c}if(!(k[e>>2]|0)){k[h>>2]=1154;k[h+4>>2]=903;k[h+8>>2]=1781;Ac(f,1100,h)|0;zc(f,g)|0;f=k[a>>2]|0}else f=i;e=k[a+4>>2]|0;if(f>>>0>16){c=f;b=0}else{a=0;j=nb(j,i,e,a)|0;r=l;return j|0}while(1){d=b+1|0;if(c>>>0>3){c=c>>>1;b=d}else{c=d;break}}a=b+2+((c|0)!=32&1<>>0>>0&1)|0;a=a>>>0<11?a&255:11;j=nb(j,i,e,a)|0;r=l;return j|0}function ub(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=r;r=r+800|0;I=N+256|0;H=N+240|0;G=N+232|0;F=N+216|0;E=N+208|0;D=N+192|0;C=N+184|0;B=N+168|0;A=N+160|0;z=N+144|0;y=N+136|0;x=N+120|0;w=N+112|0;v=N+96|0;u=N+88|0;t=N+72|0;o=N+64|0;n=N+48|0;h=N+40|0;j=N+24|0;f=N+16|0;e=N;L=N+288|0;M=N+264|0;J=vb(a,14)|0;if(!J){k[b>>2]=0;c=b+4|0;d=k[c>>2]|0;if(d){if(!(d&7))$a[k[104>>2]&1](d,0,0,1,k[27]|0)|0;else{k[e>>2]=1154;k[e+4>>2]=2499;k[e+8>>2]=1516;Ac(L,1100,e)|0;zc(L,f)|0}k[c>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0}i[b+16>>0]=0;c=b+20|0;d=k[c>>2]|0;if(!d){b=1;r=N;return b|0}sb(d);k[c>>2]=0;b=1;r=N;return b|0}q=b+4|0;s=b+8|0;c=k[s>>2]|0;if((c|0)!=(J|0)){if(c>>>0<=J>>>0){do if((k[b+12>>2]|0)>>>0>>0){if(kb(q,J,(c+1|0)==(J|0),1,0)|0){c=k[s>>2]|0;break}i[b+16>>0]=1;b=0;r=N;return b|0}while(0);ad((k[q>>2]|0)+c|0,0,J-c|0)|0}k[s>>2]=J}ad(k[q>>2]|0,0,J|0)|0;p=a+20|0;c=k[p>>2]|0;if((c|0)<5){f=a+4|0;g=a+8|0;e=a+16|0;do{d=k[f>>2]|0;if((d|0)==(k[g>>2]|0))d=0;else{k[f>>2]=d+1;d=l[d>>0]|0}c=c+8|0;k[p>>2]=c;if((c|0)>=33){k[j>>2]=1154;k[j+4>>2]=3199;k[j+8>>2]=1650;Ac(L,1100,j)|0;zc(L,h)|0;c=k[p>>2]|0}d=d<<32-c|k[e>>2];k[e>>2]=d}while((c|0)<5)}else{d=a+16|0;e=d;d=k[d>>2]|0}m=d>>>27;k[e>>2]=d<<5;k[p>>2]=c+-5;if((m+-1|0)>>>0>20){b=0;r=N;return b|0}k[M+20>>2]=0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;i[M+16>>0]=0;c=M+4|0;d=M+8|0;a:do if(kb(c,21,0,1,0)|0){h=k[d>>2]|0;j=k[c>>2]|0;ad(j+h|0,0,21-h|0)|0;k[d>>2]=21;if(m){e=a+4|0;f=a+8|0;g=a+16|0;h=0;do{c=k[p>>2]|0;if((c|0)<3)do{d=k[e>>2]|0;if((d|0)==(k[f>>2]|0))d=0;else{k[e>>2]=d+1;d=l[d>>0]|0}c=c+8|0;k[p>>2]=c;if((c|0)>=33){k[n>>2]=1154;k[n+4>>2]=3199;k[n+8>>2]=1650;Ac(L,1100,n)|0;zc(L,o)|0;c=k[p>>2]|0}d=d<<32-c|k[g>>2];k[g>>2]=d}while((c|0)<3);else d=k[g>>2]|0;k[g>>2]=d<<3;k[p>>2]=c+-3;i[j+(l[1611+h>>0]|0)>>0]=d>>>29;h=h+1|0}while((h|0)!=(m|0))}if(tb(M)|0){h=a+4|0;j=a+8|0;m=a+16|0;d=0;b:while(1){g=J-d|0;c=wb(a,M)|0;c:do if(c>>>0<17){if((k[s>>2]|0)>>>0<=d>>>0){k[t>>2]=1154;k[t+4>>2]=903;k[t+8>>2]=1781;Ac(L,1100,t)|0;zc(L,u)|0}i[(k[q>>2]|0)+d>>0]=c;c=d+1|0}else switch(c|0){case 17:{c=k[p>>2]|0;if((c|0)<3)do{e=k[h>>2]|0;if((e|0)==(k[j>>2]|0))e=0;else{k[h>>2]=e+1;e=l[e>>0]|0}c=c+8|0;k[p>>2]=c;if((c|0)>=33){k[v>>2]=1154;k[v+4>>2]=3199;k[v+8>>2]=1650;Ac(L,1100,v)|0;zc(L,w)|0;c=k[p>>2]|0}e=e<<32-c|k[m>>2];k[m>>2]=e}while((c|0)<3);else e=k[m>>2]|0;k[m>>2]=e<<3;k[p>>2]=c+-3;c=(e>>>29)+3|0;if(c>>>0>g>>>0){c=0;break a}c=c+d|0;break c}case 18:{c=k[p>>2]|0;if((c|0)<7)do{e=k[h>>2]|0;if((e|0)==(k[j>>2]|0))e=0;else{k[h>>2]=e+1;e=l[e>>0]|0}c=c+8|0;k[p>>2]=c;if((c|0)>=33){k[x>>2]=1154;k[x+4>>2]=3199;k[x+8>>2]=1650;Ac(L,1100,x)|0;zc(L,y)|0;c=k[p>>2]|0}e=e<<32-c|k[m>>2];k[m>>2]=e}while((c|0)<7);else e=k[m>>2]|0;k[m>>2]=e<<7;k[p>>2]=c+-7;c=(e>>>25)+11|0;if(c>>>0>g>>>0){c=0;break a}c=c+d|0;break c}default:{if((c+-19|0)>>>0>=2){K=90;break b}f=k[p>>2]|0;if((c|0)==19){if((f|0)<2){e=f;while(1){c=k[h>>2]|0;if((c|0)==(k[j>>2]|0))f=0;else{k[h>>2]=c+1;f=l[c>>0]|0}c=e+8|0;k[p>>2]=c;if((c|0)>=33){k[z>>2]=1154;k[z+4>>2]=3199;k[z+8>>2]=1650;Ac(L,1100,z)|0;zc(L,A)|0;c=k[p>>2]|0}e=f<<32-c|k[m>>2];k[m>>2]=e;if((c|0)<2)e=c;else break}}else{e=k[m>>2]|0;c=f}k[m>>2]=e<<2;k[p>>2]=c+-2;f=(e>>>30)+3|0}else{if((f|0)<6){e=f;while(1){c=k[h>>2]|0;if((c|0)==(k[j>>2]|0))f=0;else{k[h>>2]=c+1;f=l[c>>0]|0}c=e+8|0;k[p>>2]=c;if((c|0)>=33){k[B>>2]=1154;k[B+4>>2]=3199;k[B+8>>2]=1650;Ac(L,1100,B)|0;zc(L,C)|0;c=k[p>>2]|0}e=f<<32-c|k[m>>2];k[m>>2]=e;if((c|0)<6)e=c;else break}}else{e=k[m>>2]|0;c=f}k[m>>2]=e<<6;k[p>>2]=c+-6;f=(e>>>26)+7|0}if((d|0)==0|f>>>0>g>>>0){c=0;break a}c=d+-1|0;if((k[s>>2]|0)>>>0<=c>>>0){k[D>>2]=1154;k[D+4>>2]=903;k[D+8>>2]=1781;Ac(L,1100,D)|0;zc(L,E)|0}e=i[(k[q>>2]|0)+c>>0]|0;if(!(e<<24>>24)){c=0;break a}c=f+d|0;if(d>>>0>=c>>>0){c=d;break c}do{if((k[s>>2]|0)>>>0<=d>>>0){k[F>>2]=1154;k[F+4>>2]=903;k[F+8>>2]=1781;Ac(L,1100,F)|0;zc(L,G)|0}i[(k[q>>2]|0)+d>>0]=e;d=d+1|0}while((d|0)!=(c|0))}}while(0);if(J>>>0>c>>>0)d=c;else break}if((K|0)==90){k[H>>2]=1154;k[H+4>>2]=3140;k[H+8>>2]=1632;Ac(L,1100,H)|0;zc(L,I)|0;c=0;break}if((J|0)==(c|0))c=tb(b)|0;else c=0}else c=0}else{i[M+16>>0]=1;c=0}while(0);rb(M);b=c;r=N;return b|0}function vb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;m=r;r=r+544|0;h=m+16|0;g=m;f=m+24|0;if(!b){j=0;r=m;return j|0}if(b>>>0<=16){j=xb(a,b)|0;r=m;return j|0}i=xb(a,b+-16|0)|0;j=a+20|0;b=k[j>>2]|0;if((b|0)<16){d=a+4|0;e=a+8|0;c=a+16|0;do{a=k[d>>2]|0;if((a|0)==(k[e>>2]|0))a=0;else{k[d>>2]=a+1;a=l[a>>0]|0}b=b+8|0;k[j>>2]=b;if((b|0)>=33){k[g>>2]=1154;k[g+4>>2]=3199;k[g+8>>2]=1650;Ac(f,1100,g)|0;zc(f,h)|0;b=k[j>>2]|0}a=a<<32-b|k[c>>2];k[c>>2]=a}while((b|0)<16)}else{a=a+16|0;c=a;a=k[a>>2]|0}k[c>>2]=a<<16;k[j>>2]=b+-16;j=a>>>16|i<<16;r=m;return j|0}function wb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+608|0;t=x+88|0;s=x+72|0;p=x+64|0;o=x+48|0;n=x+40|0;q=x+24|0;j=x+16|0;i=x;v=x+96|0;u=k[b+20>>2]|0;w=a+20|0;h=k[w>>2]|0;do if((h|0)<24){g=a+4|0;d=k[g>>2]|0;e=k[a+8>>2]|0;c=d>>>0>>0;if((h|0)>=16){if(c){k[g>>2]=d+1;c=l[d>>0]|0}else c=0;k[w>>2]=h+8;g=a+16|0;f=c<<24-h|k[g>>2];k[g>>2]=f;break}if(c){f=(l[d>>0]|0)<<8;c=d+1|0}else{f=0;c=d}if(c>>>0>>0){d=l[c>>0]|0;c=c+1|0}else d=0;k[g>>2]=c;k[w>>2]=h+16;g=a+16|0;f=(d|f)<<16-h|k[g>>2];k[g>>2]=f}else{f=a+16|0;g=f;f=k[f>>2]|0}while(0);e=(f>>>16)+1|0;do if(e>>>0<=(k[u+16>>2]|0)>>>0){d=k[(k[u+168>>2]|0)+(f>>>(32-(k[u+8>>2]|0)|0)<<2)>>2]|0;if((d|0)==-1){k[i>>2]=1154;k[i+4>>2]=3244;k[i+8>>2]=1677;Ac(v,1100,i)|0;zc(v,j)|0}c=d&65535;d=d>>>16;if((k[b+8>>2]|0)>>>0<=c>>>0){k[q>>2]=1154;k[q+4>>2]=902;k[q+8>>2]=1781;Ac(v,1100,q)|0;zc(v,n)|0}if((l[(k[b+4>>2]|0)+c>>0]|0|0)!=(d|0)){k[o>>2]=1154;k[o+4>>2]=3248;k[o+8>>2]=1694;Ac(v,1100,o)|0;zc(v,p)|0}}else{d=k[u+20>>2]|0;while(1){c=d+-1|0;if(e>>>0>(k[u+28+(c<<2)>>2]|0)>>>0)d=d+1|0;else break}c=(f>>>(32-d|0))+(k[u+96+(c<<2)>>2]|0)|0;if(c>>>0<(k[b>>2]|0)>>>0){c=m[(k[u+176>>2]|0)+(c<<1)>>1]|0;break}k[s>>2]=1154;k[s+4>>2]=3266;k[s+8>>2]=1632;Ac(v,1100,s)|0;zc(v,t)|0;w=0;r=x;return w|0}while(0);k[g>>2]=k[g>>2]<>2]=(k[w>>2]|0)-d;w=c;r=x;return w|0}function xb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;m=r;r=r+560|0;h=m+40|0;i=m+24|0;c=m;g=m+48|0;if(b>>>0>=33){k[c>>2]=1154;k[c+4>>2]=3190;k[c+8>>2]=1634;Ac(g,1100,c)|0;zc(g,m+16|0)|0}j=a+20|0;c=k[j>>2]|0;if((c|0)>=(b|0)){f=a+16|0;g=f;f=k[f>>2]|0;h=c;i=32-b|0;i=f>>>i;f=f<>2]=f;b=h-b|0;k[j>>2]=b;r=m;return i|0}e=a+4|0;f=a+8|0;d=a+16|0;do{a=k[e>>2]|0;if((a|0)==(k[f>>2]|0))a=0;else{k[e>>2]=a+1;a=l[a>>0]|0}c=c+8|0;k[j>>2]=c;if((c|0)>=33){k[i>>2]=1154;k[i+4>>2]=3199;k[i+8>>2]=1650;Ac(g,1100,i)|0;zc(g,h)|0;c=k[j>>2]|0}a=a<<32-c|k[d>>2];k[d>>2]=a}while((c|0)<(b|0));i=32-b|0;i=a>>>i;h=a<>2]=h;b=c-b|0;k[j>>2]=b;r=m;return i|0}function yb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+544|0;p=s+16|0;o=s;n=s+24|0;if((a|0)==0|b>>>0<62){q=0;r=s;return q|0}m=mb(300,0)|0;if(!m){q=0;r=s;return q|0}k[m>>2]=519686845;c=m+4|0;k[c>>2]=0;d=m+8|0;k[d>>2]=0;j=m+88|0;e=m+136|0;f=m+160|0;g=j;h=g+44|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(h|0));i[j+44>>0]=0;t=m+184|0;g=m+208|0;h=m+232|0;u=m+252|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;i[u+12>>0]=0;u=m+268|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;i[u+12>>0]=0;u=m+284|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;i[u+12>>0]=0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;i[e+20>>0]=0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[f+16>>2]=0;i[f+20>>0]=0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[t+16>>2]=0;i[t+20>>0]=0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;i[g+20>>0]=0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;i[h+16>>0]=0;do if(((b>>>0>=74?((l[a>>0]|0)<<8|(l[a+1>>0]|0)|0)==18552:0)?((l[a+2>>0]|0)<<8|(l[a+3>>0]|0))>>>0>=74:0)?((l[a+7>>0]|0)<<16|(l[a+6>>0]|0)<<24|(l[a+8>>0]|0)<<8|(l[a+9>>0]|0))>>>0<=b>>>0:0){k[j>>2]=a;k[c>>2]=a;k[d>>2]=b;if(Hb(m)|0){c=k[j>>2]|0;if((l[c+39>>0]|0)<<8|(l[c+40>>0]|0)){if(!(Ib(m)|0))break;if(!(Jb(m)|0))break;c=k[j>>2]|0}if(!((l[c+55>>0]|0)<<8|(l[c+56>>0]|0))){u=m;r=s;return u|0}if(Kb(m)|0?Lb(m)|0:0){u=m;r=s;return u|0}}}else q=7;while(0);if((q|0)==7)k[j>>2]=0;Qb(m);if(!(m&7)){$a[k[104>>2]&1](m,0,0,1,k[27]|0)|0;u=0;r=s;return u|0}else{k[o>>2]=1154;k[o+4>>2]=2499;k[o+8>>2]=1516;Ac(n,1100,o)|0;zc(n,p)|0;u=0;r=s;return u|0}return 0}function zb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,m=0;m=r;r=r+544|0;j=m;i=m+24|0;f=k[a+88>>2]|0;h=(l[f+70+(e<<2)+1>>0]|0)<<16|(l[f+70+(e<<2)>>0]|0)<<24|(l[f+70+(e<<2)+2>>0]|0)<<8|(l[f+70+(e<<2)+3>>0]|0);g=e+1|0;if(g>>>0<(l[f+16>>0]|0)>>>0)f=(l[f+70+(g<<2)+1>>0]|0)<<16|(l[f+70+(g<<2)>>0]|0)<<24|(l[f+70+(g<<2)+2>>0]|0)<<8|(l[f+70+(g<<2)+3>>0]|0);else f=k[a+8>>2]|0;if(f>>>0>h>>>0){i=a+4|0;i=k[i>>2]|0;i=i+h|0;j=f-h|0;j=Ab(a,i,j,b,c,d,e)|0;r=m;return j|0}k[j>>2]=1154;k[j+4>>2]=3704;k[j+8>>2]=1792;Ac(i,1100,j)|0;zc(i,m+16|0)|0;i=a+4|0;i=k[i>>2]|0;i=i+h|0;j=f-h|0;j=Ab(a,i,j,b,c,d,e)|0;r=m;return j|0}function Ab(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,m=0,n=0;n=k[a+88>>2]|0;j=((l[n+12>>0]|0)<<8|(l[n+13>>0]|0))>>>g;m=((l[n+14>>0]|0)<<8|(l[n+15>>0]|0))>>>g;j=j>>>0>1?(j+3|0)>>>2:1;m=m>>>0>1?(m+3|0)>>>2:1;n=n+18|0;g=i[n>>0]|0;g=ha(g<<24>>24==0|g<<24>>24==9?8:16,j)|0;if(f)if((f&3|0)==0&g>>>0<=f>>>0)g=f;else{a=0;return a|0}if((ha(g,m)|0)>>>0>e>>>0){a=0;return a|0}f=(j+1|0)>>>1;h=(m+1|0)>>>1;if(!c){a=0;return a|0}k[a+92>>2]=b;k[a+96>>2]=b;k[a+104>>2]=c;k[a+100>>2]=b+c;k[a+108>>2]=0;k[a+112>>2]=0;switch(l[n>>0]|0|0){case 0:{Mb(a,d,e,g,j,m,f,h)|0;a=1;return a|0}case 4:case 6:case 5:case 3:case 2:{Nb(a,d,e,g,j,m,f,h)|0;a=1;return a|0}case 9:{Ob(a,d,e,g,j,m,f,h)|0;a=1;return a|0}case 8:case 7:{Pb(a,d,e,g,j,m,f,h)|0;a=1;return a|0}default:{a=0;return a|0}}return 0}function Bb(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+48|0;c=d;k[c>>2]=40;pb(a,b,c)|0;r=d;return k[c+4>>2]|0}function Cb(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+48|0;c=d;k[c>>2]=40;pb(a,b,c)|0;r=d;return k[c+8>>2]|0}function Db(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+48|0;c=d;k[c>>2]=40;pb(a,b,c)|0;r=d;return k[c+12>>2]|0}function Eb(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+48|0;c=d;k[c>>2]=40;pb(a,b,c)|0;r=d;return k[c+32>>2]|0}function Fb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=r;r=r+576|0;g=i+56|0;f=i+40|0;e=i+64|0;j=i;k[j>>2]=40;pb(a,b,j)|0;d=(((k[j+4>>2]|0)>>>c)+3|0)>>>2;b=(((k[j+8>>2]|0)>>>c)+3|0)>>>2;c=j+32|0;a=k[c+4>>2]|0;do switch(k[c>>2]|0){case 0:{if(!a)a=8;else h=13;break}case 1:{if(!a)h=12;else h=13;break}case 2:{if(!a)h=12;else h=13;break}case 3:{if(!a)h=12;else h=13;break}case 4:{if(!a)h=12;else h=13;break}case 5:{if(!a)h=12;else h=13;break}case 6:{if(!a)h=12;else h=13;break}case 7:{if(!a)h=12;else h=13;break}case 8:{if(!a)h=12;else h=13;break}case 9:{if(!a)a=8;else h=13;break}default:h=13}while(0);if((h|0)==12)a=16;else if((h|0)==13){k[f>>2]=1154;k[f+4>>2]=2663;k[f+8>>2]=1535;Ac(e,1100,f)|0;zc(e,g)|0;a=0}j=ha(ha(b,d)|0,a)|0;r=i;return j|0}function Gb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=r;r=r+608|0;n=p+80|0;o=p+64|0;h=p+56|0;g=p+40|0;l=p+88|0;q=p;m=p+84|0;k[q>>2]=40;pb(a,b,q)|0;i=(((k[q+4>>2]|0)>>>e)+3|0)>>>2;q=q+32|0;f=k[q+4>>2]|0;do switch(k[q>>2]|0){case 0:{if(!f)f=8;else j=13;break}case 1:{if(!f)j=12;else j=13;break}case 2:{if(!f)j=12;else j=13;break}case 3:{if(!f)j=12;else j=13;break}case 4:{if(!f)j=12;else j=13;break}case 5:{if(!f)j=12;else j=13;break}case 6:{if(!f)j=12;else j=13;break}case 7:{if(!f)j=12;else j=13;break}case 8:{if(!f)j=12;else j=13;break}case 9:{if(!f)f=8;else j=13;break}default:j=13}while(0);if((j|0)==12)f=16;else if((j|0)==13){k[g>>2]=1154;k[g+4>>2]=2663;k[g+8>>2]=1535;Ac(l,1100,g)|0;zc(l,h)|0;f=0}h=ha(f,i)|0;g=yb(a,b)|0;k[m>>2]=c;f=(g|0)==0;if(!(e>>>0>15|(d>>>0<8|f))?(k[g>>2]|0)==519686845:0)zb(g,m,d,h,e)|0;if(f){r=p;return}if((k[g>>2]|0)!=519686845){r=p;return}Qb(g);if(!(g&7)){$a[k[104>>2]&1](g,0,0,1,k[27]|0)|0;r=p;return}else{k[o>>2]=1154;k[o+4>>2]=2499;k[o+8>>2]=1516;Ac(l,1100,o)|0;zc(l,n)|0;r=p;return}}function Hb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=a+92|0;d=k[a+4>>2]|0;f=a+88|0;e=k[f>>2]|0;b=(l[e+68>>0]|0)<<8|(l[e+67>>0]|0)<<16|(l[e+69>>0]|0);c=d+b|0;e=(l[e+65>>0]|0)<<8|(l[e+66>>0]|0);if(!e){a=0;return a|0}k[g>>2]=c;k[a+96>>2]=c;k[a+104>>2]=e;k[a+100>>2]=d+(e+b);k[a+108>>2]=0;k[a+112>>2]=0;if(!(ub(g,a+116|0)|0)){a=0;return a|0}b=k[f>>2]|0;do if(!((l[b+39>>0]|0)<<8|(l[b+40>>0]|0))){if(!((l[b+55>>0]|0)<<8|(l[b+56>>0]|0))){a=0;return a|0}}else{if(!(ub(g,a+140|0)|0)){a=0;return a|0}if(ub(g,a+188|0)|0){b=k[f>>2]|0;break}else{a=0;return a|0}}while(0);if((l[b+55>>0]|0)<<8|(l[b+56>>0]|0)){if(!(ub(g,a+164|0)|0)){a=0;return a|0}if(!(ub(g,a+212|0)|0)){a=0;return a|0}}a=1;return a|0}function Ib(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+592|0;j=s+16|0;h=s;g=s+72|0;q=s+24|0;d=a+88|0;b=k[d>>2]|0;p=(l[b+39>>0]|0)<<8|(l[b+40>>0]|0);n=a+236|0;f=a+240|0;c=k[f>>2]|0;if((c|0)!=(p|0)){if(c>>>0<=p>>>0){do if((k[a+244>>2]|0)>>>0

>>0){if(kb(n,p,(c+1|0)==(p|0),4,0)|0){b=k[f>>2]|0;break}i[a+248>>0]=1;q=0;r=s;return q|0}else b=c;while(0);ad((k[n>>2]|0)+(b<<2)|0,0,p-b<<2|0)|0;b=k[d>>2]|0}k[f>>2]=p}m=a+92|0;c=k[a+4>>2]|0;d=(l[b+34>>0]|0)<<8|(l[b+33>>0]|0)<<16|(l[b+35>>0]|0);e=c+d|0;b=(l[b+37>>0]|0)<<8|(l[b+36>>0]|0)<<16|(l[b+38>>0]|0);if(!b){q=0;r=s;return q|0}k[m>>2]=e;k[a+96>>2]=e;k[a+104>>2]=b;k[a+100>>2]=c+(b+d);k[a+108>>2]=0;k[a+112>>2]=0;k[q+20>>2]=0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;i[q+16>>0]=0;a=q+24|0;k[q+44>>2]=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;i[a+16>>0]=0;if(ub(m,q)|0?(o=q+24|0,ub(m,o)|0):0){if(!(k[f>>2]|0)){k[h>>2]=1154;k[h+4>>2]=903;k[h+8>>2]=1781;Ac(g,1100,h)|0;zc(g,j)|0}if(!p)b=1;else{d=0;e=0;f=0;b=0;g=0;a=0;h=0;c=k[n>>2]|0;while(1){d=(wb(m,q)|0)+d&31;e=(wb(m,o)|0)+e&63;f=(wb(m,q)|0)+f&31;b=(wb(m,q)|0)+b|0;g=(wb(m,o)|0)+g&63;a=(wb(m,q)|0)+a&31;k[c>>2]=e<<5|d<<11|f|b<<27|g<<21|a<<16;h=h+1|0;if((h|0)==(p|0)){b=1;break}else{b=b&31;c=c+4|0}}}}else b=0;rb(q+24|0);rb(q);q=b;r=s;return q|0}function Jb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;D=r;r=r+1024|0;h=D+16|0;g=D;f=D+504|0;C=D+480|0;A=D+284|0;B=D+88|0;z=D+24|0;e=k[a+88>>2]|0;y=(l[e+47>>0]|0)<<8|(l[e+48>>0]|0);x=a+92|0;b=k[a+4>>2]|0;c=(l[e+42>>0]|0)<<8|(l[e+41>>0]|0)<<16|(l[e+43>>0]|0);d=b+c|0;e=(l[e+45>>0]|0)<<8|(l[e+44>>0]|0)<<16|(l[e+46>>0]|0);if(!e){C=0;r=D;return C|0}k[x>>2]=d;k[a+96>>2]=d;k[a+104>>2]=e;k[a+100>>2]=b+(e+c);k[a+108>>2]=0;k[a+112>>2]=0;k[C+20>>2]=0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;i[C+16>>0]=0;if(ub(x,C)|0){c=0;d=-3;e=-3;while(1){k[A+(c<<2)>>2]=d;k[B+(c<<2)>>2]=e;b=(d|0)>2;c=c+1|0;if((c|0)==49)break;else{d=b?-3:d+1|0;e=(b&1)+e|0}}b=z;c=b+64|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));w=a+252|0;c=a+256|0;b=k[c>>2]|0;a:do if((b|0)==(y|0))j=13;else{if(b>>>0<=y>>>0){do if((k[a+260>>2]|0)>>>0>>0)if(kb(w,y,(b+1|0)==(y|0),4,0)|0){b=k[c>>2]|0;break}else{i[a+264>>0]=1;b=0;break a}while(0);ad((k[w>>2]|0)+(b<<2)|0,0,y-b<<2|0)|0}k[c>>2]=y;j=13}while(0);do if((j|0)==13){if(!y){k[g>>2]=1154;k[g+4>>2]=903;k[g+8>>2]=1781;Ac(f,1100,g)|0;zc(f,h)|0;b=1;break}d=z+4|0;e=z+8|0;a=z+12|0;f=z+16|0;g=z+20|0;h=z+24|0;j=z+28|0;m=z+32|0;n=z+36|0;o=z+40|0;p=z+44|0;q=z+48|0;s=z+52|0;t=z+56|0;u=z+60|0;v=0;c=k[w>>2]|0;while(1){b=0;do{E=wb(x,C)|0;w=b<<1;F=z+(w<<2)|0;k[F>>2]=(k[F>>2]|0)+(k[A+(E<<2)>>2]|0)&3;w=z+((w|1)<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[B+(E<<2)>>2]|0)&3;b=b+1|0}while((b|0)!=8);k[c>>2]=(l[1725+(k[d>>2]|0)>>0]|0)<<2|(l[1725+(k[z>>2]|0)>>0]|0)|(l[1725+(k[e>>2]|0)>>0]|0)<<4|(l[1725+(k[a>>2]|0)>>0]|0)<<6|(l[1725+(k[f>>2]|0)>>0]|0)<<8|(l[1725+(k[g>>2]|0)>>0]|0)<<10|(l[1725+(k[h>>2]|0)>>0]|0)<<12|(l[1725+(k[j>>2]|0)>>0]|0)<<14|(l[1725+(k[m>>2]|0)>>0]|0)<<16|(l[1725+(k[n>>2]|0)>>0]|0)<<18|(l[1725+(k[o>>2]|0)>>0]|0)<<20|(l[1725+(k[p>>2]|0)>>0]|0)<<22|(l[1725+(k[q>>2]|0)>>0]|0)<<24|(l[1725+(k[s>>2]|0)>>0]|0)<<26|(l[1725+(k[t>>2]|0)>>0]|0)<<28|(l[1725+(k[u>>2]|0)>>0]|0)<<30;v=v+1|0;if((v|0)==(y|0)){b=1;break}else c=c+4|0}}while(0)}else b=0;rb(C);F=b;r=D;return F|0}function Kb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+560|0;m=q+16|0;h=q;g=q+48|0;p=q+24|0;e=k[a+88>>2]|0;o=(l[e+55>>0]|0)<<8|(l[e+56>>0]|0);n=a+92|0;b=k[a+4>>2]|0;c=(l[e+50>>0]|0)<<8|(l[e+49>>0]|0)<<16|(l[e+51>>0]|0);d=b+c|0;e=(l[e+53>>0]|0)<<8|(l[e+52>>0]|0)<<16|(l[e+54>>0]|0);if(!e){p=0;r=q;return p|0}k[n>>2]=d;k[a+96>>2]=d;k[a+104>>2]=e;k[a+100>>2]=b+(e+c);k[a+108>>2]=0;k[a+112>>2]=0;k[p+20>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;i[p+16>>0]=0;a:do if(ub(n,p)|0){f=a+268|0;c=a+272|0;b=k[c>>2]|0;if((b|0)!=(o|0)){if(b>>>0<=o>>>0){do if((k[a+276>>2]|0)>>>0>>0)if(kb(f,o,(b+1|0)==(o|0),2,0)|0){b=k[c>>2]|0;break}else{i[a+280>>0]=1;b=0;break a}while(0);ad((k[f>>2]|0)+(b<<1)|0,0,o-b<<1|0)|0}k[c>>2]=o}if(!o){k[h>>2]=1154;k[h+4>>2]=903;k[h+8>>2]=1781;Ac(g,1100,h)|0;zc(g,m)|0;b=1;break}c=0;d=0;e=0;b=k[f>>2]|0;while(1){m=wb(n,p)|0;c=m+c&255;d=(wb(n,p)|0)+d&255;j[b>>1]=d<<8|c;e=e+1|0;if((e|0)==(o|0)){b=1;break}else b=b+2|0}}else b=0;while(0);rb(p);p=b;r=q;return p|0}function Lb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;E=r;r=r+2432|0;h=E+16|0;g=E;f=E+1912|0;D=E+1888|0;B=E+988|0;C=E+88|0;A=E+24|0;e=k[a+88>>2]|0;z=(l[e+63>>0]|0)<<8|(l[e+64>>0]|0);y=a+92|0;b=k[a+4>>2]|0;c=(l[e+58>>0]|0)<<8|(l[e+57>>0]|0)<<16|(l[e+59>>0]|0);d=b+c|0;e=(l[e+61>>0]|0)<<8|(l[e+60>>0]|0)<<16|(l[e+62>>0]|0);if(!e){D=0;r=E;return D|0}k[y>>2]=d;k[a+96>>2]=d;k[a+104>>2]=e;k[a+100>>2]=b+(e+c);k[a+108>>2]=0;k[a+112>>2]=0;k[D+20>>2]=0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;i[D+16>>0]=0;if(ub(y,D)|0){c=0;d=-7;e=-7;while(1){k[B+(c<<2)>>2]=d;k[C+(c<<2)>>2]=e;b=(d|0)>6;c=c+1|0;if((c|0)==225)break;else{d=b?-7:d+1|0;e=(b&1)+e|0}}b=A;c=b+64|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));x=a+284|0;c=z*3|0;d=a+288|0;b=k[d>>2]|0;a:do if((b|0)==(c|0))m=13;else{if(b>>>0<=c>>>0){do if((k[a+292>>2]|0)>>>0>>0)if(kb(x,c,(b+1|0)==(c|0),2,0)|0){b=k[d>>2]|0;break}else{i[a+296>>0]=1;b=0;break a}while(0);ad((k[x>>2]|0)+(b<<1)|0,0,c-b<<1|0)|0}k[d>>2]=c;m=13}while(0);do if((m|0)==13){if(!z){k[g>>2]=1154;k[g+4>>2]=903;k[g+8>>2]=1781;Ac(f,1100,g)|0;zc(f,h)|0;b=1;break}d=A+4|0;e=A+8|0;a=A+12|0;f=A+16|0;g=A+20|0;h=A+24|0;m=A+28|0;n=A+32|0;o=A+36|0;p=A+40|0;q=A+44|0;s=A+48|0;t=A+52|0;u=A+56|0;v=A+60|0;w=0;c=k[x>>2]|0;while(1){b=0;do{F=wb(y,D)|0;x=b<<1;G=A+(x<<2)|0;k[G>>2]=(k[G>>2]|0)+(k[B+(F<<2)>>2]|0)&7;x=A+((x|1)<<2)|0;k[x>>2]=(k[x>>2]|0)+(k[C+(F<<2)>>2]|0)&7;b=b+1|0}while((b|0)!=8);F=l[1729+(k[g>>2]|0)>>0]|0;j[c>>1]=(l[1729+(k[d>>2]|0)>>0]|0)<<3|(l[1729+(k[A>>2]|0)>>0]|0)|(l[1729+(k[e>>2]|0)>>0]|0)<<6|(l[1729+(k[a>>2]|0)>>0]|0)<<9|(l[1729+(k[f>>2]|0)>>0]|0)<<12|F<<15;G=l[1729+(k[p>>2]|0)>>0]|0;j[c+2>>1]=(l[1729+(k[h>>2]|0)>>0]|0)<<2|F>>>1|(l[1729+(k[m>>2]|0)>>0]|0)<<5|(l[1729+(k[n>>2]|0)>>0]|0)<<8|(l[1729+(k[o>>2]|0)>>0]|0)<<11|G<<14;j[c+4>>1]=(l[1729+(k[q>>2]|0)>>0]|0)<<1|G>>>2|(l[1729+(k[s>>2]|0)>>0]|0)<<4|(l[1729+(k[t>>2]|0)>>0]|0)<<7|(l[1729+(k[u>>2]|0)>>0]|0)<<10|(l[1729+(k[v>>2]|0)>>0]|0)<<13;w=w+1|0;if((w|0)==(z|0)){b=1;break}else c=c+6|0}}while(0)}else b=0;rb(D);G=b;r=E;return G|0}function Mb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;pa=r;r=r+720|0;oa=pa+184|0;ma=pa+168|0;la=pa+160|0;ka=pa+144|0;ja=pa+136|0;ia=pa+120|0;ga=pa+112|0;ea=pa+96|0;da=pa+88|0;ca=pa+72|0;ba=pa+64|0;aa=pa+48|0;$=pa+40|0;na=pa+24|0;fa=pa+16|0;_=pa;Y=pa+208|0;Z=pa+192|0;R=a+240|0;S=k[R>>2]|0;V=a+256|0;W=k[V>>2]|0;c=i[(k[a+88>>2]|0)+17>>0]|0;X=d>>>2;if(!(c<<24>>24)){r=pa;return 1}T=(h|0)==0;U=h+-1|0;K=(f&1|0)!=0;L=d<<1;M=a+92|0;N=a+116|0;O=a+140|0;P=a+236|0;Q=g+-1|0;J=(e&1|0)!=0;I=a+188|0;D=a+252|0;E=X+1|0;F=X+2|0;G=X+3|0;H=Q<<4;B=c&255;c=0;f=0;e=1;C=0;do{if(!T){z=k[b+(C<<2)>>2]|0;A=0;while(1){w=A&1;j=(w|0)==0;v=(w<<5^32)+-16|0;w=(w<<1^2)+-1|0;y=j?g:-1;m=j?0:Q;a=(A|0)==(U|0);x=K&a;if((m|0)!=(y|0)){u=K&a^1;t=j?z:z+H|0;while(1){if((e|0)==1)e=wb(M,N)|0|512;s=e&7;e=e>>>3;j=l[1823+s>>0]|0;a=0;do{p=(wb(M,O)|0)+f|0;q=p-S|0;f=q>>31;f=f&p|q&~f;if((k[R>>2]|0)>>>0<=f>>>0){k[_>>2]=1154;k[_+4>>2]=903;k[_+8>>2]=1781;Ac(Y,1100,_)|0;zc(Y,fa)|0}k[Z+(a<<2)>>2]=k[(k[P>>2]|0)+(f<<2)>>2];a=a+1|0}while(a>>>0>>0);q=J&(m|0)==(Q|0);if(x|q){p=0;do{n=ha(p,d)|0;a=t+n|0;j=(p|0)==0|u;o=p<<1;ra=(wb(M,I)|0)+c|0;qa=ra-W|0;c=qa>>31;c=c&ra|qa&~c;do if(q){if(!j){qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;break}k[a>>2]=k[Z+((l[1831+(s<<2)+o>>0]|0)<<2)>>2];if((k[V>>2]|0)>>>0<=c>>>0){k[ka>>2]=1154;k[ka+4>>2]=903;k[ka+8>>2]=1781;Ac(Y,1100,ka)|0;zc(Y,la)|0}k[t+(n+4)>>2]=k[(k[D>>2]|0)+(c<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c}else{if(!j){qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;break}k[a>>2]=k[Z+((l[1831+(s<<2)+o>>0]|0)<<2)>>2];if((k[V>>2]|0)>>>0<=c>>>0){k[ia>>2]=1154;k[ia+4>>2]=903;k[ia+8>>2]=1781;Ac(Y,1100,ia)|0;zc(Y,ja)|0}k[t+(n+4)>>2]=k[(k[D>>2]|0)+(c<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;k[t+(n+8)>>2]=k[Z+((l[(o|1)+(1831+(s<<2))>>0]|0)<<2)>>2];if((k[V>>2]|0)>>>0<=c>>>0){k[ma>>2]=1154;k[ma+4>>2]=903;k[ma+8>>2]=1781;Ac(Y,1100,ma)|0;zc(Y,oa)|0}k[t+(n+12)>>2]=k[(k[D>>2]|0)+(c<<2)>>2]}while(0);p=p+1|0}while((p|0)!=2)}else{k[t>>2]=k[Z+((l[1831+(s<<2)>>0]|0)<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;if((k[V>>2]|0)>>>0<=c>>>0){k[na>>2]=1154;k[na+4>>2]=903;k[na+8>>2]=1781;Ac(Y,1100,na)|0;zc(Y,$)|0}k[t+4>>2]=k[(k[D>>2]|0)+(c<<2)>>2];k[t+8>>2]=k[Z+((l[1831+(s<<2)+1>>0]|0)<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;if((k[V>>2]|0)>>>0<=c>>>0){k[aa>>2]=1154;k[aa+4>>2]=903;k[aa+8>>2]=1781;Ac(Y,1100,aa)|0;zc(Y,ba)|0}k[t+12>>2]=k[(k[D>>2]|0)+(c<<2)>>2];k[t+(X<<2)>>2]=k[Z+((l[1831+(s<<2)+2>>0]|0)<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;if((k[V>>2]|0)>>>0<=c>>>0){k[ca>>2]=1154;k[ca+4>>2]=903;k[ca+8>>2]=1781;Ac(Y,1100,ca)|0;zc(Y,da)|0}k[t+(E<<2)>>2]=k[(k[D>>2]|0)+(c<<2)>>2];k[t+(F<<2)>>2]=k[Z+((l[1831+(s<<2)+3>>0]|0)<<2)>>2];qa=(wb(M,I)|0)+c|0;ra=qa-W|0;c=ra>>31;c=c&qa|ra&~c;if((k[V>>2]|0)>>>0<=c>>>0){k[ea>>2]=1154;k[ea+4>>2]=903;k[ea+8>>2]=1781;Ac(Y,1100,ea)|0;zc(Y,ga)|0}k[t+(G<<2)>>2]=k[(k[D>>2]|0)+(c<<2)>>2]}m=m+w|0;if((m|0)==(y|0))break;else t=t+v|0}}A=A+1|0;if((A|0)==(h|0))break;else z=z+L|0}}C=C+1|0}while((C|0)!=(B|0));r=pa;return 1}function Nb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;qa=r;r=r+640|0;na=qa+88|0;ma=qa+72|0;la=qa+64|0;ka=qa+48|0;ja=qa+40|0;pa=qa+24|0;oa=qa+16|0;ia=qa;ga=qa+128|0;ha=qa+112|0;fa=qa+96|0;S=a+240|0;T=k[S>>2]|0;W=a+256|0;ca=k[W>>2]|0;da=a+272|0;ea=k[da>>2]|0;c=k[a+88>>2]|0;U=(l[c+63>>0]|0)<<8|(l[c+64>>0]|0);c=i[c+17>>0]|0;if(!(c<<24>>24)){r=qa;return 1}V=(h|0)==0;X=h+-1|0;Y=d<<1;Z=a+92|0;_=a+116|0;$=g+-1|0;aa=a+212|0;ba=a+188|0;R=(e&1|0)==0;Q=(f&1|0)==0;K=a+288|0;L=a+284|0;M=a+252|0;N=a+140|0;O=a+236|0;P=a+164|0;I=a+268|0;J=$<<5;G=c&255;c=0;e=0;f=0;a=0;j=1;H=0;do{if(!V){E=k[b+(H<<2)>>2]|0;F=0;while(1){C=F&1;n=(C|0)==0;B=(C<<6^64)+-32|0;C=(C<<1^2)+-1|0;D=n?g:-1;o=n?0:$;if((o|0)!=(D|0)){A=Q|(F|0)!=(X|0);z=n?E:E+J|0;while(1){if((j|0)==1)j=wb(Z,_)|0|512;y=j&7;j=j>>>3;p=l[1823+y>>0]|0;n=0;do{w=(wb(Z,P)|0)+e|0;x=w-ea|0;e=x>>31;e=e&w|x&~e;if((k[da>>2]|0)>>>0<=e>>>0){k[ia>>2]=1154;k[ia+4>>2]=903;k[ia+8>>2]=1781;Ac(ga,1100,ia)|0;zc(ga,oa)|0}k[fa+(n<<2)>>2]=m[(k[I>>2]|0)+(e<<1)>>1];n=n+1|0}while(n>>>0

>>0);n=0;do{w=(wb(Z,N)|0)+a|0;x=w-T|0;a=x>>31;a=a&w|x&~a;if((k[S>>2]|0)>>>0<=a>>>0){k[pa>>2]=1154;k[pa+4>>2]=903;k[pa+8>>2]=1781;Ac(ga,1100,pa)|0;zc(ga,ja)|0}k[ha+(n<<2)>>2]=k[(k[O>>2]|0)+(a<<2)>>2];n=n+1|0}while(n>>>0

>>0);x=R|(o|0)!=($|0);v=0;w=z;while(1){u=A|(v|0)==0;t=v<<1;q=0;s=w;while(1){p=(wb(Z,aa)|0)+c|0;n=p-U|0;c=n>>31;c=c&p|n&~c;n=(wb(Z,ba)|0)+f|0;p=n-ca|0;f=p>>31;f=f&n|p&~f;if((x|(q|0)==0)&u){n=l[q+t+(1831+(y<<2))>>0]|0;p=c*3|0;if((k[K>>2]|0)>>>0<=p>>>0){k[ka>>2]=1154;k[ka+4>>2]=903;k[ka+8>>2]=1781;Ac(ga,1100,ka)|0;zc(ga,la)|0}ra=k[L>>2]|0;k[s>>2]=(m[ra+(p<<1)>>1]|0)<<16|k[fa+(n<<2)>>2];k[s+4>>2]=(m[ra+(p+2<<1)>>1]|0)<<16|(m[ra+(p+1<<1)>>1]|0);k[s+8>>2]=k[ha+(n<<2)>>2];if((k[W>>2]|0)>>>0<=f>>>0){k[ma>>2]=1154;k[ma+4>>2]=903;k[ma+8>>2]=1781;Ac(ga,1100,ma)|0;zc(ga,na)|0}k[s+12>>2]=k[(k[M>>2]|0)+(f<<2)>>2]}q=q+1|0;if((q|0)==2)break;else s=s+16|0}v=v+1|0;if((v|0)==2)break;else w=w+d|0}o=o+C|0;if((o|0)==(D|0))break;else z=z+B|0}}F=F+1|0;if((F|0)==(h|0))break;else E=E+Y|0}}H=H+1|0}while((H|0)!=(G|0));r=qa;return 1}function Ob(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=r;r=r+608|0;$=ca+64|0;_=ca+48|0;Z=ca+40|0;ba=ca+24|0;aa=ca+16|0;Y=ca;X=ca+88|0;W=ca+72|0;M=a+272|0;N=k[M>>2]|0;c=k[a+88>>2]|0;O=(l[c+63>>0]|0)<<8|(l[c+64>>0]|0);c=i[c+17>>0]|0;if(!(c<<24>>24)){r=ca;return 1}P=(h|0)==0;Q=h+-1|0;R=d<<1;S=a+92|0;T=a+116|0;U=g+-1|0;V=a+212|0;L=(f&1|0)==0;I=a+288|0;J=a+284|0;K=a+164|0;G=a+268|0;H=U<<4;F=c&255;E=(e&1|0)!=0;c=0;f=0;a=1;D=0;do{if(!P){B=k[b+(D<<2)>>2]|0;C=0;while(1){z=C&1;e=(z|0)==0;y=(z<<5^32)+-16|0;z=(z<<1^2)+-1|0;A=e?g:-1;j=e?0:U;if((j|0)!=(A|0)){x=L|(C|0)!=(Q|0);w=e?B:B+H|0;while(1){if((a|0)==1)a=wb(S,T)|0|512;v=a&7;a=a>>>3;n=l[1823+v>>0]|0;e=0;do{t=(wb(S,K)|0)+f|0;u=t-N|0;f=u>>31;f=f&t|u&~f;if((k[M>>2]|0)>>>0<=f>>>0){k[Y>>2]=1154;k[Y+4>>2]=903;k[Y+8>>2]=1781;Ac(X,1100,Y)|0;zc(X,aa)|0}k[W+(e<<2)>>2]=m[(k[G>>2]|0)+(f<<1)>>1];e=e+1|0}while(e>>>0>>0);u=(j|0)==(U|0)&E;s=0;t=w;while(1){q=x|(s|0)==0;p=s<<1;e=(wb(S,V)|0)+c|0;o=e-O|0;n=o>>31;n=n&e|o&~n;if(q){c=l[1831+(v<<2)+p>>0]|0;e=n*3|0;if((k[I>>2]|0)>>>0<=e>>>0){k[ba>>2]=1154;k[ba+4>>2]=903;k[ba+8>>2]=1781;Ac(X,1100,ba)|0;zc(X,Z)|0}o=k[J>>2]|0;k[t>>2]=(m[o+(e<<1)>>1]|0)<<16|k[W+(c<<2)>>2];k[t+4>>2]=(m[o+(e+2<<1)>>1]|0)<<16|(m[o+(e+1<<1)>>1]|0)}o=t+8|0;e=(wb(S,V)|0)+n|0;n=e-O|0;c=n>>31;c=c&e|n&~c;if(!(u|q^1)){e=l[(p|1)+(1831+(v<<2))>>0]|0;n=c*3|0;if((k[I>>2]|0)>>>0<=n>>>0){k[_>>2]=1154;k[_+4>>2]=903;k[_+8>>2]=1781;Ac(X,1100,_)|0;zc(X,$)|0}q=k[J>>2]|0;k[o>>2]=(m[q+(n<<1)>>1]|0)<<16|k[W+(e<<2)>>2];k[t+12>>2]=(m[q+(n+2<<1)>>1]|0)<<16|(m[q+(n+1<<1)>>1]|0)}s=s+1|0;if((s|0)==2)break;else t=t+d|0}j=j+z|0;if((j|0)==(A|0))break;else w=w+y|0}}C=C+1|0;if((C|0)==(h|0))break;else B=B+R|0}}D=D+1|0}while((D|0)!=(F|0));r=ca;return 1}function Pb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=r;r=r+640|0;ia=la+88|0;ha=la+72|0;ga=la+64|0;fa=la+48|0;ea=la+40|0;ka=la+24|0;ja=la+16|0;da=la;ca=la+128|0;aa=la+112|0;ba=la+96|0;S=a+272|0;T=k[S>>2]|0;c=k[a+88>>2]|0;U=(l[c+63>>0]|0)<<8|(l[c+64>>0]|0);c=i[c+17>>0]|0;if(!(c<<24>>24)){r=la;return 1}V=(h|0)==0;W=h+-1|0;X=d<<1;Y=a+92|0;Z=a+116|0;_=g+-1|0;$=a+212|0;R=(e&1|0)==0;Q=(f&1|0)==0;N=a+288|0;O=a+284|0;P=a+164|0;L=a+268|0;M=_<<5;J=c&255;c=0;e=0;f=0;a=0;j=1;K=0;do{if(!V){H=k[b+(K<<2)>>2]|0;I=0;while(1){F=I&1;n=(F|0)==0;E=(F<<6^64)+-32|0;F=(F<<1^2)+-1|0;G=n?g:-1;o=n?0:_;if((o|0)!=(G|0)){D=Q|(I|0)!=(W|0);C=n?H:H+M|0;while(1){if((j|0)==1)j=wb(Y,Z)|0|512;B=j&7;j=j>>>3;p=l[1823+B>>0]|0;n=0;do{z=(wb(Y,P)|0)+a|0;A=z-T|0;a=A>>31;a=a&z|A&~a;if((k[S>>2]|0)>>>0<=a>>>0){k[da>>2]=1154;k[da+4>>2]=903;k[da+8>>2]=1781;Ac(ca,1100,da)|0;zc(ca,ja)|0}k[aa+(n<<2)>>2]=m[(k[L>>2]|0)+(a<<1)>>1];n=n+1|0}while(n>>>0

>>0);n=0;do{z=(wb(Y,P)|0)+e|0;A=z-T|0;e=A>>31;e=e&z|A&~e;if((k[S>>2]|0)>>>0<=e>>>0){k[ka>>2]=1154;k[ka+4>>2]=903;k[ka+8>>2]=1781;Ac(ca,1100,ka)|0;zc(ca,ea)|0}k[ba+(n<<2)>>2]=m[(k[L>>2]|0)+(e<<1)>>1];n=n+1|0}while(n>>>0

>>0);A=R|(o|0)!=(_|0);y=0;z=C;while(1){x=D|(y|0)==0;w=y<<1;u=0;v=z;while(1){t=(wb(Y,$)|0)+f|0;s=t-U|0;f=s>>31;f=f&t|s&~f;s=(wb(Y,$)|0)+c|0;t=s-U|0;c=t>>31;c=c&s|t&~c;if((A|(u|0)==0)&x){s=l[u+w+(1831+(B<<2))>>0]|0;t=f*3|0;n=k[N>>2]|0;if(n>>>0<=t>>>0){k[fa>>2]=1154;k[fa+4>>2]=903;k[fa+8>>2]=1781;Ac(ca,1100,fa)|0;zc(ca,ga)|0;n=k[N>>2]|0}p=k[O>>2]|0;q=c*3|0;if(n>>>0>q>>>0)n=p;else{k[ha>>2]=1154;k[ha+4>>2]=903;k[ha+8>>2]=1781;Ac(ca,1100,ha)|0;zc(ca,ia)|0;n=k[O>>2]|0}k[v>>2]=(m[p+(t<<1)>>1]|0)<<16|k[aa+(s<<2)>>2];k[v+4>>2]=(m[p+(t+2<<1)>>1]|0)<<16|(m[p+(t+1<<1)>>1]|0);k[v+8>>2]=(m[n+(q<<1)>>1]|0)<<16|k[ba+(s<<2)>>2];k[v+12>>2]=(m[n+(q+2<<1)>>1]|0)<<16|(m[n+(q+1<<1)>>1]|0)}u=u+1|0;if((u|0)==2)break;else v=v+16|0}y=y+1|0;if((y|0)==2)break;else z=z+d|0}o=o+F|0;if((o|0)==(G|0))break;else C=C+E|0}}I=I+1|0;if((I|0)==(h|0))break;else H=H+X|0}}K=K+1|0}while((K|0)!=(J|0));r=la;return 1}function Qb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+608|0;n=o+88|0;m=o+72|0;j=o+64|0;h=o+48|0;f=o+40|0;g=o+24|0;e=o+16|0;d=o;l=o+96|0;k[a>>2]=0;b=a+284|0;c=k[b>>2]|0;if(c){if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[d>>2]=1154;k[d+4>>2]=2499;k[d+8>>2]=1516;Ac(l,1100,d)|0;zc(l,e)|0}k[b>>2]=0;k[a+288>>2]=0;k[a+292>>2]=0}i[a+296>>0]=0;b=a+268|0;c=k[b>>2]|0;if(c){if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[g>>2]=1154;k[g+4>>2]=2499;k[g+8>>2]=1516;Ac(l,1100,g)|0;zc(l,f)|0}k[b>>2]=0;k[a+272>>2]=0;k[a+276>>2]=0}i[a+280>>0]=0;b=a+252|0;c=k[b>>2]|0;if(c){if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[h>>2]=1154;k[h+4>>2]=2499;k[h+8>>2]=1516;Ac(l,1100,h)|0;zc(l,j)|0}k[b>>2]=0;k[a+256>>2]=0;k[a+260>>2]=0}i[a+264>>0]=0;b=a+236|0;c=k[b>>2]|0;if(!c){n=a+248|0;i[n>>0]=0;n=a+212|0;rb(n);n=a+188|0;rb(n);n=a+164|0;rb(n);n=a+140|0;rb(n);n=a+116|0;rb(n);r=o;return}if(!(c&7))$a[k[104>>2]&1](c,0,0,1,k[27]|0)|0;else{k[m>>2]=1154;k[m+4>>2]=2499;k[m+8>>2]=1516;Ac(l,1100,m)|0;zc(l,n)|0}k[b>>2]=0;k[a+240>>2]=0;k[a+244>>2]=0;n=a+248|0;i[n>>0]=0;n=a+212|0;rb(n);n=a+188|0;rb(n);n=a+164|0;rb(n);n=a+140|0;rb(n);n=a+116|0;rb(n);r=o;return}function Rb(a,b){a=a|0;b=b|0;var c=0;c=r;r=r+16|0;k[c>>2]=b;b=k[63]|0;Bc(b,a,c)|0;xc(10,b)|0;Na()}function Sb(){var a=0,b=0;a=r;r=r+16|0;if(!(Ha(200,2)|0)){b=Fa(k[49]|0)|0;r=a;return b|0}else Rb(2090,a);return 0}function Tb(a){a=a|0;Vc(a);return}function Ub(a){a=a|0;var b=0;b=r;r=r+16|0;Za[a&3]();Rb(2139,b)}function Vb(){var a=0,b=0;a=Sb()|0;if(((a|0)!=0?(b=k[a>>2]|0,(b|0)!=0):0)?(a=b+48|0,(k[a>>2]&-256|0)==1126902528?(k[a+4>>2]|0)==1129074247:0):0)Ub(k[b+12>>2]|0);b=k[28]|0;k[28]=b+0;Ub(b)}function Wb(a){a=a|0;return}function Xb(a){a=a|0;return}function Yb(a){a=a|0;return}function Zb(a){a=a|0;return}function _b(a){a=a|0;Tb(a);return}function $b(a){a=a|0;Tb(a);return}function ac(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+64|0;f=g;if((a|0)!=(b|0))if((b|0)!=0?(e=ec(b,24,40,0)|0,(e|0)!=0):0){b=f;d=b+56|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(d|0));k[f>>2]=e;k[f+8>>2]=a;k[f+12>>2]=-1;k[f+48>>2]=1;ab[k[(k[e>>2]|0)+28>>2]&3](e,f,k[c>>2]|0,1);if((k[f+24>>2]|0)==1){k[c>>2]=k[f+16>>2];b=1}else b=0}else b=0;else b=1;r=g;return b|0}function bc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a=b+16|0;e=k[a>>2]|0;do if(e){if((e|0)!=(c|0)){d=b+36|0;k[d>>2]=(k[d>>2]|0)+1;k[b+24>>2]=2;i[b+54>>0]=1;break}a=b+24|0;if((k[a>>2]|0)==2)k[a>>2]=d}else{k[a>>2]=c;k[b+24>>2]=d;k[b+36>>2]=1}while(0);return}function cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))bc(0,b,c,d);return}function dc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))bc(0,b,c,d);else{a=k[a+8>>2]|0;ab[k[(k[a>>2]|0)+28>>2]&3](a,b,c,d)}return}function ec(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+64|0;p=q;o=k[a>>2]|0;n=a+(k[o+-8>>2]|0)|0;o=k[o+-4>>2]|0;k[p>>2]=c;k[p+4>>2]=a;k[p+8>>2]=b;k[p+12>>2]=d;d=p+16|0;a=p+20|0;b=p+24|0;e=p+28|0;f=p+32|0;g=p+40|0;h=(o|0)==(c|0);l=d;m=l+36|0;do{k[l>>2]=0;l=l+4|0}while((l|0)<(m|0));j[d+36>>1]=0;i[d+38>>0]=0;a:do if(h){k[p+48>>2]=1;_a[k[(k[c>>2]|0)+20>>2]&3](c,p,n,n,1,0);d=(k[b>>2]|0)==1?n:0}else{Va[k[(k[o>>2]|0)+24>>2]&3](o,p,n,1,0);switch(k[p+36>>2]|0){case 0:{d=(k[g>>2]|0)==1&(k[e>>2]|0)==1&(k[f>>2]|0)==1?k[a>>2]|0:0;break a}case 1:break;default:{d=0;break a}}if((k[b>>2]|0)!=1?!((k[g>>2]|0)==0&(k[e>>2]|0)==1&(k[f>>2]|0)==1):0){d=0;break}d=k[d>>2]|0}while(0);r=q;return d|0}function fc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;i[b+53>>0]=1;do if((k[b+4>>2]|0)==(d|0)){i[b+52>>0]=1;d=b+16|0;a=k[d>>2]|0;if(!a){k[d>>2]=c;k[b+24>>2]=e;k[b+36>>2]=1;if(!((e|0)==1?(k[b+48>>2]|0)==1:0))break;i[b+54>>0]=1;break}if((a|0)!=(c|0)){e=b+36|0;k[e>>2]=(k[e>>2]|0)+1;i[b+54>>0]=1;break}a=b+24|0;d=k[a>>2]|0;if((d|0)==2){k[a>>2]=e;d=e}if((d|0)==1?(k[b+48>>2]|0)==1:0)i[b+54>>0]=1}while(0);return}function gc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;a:do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){h=k[a+8>>2]|0;Va[k[(k[h>>2]|0)+24>>2]&3](h,b,c,d,e);break}if((k[b+16>>2]|0)!=(c|0)?(g=b+20|0,(k[g>>2]|0)!=(c|0)):0){k[b+32>>2]=d;d=b+44|0;if((k[d>>2]|0)==4)break;f=b+52|0;i[f>>0]=0;j=b+53|0;i[j>>0]=0;a=k[a+8>>2]|0;_a[k[(k[a>>2]|0)+20>>2]&3](a,b,c,c,1,e);if(i[j>>0]|0){if(!(i[f>>0]|0)){f=1;h=13}}else{f=0;h=13}do if((h|0)==13){k[g>>2]=c;j=b+40|0;k[j>>2]=(k[j>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0){i[b+54>>0]=1;if(f)break}else h=16;if((h|0)==16?f:0)break;k[d>>2]=4;break a}while(0);k[d>>2]=3;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function hc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(g=b+28|0,(k[g>>2]|0)!=1):0)k[g>>2]=d}else if((a|0)==(k[b>>2]|0)){if((k[b+16>>2]|0)!=(c|0)?(f=b+20|0,(k[f>>2]|0)!=(c|0)):0){k[b+32>>2]=d;k[f>>2]=c;e=b+40|0;k[e>>2]=(k[e>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1;k[b+44>>2]=4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function ic(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))fc(0,b,c,d,e);else{a=k[a+8>>2]|0;_a[k[(k[a>>2]|0)+20>>2]&3](a,b,c,d,e,f)}return}function jc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))fc(0,b,c,d,e);return}function kc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[d>>2]=k[c>>2];a=Ua[k[(k[a>>2]|0)+16>>2]&7](a,b,d)|0;if(a)k[c>>2]=k[d>>2];r=e;return a&1|0}function lc(a){a=a|0;if(!a)a=0;else a=(ec(a,24,72,0)|0)!=0;return a&1|0}function mc(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+48|0;g=e+32|0;c=e+24|0;h=e+16|0;f=e;e=e+36|0;a=Sb()|0;if((a|0)!=0?(d=k[a>>2]|0,(d|0)!=0):0){a=d+48|0;b=k[a>>2]|0;a=k[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){k[c>>2]=k[51];Rb(2368,c)}if((b|0)==1126902529&(a|0)==1129074247)a=k[d+44>>2]|0;else a=d+80|0;k[e>>2]=a;d=k[d>>2]|0;a=k[d+4>>2]|0;if(Ua[k[(k[8>>2]|0)+16>>2]&7](8,d,e)|0){h=k[e>>2]|0;e=k[51]|0;h=Xa[k[(k[h>>2]|0)+8>>2]&1](h)|0;k[f>>2]=e;k[f+4>>2]=a;k[f+8>>2]=h;Rb(2282,f)}else{k[h>>2]=k[51];k[h+4>>2]=a;Rb(2327,h)}}Rb(2406,g)}function nc(){var a=0;a=r;r=r+16|0;if(!(Ia(196,6)|0)){r=a;return}else Rb(2179,a)}function oc(a){a=a|0;var b=0;b=r;r=r+16|0;Vc(a);if(!(La(k[49]|0,0)|0)){r=b;return}else Rb(2229,b)}function pc(a){a=a|0;var b=0,c=0;b=0;while(1){if((l[2427+b>>0]|0)==(a|0)){c=2;break}b=b+1|0;if((b|0)==87){b=87;a=2515;c=5;break}}if((c|0)==2)if(!b)a=2515;else{a=2515;c=5}if((c|0)==5)while(1){c=a;while(1){a=c+1|0;if(!(i[c>>0]|0))break;else c=a}b=b+-1|0;if(!b)break;else c=5}return a|0}function qc(){var a=0;if(!(k[52]|0))a=264;else{a=(Ga()|0)+60|0;a=k[a>>2]|0}return a|0}function rc(a){a=a|0;var b=0;if(a>>>0>4294963200){b=qc()|0;k[b>>2]=0-a;a=-1}return a|0}function sc(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;e=bd(c|0,d|0,52)|0;e=e&2047;switch(e|0){case 0:{if(a!=0.0){a=+sc(a*18446744073709552.0e3,b);c=(k[b>>2]|0)+-64|0}else c=0;k[b>>2]=c;break}case 2047:break;default:{k[b>>2]=e+-1022;k[t>>2]=c;k[t+4>>2]=d&-2146435073|1071644672;a=+p[t>>3]}}return +a}function tc(a,b){a=+a;b=b|0;return +(+sc(a,b))}function uc(a,b,c){a=a|0;b=b|0;c=c|0;do if(a){if(b>>>0<128){i[a>>0]=b;a=1;break}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;a=2;break}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;a=3;break}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;a=4;break}else{a=qc()|0;k[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function vc(a,b){a=a|0;b=b|0;if(!a)a=0;else a=uc(a,b,0)|0;return a|0}function wc(a){a=a|0;var b=0,c=0;do if(a){if((k[a+76>>2]|0)<=-1){b=Nc(a)|0;break}c=(Ec(a)|0)==0;b=Nc(a)|0;if(!c)Fc(a)}else{if(!(k[65]|0))b=0;else b=wc(k[65]|0)|0;Ma(236);a=k[58]|0;if(a)do{if((k[a+76>>2]|0)>-1)c=Ec(a)|0;else c=0;if((k[a+20>>2]|0)>>>0>(k[a+28>>2]|0)>>>0)b=Nc(a)|0|b;if(c)Fc(a);a=k[a+56>>2]|0}while((a|0)!=0);Ja(236)}while(0);return b|0}function xc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((k[b+76>>2]|0)>=0?(Ec(b)|0)!=0:0){if((i[b+75>>0]|0)!=(a|0)?(d=b+20|0,e=k[d>>2]|0,e>>>0<(k[b+16>>2]|0)>>>0):0){k[d>>2]=e+1;i[e>>0]=a;c=a&255}else c=Gc(b,a)|0;Fc(b)}else g=3;do if((g|0)==3){if((i[b+75>>0]|0)!=(a|0)?(f=b+20|0,c=k[f>>2]|0,c>>>0<(k[b+16>>2]|0)>>>0):0){k[f>>2]=c+1;i[c>>0]=a;c=a&255;break}c=Gc(b,a)|0}while(0);return c|0}function yc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=c+16|0;e=k[d>>2]|0;if(!e)if(!(Lc(c)|0)){e=k[d>>2]|0;f=4}else d=0;else f=4;a:do if((f|0)==4){g=c+20|0;f=k[g>>2]|0;if((e-f|0)>>>0>>0){d=Ua[k[c+36>>2]&7](c,a,b)|0;break}b:do if((i[c+75>>0]|0)>-1){d=b;while(1){if(!d){e=f;d=0;break b}e=d+-1|0;if((i[a+e>>0]|0)==10)break;else d=e}if((Ua[k[c+36>>2]&7](c,a,d)|0)>>>0>>0)break a;b=b-d|0;a=a+d|0;e=k[g>>2]|0}else{e=f;d=0}while(0);ed(e|0,a|0,b|0)|0;k[g>>2]=(k[g>>2]|0)+b;d=d+b|0}while(0);return d|0}function zc(a,b){a=a|0;b=b|0;var c=0,d=0;c=r;r=r+16|0;d=c;k[d>>2]=b;b=Bc(k[64]|0,a,d)|0;r=c;return b|0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=Dc(a,b,e)|0;r=d;return c|0}function Bc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+224|0;n=s+120|0;q=s+80|0;p=s;o=s+136|0;d=q;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[n>>2]=k[c>>2];if((Oc(0,b,n,p,q)|0)<0)c=-1;else{if((k[a+76>>2]|0)>-1)l=Ec(a)|0;else l=0;c=k[a>>2]|0;m=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;c=a+48|0;if(!(k[c>>2]|0)){e=a+44|0;f=k[e>>2]|0;k[e>>2]=o;g=a+28|0;k[g>>2]=o;h=a+20|0;k[h>>2]=o;k[c>>2]=80;j=a+16|0;k[j>>2]=o+80;d=Oc(a,b,n,p,q)|0;if(f){Ua[k[a+36>>2]&7](a,0,0)|0;d=(k[h>>2]|0)==0?-1:d;k[e>>2]=f;k[c>>2]=0;k[j>>2]=0;k[g>>2]=0;k[h>>2]=0}}else d=Oc(a,b,n,p,q)|0;c=k[a>>2]|0;k[a>>2]=c|m;if(l)Fc(a);c=(c&32|0)==0?d:-1}r=s;return c|0}function Cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+128|0;e=m+112|0;l=m;f=l;g=268;h=f+112|0;do{k[f>>2]=k[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if((b+-1|0)>>>0>2147483646)if(!b){b=1;j=4}else{b=qc()|0;k[b>>2]=75;b=-1}else{e=a;j=4}if((j|0)==4){j=-2-e|0;j=b>>>0>j>>>0?j:b;k[l+48>>2]=j;a=l+20|0;k[a>>2]=e;k[l+44>>2]=e;b=e+j|0;e=l+16|0;k[e>>2]=b;k[l+28>>2]=b;b=Bc(l,c,d)|0;if(j){c=k[a>>2]|0;i[c+(((c|0)==(k[e>>2]|0))<<31>>31)>>0]=0}}r=m;return b|0}function Dc(a,b,c){a=a|0;b=b|0;c=c|0;return Cc(a,2147483647,b,c)|0}function Ec(a){a=a|0;return 0}function Fc(a){a=a|0;return}function Gc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;h=j;g=b&255;i[h>>0]=g;d=a+16|0;e=k[d>>2]|0;if(!e)if(!(Lc(a)|0)){e=k[d>>2]|0;f=4}else c=-1;else f=4;do if((f|0)==4){d=a+20|0;f=k[d>>2]|0;if(f>>>0>>0?(c=b&255,(c|0)!=(i[a+75>>0]|0)):0){k[d>>2]=f+1;i[f>>0]=g;break}if((Ua[k[a+36>>2]&7](a,h,1)|0)==1)c=l[h>>0]|0;else c=-1}while(0);r=j;return c|0}function Hc(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=k[a+60>>2];a=rc(xa(6,c|0)|0)|0;r=b;return a|0}function Ic(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+32|0;f=e;d=e+20|0;k[f>>2]=k[a+60>>2];k[f+4>>2]=0;k[f+8>>2]=b;k[f+12>>2]=d;k[f+16>>2]=c;if((rc(Qa(140,f|0)|0)|0)<0){k[d>>2]=-1;a=-1}else a=k[d>>2]|0;r=e;return a|0}function Jc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+48|0;m=p+16|0;l=p;d=p+32|0;n=a+28|0;e=k[n>>2]|0;k[d>>2]=e;o=a+20|0;e=(k[o>>2]|0)-e|0;k[d+4>>2]=e;k[d+8>>2]=b;k[d+12>>2]=c;i=a+60|0;j=a+44|0;b=2;e=e+c|0;while(1){if(!(k[52]|0)){k[m>>2]=k[i>>2];k[m+4>>2]=d;k[m+8>>2]=b;g=rc(Ra(146,m|0)|0)|0}else{Oa(7,a|0);k[l>>2]=k[i>>2];k[l+4>>2]=d;k[l+8>>2]=b;g=rc(Ra(146,l|0)|0)|0;va(0)}if((e|0)==(g|0)){e=6;break}if((g|0)<0){e=8;break}e=e-g|0;f=k[d+4>>2]|0;if(g>>>0<=f>>>0)if((b|0)==2){k[n>>2]=(k[n>>2]|0)+g;h=f;b=2}else h=f;else{h=k[j>>2]|0;k[n>>2]=h;k[o>>2]=h;h=k[d+12>>2]|0;g=g-f|0;d=d+8|0;b=b+-1|0}k[d>>2]=(k[d>>2]|0)+g;k[d+4>>2]=h-g}if((e|0)==6){m=k[j>>2]|0;k[a+16>>2]=m+(k[a+48>>2]|0);a=m;k[n>>2]=a;k[o>>2]=a}else if((e|0)==8){k[a+16>>2]=0;k[n>>2]=0;k[o>>2]=0;k[a>>2]=k[a>>2]|32;if((b|0)==2)c=0;else c=c-(k[d+4>>2]|0)|0}r=p;return c|0}function Kc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+80|0;d=e;k[a+36>>2]=3;if((k[a>>2]&64|0)==0?(k[d>>2]=k[a+60>>2],k[d+4>>2]=21505,k[d+8>>2]=e+12,(wa(54,d|0)|0)!=0):0)i[a+75>>0]=-1;d=Jc(a,b,c)|0;r=e;return d|0}function Lc(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=k[a>>2]|0;if(!(b&8)){k[a+8>>2]=0;k[a+4>>2]=0;b=k[a+44>>2]|0;k[a+28>>2]=b;k[a+20>>2]=b;k[a+16>>2]=b+(k[a+48>>2]|0);b=0}else{k[a>>2]=b|32;b=-1}return b|0}function Mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b&255;d=(c|0)!=0;a:do if(d&(a&3|0)!=0){e=b&255;while(1){if((i[a>>0]|0)==e<<24>>24){g=6;break a}a=a+1|0;c=c+-1|0;d=(c|0)!=0;if(!(d&(a&3|0)!=0)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(d)g=6;else c=0;b:do if((g|0)==6){e=b&255;if((i[a>>0]|0)!=e<<24>>24){d=ha(f,16843009)|0;c:do if(c>>>0>3)while(1){f=k[a>>2]^d;if((f&-2139062144^-2139062144)&f+-16843009)break;a=a+4|0;c=c+-4|0;if(c>>>0<=3){g=11;break c}}else g=11;while(0);if((g|0)==11)if(!c){c=0;break}while(1){if((i[a>>0]|0)==e<<24>>24)break b;a=a+1|0;c=c+-1|0;if(!c){c=0;break}}}}while(0);return ((c|0)!=0?a:0)|0}function Nc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+20|0;f=a+28|0;if((k[b>>2]|0)>>>0>(k[f>>2]|0)>>>0?(Ua[k[a+36>>2]&7](a,0,0)|0,(k[b>>2]|0)==0):0)b=-1;else{g=a+4|0;c=k[g>>2]|0;d=a+8|0;e=k[d>>2]|0;if(c>>>0>>0)Ua[k[a+40>>2]&7](a,c-e|0,1)|0;k[a+16>>2]=0;k[f>>2]=0;k[b>>2]=0;k[d>>2]=0;k[g>>2]=0;b=0}return b|0}function Oc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,m=0,n=0.0,o=0,q=0,s=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;ga=r;r=r+624|0;ba=ga+24|0;da=ga+16|0;ca=ga+588|0;Y=ga+576|0;aa=ga;V=ga+536|0;fa=ga+8|0;ea=ga+528|0;M=(a|0)!=0;N=V+40|0;U=N;V=V+39|0;W=fa+4|0;X=Y+12|0;Y=Y+11|0;Z=ca;_=X;$=_-Z|0;O=-2-Z|0;P=_+2|0;Q=ba+288|0;R=ca+9|0;S=R;T=ca+8|0;f=0;w=b;g=0;b=0;a:while(1){do if((f|0)>-1)if((g|0)>(2147483647-f|0)){f=qc()|0;k[f>>2]=75;f=-1;break}else{f=g+f|0;break}while(0);g=i[w>>0]|0;if(!(g<<24>>24)){K=245;break}else h=w;b:while(1){switch(g<<24>>24){case 37:{g=h;K=9;break b}case 0:{g=h;break b}default:{}}J=h+1|0;g=i[J>>0]|0;h=J}c:do if((K|0)==9)while(1){K=0;if((i[g+1>>0]|0)!=37)break c;h=h+1|0;g=g+2|0;if((i[g>>0]|0)==37)K=9;else break}while(0);y=h-w|0;if(M?(k[a>>2]&32|0)==0:0)yc(w,y,a)|0;if((h|0)!=(w|0)){w=g;g=y;continue}o=g+1|0;h=i[o>>0]|0;m=(h<<24>>24)+-48|0;if(m>>>0<10){J=(i[g+2>>0]|0)==36;o=J?g+3|0:o;h=i[o>>0]|0;u=J?m:-1;b=J?1:b}else u=-1;g=h<<24>>24;d:do if((g&-32|0)==32){m=0;while(1){if(!(1<>24)+-32|m;o=o+1|0;h=i[o>>0]|0;g=h<<24>>24;if((g&-32|0)!=32){q=m;g=o;break}}}else{q=0;g=o}while(0);do if(h<<24>>24==42){m=g+1|0;h=(i[m>>0]|0)+-48|0;if(h>>>0<10?(i[g+2>>0]|0)==36:0){k[e+(h<<2)>>2]=10;b=1;g=g+3|0;h=k[d+((i[m>>0]|0)+-48<<3)>>2]|0}else{if(b){f=-1;break a}if(!M){x=q;g=m;b=0;J=0;break}b=(k[c>>2]|0)+(4-1)&~(4-1);h=k[b>>2]|0;k[c>>2]=b+4;b=0;g=m}if((h|0)<0){x=q|8192;J=0-h|0}else{x=q;J=h}}else{m=(h<<24>>24)+-48|0;if(m>>>0<10){h=0;do{h=(h*10|0)+m|0;g=g+1|0;m=(i[g>>0]|0)+-48|0}while(m>>>0<10);if((h|0)<0){f=-1;break a}else{x=q;J=h}}else{x=q;J=0}}while(0);e:do if((i[g>>0]|0)==46){m=g+1|0;h=i[m>>0]|0;if(h<<24>>24!=42){o=(h<<24>>24)+-48|0;if(o>>>0<10){g=m;h=0}else{g=m;o=0;break}while(1){h=(h*10|0)+o|0;g=g+1|0;o=(i[g>>0]|0)+-48|0;if(o>>>0>=10){o=h;break e}}}m=g+2|0;h=(i[m>>0]|0)+-48|0;if(h>>>0<10?(i[g+3>>0]|0)==36:0){k[e+(h<<2)>>2]=10;g=g+4|0;o=k[d+((i[m>>0]|0)+-48<<3)>>2]|0;break}if(b){f=-1;break a}if(M){g=(k[c>>2]|0)+(4-1)&~(4-1);o=k[g>>2]|0;k[c>>2]=g+4;g=m}else{g=m;o=0}}else o=-1;while(0);s=0;while(1){h=(i[g>>0]|0)+-65|0;if(h>>>0>57){f=-1;break a}m=g+1|0;h=i[5359+(s*58|0)+h>>0]|0;q=h&255;if((q+-1|0)>>>0<8){g=m;s=q}else{I=m;break}}if(!(h<<24>>24)){f=-1;break}m=(u|0)>-1;do if(h<<24>>24==19)if(m){f=-1;break a}else K=52;else{if(m){k[e+(u<<2)>>2]=q;G=d+(u<<3)|0;H=k[G+4>>2]|0;K=aa;k[K>>2]=k[G>>2];k[K+4>>2]=H;K=52;break}if(!M){f=0;break a}Rc(aa,q,c)}while(0);if((K|0)==52?(K=0,!M):0){w=I;g=y;continue}u=i[g>>0]|0;u=(s|0)!=0&(u&15|0)==3?u&-33:u;m=x&-65537;H=(x&8192|0)==0?x:m;f:do switch(u|0){case 110:switch(s|0){case 0:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 1:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 2:{w=k[aa>>2]|0;k[w>>2]=f;k[w+4>>2]=((f|0)<0)<<31>>31;w=I;g=y;continue a}case 3:{j[k[aa>>2]>>1]=f;w=I;g=y;continue a}case 4:{i[k[aa>>2]>>0]=f;w=I;g=y;continue a}case 6:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 7:{w=k[aa>>2]|0;k[w>>2]=f;k[w+4>>2]=((f|0)<0)<<31>>31;w=I;g=y;continue a}default:{w=I;g=y;continue a}}case 112:{s=H|8;o=o>>>0>8?o:8;u=120;K=64;break}case 88:case 120:{s=H;K=64;break}case 111:{m=aa;h=k[m>>2]|0;m=k[m+4>>2]|0;if((h|0)==0&(m|0)==0)g=N;else{g=N;do{g=g+-1|0;i[g>>0]=h&7|48;h=bd(h|0,m|0,3)|0;m=L}while(!((h|0)==0&(m|0)==0))}if(!(H&8)){h=H;s=0;q=5839;K=77}else{s=U-g+1|0;h=H;o=(o|0)<(s|0)?s:o;s=0;q=5839;K=77}break}case 105:case 100:{h=aa;g=k[h>>2]|0;h=k[h+4>>2]|0;if((h|0)<0){g=$c(0,0,g|0,h|0)|0;h=L;m=aa;k[m>>2]=g;k[m+4>>2]=h;m=1;q=5839;K=76;break f}if(!(H&2048)){q=H&1;m=q;q=(q|0)==0?5839:5841;K=76}else{m=1;q=5840;K=76}break}case 117:{h=aa;g=k[h>>2]|0;h=k[h+4>>2]|0;m=0;q=5839;K=76;break}case 99:{i[V>>0]=k[aa>>2];w=V;h=1;s=0;u=5839;g=N;break}case 109:{g=qc()|0;g=pc(k[g>>2]|0)|0;K=82;break}case 115:{g=k[aa>>2]|0;g=(g|0)!=0?g:5849;K=82;break}case 67:{k[fa>>2]=k[aa>>2];k[W>>2]=0;k[aa>>2]=fa;o=-1;K=86;break}case 83:{if(!o){Tc(a,32,J,0,H);g=0;K=98}else K=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{n=+p[aa>>3];k[da>>2]=0;p[t>>3]=n;if((k[t+4>>2]|0)>=0)if(!(H&2048)){G=H&1;F=G;G=(G|0)==0?5857:5862}else{F=1;G=5859}else{n=-n;F=1;G=5856}p[t>>3]=n;E=k[t+4>>2]&2146435072;do if(E>>>0<2146435072|(E|0)==2146435072&0<0){v=+tc(n,da)*2.0;h=v!=0.0;if(h)k[da>>2]=(k[da>>2]|0)+-1;C=u|32;if((C|0)==97){w=u&32;y=(w|0)==0?G:G+9|0;x=F|2;g=12-o|0;do if(!(o>>>0>11|(g|0)==0)){n=8.0;do{g=g+-1|0;n=n*16.0}while((g|0)!=0);if((i[y>>0]|0)==45){n=-(n+(-v-n));break}else{n=v+n-n;break}}else n=v;while(0);h=k[da>>2]|0;g=(h|0)<0?0-h|0:h;g=Sc(g,((g|0)<0)<<31>>31,X)|0;if((g|0)==(X|0)){i[Y>>0]=48;g=Y}i[g+-1>>0]=(h>>31&2)+43;s=g+-2|0;i[s>>0]=u+15;q=(o|0)<1;m=(H&8|0)==0;h=ca;while(1){G=~~n;g=h+1|0;i[h>>0]=l[5823+G>>0]|w;n=(n-+(G|0))*16.0;do if((g-Z|0)==1){if(m&(q&n==0.0))break;i[g>>0]=46;g=h+2|0}while(0);if(!(n!=0.0))break;else h=g}o=(o|0)!=0&(O+g|0)<(o|0)?P+o-s|0:$-s+g|0;m=o+x|0;Tc(a,32,J,m,H);if(!(k[a>>2]&32))yc(y,x,a)|0;Tc(a,48,J,m,H^65536);g=g-Z|0;if(!(k[a>>2]&32))yc(ca,g,a)|0;h=_-s|0;Tc(a,48,o-(g+h)|0,0,0);if(!(k[a>>2]&32))yc(s,h,a)|0;Tc(a,32,J,m,H^8192);g=(m|0)<(J|0)?J:m;break}g=(o|0)<0?6:o;if(h){h=(k[da>>2]|0)+-28|0;k[da>>2]=h;n=v*268435456.0}else{n=v;h=k[da>>2]|0}E=(h|0)<0?ba:Q;D=E;h=E;do{B=~~n>>>0;k[h>>2]=B;h=h+4|0;n=(n-+(B>>>0))*1.0e9}while(n!=0.0);m=h;h=k[da>>2]|0;if((h|0)>0){q=E;while(1){s=(h|0)>29?29:h;o=m+-4|0;do if(o>>>0>>0)o=q;else{h=0;do{B=cd(k[o>>2]|0,0,s|0)|0;B=dd(B|0,L|0,h|0,0)|0;h=L;A=md(B|0,h|0,1e9,0)|0;k[o>>2]=A;h=ld(B|0,h|0,1e9,0)|0;o=o+-4|0}while(o>>>0>=q>>>0);if(!h){o=q;break}o=q+-4|0;k[o>>2]=h}while(0);while(1){if(m>>>0<=o>>>0)break;h=m+-4|0;if(!(k[h>>2]|0))m=h;else break}h=(k[da>>2]|0)-s|0;k[da>>2]=h;if((h|0)>0)q=o;else break}}else o=E;if((h|0)<0){y=((g+25|0)/9|0)+1|0;z=(C|0)==102;w=o;while(1){x=0-h|0;x=(x|0)>9?9:x;do if(w>>>0>>0){h=(1<>>x;o=0;s=w;do{B=k[s>>2]|0;k[s>>2]=(B>>>x)+o;o=ha(B&h,q)|0;s=s+4|0}while(s>>>0>>0);h=(k[w>>2]|0)==0?w+4|0:w;if(!o){o=h;break}k[m>>2]=o;o=h;m=m+4|0}else o=(k[w>>2]|0)==0?w+4|0:w;while(0);h=z?E:o;m=(m-h>>2|0)>(y|0)?h+(y<<2)|0:m;h=(k[da>>2]|0)+x|0;k[da>>2]=h;if((h|0)>=0){w=o;break}else w=o}}else w=o;do if(w>>>0>>0){h=(D-w>>2)*9|0;q=k[w>>2]|0;if(q>>>0<10)break;else o=10;do{o=o*10|0;h=h+1|0}while(q>>>0>=o>>>0)}else h=0;while(0);A=(C|0)==103;B=(g|0)!=0;o=g-((C|0)!=102?h:0)+((B&A)<<31>>31)|0;if((o|0)<(((m-D>>2)*9|0)+-9|0)){s=o+9216|0;z=(s|0)/9|0;o=E+(z+-1023<<2)|0;s=((s|0)%9|0)+1|0;if((s|0)<9){q=10;do{q=q*10|0;s=s+1|0}while((s|0)!=9)}else q=10;x=k[o>>2]|0;y=(x>>>0)%(q>>>0)|0;if((y|0)==0?(E+(z+-1022<<2)|0)==(m|0):0)q=w;else K=163;do if((K|0)==163){K=0;v=(((x>>>0)/(q>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;s=(q|0)/2|0;do if(y>>>0>>0)n=.5;else{if((y|0)==(s|0)?(E+(z+-1022<<2)|0)==(m|0):0){n=1.0;break}n=1.5}while(0);do if(F){if((i[G>>0]|0)!=45)break;v=-v;n=-n}while(0);s=x-y|0;k[o>>2]=s;if(!(v+n!=v)){q=w;break}C=s+q|0;k[o>>2]=C;if(C>>>0>999999999){h=w;while(1){q=o+-4|0;k[o>>2]=0;if(q>>>0>>0){h=h+-4|0;k[h>>2]=0}C=(k[q>>2]|0)+1|0;k[q>>2]=C;if(C>>>0>999999999)o=q;else{w=h;o=q;break}}}h=(D-w>>2)*9|0;s=k[w>>2]|0;if(s>>>0<10){q=w;break}else q=10;do{q=q*10|0;h=h+1|0}while(s>>>0>=q>>>0);q=w}while(0);C=o+4|0;w=q;m=m>>>0>C>>>0?C:m}y=0-h|0;while(1){if(m>>>0<=w>>>0){z=0;C=m;break}o=m+-4|0;if(!(k[o>>2]|0))m=o;else{z=1;C=m;break}}do if(A){g=(B&1^1)+g|0;if((g|0)>(h|0)&(h|0)>-5){u=u+-1|0;g=g+-1-h|0}else{u=u+-2|0;g=g+-1|0}m=H&8;if(m)break;do if(z){m=k[C+-4>>2]|0;if(!m){o=9;break}if(!((m>>>0)%10|0)){q=10;o=0}else{o=0;break}do{q=q*10|0;o=o+1|0}while(((m>>>0)%(q>>>0)|0|0)==0)}else o=9;while(0);m=((C-D>>2)*9|0)+-9|0;if((u|32|0)==102){m=m-o|0;m=(m|0)<0?0:m;g=(g|0)<(m|0)?g:m;m=0;break}else{m=m+h-o|0;m=(m|0)<0?0:m;g=(g|0)<(m|0)?g:m;m=0;break}}else m=H&8;while(0);x=g|m;q=(x|0)!=0&1;s=(u|32|0)==102;if(s){h=(h|0)>0?h:0;u=0}else{o=(h|0)<0?y:h;o=Sc(o,((o|0)<0)<<31>>31,X)|0;if((_-o|0)<2)do{o=o+-1|0;i[o>>0]=48}while((_-o|0)<2);i[o+-1>>0]=(h>>31&2)+43;D=o+-2|0;i[D>>0]=u;h=_-D|0;u=D}y=F+1+g+q+h|0;Tc(a,32,J,y,H);if(!(k[a>>2]&32))yc(G,F,a)|0;Tc(a,48,J,y,H^65536);do if(s){o=w>>>0>E>>>0?E:w;h=o;do{m=Sc(k[h>>2]|0,0,R)|0;do if((h|0)==(o|0)){if((m|0)!=(R|0))break;i[T>>0]=48;m=T}else{if(m>>>0<=ca>>>0)break;do{m=m+-1|0;i[m>>0]=48}while(m>>>0>ca>>>0)}while(0);if(!(k[a>>2]&32))yc(m,S-m|0,a)|0;h=h+4|0}while(h>>>0<=E>>>0);do if(x){if(k[a>>2]&32)break;yc(5891,1,a)|0}while(0);if((g|0)>0&h>>>0>>0){m=h;while(1){h=Sc(k[m>>2]|0,0,R)|0;if(h>>>0>ca>>>0)do{h=h+-1|0;i[h>>0]=48}while(h>>>0>ca>>>0);if(!(k[a>>2]&32))yc(h,(g|0)>9?9:g,a)|0;m=m+4|0;h=g+-9|0;if(!((g|0)>9&m>>>0>>0)){g=h;break}else g=h}}Tc(a,48,g+9|0,9,0)}else{s=z?C:w+4|0;if((g|0)>-1){q=(m|0)==0;o=w;do{h=Sc(k[o>>2]|0,0,R)|0;if((h|0)==(R|0)){i[T>>0]=48;h=T}do if((o|0)==(w|0)){m=h+1|0;if(!(k[a>>2]&32))yc(h,1,a)|0;if(q&(g|0)<1){h=m;break}if(k[a>>2]&32){h=m;break}yc(5891,1,a)|0;h=m}else{if(h>>>0<=ca>>>0)break;do{h=h+-1|0;i[h>>0]=48}while(h>>>0>ca>>>0)}while(0);m=S-h|0;if(!(k[a>>2]&32))yc(h,(g|0)>(m|0)?m:g,a)|0;g=g-m|0;o=o+4|0}while(o>>>0>>0&(g|0)>-1)}Tc(a,48,g+18|0,18,0);if(k[a>>2]&32)break;yc(u,_-u|0,a)|0}while(0);Tc(a,32,J,y,H^8192);g=(y|0)<(J|0)?J:y}else{s=(u&32|0)!=0;q=n!=n|0.0!=0.0;h=q?0:F;o=h+3|0;Tc(a,32,J,o,m);g=k[a>>2]|0;if(!(g&32)){yc(G,h,a)|0;g=k[a>>2]|0}if(!(g&32))yc(q?(s?5883:5887):s?5875:5879,3,a)|0;Tc(a,32,J,o,H^8192);g=(o|0)<(J|0)?J:o}while(0);w=I;continue a}default:{m=H;h=o;s=0;u=5839;g=N}}while(0);g:do if((K|0)==64){m=aa;h=k[m>>2]|0;m=k[m+4>>2]|0;q=u&32;if(!((h|0)==0&(m|0)==0)){g=N;do{g=g+-1|0;i[g>>0]=l[5823+(h&15)>>0]|q;h=bd(h|0,m|0,4)|0;m=L}while(!((h|0)==0&(m|0)==0));K=aa;if((s&8|0)==0|(k[K>>2]|0)==0&(k[K+4>>2]|0)==0){h=s;s=0;q=5839;K=77}else{h=s;s=2;q=5839+(u>>4)|0;K=77}}else{g=N;h=s;s=0;q=5839;K=77}}else if((K|0)==76){g=Sc(g,h,N)|0;h=H;s=m;K=77}else if((K|0)==82){K=0;H=Mc(g,0,o)|0;G=(H|0)==0;w=g;h=G?o:H-g|0;s=0;u=5839;g=G?g+o|0:H}else if((K|0)==86){K=0;h=0;g=0;q=k[aa>>2]|0;while(1){m=k[q>>2]|0;if(!m)break;g=vc(ea,m)|0;if((g|0)<0|g>>>0>(o-h|0)>>>0)break;h=g+h|0;if(o>>>0>h>>>0)q=q+4|0;else break}if((g|0)<0){f=-1;break a}Tc(a,32,J,h,H);if(!h){g=0;K=98}else{m=0;o=k[aa>>2]|0;while(1){g=k[o>>2]|0;if(!g){g=h;K=98;break g}g=vc(ea,g)|0;m=g+m|0;if((m|0)>(h|0)){g=h;K=98;break g}if(!(k[a>>2]&32))yc(ea,g,a)|0;if(m>>>0>=h>>>0){g=h;K=98;break}else o=o+4|0}}}while(0);if((K|0)==98){K=0;Tc(a,32,J,g,H^8192);w=I;g=(J|0)>(g|0)?J:g;continue}if((K|0)==77){K=0;m=(o|0)>-1?h&-65537:h;h=aa;h=(k[h>>2]|0)!=0|(k[h+4>>2]|0)!=0;if((o|0)!=0|h){h=(h&1^1)+(U-g)|0;w=g;h=(o|0)>(h|0)?o:h;u=q;g=N}else{w=N;h=0;u=q;g=N}}q=g-w|0;h=(h|0)<(q|0)?q:h;o=s+h|0;g=(J|0)<(o|0)?o:J;Tc(a,32,g,o,m);if(!(k[a>>2]&32))yc(u,s,a)|0;Tc(a,48,g,o,m^65536);Tc(a,48,h,q,0);if(!(k[a>>2]&32))yc(w,q,a)|0;Tc(a,32,g,o,m^8192);w=I}h:do if((K|0)==245)if(!a)if(b){f=1;while(1){b=k[e+(f<<2)>>2]|0;if(!b)break;Rc(d+(f<<3)|0,b,c);f=f+1|0;if((f|0)>=10){f=1;break h}}if((f|0)<10)while(1){if(k[e+(f<<2)>>2]|0){f=-1;break h}f=f+1|0;if((f|0)>=10){f=1;break}}else f=1}else f=0;while(0);r=ga;return f|0}function Pc(a){a=a|0;if(!(k[a+68>>2]|0))Fc(a);return}function Qc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;e=k[d>>2]|0;a=(k[a+16>>2]|0)-e|0;a=a>>>0>c>>>0?c:a;ed(e|0,b|0,a|0)|0;k[d>>2]=(k[d>>2]|0)+a;return c|0}function Rc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=b;break a}case 10:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=0;break a}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);b=d;e=k[b>>2]|0;b=k[b+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=e;k[d+4>>2]=b;break a}case 13:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&65535;k[e+4>>2]=0;break a}case 15:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&255)<<24>>24;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&255;k[e+4>>2]=0;break a}case 17:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}case 18:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}default:break a}while(0);while(0);return}function Sc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295)while(1){d=md(a|0,b|0,10,0)|0;c=c+-1|0;i[c>>0]=d|48;d=ld(a|0,b|0,10,0)|0;if(b>>>0>9|(b|0)==9&a>>>0>4294967295){a=d;b=L}else{a=d;break}}if(a)while(1){c=c+-1|0;i[c>>0]=(a>>>0)%10|0|48;if(a>>>0<10)break;else a=(a>>>0)/10|0}return c|0}function Tc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=r;r=r+256|0;g=h;do if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;ad(g|0,b|0,(e>>>0>256?256:e)|0)|0;b=k[a>>2]|0;f=(b&32|0)==0;if(e>>>0>255){d=c-d|0;do{if(f){yc(g,256,a)|0;b=k[a>>2]|0}e=e+-256|0;f=(b&32|0)==0}while(e>>>0>255);if(f)e=d&255;else break}else if(!f)break;yc(g,e,a)|0}while(0);r=h;return}function Uc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;h=k[151]|0;c=h>>>a;if(c&3){a=(c&1^1)+a|0;d=a<<1;c=644+(d<<2)|0;d=644+(d+2<<2)|0;e=k[d>>2]|0;f=e+8|0;g=k[f>>2]|0;do if((c|0)!=(g|0)){if(g>>>0<(k[155]|0)>>>0)Na();b=g+12|0;if((k[b>>2]|0)==(e|0)){k[b>>2]=c;k[d>>2]=g;break}else Na()}else k[151]=h&~(1<>2]=M|3;M=e+(M|4)|0;k[M>>2]=k[M>>2]|1;M=f;return M|0}g=k[153]|0;if(o>>>0>g>>>0){if(c){d=2<>>12&16;d=d>>>i;e=d>>>5&8;d=d>>>e;f=d>>>2&4;d=d>>>f;c=d>>>1&2;d=d>>>c;a=d>>>1&1;a=(e|i|f|c|a)+(d>>>a)|0;d=a<<1;c=644+(d<<2)|0;d=644+(d+2<<2)|0;f=k[d>>2]|0;i=f+8|0;e=k[i>>2]|0;do if((c|0)!=(e|0)){if(e>>>0<(k[155]|0)>>>0)Na();b=e+12|0;if((k[b>>2]|0)==(f|0)){k[b>>2]=c;k[d>>2]=e;j=k[153]|0;break}else Na()}else{k[151]=h&~(1<>2]=o|3;h=f+o|0;k[f+(o|4)>>2]=g|1;k[f+M>>2]=g;if(j){e=k[156]|0;c=j>>>3;b=c<<1;d=644+(b<<2)|0;a=k[151]|0;c=1<>2]|0;if(b>>>0<(k[155]|0)>>>0)Na();else{l=a;m=b}}else{k[151]=a|c;l=644+(b+2<<2)|0;m=d}k[l>>2]=e;k[m+12>>2]=e;k[e+8>>2]=m;k[e+12>>2]=d}k[153]=g;k[156]=h;M=i;return M|0}a=k[152]|0;if(a){c=(a&0-a)+-1|0;L=c>>>12&16;c=c>>>L;K=c>>>5&8;c=c>>>K;M=c>>>2&4;c=c>>>M;a=c>>>1&2;c=c>>>a;d=c>>>1&1;d=k[908+((K|L|M|a|d)+(c>>>d)<<2)>>2]|0;c=(k[d+4>>2]&-8)-o|0;a=d;while(1){b=k[a+16>>2]|0;if(!b){b=k[a+20>>2]|0;if(!b){i=c;break}}a=(k[b+4>>2]&-8)-o|0;M=a>>>0>>0;c=M?a:c;a=b;d=M?b:d}f=k[155]|0;if(d>>>0>>0)Na();h=d+o|0;if(d>>>0>=h>>>0)Na();g=k[d+24>>2]|0;c=k[d+12>>2]|0;do if((c|0)==(d|0)){a=d+20|0;b=k[a>>2]|0;if(!b){a=d+16|0;b=k[a>>2]|0;if(!b){n=0;break}}while(1){c=b+20|0;e=k[c>>2]|0;if(e){b=e;a=c;continue}c=b+16|0;e=k[c>>2]|0;if(!e)break;else{b=e;a=c}}if(a>>>0>>0)Na();else{k[a>>2]=0;n=b;break}}else{e=k[d+8>>2]|0;if(e>>>0>>0)Na();b=e+12|0;if((k[b>>2]|0)!=(d|0))Na();a=c+8|0;if((k[a>>2]|0)==(d|0)){k[b>>2]=c;k[a>>2]=e;n=c;break}else Na()}while(0);do if(g){b=k[d+28>>2]|0;a=908+(b<<2)|0;if((d|0)==(k[a>>2]|0)){k[a>>2]=n;if(!n){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();b=g+16|0;if((k[b>>2]|0)==(d|0))k[b>>2]=n;else k[g+20>>2]=n;if(!n)break}a=k[155]|0;if(n>>>0>>0)Na();k[n+24>>2]=g;b=k[d+16>>2]|0;do if(b)if(b>>>0>>0)Na();else{k[n+16>>2]=b;k[b+24>>2]=n;break}while(0);b=k[d+20>>2]|0;if(b)if(b>>>0<(k[155]|0)>>>0)Na();else{k[n+20>>2]=b;k[b+24>>2]=n;break}}while(0);if(i>>>0<16){M=i+o|0;k[d+4>>2]=M|3;M=d+(M+4)|0;k[M>>2]=k[M>>2]|1}else{k[d+4>>2]=o|3;k[d+(o|4)>>2]=i|1;k[d+(i+o)>>2]=i;b=k[153]|0;if(b){f=k[156]|0;c=b>>>3;b=c<<1;e=644+(b<<2)|0;a=k[151]|0;c=1<>2]|0;if(a>>>0<(k[155]|0)>>>0)Na();else{p=b;q=a}}else{k[151]=a|c;p=644+(b+2<<2)|0;q=e}k[p>>2]=f;k[q+12>>2]=f;k[f+8>>2]=q;k[f+12>>2]=e}k[153]=i;k[156]=h}M=d+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=k[152]|0;if(l){c=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(p|q|j)+(v<>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;a=k[908+(j<<2)>>2]|0;a:do if(!a){e=0;a=0;v=86}else{g=c;e=0;h=m<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){f=k[i+4>>2]&-8;c=f-m|0;if(c>>>0>>0)if((f|0)==(m|0)){f=i;a=i;v=90;break a}else a=i;else c=g;v=k[i+20>>2]|0;i=k[i+16+(h>>>31<<2)>>2]|0;e=(v|0)==0|(v|0)==(i|0)?e:v;if(!i){v=86;break}else{g=c;h=h<<1}}}while(0);if((v|0)==86){if((e|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;e=a>>>1&1;e=k[908+((l|n|p|q|e)+(a>>>e)<<2)>>2]|0;a=0}if(!e){h=c;i=a}else{f=e;v=90}}if((v|0)==90)while(1){v=0;q=(k[f+4>>2]&-8)-m|0;e=q>>>0>>0;c=e?q:c;a=e?f:a;e=k[f+16>>2]|0;if(e){f=e;v=90;continue}f=k[f+20>>2]|0;if(!f){h=c;i=a;break}else v=90}if((i|0)!=0?h>>>0<((k[153]|0)-m|0)>>>0:0){e=k[155]|0;if(i>>>0>>0)Na();g=i+m|0;if(i>>>0>=g>>>0)Na();f=k[i+24>>2]|0;c=k[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;b=k[a>>2]|0;if(!b){a=i+16|0;b=k[a>>2]|0;if(!b){o=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Na();else{k[a>>2]=0;o=b;break}}else{d=k[i+8>>2]|0;if(d>>>0>>0)Na();b=d+12|0;if((k[b>>2]|0)!=(i|0))Na();a=c+8|0;if((k[a>>2]|0)==(i|0)){k[b>>2]=c;k[a>>2]=d;o=c;break}else Na()}while(0);do if(f){b=k[i+28>>2]|0;a=908+(b<<2)|0;if((i|0)==(k[a>>2]|0)){k[a>>2]=o;if(!o){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();b=f+16|0;if((k[b>>2]|0)==(i|0))k[b>>2]=o;else k[f+20>>2]=o;if(!o)break}a=k[155]|0;if(o>>>0>>0)Na();k[o+24>>2]=f;b=k[i+16>>2]|0;do if(b)if(b>>>0>>0)Na();else{k[o+16>>2]=b;k[b+24>>2]=o;break}while(0);b=k[i+20>>2]|0;if(b)if(b>>>0<(k[155]|0)>>>0)Na();else{k[o+20>>2]=b;k[b+24>>2]=o;break}}while(0);b:do if(h>>>0>=16){k[i+4>>2]=m|3;k[i+(m|4)>>2]=h|1;k[i+(h+m)>>2]=h;b=h>>>3;if(h>>>0<256){a=b<<1;d=644+(a<<2)|0;c=k[151]|0;b=1<>2]|0;if(a>>>0<(k[155]|0)>>>0)Na();else{s=b;t=a}}else{k[151]=c|b;s=644+(a+2<<2)|0;t=d}k[s>>2]=g;k[t+12>>2]=g;k[i+(m+8)>>2]=t;k[i+(m+12)>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;d=14-(K|L|d)+(M<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=908+(d<<2)|0;k[i+(m+28)>>2]=d;k[i+(m+20)>>2]=0;k[i+(m+16)>>2]=0;a=k[152]|0;c=1<>2]=g;k[i+(m+24)>>2]=b;k[i+(m+12)>>2]=g;k[i+(m+8)>>2]=g;break}b=k[b>>2]|0;c:do if((k[b+4>>2]&-8|0)!=(h|0)){d=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(h|0)){y=c;break c}else{d=d<<1;b=c}}if(a>>>0<(k[155]|0)>>>0)Na();else{k[a>>2]=g;k[i+(m+24)>>2]=b;k[i+(m+12)>>2]=g;k[i+(m+8)>>2]=g;break b}}else y=b;while(0);b=y+8|0;a=k[b>>2]|0;M=k[155]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){k[a+12>>2]=g;k[b>>2]=g;k[i+(m+8)>>2]=a;k[i+(m+12)>>2]=y;k[i+(m+24)>>2]=0;break}else Na()}else{M=h+m|0;k[i+4>>2]=M|3;M=i+(M+4)|0;k[M>>2]=k[M>>2]|1}while(0);M=i+8|0;return M|0}else q=m}else q=m}else q=-1;while(0);c=k[153]|0;if(c>>>0>=q>>>0){b=c-q|0;a=k[156]|0;if(b>>>0>15){k[156]=a+q;k[153]=b;k[a+(q+4)>>2]=b|1;k[a+c>>2]=b;k[a+4>>2]=q|3}else{k[153]=0;k[156]=0;k[a+4>>2]=c|3;M=a+(c+4)|0;k[M>>2]=k[M>>2]|1}M=a+8|0;return M|0}a=k[154]|0;if(a>>>0>q>>>0){L=a-q|0;k[154]=L;M=k[157]|0;k[157]=M+q;k[M+(q+4)>>2]=L|1;k[M+4>>2]=q|3;M=M+8|0;return M|0}do if(!(k[269]|0)){a=Ea(30)|0;if(!(a+-1&a)){k[271]=a;k[270]=a;k[272]=-1;k[273]=-1;k[274]=0;k[262]=0;y=(Pa(0)|0)&-16^1431655768;k[269]=y;break}else Na()}while(0);i=q+48|0;h=k[271]|0;j=q+47|0;g=h+j|0;h=0-h|0;l=g&h;if(l>>>0<=q>>>0){M=0;return M|0}a=k[261]|0;if((a|0)!=0?(t=k[259]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do if(!(k[262]&4)){a=k[157]|0;e:do if(a){e=1052;while(1){c=k[e>>2]|0;if(c>>>0<=a>>>0?(r=e+4|0,(c+(k[r>>2]|0)|0)>>>0>a>>>0):0){f=e;a=r;break}e=k[e+8>>2]|0;if(!e){v=174;break e}}c=g-(k[154]|0)&h;if(c>>>0<2147483647){e=Ba(c|0)|0;y=(e|0)==((k[f>>2]|0)+(k[a>>2]|0)|0);a=y?c:0;if(y){if((e|0)!=(-1|0)){w=e;p=a;v=194;break d}}else v=184}else a=0}else v=174;while(0);do if((v|0)==174){f=Ba(0)|0;if((f|0)!=(-1|0)){a=f;c=k[270]|0;e=c+-1|0;if(!(e&a))c=l;else c=l-a+(e+a&0-c)|0;a=k[259]|0;e=a+c|0;if(c>>>0>q>>>0&c>>>0<2147483647){y=k[261]|0;if((y|0)!=0?e>>>0<=a>>>0|e>>>0>y>>>0:0){a=0;break}e=Ba(c|0)|0;y=(e|0)==(f|0);a=y?c:0;if(y){w=f;p=a;v=194;break d}else v=184}else a=0}else a=0}while(0);f:do if((v|0)==184){f=0-c|0;do if(i>>>0>c>>>0&(c>>>0<2147483647&(e|0)!=(-1|0))?(u=k[271]|0,u=j-c+u&0-u,u>>>0<2147483647):0)if((Ba(u|0)|0)==(-1|0)){Ba(f|0)|0;break f}else{c=u+c|0;break}while(0);if((e|0)!=(-1|0)){w=e;p=c;v=194;break d}}while(0);k[262]=k[262]|4;v=191}else{a=0;v=191}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=Ba(l|0)|0,x=Ba(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(k[259]|0)+p|0;k[259]=a;if(a>>>0>(k[260]|0)>>>0)k[260]=a;g=k[157]|0;g:do if(g){f=1052;do{a=k[f>>2]|0;c=f+4|0;e=k[c>>2]|0;if((w|0)==(a+e|0)){B=a;C=c;D=e;E=f;v=204;break}f=k[f+8>>2]|0}while((f|0)!=0);if(((v|0)==204?(k[E+12>>2]&8|0)==0:0)?g>>>0>>0&g>>>0>=B>>>0:0){k[C>>2]=D+p;M=(k[154]|0)+p|0;L=g+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;k[157]=g+L;k[154]=K;k[g+(L+4)>>2]=K|1;k[g+(M+4)>>2]=40;k[158]=k[273];break}a=k[155]|0;if(w>>>0>>0){k[155]=w;a=w}c=w+p|0;f=1052;while(1){if((k[f>>2]|0)==(c|0)){e=f;c=f;v=212;break}f=k[f+8>>2]|0;if(!f){c=1052;break}}if((v|0)==212)if(!(k[c+12>>2]&8)){k[e>>2]=w;n=c+4|0;k[n>>2]=(k[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;j=w+(p+8)|0;j=(j&7|0)==0?0:0-j&7;b=w+(j+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;k[w+(n+4)>>2]=q|3;h:do if((b|0)!=(g|0)){if((b|0)==(k[156]|0)){M=(k[153]|0)+l|0;k[153]=M;k[156]=o;k[w+(m+4)>>2]=M|1;k[w+(M+m)>>2]=M;break}h=p+4|0;c=k[w+(h+j)>>2]|0;if((c&3|0)==1){i=c&-8;f=c>>>3;i:do if(c>>>0>=256){g=k[w+((j|24)+p)>>2]|0;d=k[w+(p+12+j)>>2]|0;do if((d|0)==(b|0)){e=j|16;d=w+(h+e)|0;c=k[d>>2]|0;if(!c){d=w+(e+p)|0;c=k[d>>2]|0;if(!c){J=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Na();else{k[d>>2]=0;J=c;break}}else{e=k[w+((j|8)+p)>>2]|0;if(e>>>0>>0)Na();a=e+12|0;if((k[a>>2]|0)!=(b|0))Na();c=d+8|0;if((k[c>>2]|0)==(b|0)){k[a>>2]=d;k[c>>2]=e;J=d;break}else Na()}while(0);if(!g)break;a=k[w+(p+28+j)>>2]|0;c=908+(a<<2)|0;do if((b|0)!=(k[c>>2]|0)){if(g>>>0<(k[155]|0)>>>0)Na();a=g+16|0;if((k[a>>2]|0)==(b|0))k[a>>2]=J;else k[g+20>>2]=J;if(!J)break i}else{k[c>>2]=J;if(J)break;k[152]=k[152]&~(1<>>0>>0)Na();k[J+24>>2]=g;b=j|16;a=k[w+(b+p)>>2]|0;do if(a)if(a>>>0>>0)Na();else{k[J+16>>2]=a;k[a+24>>2]=J;break}while(0);b=k[w+(h+b)>>2]|0;if(!b)break;if(b>>>0<(k[155]|0)>>>0)Na();else{k[J+20>>2]=b;k[b+24>>2]=J;break}}else{d=k[w+((j|8)+p)>>2]|0;e=k[w+(p+12+j)>>2]|0;c=644+(f<<1<<2)|0;do if((d|0)!=(c|0)){if(d>>>0>>0)Na();if((k[d+12>>2]|0)==(b|0))break;Na()}while(0);if((e|0)==(d|0)){k[151]=k[151]&~(1<>>0>>0)Na();a=e+8|0;if((k[a>>2]|0)==(b|0)){F=a;break}Na()}while(0);k[d+12>>2]=e;k[F>>2]=d}while(0);b=w+((i|j)+p)|0;e=i+l|0}else e=l;b=b+4|0;k[b>>2]=k[b>>2]&-2;k[w+(m+4)>>2]=e|1;k[w+(e+m)>>2]=e;b=e>>>3;if(e>>>0<256){a=b<<1;d=644+(a<<2)|0;c=k[151]|0;b=1<>2]|0;if(a>>>0>=(k[155]|0)>>>0){K=b;L=a;break}Na()}while(0);k[K>>2]=o;k[L+12>>2]=o;k[w+(m+8)>>2]=L;k[w+(m+12)>>2]=d;break}b=e>>>8;do if(!b)d=0;else{if(e>>>0>16777215){d=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;d=14-(J|K|d)+(L<>>15)|0;d=e>>>(d+7|0)&1|d<<1}while(0);b=908+(d<<2)|0;k[w+(m+28)>>2]=d;k[w+(m+20)>>2]=0;k[w+(m+16)>>2]=0;a=k[152]|0;c=1<>2]=o;k[w+(m+24)>>2]=b;k[w+(m+12)>>2]=o;k[w+(m+8)>>2]=o;break}b=k[b>>2]|0;j:do if((k[b+4>>2]&-8|0)!=(e|0)){d=e<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(e|0)){M=c;break j}else{d=d<<1;b=c}}if(a>>>0<(k[155]|0)>>>0)Na();else{k[a>>2]=o;k[w+(m+24)>>2]=b;k[w+(m+12)>>2]=o;k[w+(m+8)>>2]=o;break h}}else M=b;while(0);b=M+8|0;a=k[b>>2]|0;L=k[155]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){k[a+12>>2]=o;k[b>>2]=o;k[w+(m+8)>>2]=a;k[w+(m+12)>>2]=M;k[w+(m+24)>>2]=0;break}else Na()}else{M=(k[154]|0)+l|0;k[154]=M;k[157]=o;k[w+(m+4)>>2]=M|1}while(0);M=w+(n|8)|0;return M|0}else c=1052;while(1){a=k[c>>2]|0;if(a>>>0<=g>>>0?(b=k[c+4>>2]|0,d=a+b|0,d>>>0>g>>>0):0)break;c=k[c+8>>2]|0}e=a+(b+-39)|0;a=a+(b+-47+((e&7|0)==0?0:0-e&7))|0;e=g+16|0;a=a>>>0>>0?g:a;b=a+8|0;c=w+8|0;c=(c&7|0)==0?0:0-c&7;M=p+-40-c|0;k[157]=w+c;k[154]=M;k[w+(c+4)>>2]=M|1;k[w+(p+-36)>>2]=40;k[158]=k[273];c=a+4|0;k[c>>2]=27;k[b>>2]=k[263];k[b+4>>2]=k[264];k[b+8>>2]=k[265];k[b+12>>2]=k[266];k[263]=w;k[264]=p;k[266]=0;k[265]=b;b=a+28|0;k[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;k[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(g|0)){f=a-g|0;k[c>>2]=k[c>>2]&-2;k[g+4>>2]=f|1;k[a>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;d=644+(a<<2)|0;c=k[151]|0;b=1<>2]|0;if(a>>>0<(k[155]|0)>>>0)Na();else{G=b;H=a}}else{k[151]=c|b;G=644+(a+2<<2)|0;H=d}k[G>>2]=g;k[H+12>>2]=g;k[g+8>>2]=H;k[g+12>>2]=d;break}b=f>>>8;if(b)if(f>>>0>16777215)d=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;d=14-(K|L|d)+(M<>>15)|0;d=f>>>(d+7|0)&1|d<<1}else d=0;c=908+(d<<2)|0;k[g+28>>2]=d;k[g+20>>2]=0;k[e>>2]=0;b=k[152]|0;a=1<>2]=g;k[g+24>>2]=c;k[g+12>>2]=g;k[g+8>>2]=g;break}b=k[c>>2]|0;k:do if((k[b+4>>2]&-8|0)!=(f|0)){d=f<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(f|0)){I=c;break k}else{d=d<<1;b=c}}if(a>>>0<(k[155]|0)>>>0)Na();else{k[a>>2]=g;k[g+24>>2]=b;k[g+12>>2]=g;k[g+8>>2]=g;break g}}else I=b;while(0);b=I+8|0;a=k[b>>2]|0;M=k[155]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){k[a+12>>2]=g;k[b>>2]=g;k[g+8>>2]=a;k[g+12>>2]=I;k[g+24>>2]=0;break}else Na()}}else{M=k[155]|0;if((M|0)==0|w>>>0>>0)k[155]=w;k[263]=w;k[264]=p;k[266]=0;k[160]=k[269];k[159]=-1;b=0;do{M=b<<1;L=644+(M<<2)|0;k[644+(M+3<<2)>>2]=L;k[644+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;k[157]=w+M;k[154]=L;k[w+(M+4)>>2]=L|1;k[w+(p+-36)>>2]=40;k[158]=k[273]}while(0);b=k[154]|0;if(b>>>0>q>>>0){L=b-q|0;k[154]=L;M=k[157]|0;k[157]=M+q;k[M+(q+4)>>2]=L|1;k[M+4>>2]=q|3;M=M+8|0;return M|0}}M=qc()|0;k[M>>2]=12;M=0;return M|0}function Vc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;h=k[155]|0;if(b>>>0>>0)Na();c=k[a+-4>>2]|0;d=c&3;if((d|0)==1)Na();o=c&-8;q=a+(o+-8)|0;do if(!(c&1)){b=k[b>>2]|0;if(!d)return;i=-8-b|0;l=a+i|0;m=b+o|0;if(l>>>0>>0)Na();if((l|0)==(k[156]|0)){b=a+(o+-4)|0;c=k[b>>2]|0;if((c&3|0)!=3){u=l;f=m;break}k[153]=m;k[b>>2]=c&-2;k[a+(i+4)>>2]=m|1;k[q>>2]=m;return}e=b>>>3;if(b>>>0<256){d=k[a+(i+8)>>2]|0;c=k[a+(i+12)>>2]|0;b=644+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0>>0)Na();if((k[d+12>>2]|0)!=(l|0))Na()}if((c|0)==(d|0)){k[151]=k[151]&~(1<>>0>>0)Na();b=c+8|0;if((k[b>>2]|0)==(l|0))g=b;else Na()}else g=c+8|0;k[d+12>>2]=c;k[g>>2]=d;u=l;f=m;break}g=k[a+(i+24)>>2]|0;d=k[a+(i+12)>>2]|0;do if((d|0)==(l|0)){c=a+(i+20)|0;b=k[c>>2]|0;if(!b){c=a+(i+16)|0;b=k[c>>2]|0;if(!b){j=0;break}}while(1){d=b+20|0;e=k[d>>2]|0;if(e){b=e;c=d;continue}d=b+16|0;e=k[d>>2]|0;if(!e)break;else{b=e;c=d}}if(c>>>0>>0)Na();else{k[c>>2]=0;j=b;break}}else{e=k[a+(i+8)>>2]|0;if(e>>>0>>0)Na();b=e+12|0;if((k[b>>2]|0)!=(l|0))Na();c=d+8|0;if((k[c>>2]|0)==(l|0)){k[b>>2]=d;k[c>>2]=e;j=d;break}else Na()}while(0);if(g){b=k[a+(i+28)>>2]|0;c=908+(b<<2)|0;if((l|0)==(k[c>>2]|0)){k[c>>2]=j;if(!j){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();b=g+16|0;if((k[b>>2]|0)==(l|0))k[b>>2]=j;else k[g+20>>2]=j;if(!j){u=l;f=m;break}}c=k[155]|0;if(j>>>0>>0)Na();k[j+24>>2]=g;b=k[a+(i+16)>>2]|0;do if(b)if(b>>>0>>0)Na();else{k[j+16>>2]=b;k[b+24>>2]=j;break}while(0);b=k[a+(i+20)>>2]|0;if(b)if(b>>>0<(k[155]|0)>>>0)Na();else{k[j+20>>2]=b;k[b+24>>2]=j;u=l;f=m;break}else{u=l;f=m}}else{u=l;f=m}}else{u=b;f=o}while(0);if(u>>>0>=q>>>0)Na();b=a+(o+-4)|0;c=k[b>>2]|0;if(!(c&1))Na();if(!(c&2)){if((q|0)==(k[157]|0)){t=(k[154]|0)+f|0;k[154]=t;k[157]=u;k[u+4>>2]=t|1;if((u|0)!=(k[156]|0))return;k[156]=0;k[153]=0;return}if((q|0)==(k[156]|0)){t=(k[153]|0)+f|0;k[153]=t;k[156]=u;k[u+4>>2]=t|1;k[u+t>>2]=t;return}f=(c&-8)+f|0;e=c>>>3;do if(c>>>0>=256){g=k[a+(o+16)>>2]|0;b=k[a+(o|4)>>2]|0;do if((b|0)==(q|0)){c=a+(o+12)|0;b=k[c>>2]|0;if(!b){c=a+(o+8)|0;b=k[c>>2]|0;if(!b){p=0;break}}while(1){d=b+20|0;e=k[d>>2]|0;if(e){b=e;c=d;continue}d=b+16|0;e=k[d>>2]|0;if(!e)break;else{b=e;c=d}}if(c>>>0<(k[155]|0)>>>0)Na();else{k[c>>2]=0;p=b;break}}else{c=k[a+o>>2]|0;if(c>>>0<(k[155]|0)>>>0)Na();d=c+12|0;if((k[d>>2]|0)!=(q|0))Na();e=b+8|0;if((k[e>>2]|0)==(q|0)){k[d>>2]=b;k[e>>2]=c;p=b;break}else Na()}while(0);if(g){b=k[a+(o+20)>>2]|0;c=908+(b<<2)|0;if((q|0)==(k[c>>2]|0)){k[c>>2]=p;if(!p){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();b=g+16|0;if((k[b>>2]|0)==(q|0))k[b>>2]=p;else k[g+20>>2]=p;if(!p)break}c=k[155]|0;if(p>>>0>>0)Na();k[p+24>>2]=g;b=k[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Na();else{k[p+16>>2]=b;k[b+24>>2]=p;break}while(0);b=k[a+(o+12)>>2]|0;if(b)if(b>>>0<(k[155]|0)>>>0)Na();else{k[p+20>>2]=b;k[b+24>>2]=p;break}}}else{d=k[a+o>>2]|0;c=k[a+(o|4)>>2]|0;b=644+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0<(k[155]|0)>>>0)Na();if((k[d+12>>2]|0)!=(q|0))Na()}if((c|0)==(d|0)){k[151]=k[151]&~(1<>>0<(k[155]|0)>>>0)Na();b=c+8|0;if((k[b>>2]|0)==(q|0))n=b;else Na()}else n=c+8|0;k[d+12>>2]=c;k[n>>2]=d}while(0);k[u+4>>2]=f|1;k[u+f>>2]=f;if((u|0)==(k[156]|0)){k[153]=f;return}}else{k[b>>2]=c&-2;k[u+4>>2]=f|1;k[u+f>>2]=f}b=f>>>3;if(f>>>0<256){c=b<<1;e=644+(c<<2)|0;d=k[151]|0;b=1<>2]|0;if(c>>>0<(k[155]|0)>>>0)Na();else{r=b;s=c}}else{k[151]=d|b;r=644+(c+2<<2)|0;s=e}k[r>>2]=u;k[s+12>>2]=u;k[u+8>>2]=s;k[u+12>>2]=e;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;e=14-(q|r|e)+(s<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=908+(e<<2)|0;k[u+28>>2]=e;k[u+20>>2]=0;k[u+16>>2]=0;c=k[152]|0;d=1<>2]|0;b:do if((k[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){c=b+16+(e>>>31<<2)|0;d=k[c>>2]|0;if(!d)break;if((k[d+4>>2]&-8|0)==(f|0)){t=d;break b}else{e=e<<1;b=d}}if(c>>>0<(k[155]|0)>>>0)Na();else{k[c>>2]=u;k[u+24>>2]=b;k[u+12>>2]=u;k[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;c=k[b>>2]|0;s=k[155]|0;if(c>>>0>=s>>>0&t>>>0>=s>>>0){k[c+12>>2]=u;k[b>>2]=u;k[u+8>>2]=c;k[u+12>>2]=t;k[u+24>>2]=0;break}else Na()}else{k[152]=c|d;k[b>>2]=u;k[u+24>>2]=b;k[u+12>>2]=u;k[u+8>>2]=u}while(0);u=(k[159]|0)+-1|0;k[159]=u;if(!u)b=1060;else return;while(1){b=k[b>>2]|0;if(!b)break;else b=b+8|0}k[159]=-1;return}function Wc(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){a=Uc(b)|0;return a|0}if(b>>>0>4294967231){a=qc()|0;k[a>>2]=12;a=0;return a|0}c=Yc(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(c){a=c+8|0;return a|0}c=Uc(b)|0;if(!c){a=0;return a|0}d=k[a+-4>>2]|0;d=(d&-8)-((d&3|0)==0?8:4)|0;ed(c|0,a|0,(d>>>0>>0?d:b)|0)|0;Vc(a);a=c;return a|0}function Xc(a){a=a|0;var b=0;if(!a){b=0;return b|0}a=k[a+-4>>2]|0;b=a&3;if((b|0)==1){b=0;return b|0}b=(a&-8)-((b|0)==0?8:4)|0;return b|0}function Yc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=k[o>>2]|0;i=p&-8;l=a+i|0;h=k[155]|0;c=p&3;if(!((c|0)!=1&a>>>0>=h>>>0&a>>>0>>0))Na();d=a+(i|4)|0;e=k[d>>2]|0;if(!(e&1))Na();if(!c){if(b>>>0<256){a=0;return a|0}if(i>>>0>=(b+4|0)>>>0?(i-b|0)>>>0<=k[271]<<1>>>0:0)return a|0;a=0;return a|0}if(i>>>0>=b>>>0){c=i-b|0;if(c>>>0<=15)return a|0;k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=c|3;k[d>>2]=k[d>>2]|1;Zc(a+b|0,c);return a|0}if((l|0)==(k[157]|0)){c=(k[154]|0)+i|0;if(c>>>0<=b>>>0){a=0;return a|0}n=c-b|0;k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=n|1;k[157]=a+b;k[154]=n;return a|0}if((l|0)==(k[156]|0)){d=(k[153]|0)+i|0;if(d>>>0>>0){a=0;return a|0}c=d-b|0;if(c>>>0>15){k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=c|1;k[a+d>>2]=c;d=a+(d+4)|0;k[d>>2]=k[d>>2]&-2;d=a+b|0}else{k[o>>2]=p&1|d|2;d=a+(d+4)|0;k[d>>2]=k[d>>2]|1;d=0;c=0}k[153]=c;k[156]=d;return a|0}if(e&2){a=0;return a|0}m=(e&-8)+i|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;f=e>>>3;do if(e>>>0>=256){g=k[a+(i+24)>>2]|0;f=k[a+(i+12)>>2]|0;do if((f|0)==(l|0)){d=a+(i+20)|0;c=k[d>>2]|0;if(!c){d=a+(i+16)|0;c=k[d>>2]|0;if(!c){j=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Na();else{k[d>>2]=0;j=c;break}}else{e=k[a+(i+8)>>2]|0;if(e>>>0>>0)Na();c=e+12|0;if((k[c>>2]|0)!=(l|0))Na();d=f+8|0;if((k[d>>2]|0)==(l|0)){k[c>>2]=f;k[d>>2]=e;j=f;break}else Na()}while(0);if(g){c=k[a+(i+28)>>2]|0;d=908+(c<<2)|0;if((l|0)==(k[d>>2]|0)){k[d>>2]=j;if(!j){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();c=g+16|0;if((k[c>>2]|0)==(l|0))k[c>>2]=j;else k[g+20>>2]=j;if(!j)break}d=k[155]|0;if(j>>>0>>0)Na();k[j+24>>2]=g;c=k[a+(i+16)>>2]|0;do if(c)if(c>>>0>>0)Na();else{k[j+16>>2]=c;k[c+24>>2]=j;break}while(0);c=k[a+(i+20)>>2]|0;if(c)if(c>>>0<(k[155]|0)>>>0)Na();else{k[j+20>>2]=c;k[c+24>>2]=j;break}}}else{e=k[a+(i+8)>>2]|0;d=k[a+(i+12)>>2]|0;c=644+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Na();if((k[e+12>>2]|0)!=(l|0))Na()}if((d|0)==(e|0)){k[151]=k[151]&~(1<>>0>>0)Na();c=d+8|0;if((k[c>>2]|0)==(l|0))g=c;else Na()}else g=d+8|0;k[e+12>>2]=d;k[g>>2]=e}while(0);if(n>>>0<16){k[o>>2]=m|p&1|2;b=a+(m|4)|0;k[b>>2]=k[b>>2]|1;return a|0}else{k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=n|3;p=a+(m|4)|0;k[p>>2]=k[p>>2]|1;Zc(a+b|0,n);return a|0}return 0}function Zc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;c=k[a+4>>2]|0;do if(!(c&1)){j=k[a>>2]|0;if(!(c&3))return;n=a+(0-j)|0;m=j+b|0;i=k[155]|0;if(n>>>0>>0)Na();if((n|0)==(k[156]|0)){d=a+(b+4)|0;c=k[d>>2]|0;if((c&3|0)!=3){t=n;g=m;break}k[153]=m;k[d>>2]=c&-2;k[a+(4-j)>>2]=m|1;k[q>>2]=m;return}f=j>>>3;if(j>>>0<256){e=k[a+(8-j)>>2]|0;d=k[a+(12-j)>>2]|0;c=644+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Na();if((k[e+12>>2]|0)!=(n|0))Na()}if((d|0)==(e|0)){k[151]=k[151]&~(1<>>0>>0)Na();c=d+8|0;if((k[c>>2]|0)==(n|0))h=c;else Na()}else h=d+8|0;k[e+12>>2]=d;k[h>>2]=e;t=n;g=m;break}h=k[a+(24-j)>>2]|0;e=k[a+(12-j)>>2]|0;do if((e|0)==(n|0)){e=16-j|0;d=a+(e+4)|0;c=k[d>>2]|0;if(!c){d=a+e|0;c=k[d>>2]|0;if(!c){l=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Na();else{k[d>>2]=0;l=c;break}}else{f=k[a+(8-j)>>2]|0;if(f>>>0>>0)Na();c=f+12|0;if((k[c>>2]|0)!=(n|0))Na();d=e+8|0;if((k[d>>2]|0)==(n|0)){k[c>>2]=e;k[d>>2]=f;l=e;break}else Na()}while(0);if(h){c=k[a+(28-j)>>2]|0;d=908+(c<<2)|0;if((n|0)==(k[d>>2]|0)){k[d>>2]=l;if(!l){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();c=h+16|0;if((k[c>>2]|0)==(n|0))k[c>>2]=l;else k[h+20>>2]=l;if(!l){t=n;g=m;break}}e=k[155]|0;if(l>>>0>>0)Na();k[l+24>>2]=h;c=16-j|0;d=k[a+c>>2]|0;do if(d)if(d>>>0>>0)Na();else{k[l+16>>2]=d;k[d+24>>2]=l;break}while(0);c=k[a+(c+4)>>2]|0;if(c)if(c>>>0<(k[155]|0)>>>0)Na();else{k[l+20>>2]=c;k[c+24>>2]=l;t=n;g=m;break}else{t=n;g=m}}else{t=n;g=m}}else{t=a;g=b}while(0);i=k[155]|0;if(q>>>0>>0)Na();c=a+(b+4)|0;d=k[c>>2]|0;if(!(d&2)){if((q|0)==(k[157]|0)){s=(k[154]|0)+g|0;k[154]=s;k[157]=t;k[t+4>>2]=s|1;if((t|0)!=(k[156]|0))return;k[156]=0;k[153]=0;return}if((q|0)==(k[156]|0)){s=(k[153]|0)+g|0;k[153]=s;k[156]=t;k[t+4>>2]=s|1;k[t+s>>2]=s;return}g=(d&-8)+g|0;f=d>>>3;do if(d>>>0>=256){h=k[a+(b+24)>>2]|0;e=k[a+(b+12)>>2]|0;do if((e|0)==(q|0)){d=a+(b+20)|0;c=k[d>>2]|0;if(!c){d=a+(b+16)|0;c=k[d>>2]|0;if(!c){p=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Na();else{k[d>>2]=0;p=c;break}}else{f=k[a+(b+8)>>2]|0;if(f>>>0>>0)Na();c=f+12|0;if((k[c>>2]|0)!=(q|0))Na();d=e+8|0;if((k[d>>2]|0)==(q|0)){k[c>>2]=e;k[d>>2]=f;p=e;break}else Na()}while(0);if(h){c=k[a+(b+28)>>2]|0;d=908+(c<<2)|0;if((q|0)==(k[d>>2]|0)){k[d>>2]=p;if(!p){k[152]=k[152]&~(1<>>0<(k[155]|0)>>>0)Na();c=h+16|0;if((k[c>>2]|0)==(q|0))k[c>>2]=p;else k[h+20>>2]=p;if(!p)break}d=k[155]|0;if(p>>>0>>0)Na();k[p+24>>2]=h;c=k[a+(b+16)>>2]|0;do if(c)if(c>>>0>>0)Na();else{k[p+16>>2]=c;k[c+24>>2]=p;break}while(0);c=k[a+(b+20)>>2]|0;if(c)if(c>>>0<(k[155]|0)>>>0)Na();else{k[p+20>>2]=c;k[c+24>>2]=p;break}}}else{e=k[a+(b+8)>>2]|0;d=k[a+(b+12)>>2]|0;c=644+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Na();if((k[e+12>>2]|0)!=(q|0))Na()}if((d|0)==(e|0)){k[151]=k[151]&~(1<>>0>>0)Na();c=d+8|0;if((k[c>>2]|0)==(q|0))o=c;else Na()}else o=d+8|0;k[e+12>>2]=d;k[o>>2]=e}while(0);k[t+4>>2]=g|1;k[t+g>>2]=g;if((t|0)==(k[156]|0)){k[153]=g;return}}else{k[c>>2]=d&-2;k[t+4>>2]=g|1;k[t+g>>2]=g}c=g>>>3;if(g>>>0<256){d=c<<1;f=644+(d<<2)|0;e=k[151]|0;c=1<>2]|0;if(d>>>0<(k[155]|0)>>>0)Na();else{r=c;s=d}}else{k[151]=e|c;r=644+(d+2<<2)|0;s=f}k[r>>2]=t;k[s+12>>2]=t;k[t+8>>2]=s;k[t+12>>2]=f;return}c=g>>>8;if(c)if(g>>>0>16777215)f=31;else{r=(c+1048320|0)>>>16&8;s=c<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;c=908+(f<<2)|0;k[t+28>>2]=f;k[t+20>>2]=0;k[t+16>>2]=0;d=k[152]|0;e=1<>2]=t;k[t+24>>2]=c;k[t+12>>2]=t;k[t+8>>2]=t;return}c=k[c>>2]|0;a:do if((k[c+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=c+16+(f>>>31<<2)|0;e=k[d>>2]|0;if(!e)break;if((k[e+4>>2]&-8|0)==(g|0)){c=e;break a}else{f=f<<1;c=e}}if(d>>>0<(k[155]|0)>>>0)Na();k[d>>2]=t;k[t+24>>2]=c;k[t+12>>2]=t;k[t+8>>2]=t;return}while(0);d=c+8|0;e=k[d>>2]|0;s=k[155]|0;if(!(e>>>0>=s>>>0&c>>>0>=s>>>0))Na();k[e+12>>2]=t;k[d>>2]=t;k[t+8>>2]=e;k[t+12>>2]=c;k[t+24>>2]=0;return}function _c(){}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (L=d,a-c>>>0|0)|0}function ad(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+c|0;if((c|0)>=20){b=b&255;f=a&3;g=b|b<<8|b<<16|b<<24;e=d&~3;if(f){f=a+4-f|0;while((a|0)<(f|0)){i[a>>0]=b;a=a+1|0}}while((a|0)<(e|0)){k[a>>2]=g;a=a+4|0}}while((a|0)<(d|0)){i[a>>0]=b;a=a+1|0}return a-c|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b>>>c;return a>>>c|(b&(1<>>c-32|0}function cd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b<>>32-c;return a<>>0;return (L=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function ed(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return Da(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function fd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b>>c;return a>>>c|(b&(1<>c-32|0}function gd(a){a=a|0;var b=0;b=i[v+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[v+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[v+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[v+(a>>>24)>>0]|0)+24|0}function hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=ha(e,f)|0;d=a>>>16;a=(c>>>16)+(ha(e,d)|0)|0;e=b>>>16;b=ha(e,f)|0;return (L=(a>>>16)+(ha(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=$c(j^a,i^b,j,i)|0;g=L;a=f^j;b=e^i;return $c((nd(h,g,$c(f^c,e^d,f,e)|0,L,0)|0)^a,L^b,a,b)|0}function jd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=r;r=r+16|0;h=e|0;g=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;j=d>>31|((d|0)<0?-1:0)<<1;i=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;a=$c(g^a,f^b,g,f)|0;b=L;nd(a,b,$c(j^c,i^d,j,i)|0,L,h)|0;d=$c(k[h>>2]^g,k[h+4>>2]^f,g,f)|0;c=L;r=e;return (L=c,d)|0}function kd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=hd(e,f)|0;a=L;return (L=(ha(b,f)|0)+(ha(d,e)|0)+a|a&0,c|0|0)|0}function ld(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nd(a,b,c,d,0)|0}function md(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=r;r=r+16|0;e=f|0;nd(a,b,c,d,e)|0;r=f;return (L=k[e+4>>2]|0,k[e>>2]|0)|0}function nd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;l=a;i=b;j=i;g=c;n=d;h=n;if(!j){f=(e|0)!=0;if(!h){if(f){k[e>>2]=(l>>>0)%(g>>>0);k[e+4>>2]=0}n=0;e=(l>>>0)/(g>>>0)>>>0;return (L=n,e)|0}else{if(!f){n=0;e=0;return (L=n,e)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;e=0;return (L=n,e)|0}}f=(h|0)==0;do if(g){if(!f){f=(ja(h|0)|0)-(ja(j|0)|0)|0;if(f>>>0<=31){m=f+1|0;h=31-f|0;b=f-31>>31;g=m;a=l>>>(m>>>0)&b|j<>>(m>>>0)&b;f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;n=0;e=0;return (L=n,e)|0}f=g-1|0;if(f&g){h=(ja(g|0)|0)+33-(ja(j|0)|0)|0;p=64-h|0;m=32-h|0;i=m>>31;o=h-32|0;b=o>>31;g=h;a=m-1>>31&j>>>(o>>>0)|(j<>>(h>>>0))&b;b=b&j>>>(h>>>0);f=l<>>(o>>>0))&i|l<>31;break}if(e){k[e>>2]=f&l;k[e+4>>2]=0}if((g|0)==1){o=i|b&0;p=a|0|0;return (L=o,p)|0}else{p=gd(g|0)|0;o=j>>>(p>>>0)|0;p=j<<32-p|l>>>(p>>>0)|0;return (L=o,p)|0}}else{if(f){if(e){k[e>>2]=(j>>>0)%(g>>>0);k[e+4>>2]=0}o=0;p=(j>>>0)/(g>>>0)>>>0;return (L=o,p)|0}if(!l){if(e){k[e>>2]=0;k[e+4>>2]=(j>>>0)%(h>>>0)}o=0;p=(j>>>0)/(h>>>0)>>>0;return (L=o,p)|0}f=h-1|0;if(!(f&h)){if(e){k[e>>2]=a|0;k[e+4>>2]=f&j|b&0}o=0;p=j>>>((gd(h|0)|0)>>>0);return (L=o,p)|0}f=(ja(h|0)|0)-(ja(j|0)|0)|0;if(f>>>0<=30){b=f+1|0;h=31-f|0;g=b;a=j<>>(b>>>0);b=j>>>(b>>>0);f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;o=0;p=0;return (L=o,p)|0}while(0);if(!g){j=h;i=0;h=0}else{m=c|0|0;l=n|d&0;j=dd(m|0,l|0,-1,-1)|0;c=L;i=h;h=0;do{d=i;i=f>>>31|i<<1;f=h|f<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;$c(j,c,d,n)|0;p=L;o=p>>31|((p|0)<0?-1:0)<<1;h=o&1;a=$c(d,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=L;g=g-1|0}while((g|0)!=0);j=i;i=0}g=0;if(e){k[e>>2]=a;k[e+4>>2]=b}o=(f|0)>>>31|(j|g)<<1|(g<<1|f>>>31)&0|i;p=(f<<1|0>>>31)&-2|h;return (L=o,p)|0}function od(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ua[a&7](b|0,c|0,d|0)|0}function pd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Va[a&3](b|0,c|0,d|0,e|0,f|0)}function qd(a,b){a=a|0;b=b|0;Wa[a&7](b|0)}function rd(a,b){a=a|0;b=b|0;return Xa[a&1](b|0)|0}function sd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ya[a&0](b|0,c|0,d|0)}function td(a){a=a|0;Za[a&3]()}function ud(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;_a[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function vd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return $a[a&1](b|0,c|0,d|0,e|0,f|0)|0}function wd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ab[a&3](b|0,c|0,d|0,e|0)}function xd(a,b,c){a=a|0;b=b|0;c=c|0;ka(0);return 0}function yd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ka(1)}function zd(a){a=a|0;ka(2)}function Ad(a){a=a|0;ka(3);return 0}function Bd(a,b,c){a=a|0;b=b|0;c=c|0;ka(4)}function Cd(){ka(5)}function Dd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ka(6)}function Ed(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ka(7);return 0}function Fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ka(8)} + +// EMSCRIPTEN_END_FUNCS +var Ua=[xd,ac,Qc,Jc,Ic,Kc,xd,xd];var Va=[yd,hc,gc,yd];var Wa=[zd,Xb,_b,Yb,Zb,$b,oc,Pc];var Xa=[Ad,Hc];var Ya=[Bd];var Za=[Cd,mc,nc,Cd];var _a=[Dd,jc,ic,Dd];var $a=[Ed,ob];var ab=[Fd,cc,dc,Fd];return{___cxa_can_catch:kc,_crn_get_levels:Db,_crn_get_uncompressed_size:Fb,_crn_decompress:Gb,_i64Add:dd,_crn_get_width:Bb,___cxa_is_pointer_type:lc,_i64Subtract:$c,_memset:ad,_malloc:Uc,_free:Vc,_memcpy:ed,_bitshift64Lshr:bd,_fflush:wc,_bitshift64Shl:cd,_crn_get_height:Cb,___errno_location:qc,_crn_get_dxt_format:Eb,runPostSets:_c,_emscripten_replace_memory:Ta,stackAlloc:bb,stackSave:cb,stackRestore:db,establishStackSpace:eb,setThrew:fb,setTempRet0:ib,getTempRet0:jb,dynCall_iiii:od,dynCall_viiiii:pd,dynCall_vi:qd,dynCall_ii:rd,dynCall_viii:sd,dynCall_v:td,dynCall_viiiiii:ud,dynCall_iiiiii:vd,dynCall_viiii:wd}}) + + +// EMSCRIPTEN_END_ASM +(e.Ya,e.Za,buffer);e.___cxa_can_catch=Z.___cxa_can_catch;e._crn_get_levels=Z._crn_get_levels;e.runPostSets=Z.runPostSets;e._crn_get_uncompressed_size=Z._crn_get_uncompressed_size;e._crn_decompress=Z._crn_decompress;var zc=e._i64Add=Z._i64Add;e._crn_get_height=Z._crn_get_height;e.___cxa_is_pointer_type=Z.___cxa_is_pointer_type; +var nb=e._i64Subtract=Z._i64Subtract,qb=e._memset=Z._memset,Ea=e._malloc=Z._malloc,Bc=e._memcpy=Z._memcpy,Xa=e._emscripten_replace_memory=Z._emscripten_replace_memory;e._crn_get_dxt_format=Z._crn_get_dxt_format;var rb=e._bitshift64Lshr=Z._bitshift64Lshr,Na=e._free=Z._free;e._fflush=Z._fflush;e._crn_get_width=Z._crn_get_width;e.___errno_location=Z.___errno_location;var sb=e._bitshift64Shl=Z._bitshift64Shl;e.dynCall_iiii=Z.dynCall_iiii;e.dynCall_viiiii=Z.dynCall_viiiii;e.dynCall_vi=Z.dynCall_vi; +e.dynCall_ii=Z.dynCall_ii;e.dynCall_viii=Z.dynCall_viii;e.dynCall_v=Z.dynCall_v;e.dynCall_viiiiii=Z.dynCall_viiiiii;e.dynCall_iiiiii=Z.dynCall_iiiiii;e.dynCall_viiii=Z.dynCall_viiii;n.aa=Z.stackAlloc;n.ua=Z.stackSave;n.ba=Z.stackRestore;n.Cd=Z.establishStackSpace;n.rb=Z.setTempRet0;n.fb=Z.getTempRet0;function ia(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}ia.prototype=Error();ia.prototype.constructor=ia; +var rd=null,jb=function sd(){e.calledRun||td();e.calledRun||(jb=sd)}; +e.callMain=e.zd=function(a){function b(){for(var a=0;3>a;a++)d.push(0)}assert(0==I,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(0==bb.length,"cannot call main when preRun functions remain to be called");a=a||[];Ha||(Ha=!0,ab(cb));var c=a.length+1,d=[D(hb(e.thisProgram),"i8",0)];b();for(var f=0;f> 1; - if (width < 1) { - width = 1; - } - height = height >> 1; - if (height < 1) { - height = 1; - } - offset += levelSize; - } - this._internalLoader.free(); - if (!this.preserveSource) - this.data = null; - return true; - }; - CompressedImage.prototype.style = function (renderer, baseTexture, glTexture) { - var gl = renderer.state.gl; - var levels = this.levels; - if (baseTexture.scaleMode === PIXI.SCALE_MODES.LINEAR) { - if (levels > 1) { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST); - } - else { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); - } - } - else { - if (levels > 1) { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_NEAREST); - } - else { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - } - } - return true; - }; - CompressedImage.prototype.loadFromArrayBuffer = function (arrayBuffer, crnLoad) { - var loaders = pixi_compressed_textures.Loaders; - if (!loaders || !loaders.length) { - throw "Registered compressed loaders is missing. Call `TextureSystem.initCompressed` before loading!"; - } - var selectedLoaderCtr = undefined; - for (var _i = 0, loaders_1 = loaders; _i < loaders_1.length; _i++) { - var loader = loaders_1[_i]; - if (!crnLoad) { - if (loader.test(arrayBuffer)) { - selectedLoaderCtr = loader; - break; - } - } - else { - if (loader.type === "CRN") { - selectedLoaderCtr = loader; - break; - } - } - } - if (selectedLoaderCtr) { - this._internalLoader = new selectedLoaderCtr(this); - return this._internalLoader.load(arrayBuffer); - } - else { - throw new Error("Compressed texture format is not recognized: " + this.src); - } - }; - return CompressedImage; - }(PIXI.resources.Resource)); - pixi_compressed_textures.CompressedImage = CompressedImage; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - var AbstractInternalLoader = (function () { - function AbstractInternalLoader(_image) { - if (_image === void 0) { _image = new pixi_compressed_textures.CompressedImage("unknown"); } - this._image = _image; - this._format = 0; - _image._internalLoader = this; - } - AbstractInternalLoader.prototype.free = function () { }; - ; - AbstractInternalLoader.test = function (arrayBuffer) { - return false; - }; - AbstractInternalLoader.type = "ABSTRACT"; - return AbstractInternalLoader; - }()); - pixi_compressed_textures.AbstractInternalLoader = AbstractInternalLoader; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - var _a; - var ASTC_HEADER_LENGTH = 16; - var ASTC_HEADER_DIM_X = 4; - var ASTC_HEADER_DIM_Y = 5; - var ASTC_HEADER_WIDTH = 7; - var ASTC_HEADER_HEIGHT = 10; - var ASTC_MAGIC = 0x5CA1AB13; - var COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0; - var COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1; - var COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2; - var COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3; - var COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4; - var COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5; - var COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6; - var COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7; - var COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8; - var COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9; - var COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA; - var COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB; - var COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC; - var COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD; - var COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0; - var COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1; - var COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2; - var COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3; - var COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4; - var COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5; - var COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6; - var COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7; - var COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8; - var COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9; - var COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA; - var COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB; - var COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC; - var COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD; - var ASTC_DIMS_TO_FORMAT = (_a = {}, - _a[4 * 4] = 0, - _a[5 * 4] = 1, - _a[5 * 5] = 2, - _a[6 * 5] = 3, - _a[6 * 6] = 4, - _a[8 * 5] = 5, - _a[8 * 6] = 6, - _a[8 * 8] = 7, - _a[10 * 5] = 8, - _a[10 * 6] = 9, - _a[10 * 8] = 10, - _a[10 * 10] = 11, - _a[12 * 10] = 12, - _a[12 * 12] = 13, - _a); - var ASTCLoader = (function (_super) { - __extends(ASTCLoader, _super); - function ASTCLoader(_image, useSRGB) { - if (useSRGB === void 0) { useSRGB = false; } - var _this = _super.call(this, _image) || this; - _this.useSRGB = useSRGB; - _this._blockSize = { x: 0, y: 0 }; - return _this; - } - ASTCLoader.prototype.load = function (buffer) { - if (!ASTCLoader.test(buffer)) { - throw "Invalid magic number in ASTC header"; - } - var header = new Uint8Array(buffer, 0, ASTC_HEADER_LENGTH); - var dim_x = header[ASTC_HEADER_DIM_X]; - var dim_y = header[ASTC_HEADER_DIM_Y]; - var width = (header[ASTC_HEADER_WIDTH]) + (header[ASTC_HEADER_WIDTH + 1] << 8) + (header[ASTC_HEADER_WIDTH + 2] << 16); - var height = (header[ASTC_HEADER_HEIGHT]) + (header[ASTC_HEADER_HEIGHT + 1] << 8) + (header[ASTC_HEADER_HEIGHT + 2] << 16); - var internalFormat = ASTC_DIMS_TO_FORMAT[dim_x * dim_y] + (this.useSRGB ? COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : COMPRESSED_RGBA_ASTC_4x4_KHR); - var astcData = new Uint8Array(buffer, ASTC_HEADER_LENGTH); - this._format = internalFormat; - this._blockSize.x = dim_x; - this._blockSize.y = dim_y; - var dest = this._image; - dest.init(dest.src, astcData, 'ASTC', width, height, 1, internalFormat); - return dest; - }; - ASTCLoader.test = function (buffer) { - var magic = new Int32Array(buffer, 0, 1); - return magic[0] === ASTC_MAGIC; - }; - ASTCLoader.prototype.levelBufferSize = function (width, height, mipLevel) { - if (mipLevel === void 0) { mipLevel = 0; } - var f_ = Math.floor; - var dim_x = this._blockSize.x; - var dim_y = this._blockSize.y; - return (f_((width + dim_x - 1) / dim_x) * f_((height + dim_y - 1) / dim_y)) << 4; - }; - ASTCLoader.type = "ASTC"; - return ASTCLoader; - }(pixi_compressed_textures.AbstractInternalLoader)); - pixi_compressed_textures.ASTCLoader = ASTCLoader; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -function fourCCToInt32(value) { - return value.charCodeAt(0) + - (value.charCodeAt(1) << 8) + - (value.charCodeAt(2) << 16) + - (value.charCodeAt(3) << 24); -} -function int32ToFourCC(value) { - return String.fromCharCode(value & 0xff, (value >> 8) & 0xff, (value >> 16) & 0xff, (value >> 24) & 0xff); -} -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - var _a; - var DDS_MAGIC = 0x20534444; - var DDSD_MIPMAPCOUNT = 0x20000; - var DDPF_FOURCC = 0x4; - var DDS_HEADER_LENGTH = 31; - var DDS_HEADER_MAGIC = 0; - var DDS_HEADER_SIZE = 1; - var DDS_HEADER_FLAGS = 2; - var DDS_HEADER_HEIGHT = 3; - var DDS_HEADER_WIDTH = 4; - var DDS_HEADER_MIPMAPCOUNT = 7; - var DDS_HEADER_PF_FLAGS = 20; - var DDS_HEADER_PF_FOURCC = 21; - var FOURCC_DXT1 = fourCCToInt32("DXT1"); - var FOURCC_DXT3 = fourCCToInt32("DXT3"); - var FOURCC_DXT5 = fourCCToInt32("DXT5"); - var FOURCC_ATC = fourCCToInt32("ATC "); - var FOURCC_ATCA = fourCCToInt32("ATCA"); - var FOURCC_ATCI = fourCCToInt32("ATCI"); - var COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; - var COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; - var COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; - var COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; - var COMPRESSED_RGB_ATC_WEBGL = 0x8C92; - var COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 0x8C93; - var COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE; - var FOURCC_TO_FORMAT = (_a = {}, - _a[FOURCC_DXT1] = COMPRESSED_RGB_S3TC_DXT1_EXT, - _a[FOURCC_DXT3] = COMPRESSED_RGBA_S3TC_DXT3_EXT, - _a[FOURCC_DXT5] = COMPRESSED_RGBA_S3TC_DXT5_EXT, - _a[FOURCC_ATC] = COMPRESSED_RGB_ATC_WEBGL, - _a[FOURCC_ATCA] = COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, - _a[FOURCC_ATCI] = COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, - _a); - var DDSLoader = (function (_super) { - __extends(DDSLoader, _super); - function DDSLoader(_image) { - return _super.call(this, _image) || this; - } - DDSLoader.prototype.load = function (arrayBuffer) { - if (!DDSLoader.test(arrayBuffer)) { - throw "Invalid magic number in DDS header"; - } - var header = new Int32Array(arrayBuffer, 0, DDS_HEADER_LENGTH); - if (!(header[DDS_HEADER_PF_FLAGS] & DDPF_FOURCC)) - throw "Unsupported format, must contain a FourCC code"; - var fourCC = header[DDS_HEADER_PF_FOURCC]; - var internalFormat = FOURCC_TO_FORMAT[fourCC] || -1; - if (internalFormat < 0) { - throw "Unsupported FourCC code: " + int32ToFourCC(fourCC); - } - var levels = 1; - if (header[DDS_HEADER_FLAGS] & DDSD_MIPMAPCOUNT) { - levels = Math.max(1, header[DDS_HEADER_MIPMAPCOUNT]); - } - var width = header[DDS_HEADER_WIDTH]; - var height = header[DDS_HEADER_HEIGHT]; - var dataOffset = header[DDS_HEADER_SIZE] + 4; - var dxtData = new Uint8Array(arrayBuffer, dataOffset); - var dest = this._image; - this._format = internalFormat; - dest.init(dest.src, dxtData, 'DDS', width, height, levels, internalFormat); - return dest; - }; - DDSLoader.test = function (buffer) { - var magic = new Int32Array(buffer, 0, 1); - return magic[0] === DDS_MAGIC; - }; - DDSLoader.prototype.levelBufferSize = function (width, height, mipLevel) { - if (mipLevel === void 0) { mipLevel = 0; } - switch (this._format) { - case COMPRESSED_RGB_S3TC_DXT1_EXT: - case COMPRESSED_RGB_ATC_WEBGL: - return ((width + 3) >> 2) * ((height + 3) >> 2) * 8; - case COMPRESSED_RGBA_S3TC_DXT3_EXT: - case COMPRESSED_RGBA_S3TC_DXT5_EXT: - case COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: - case COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: - return ((width + 3) >> 2) * ((height + 3) >> 2) * 16; - default: - return 0; - } - }; - DDSLoader.type = "DDS"; - return DDSLoader; - }(pixi_compressed_textures.AbstractInternalLoader)); - pixi_compressed_textures.DDSLoader = DDSLoader; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - var _a; - var COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00; - var COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01; - var COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02; - var COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03; - var COMPRESSED_RGB_ETC1_WEBGL = 0x8D64; - var PVR_FORMAT_2BPP_RGB = 0; - var PVR_FORMAT_2BPP_RGBA = 1; - var PVR_FORMAT_4BPP_RGB = 2; - var PVR_FORMAT_4BPP_RGBA = 3; - var PVR_FORMAT_ETC1 = 6; - var PVR_FORMAT_DXT1 = 7; - var PVR_FORMAT_DXT3 = 9; - var PVR_FORMAT_DXT5 = 5; - var PVR_HEADER_LENGTH = 13; - var PVR_MAGIC = 0x03525650; - var PVR_HEADER_MAGIC = 0; - var PVR_HEADER_FORMAT = 2; - var PVR_HEADER_HEIGHT = 6; - var PVR_HEADER_WIDTH = 7; - var PVR_HEADER_MIPMAPCOUNT = 11; - var PVR_HEADER_METADATA = 12; - var COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; - var COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; - var COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; - var COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; - var PVR_TO_FORMAT = (_a = {}, - _a[PVR_FORMAT_2BPP_RGB] = COMPRESSED_RGB_PVRTC_2BPPV1_IMG, - _a[PVR_FORMAT_2BPP_RGBA] = COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, - _a[PVR_FORMAT_4BPP_RGB] = COMPRESSED_RGB_PVRTC_4BPPV1_IMG, - _a[PVR_FORMAT_4BPP_RGBA] = COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, - _a[PVR_FORMAT_ETC1] = COMPRESSED_RGB_ETC1_WEBGL, - _a[PVR_FORMAT_DXT1] = COMPRESSED_RGB_S3TC_DXT1_EXT, - _a[PVR_FORMAT_DXT3] = COMPRESSED_RGBA_S3TC_DXT3_EXT, - _a[PVR_FORMAT_DXT5] = COMPRESSED_RGBA_S3TC_DXT5_EXT, - _a); - var PVRTCLoader = (function (_super) { - __extends(PVRTCLoader, _super); - function PVRTCLoader(_image) { - return _super.call(this, _image) || this; - } - PVRTCLoader.prototype.load = function (arrayBuffer) { - if (!pixi_compressed_textures.DDSLoader.test(arrayBuffer)) { - throw "Invalid magic number in PVR header"; - } - var header = new Int32Array(arrayBuffer, 0, PVR_HEADER_LENGTH); - var format = header[PVR_HEADER_FORMAT]; - var internalFormat = PVR_TO_FORMAT[format] || -1; - var width = header[PVR_HEADER_WIDTH]; - var height = header[PVR_HEADER_HEIGHT]; - var levels = header[PVR_HEADER_MIPMAPCOUNT]; - var dataOffset = header[PVR_HEADER_METADATA] + 52; - var pvrtcData = new Uint8Array(arrayBuffer, dataOffset); - var dest = this._image; - this._format = internalFormat; - dest.init(dest.src, pvrtcData, 'PVR', width, height, levels, internalFormat); - return dest; - }; - PVRTCLoader.test = function (buffer) { - var magic = new Int32Array(buffer, 0, 1); - return magic[0] === PVR_MAGIC; - }; - PVRTCLoader.prototype.levelBufferSize = function (width, height, mipLevel) { - if (mipLevel === void 0) { mipLevel = 0; } - switch (this._format) { - case COMPRESSED_RGB_S3TC_DXT1_EXT: - case COMPRESSED_RGB_ETC1_WEBGL: - return ((width + 3) >> 2) * ((height + 3) >> 2) * 8; - case COMPRESSED_RGBA_S3TC_DXT3_EXT: - case COMPRESSED_RGBA_S3TC_DXT5_EXT: - return ((width + 3) >> 2) * ((height + 3) >> 2) * 16; - case COMPRESSED_RGB_PVRTC_4BPPV1_IMG: - case COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: - return Math.floor((Math.max(width, 8) * Math.max(height, 8) * 4 + 7) / 8); - case COMPRESSED_RGB_PVRTC_2BPPV1_IMG: - case COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: - return Math.floor((Math.max(width, 16) * Math.max(height, 8) * 2 + 7) / 8); - default: - return 0; - } - }; - PVRTCLoader.type = "PVR"; - return PVRTCLoader; - }(pixi_compressed_textures.AbstractInternalLoader)); - pixi_compressed_textures.PVRTCLoader = PVRTCLoader; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - var _a, _b; - var BASIS_FORMAT = { - cTFETC1: 0, - cTFBC1: 2, - cTFBC3: 3, - cTFPVRTC1_4_RGB: 8, - cTFPVRTC1_4_RGBA: 9, - cTFASTC_4x4: 10, - cTFRGBA32: 11 - }; - var BASIS_HAS_ALPHA = (_a = {}, - _a[3] = true, - _a[9] = true, - _a[10] = true, - _a[11] = true, - _a); - var NON_COMPRESSED = -1; - var COMPRESSED_RGB_ETC1_WEBGL = 0x8D64; - var COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; - var COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; - var COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; - var COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; - var COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00; - var COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02; - var COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0; - var BASIS_TO_FMT = (_b = {}, - _b[BASIS_FORMAT.cTFRGBA32] = NON_COMPRESSED, - _b[BASIS_FORMAT.cTFETC1] = COMPRESSED_RGB_ETC1_WEBGL, - _b[BASIS_FORMAT.cTFBC1] = COMPRESSED_RGB_S3TC_DXT1_EXT, - _b[BASIS_FORMAT.cTFBC3] = COMPRESSED_RGBA_S3TC_DXT5_EXT, - _b[BASIS_FORMAT.cTFPVRTC1_4_RGB] = COMPRESSED_RGB_PVRTC_4BPPV1_IMG, - _b[BASIS_FORMAT.cTFPVRTC1_4_RGBA] = COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, - _b[BASIS_FORMAT.cTFASTC_4x4] = COMPRESSED_RGBA_ASTC_4x4_KHR, - _b); - var FMT_TO_BASIS = Object.keys(BASIS_TO_FMT).reduce(function (acc, next) { - acc[BASIS_TO_FMT[+next]] = +next; - return acc; - }, {}); - var BASISLoader = (function (_super) { - __extends(BASISLoader, _super); - function BASISLoader(_image) { - var _this = _super.call(this, _image) || this; - _this.type = "BASIS"; - _this._file = undefined; - return _this; - } - BASISLoader.test = function (array) { - var header = new Uint32Array(array, 0, 1)[0]; - var decoder = !!BASISLoader.BASIS_BINDING; - var isValid = header === 0x134273 && decoder; - var isSupported = BASISLoader.RGB_FORMAT && BASISLoader.RGBA_FORMAT; - if (!isValid && isSupported) { - console.warn("[BASIS LOADER] Is Supported, but transcoder not binded or file is not BASIS file!"); - } - return (isSupported && isValid); - }; - BASISLoader.bindTranscoder = function (fileCtr, ext) { - if (!fileCtr || !ext) { - throw "Invalid state! undef fileCtr or ext invalid!"; - } - ; - var plain = Object.keys(ext) - .reduce(function (acc, key) { - var val = ext[key]; - if (!val) { - return acc; - } - ; - return Object.assign(acc, val.__proto__); - }, {}); - var latestOp = undefined; - var lastestAlpha = undefined; - for (var v in plain) { - var native = plain[v]; - if (FMT_TO_BASIS[native] !== undefined) { - var basis = FMT_TO_BASIS[native]; - if (BASIS_HAS_ALPHA[basis]) { - lastestAlpha = { - native: native, name: v, basis: basis - }; - } - else { - latestOp = { - native: native, name: v, basis: basis - }; - } - } - } - BASISLoader.RGB_FORMAT = latestOp || lastestAlpha; - BASISLoader.RGBA_FORMAT = lastestAlpha || latestOp; - BASISLoader.BASIS_BINDING = fileCtr; - console.log("[BASISLoader] Supported formats:", "\nRGB:" + BASISLoader.RGB_FORMAT.name + "\nRGBA:" + BASISLoader.RGBA_FORMAT.name); - pixi_compressed_textures.RegisterCompressedLoader(BASISLoader); - pixi_compressed_textures.RegisterCompressedExtensions('basis'); - }; - BASISLoader.prototype.load = function (buffer) { - if (!BASISLoader.test(buffer)) { - throw "BASIS Transcoder not binded or transcoding not supported =(!"; - } - this._loadAsync(buffer); - return this._image; - }; - BASISLoader.prototype._loadAsync = function (buffer) { - return __awaiter(this, void 0, void 0, function () { - var startTime, BasisFileCtr, basisFile, width, height, levels, hasAlpha, dest, target, dst, _a, name; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - startTime = performance.now(); - BasisFileCtr = BASISLoader.BASIS_BINDING; - basisFile = new BasisFileCtr(new Uint8Array(buffer)); - return [4, basisFile.getImageWidth(0, 0)]; - case 1: - width = _b.sent(); - return [4, basisFile.getImageHeight(0, 0)]; - case 2: - height = _b.sent(); - levels = 1; - return [4, basisFile.getHasAlpha()]; - case 3: - hasAlpha = _b.sent(); - dest = this._image; - return [4, basisFile.startTranscoding()]; - case 4: - if (!(_b.sent())) { - throw "Transcoding error!"; - } - target = hasAlpha ? BASISLoader.RGBA_FORMAT : BASISLoader.RGB_FORMAT; - console.log("Grats! BASIS will be transcoded to:", target); - _a = Uint8Array.bind; - return [4, basisFile.getImageTranscodedSizeInBytes(0, 0, target.basis)]; - case 5: - dst = new (_a.apply(Uint8Array, [void 0, _b.sent()]))(); - return [4, basisFile.transcodeImage(dst, 0, 0, target.basis, !!0, !!0)]; - case 6: - if (!(_b.sent())) { - throw "Transcoding error!"; - } - console.log("[BASISLoader] Totla transcoding time:", performance.now() - startTime); - this._format = target.native; - this._file = basisFile; - name = target.name.replace("COMPRESSED_", ""); - return [2, dest.init(dest.src, dst, 'BASIS|' + name, width, height, levels, target.native)]; - } - }); - }); - }; - BASISLoader.prototype.levelBufferSize = function (width, height, level) { - return this._file ? this._file.getImageTranscodedSizeInBytes(0, level, FMT_TO_BASIS[this._format]) : undefined; - }; - BASISLoader.BASIS_BINDING = undefined; - return BASISLoader; - }(pixi_compressed_textures.AbstractInternalLoader)); - pixi_compressed_textures.BASISLoader = BASISLoader; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - var CRN_Module = window.CRN_Module; - function arrayBufferCopy(src, dst, dstByteOffset, numBytes) { - var dst32Offset = dstByteOffset / 4; - var tail = (numBytes % 4); - var src32 = new Uint32Array(src.buffer, 0, (numBytes - tail) / 4); - var dst32 = new Uint32Array(dst.buffer); - for (var ii = 0; ii < src32.length; ii++) { - dst32[dst32Offset + ii] = src32[ii]; - } - for (var i = numBytes - tail; i < numBytes; i++) { - dst[dstByteOffset + i] = src[i]; - } - } - var COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; - var COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; - var COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; - var DXT_FORMAT_MAP = [ - COMPRESSED_RGB_S3TC_DXT1_EXT, - COMPRESSED_RGBA_S3TC_DXT3_EXT, - COMPRESSED_RGBA_S3TC_DXT5_EXT - ]; - var CRNLoader = (function (_super) { - __extends(CRNLoader, _super); - function CRNLoader(_image) { - return _super.call(this, _image) || this; - } - CRNLoader.prototype.load = function (arrayBuffer) { - var srcSize = arrayBuffer.byteLength; - var bytes = new Uint8Array(arrayBuffer); - var src = CRN_Module._malloc(srcSize); - arrayBufferCopy(bytes, CRN_Module.HEAPU8, src, srcSize); - var width = CRN_Module._crn_get_width(src, srcSize); - var height = CRN_Module._crn_get_height(src, srcSize); - var levels = CRN_Module._crn_get_levels(src, srcSize); - var format = CRN_Module._crn_get_dxt_format(src, srcSize); - var dstSize = CRN_Module._crn_get_uncompressed_size(src, srcSize, 0); - var dst = CRN_Module._malloc(dstSize); - CRN_Module._crn_decompress(src, srcSize, dst, dstSize, 0); - var dxtData = new Uint8Array(CRN_Module.HEAPU8.buffer, dst, dstSize); - var internalFormat = DXT_FORMAT_MAP[format]; - var dest = this._image; - this._format = internalFormat; - this._caches = [src, dst]; - return dest.init(dest.src, dxtData, 'CRN', width, height, levels, internalFormat); - }; - CRNLoader.prototype.levelBufferSize = function (width, height, mipLevel) { - if (mipLevel === void 0) { mipLevel = 0; } - return pixi_compressed_textures.DDSLoader.prototype.levelBufferSize.call(this, width, height, mipLevel); - }; - CRNLoader.prototype.free = function () { - CRN_Module._free(this._caches[0]); - CRN_Module._free(this._caches[1]); - }; - CRNLoader.test = function (buffer) { - return !!CRN_Module; - }; - CRNLoader.type = "CRN"; - return CRNLoader; - }(pixi_compressed_textures.AbstractInternalLoader)); - pixi_compressed_textures.CRNLoader = CRNLoader; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - pixi_compressed_textures.Loaders = [ - pixi_compressed_textures.DDSLoader, - pixi_compressed_textures.PVRTCLoader, - pixi_compressed_textures.ASTCLoader, - pixi_compressed_textures.CRNLoader - ]; - PIXI.systems.TextureSystem.prototype.initCompressed = function () { - var gl = this.gl; - if (!this.compressedExtensions) { - this.compressedExtensions = { - dxt: gl.getExtension("WEBGL_compressed_texture_s3tc"), - pvrtc: (gl.getExtension("WEBGL_compressed_texture_pvrtc") || gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc")), - astc: gl.getExtension("WEBGL_compressed_texture_astc"), - atc: gl.getExtension("WEBGL_compressed_texture_atc"), - etc1: gl.getExtension("WEBGL_compressed_texture_etc1") - }; - this.compressedExtensions.crn = this.compressedExtensions.dxt; - } - }; - function RegisterCompressedLoader() { - var loaders = []; - for (var _i = 0; _i < arguments.length; _i++) { - loaders[_i] = arguments[_i]; - } - pixi_compressed_textures.Loaders = pixi_compressed_textures.Loaders || []; - for (var e in loaders) { - if (pixi_compressed_textures.Loaders.indexOf(loaders[e]) < 0) { - pixi_compressed_textures.Loaders.push(loaders[e]); - } - } - } - pixi_compressed_textures.RegisterCompressedLoader = RegisterCompressedLoader; - function detectExtensions(renderer, resolution) { - var extensions = []; - if (renderer instanceof PIXI.Renderer) { - renderer.texture.initCompressed(); - var data = renderer.texture.compressedExtensions; - if (data.dxt) - extensions.push('.dds'); - if (data.pvrtc) - extensions.push('.pvr'); - if (data.atc) - extensions.push('.atc'); - if (data.astc) - extensions.push('.astc'); - if (data.etc1) - extensions.push('.etc1'); - } - resolution = resolution || renderer.resolution; - var res = "@" + resolution + "x"; - var ext = extensions.slice(0); - while (ext.length > 0) { - extensions.push(res + ext.pop()); - } - extensions.push(res + ".png"); - extensions.push(res + ".jpg"); - extensions.push(res + ".json"); - extensions.push(res + ".atlas"); - return extensions; - } - pixi_compressed_textures.detectExtensions = detectExtensions; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - var Resource = PIXI.LoaderResource; - pixi_compressed_textures.TEXTURE_EXTENSIONS = []; - function RegisterCompressedExtensions() { - var exts = []; - for (var _i = 0; _i < arguments.length; _i++) { - exts[_i] = arguments[_i]; - } - for (var e in exts) { - if (pixi_compressed_textures.TEXTURE_EXTENSIONS.indexOf(exts[e]) < 0) { - pixi_compressed_textures.TEXTURE_EXTENSIONS.push(exts[e]); - Resource.setExtensionXhrType(exts[e], Resource.XHR_RESPONSE_TYPE.BUFFER); - } - } - } - pixi_compressed_textures.RegisterCompressedExtensions = RegisterCompressedExtensions; - var ImageParser = (function () { - function ImageParser() { - } - ImageParser.use = function (resource, next) { - var url = resource.url; - var idx = url.lastIndexOf('.'); - var amper = url.lastIndexOf('?'); - var ext = url.substring(idx + 1, amper > 0 ? amper : url.length); - if (pixi_compressed_textures.TEXTURE_EXTENSIONS.indexOf(ext) < 0) { - next(); - return; - } - if (!resource.data) { - throw new Error("compressedImageParser middleware for PixiJS v5 must be specified in loader.use()" + - " and must have resource.data when completed"); - } - if (resource.compressedImage) { - next(); - return; - } - resource.compressedImage = new pixi_compressed_textures.CompressedImage(resource.url); - resource.compressedImage.loadFromArrayBuffer(resource.data, ext === 'crn'); - resource.isCompressedImage = true; - resource.texture = fromResource(resource.compressedImage, resource.url, resource.name); - next(); - }; - return ImageParser; - }()); - pixi_compressed_textures.ImageParser = ImageParser; - function fromResource(resource, imageUrl, name) { - var baseTexture = new PIXI.BaseTexture(resource, { - scaleMode: PIXI.settings.SCALE_MODE, - resolution: PIXI.utils.getResolutionOfUrl(imageUrl), - }); - var texture = new PIXI.Texture(baseTexture); - if (!name) { - name = imageUrl; - } - PIXI.BaseTexture.addToCache(texture.baseTexture, name); - PIXI.Texture.addToCache(texture, name); - if (name !== imageUrl) { - PIXI.BaseTexture.addToCache(texture.baseTexture, imageUrl); - PIXI.Texture.addToCache(texture, imageUrl); - } - return texture; - } - RegisterCompressedExtensions('dds', 'crn', 'pvr', 'etc1', 'astc'); - PIXI.Loader.registerPlugin(ImageParser); -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - function extensionChooser(supportedExtensions) { - if (supportedExtensions === void 0) { supportedExtensions = []; } - return function (resource, next) { - var ext = resource.metadata.choice; - if (!ext) { - return next(); - } - var url = resource.url; - var k = 0; - if (!resource._defaultUrlChoice) { - resource._defaultUrlChoice = url; - k = url.lastIndexOf("."); - if (k >= 0) { - resource._baseUrl = url.substring(0, k); - if (k >= 4 && url.substring(k - 3, 3) === '@1x') { - resource._baseUrl = url.substring(0, k); - } - } - else { - return next(); - } - } - for (var i = ext.length - 1; i >= 0; i--) { - url = resource._baseUrl + ext[i]; - var isSupported = false; - for (var j = 0; j < supportedExtensions.length; j++) { - if (ext[i] === supportedExtensions[j]) { - resource.url = url; - var pureExt = ext[i]; - if (pureExt.indexOf('@') > -1) { - pureExt = pureExt.replace(/@[0-9.]*x/, ""); - } - k = pureExt.indexOf('.'); - if (k >= 0) { - pureExt = pureExt.substring(k + 1); - } - resource.extension = pureExt; - resource.loadType = resource._determineLoadType(); - next(); - return; - } - } - } - next(); - }; - } - pixi_compressed_textures.extensionChooser = extensionChooser; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - var ExtensionFixer = (function () { - function ExtensionFixer() { - } - ExtensionFixer.use = function (resource, next) { - if (resource.texture && resource._defaultUrlChoice && resource._defaultUrl !== resource.url) { - var texture = resource.texture; - var baseTexture = texture.baseTexture; - var oldUrl = resource.url; - var newUrl = resource._defaultUrlChoice; - var ind = baseTexture.textureCacheIds.indexOf(oldUrl); - if (ind >= 0) { - baseTexture.textureCacheIds[ind] = newUrl; - delete PIXI.utils.BaseTextureCache[resource.url]; - PIXI.utils.BaseTextureCache[newUrl] = baseTexture; - } - ind = texture.textureCacheIds.indexOf(oldUrl); - if (ind >= 0) { - texture.textureCacheIds[ind] = newUrl; - delete PIXI.utils.TextureCache[resource.url]; - PIXI.utils.TextureCache[newUrl] = baseTexture; - } - } - next(); - }; - return ExtensionFixer; - }()); - pixi_compressed_textures.ExtensionFixer = ExtensionFixer; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); -var pixi_compressed_textures; -(function (pixi_compressed_textures) { - PIXI.compressedTextures = pixi_compressed_textures; -})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + function loadFromArrayBuffer(arrayBuffer, src, crnLoad) { + return new CompressedImage(src).loadFromArrayBuffer(arrayBuffer, crnLoad); + } + pixi_compressed_textures.loadFromArrayBuffer = loadFromArrayBuffer; + var CompressedImage = (function (_super) { + __extends(CompressedImage, _super); + function CompressedImage(src, data, type, width, height, levels, internalFormat) { + var _this = _super.call(this) || this; + _this.complete = false; + _this.isCompressedImage = true; + _this.preserveSource = true; + _this.onload = null; + _this.baseTexture = null; + _this.init(src, data, type, width, height, levels, internalFormat); + return _this; + } + CompressedImage.prototype.init = function (src, data, type, width, height, levels, internalFormat) { + if (width === void 0) { width = -1; } + if (height === void 0) { height = -1; } + this.src = src; + this.resize(width, height); + this._width = width; + this._height = height; + this.data = data; + this.type = type; + this.levels = levels; + this.internalFormat = internalFormat; + var oldComplete = this.complete; + this.complete = !!data; + if (!oldComplete && this.complete && this.onload) { + this.onload({ target: this }); + } + this.update(); + return this; + }; + CompressedImage.prototype.dispose = function () { + this.data = null; + }; + CompressedImage.prototype.bind = function (baseTexture) { + baseTexture.premultiplyAlpha = false; + _super.prototype.bind.call(this, baseTexture); + }; + CompressedImage.prototype.upload = function (renderer, baseTexture, glTexture) { + var gl = renderer.state.gl; + glTexture.compressed = false; + renderer.texture.initCompressed(); + if (this.data === null) { + throw "Trying to create a second (or more) webgl texture from the same CompressedImage : " + this.src; + } + var levels = this.levels; + var width = this.width; + var height = this.height; + var offset = 0; + for (var i = 0; i < levels; ++i) { + var levelSize = this._internalLoader.levelBufferSize(width, height, i); + var dxtLevel = new Uint8Array(this.data.buffer, this.data.byteOffset + offset, levelSize); + gl.compressedTexImage2D(gl.TEXTURE_2D, i, this.internalFormat, width, height, 0, dxtLevel); + width = width >> 1; + if (width < 1) { + width = 1; + } + height = height >> 1; + if (height < 1) { + height = 1; + } + offset += levelSize; + } + this._internalLoader.free(); + if (!this.preserveSource) + this.data = null; + return true; + }; + CompressedImage.prototype.style = function (renderer, baseTexture, glTexture) { + var gl = renderer.state.gl; + var levels = this.levels; + if (baseTexture.scaleMode === PIXI.SCALE_MODES.LINEAR) { + if (levels > 1) { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST); + } + else { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + } + } + else { + if (levels > 1) { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_NEAREST); + } + else { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + } + } + return true; + }; + CompressedImage.prototype.loadFromArrayBuffer = function (arrayBuffer, crnLoad) { + var loaders = pixi_compressed_textures.Loaders; + if (!loaders || !loaders.length) { + throw "Registered compressed loaders is missing. Call `TextureSystem.initCompressed` before loading!"; + } + var selectedLoaderCtr = undefined; + for (var _i = 0, loaders_1 = loaders; _i < loaders_1.length; _i++) { + var loader = loaders_1[_i]; + if (!crnLoad) { + if (loader.test(arrayBuffer)) { + selectedLoaderCtr = loader; + break; + } + } + else { + if (loader.type === "CRN") { + selectedLoaderCtr = loader; + break; + } + } + } + if (selectedLoaderCtr) { + this._internalLoader = new selectedLoaderCtr(this); + return this._internalLoader.load(arrayBuffer); + } + else { + throw new Error("Compressed texture format is not recognized: " + this.src); + } + }; + return CompressedImage; + }(PIXI.resources.Resource)); + pixi_compressed_textures.CompressedImage = CompressedImage; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + var AbstractInternalLoader = (function () { + function AbstractInternalLoader(_image) { + if (_image === void 0) { _image = new pixi_compressed_textures.CompressedImage("unknown"); } + this._image = _image; + this._format = 0; + _image._internalLoader = this; + } + AbstractInternalLoader.prototype.free = function () { }; + ; + AbstractInternalLoader.test = function (arrayBuffer) { + return false; + }; + AbstractInternalLoader.type = "ABSTRACT"; + return AbstractInternalLoader; + }()); + pixi_compressed_textures.AbstractInternalLoader = AbstractInternalLoader; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + var _a; + var ASTC_HEADER_LENGTH = 16; + var ASTC_HEADER_DIM_X = 4; + var ASTC_HEADER_DIM_Y = 5; + var ASTC_HEADER_WIDTH = 7; + var ASTC_HEADER_HEIGHT = 10; + var ASTC_MAGIC = 0x5CA1AB13; + var COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0; + var COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1; + var COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2; + var COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3; + var COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4; + var COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5; + var COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6; + var COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7; + var COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8; + var COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9; + var COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA; + var COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB; + var COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC; + var COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD; + var COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0; + var COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1; + var COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2; + var COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3; + var COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4; + var COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5; + var COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6; + var COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7; + var COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8; + var COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9; + var COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA; + var COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB; + var COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC; + var COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD; + var ASTC_DIMS_TO_FORMAT = (_a = {}, + _a[4 * 4] = 0, + _a[5 * 4] = 1, + _a[5 * 5] = 2, + _a[6 * 5] = 3, + _a[6 * 6] = 4, + _a[8 * 5] = 5, + _a[8 * 6] = 6, + _a[8 * 8] = 7, + _a[10 * 5] = 8, + _a[10 * 6] = 9, + _a[10 * 8] = 10, + _a[10 * 10] = 11, + _a[12 * 10] = 12, + _a[12 * 12] = 13, + _a); + var ASTCLoader = (function (_super) { + __extends(ASTCLoader, _super); + function ASTCLoader(_image, useSRGB) { + if (useSRGB === void 0) { useSRGB = false; } + var _this = _super.call(this, _image) || this; + _this.useSRGB = useSRGB; + _this._blockSize = { x: 0, y: 0 }; + return _this; + } + ASTCLoader.prototype.load = function (buffer) { + if (!ASTCLoader.test(buffer)) { + throw "Invalid magic number in ASTC header"; + } + var header = new Uint8Array(buffer, 0, ASTC_HEADER_LENGTH); + var dim_x = header[ASTC_HEADER_DIM_X]; + var dim_y = header[ASTC_HEADER_DIM_Y]; + var width = (header[ASTC_HEADER_WIDTH]) + (header[ASTC_HEADER_WIDTH + 1] << 8) + (header[ASTC_HEADER_WIDTH + 2] << 16); + var height = (header[ASTC_HEADER_HEIGHT]) + (header[ASTC_HEADER_HEIGHT + 1] << 8) + (header[ASTC_HEADER_HEIGHT + 2] << 16); + var internalFormat = ASTC_DIMS_TO_FORMAT[dim_x * dim_y] + (this.useSRGB ? COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : COMPRESSED_RGBA_ASTC_4x4_KHR); + var astcData = new Uint8Array(buffer, ASTC_HEADER_LENGTH); + this._format = internalFormat; + this._blockSize.x = dim_x; + this._blockSize.y = dim_y; + var dest = this._image; + dest.init(dest.src, astcData, 'ASTC', width, height, 1, internalFormat); + return dest; + }; + ASTCLoader.test = function (buffer) { + var magic = new Int32Array(buffer, 0, 1); + return magic[0] === ASTC_MAGIC; + }; + ASTCLoader.prototype.levelBufferSize = function (width, height, mipLevel) { + if (mipLevel === void 0) { mipLevel = 0; } + var f_ = Math.floor; + var dim_x = this._blockSize.x; + var dim_y = this._blockSize.y; + return (f_((width + dim_x - 1) / dim_x) * f_((height + dim_y - 1) / dim_y)) << 4; + }; + ASTCLoader.type = "ASTC"; + return ASTCLoader; + }(pixi_compressed_textures.AbstractInternalLoader)); + pixi_compressed_textures.ASTCLoader = ASTCLoader; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +function fourCCToInt32(value) { + return value.charCodeAt(0) + + (value.charCodeAt(1) << 8) + + (value.charCodeAt(2) << 16) + + (value.charCodeAt(3) << 24); +} +function int32ToFourCC(value) { + return String.fromCharCode(value & 0xff, (value >> 8) & 0xff, (value >> 16) & 0xff, (value >> 24) & 0xff); +} +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + var _a; + var DDS_MAGIC = 0x20534444; + var DDSD_MIPMAPCOUNT = 0x20000; + var DDPF_FOURCC = 0x4; + var DDS_HEADER_LENGTH = 31; + var DDS_HEADER_MAGIC = 0; + var DDS_HEADER_SIZE = 1; + var DDS_HEADER_FLAGS = 2; + var DDS_HEADER_HEIGHT = 3; + var DDS_HEADER_WIDTH = 4; + var DDS_HEADER_MIPMAPCOUNT = 7; + var DDS_HEADER_PF_FLAGS = 20; + var DDS_HEADER_PF_FOURCC = 21; + var FOURCC_DXT1 = fourCCToInt32("DXT1"); + var FOURCC_DXT3 = fourCCToInt32("DXT3"); + var FOURCC_DXT5 = fourCCToInt32("DXT5"); + var FOURCC_ATC = fourCCToInt32("ATC "); + var FOURCC_ATCA = fourCCToInt32("ATCA"); + var FOURCC_ATCI = fourCCToInt32("ATCI"); + var COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; + var COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; + var COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; + var COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; + var COMPRESSED_RGB_ATC_WEBGL = 0x8C92; + var COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 0x8C93; + var COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE; + var FOURCC_TO_FORMAT = (_a = {}, + _a[FOURCC_DXT1] = COMPRESSED_RGB_S3TC_DXT1_EXT, + _a[FOURCC_DXT3] = COMPRESSED_RGBA_S3TC_DXT3_EXT, + _a[FOURCC_DXT5] = COMPRESSED_RGBA_S3TC_DXT5_EXT, + _a[FOURCC_ATC] = COMPRESSED_RGB_ATC_WEBGL, + _a[FOURCC_ATCA] = COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, + _a[FOURCC_ATCI] = COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, + _a); + var DDSLoader = (function (_super) { + __extends(DDSLoader, _super); + function DDSLoader(_image) { + return _super.call(this, _image) || this; + } + DDSLoader.prototype.load = function (arrayBuffer) { + if (!DDSLoader.test(arrayBuffer)) { + throw "Invalid magic number in DDS header"; + } + var header = new Int32Array(arrayBuffer, 0, DDS_HEADER_LENGTH); + if (!(header[DDS_HEADER_PF_FLAGS] & DDPF_FOURCC)) + throw "Unsupported format, must contain a FourCC code"; + var fourCC = header[DDS_HEADER_PF_FOURCC]; + var internalFormat = FOURCC_TO_FORMAT[fourCC] || -1; + if (internalFormat < 0) { + throw "Unsupported FourCC code: " + int32ToFourCC(fourCC); + } + var levels = 1; + if (header[DDS_HEADER_FLAGS] & DDSD_MIPMAPCOUNT) { + levels = Math.max(1, header[DDS_HEADER_MIPMAPCOUNT]); + } + var width = header[DDS_HEADER_WIDTH]; + var height = header[DDS_HEADER_HEIGHT]; + var dataOffset = header[DDS_HEADER_SIZE] + 4; + var dxtData = new Uint8Array(arrayBuffer, dataOffset); + var dest = this._image; + this._format = internalFormat; + dest.init(dest.src, dxtData, 'DDS', width, height, levels, internalFormat); + return dest; + }; + DDSLoader.test = function (buffer) { + var magic = new Int32Array(buffer, 0, 1); + return magic[0] === DDS_MAGIC; + }; + DDSLoader.prototype.levelBufferSize = function (width, height, mipLevel) { + if (mipLevel === void 0) { mipLevel = 0; } + switch (this._format) { + case COMPRESSED_RGB_S3TC_DXT1_EXT: + case COMPRESSED_RGB_ATC_WEBGL: + return ((width + 3) >> 2) * ((height + 3) >> 2) * 8; + case COMPRESSED_RGBA_S3TC_DXT3_EXT: + case COMPRESSED_RGBA_S3TC_DXT5_EXT: + case COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: + case COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: + return ((width + 3) >> 2) * ((height + 3) >> 2) * 16; + default: + return 0; + } + }; + DDSLoader.type = "DDS"; + return DDSLoader; + }(pixi_compressed_textures.AbstractInternalLoader)); + pixi_compressed_textures.DDSLoader = DDSLoader; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + var _a; + var COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00; + var COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01; + var COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02; + var COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03; + var COMPRESSED_RGB_ETC1_WEBGL = 0x8D64; + var PVR_FORMAT_2BPP_RGB = 0; + var PVR_FORMAT_2BPP_RGBA = 1; + var PVR_FORMAT_4BPP_RGB = 2; + var PVR_FORMAT_4BPP_RGBA = 3; + var PVR_FORMAT_ETC1 = 6; + var PVR_FORMAT_DXT1 = 7; + var PVR_FORMAT_DXT3 = 9; + var PVR_FORMAT_DXT5 = 5; + var PVR_HEADER_LENGTH = 13; + var PVR_MAGIC = 0x03525650; + var PVR_HEADER_MAGIC = 0; + var PVR_HEADER_FORMAT = 2; + var PVR_HEADER_HEIGHT = 6; + var PVR_HEADER_WIDTH = 7; + var PVR_HEADER_MIPMAPCOUNT = 11; + var PVR_HEADER_METADATA = 12; + var COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; + var COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; + var COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; + var COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; + var PVR_TO_FORMAT = (_a = {}, + _a[PVR_FORMAT_2BPP_RGB] = COMPRESSED_RGB_PVRTC_2BPPV1_IMG, + _a[PVR_FORMAT_2BPP_RGBA] = COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, + _a[PVR_FORMAT_4BPP_RGB] = COMPRESSED_RGB_PVRTC_4BPPV1_IMG, + _a[PVR_FORMAT_4BPP_RGBA] = COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, + _a[PVR_FORMAT_ETC1] = COMPRESSED_RGB_ETC1_WEBGL, + _a[PVR_FORMAT_DXT1] = COMPRESSED_RGB_S3TC_DXT1_EXT, + _a[PVR_FORMAT_DXT3] = COMPRESSED_RGBA_S3TC_DXT3_EXT, + _a[PVR_FORMAT_DXT5] = COMPRESSED_RGBA_S3TC_DXT5_EXT, + _a); + var PVRTCLoader = (function (_super) { + __extends(PVRTCLoader, _super); + function PVRTCLoader(_image) { + return _super.call(this, _image) || this; + } + PVRTCLoader.prototype.load = function (arrayBuffer) { + if (!pixi_compressed_textures.DDSLoader.test(arrayBuffer)) { + throw "Invalid magic number in PVR header"; + } + var header = new Int32Array(arrayBuffer, 0, PVR_HEADER_LENGTH); + var format = header[PVR_HEADER_FORMAT]; + var internalFormat = PVR_TO_FORMAT[format] || -1; + var width = header[PVR_HEADER_WIDTH]; + var height = header[PVR_HEADER_HEIGHT]; + var levels = header[PVR_HEADER_MIPMAPCOUNT]; + var dataOffset = header[PVR_HEADER_METADATA] + 52; + var pvrtcData = new Uint8Array(arrayBuffer, dataOffset); + var dest = this._image; + this._format = internalFormat; + dest.init(dest.src, pvrtcData, 'PVR', width, height, levels, internalFormat); + return dest; + }; + PVRTCLoader.test = function (buffer) { + var magic = new Int32Array(buffer, 0, 1); + return magic[0] === PVR_MAGIC; + }; + PVRTCLoader.prototype.levelBufferSize = function (width, height, mipLevel) { + if (mipLevel === void 0) { mipLevel = 0; } + switch (this._format) { + case COMPRESSED_RGB_S3TC_DXT1_EXT: + case COMPRESSED_RGB_ETC1_WEBGL: + return ((width + 3) >> 2) * ((height + 3) >> 2) * 8; + case COMPRESSED_RGBA_S3TC_DXT3_EXT: + case COMPRESSED_RGBA_S3TC_DXT5_EXT: + return ((width + 3) >> 2) * ((height + 3) >> 2) * 16; + case COMPRESSED_RGB_PVRTC_4BPPV1_IMG: + case COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: + return Math.floor((Math.max(width, 8) * Math.max(height, 8) * 4 + 7) / 8); + case COMPRESSED_RGB_PVRTC_2BPPV1_IMG: + case COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: + return Math.floor((Math.max(width, 16) * Math.max(height, 8) * 2 + 7) / 8); + default: + return 0; + } + }; + PVRTCLoader.type = "PVR"; + return PVRTCLoader; + }(pixi_compressed_textures.AbstractInternalLoader)); + pixi_compressed_textures.PVRTCLoader = PVRTCLoader; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + var _a, _b; + var BASIS_FORMAT = { + cTFETC1: 0, + cTFBC1: 2, + cTFBC3: 3, + cTFPVRTC1_4_RGB: 8, + cTFPVRTC1_4_RGBA: 9, + cTFASTC_4x4: 10, + cTFRGBA32: 11 + }; + var BASIS_HAS_ALPHA = (_a = {}, + _a[3] = true, + _a[9] = true, + _a[10] = true, + _a[11] = true, + _a); + var NON_COMPRESSED = -1; + var COMPRESSED_RGB_ETC1_WEBGL = 0x8D64; + var COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; + var COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; + var COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; + var COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; + var COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00; + var COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02; + var COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0; + var BASIS_TO_FMT = (_b = {}, + _b[BASIS_FORMAT.cTFRGBA32] = NON_COMPRESSED, + _b[BASIS_FORMAT.cTFETC1] = COMPRESSED_RGB_ETC1_WEBGL, + _b[BASIS_FORMAT.cTFBC1] = COMPRESSED_RGB_S3TC_DXT1_EXT, + _b[BASIS_FORMAT.cTFBC3] = COMPRESSED_RGBA_S3TC_DXT5_EXT, + _b[BASIS_FORMAT.cTFPVRTC1_4_RGB] = COMPRESSED_RGB_PVRTC_4BPPV1_IMG, + _b[BASIS_FORMAT.cTFPVRTC1_4_RGBA] = COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, + _b[BASIS_FORMAT.cTFASTC_4x4] = COMPRESSED_RGBA_ASTC_4x4_KHR, + _b); + var FMT_TO_BASIS = Object.keys(BASIS_TO_FMT).reduce(function (acc, next) { + acc[BASIS_TO_FMT[+next]] = +next; + return acc; + }, {}); + var BASISLoader = (function (_super) { + __extends(BASISLoader, _super); + function BASISLoader(_image) { + var _this = _super.call(this, _image) || this; + _this.type = "BASIS"; + _this._file = undefined; + return _this; + } + BASISLoader.test = function (array) { + var header = new Uint32Array(array, 0, 1)[0]; + var decoder = !!BASISLoader.BASIS_BINDING; + var isValid = header === 0x134273 && decoder; + var isSupported = BASISLoader.RGB_FORMAT && BASISLoader.RGBA_FORMAT; + if (!isValid && isSupported) { + console.warn("[BASIS LOADER] Is Supported, but transcoder not binded or file is not BASIS file!"); + } + return (isSupported && isValid); + }; + BASISLoader.bindTranscoder = function (fileCtr, ext) { + if (!fileCtr || !ext) { + throw "Invalid state! undef fileCtr or ext invalid!"; + } + ; + var plain = Object.keys(ext) + .reduce(function (acc, key) { + var val = ext[key]; + if (!val) { + return acc; + } + ; + return Object.assign(acc, val.__proto__); + }, {}); + var latestOp = undefined; + var lastestAlpha = undefined; + for (var v in plain) { + var native = plain[v]; + if (FMT_TO_BASIS[native] !== undefined) { + var basis = FMT_TO_BASIS[native]; + if (BASIS_HAS_ALPHA[basis]) { + lastestAlpha = { + native: native, name: v, basis: basis + }; + } + else { + latestOp = { + native: native, name: v, basis: basis + }; + } + } + } + BASISLoader.RGB_FORMAT = latestOp || lastestAlpha; + BASISLoader.RGBA_FORMAT = lastestAlpha || latestOp; + BASISLoader.BASIS_BINDING = fileCtr; + console.log("[BASISLoader] Supported formats:", "\nRGB:" + BASISLoader.RGB_FORMAT.name + "\nRGBA:" + BASISLoader.RGBA_FORMAT.name); + pixi_compressed_textures.RegisterCompressedLoader(BASISLoader); + pixi_compressed_textures.RegisterCompressedExtensions('basis'); + }; + BASISLoader.prototype.load = function (buffer) { + if (!BASISLoader.test(buffer)) { + throw "BASIS Transcoder not binded or transcoding not supported =(!"; + } + this._loadAsync(buffer); + return this._image; + }; + BASISLoader.prototype._loadAsync = function (buffer) { + return __awaiter(this, void 0, void 0, function () { + var startTime, BasisFileCtr, basisFile, width, height, levels, hasAlpha, dest, target, dst, _a, name; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + startTime = performance.now(); + BasisFileCtr = BASISLoader.BASIS_BINDING; + basisFile = new BasisFileCtr(new Uint8Array(buffer)); + return [4, basisFile.getImageWidth(0, 0)]; + case 1: + width = _b.sent(); + return [4, basisFile.getImageHeight(0, 0)]; + case 2: + height = _b.sent(); + levels = 1; + return [4, basisFile.getHasAlpha()]; + case 3: + hasAlpha = _b.sent(); + dest = this._image; + return [4, basisFile.startTranscoding()]; + case 4: + if (!(_b.sent())) { + throw "Transcoding error!"; + } + target = hasAlpha ? BASISLoader.RGBA_FORMAT : BASISLoader.RGB_FORMAT; + console.log("Grats! BASIS will be transcoded to:", target); + _a = Uint8Array.bind; + return [4, basisFile.getImageTranscodedSizeInBytes(0, 0, target.basis)]; + case 5: + dst = new (_a.apply(Uint8Array, [void 0, _b.sent()]))(); + return [4, basisFile.transcodeImage(dst, 0, 0, target.basis, !!0, !!0)]; + case 6: + if (!(_b.sent())) { + throw "Transcoding error!"; + } + console.log("[BASISLoader] Totla transcoding time:", performance.now() - startTime); + this._format = target.native; + this._file = basisFile; + name = target.name.replace("COMPRESSED_", ""); + return [2, dest.init(dest.src, dst, 'BASIS|' + name, width, height, levels, target.native)]; + } + }); + }); + }; + BASISLoader.prototype.levelBufferSize = function (width, height, level) { + return this._file ? this._file.getImageTranscodedSizeInBytes(0, level, FMT_TO_BASIS[this._format]) : undefined; + }; + BASISLoader.BASIS_BINDING = undefined; + return BASISLoader; + }(pixi_compressed_textures.AbstractInternalLoader)); + pixi_compressed_textures.BASISLoader = BASISLoader; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + var CRN_Module = window.CRN_Module; + function arrayBufferCopy(src, dst, dstByteOffset, numBytes) { + var dst32Offset = dstByteOffset / 4; + var tail = (numBytes % 4); + var src32 = new Uint32Array(src.buffer, 0, (numBytes - tail) / 4); + var dst32 = new Uint32Array(dst.buffer); + for (var ii = 0; ii < src32.length; ii++) { + dst32[dst32Offset + ii] = src32[ii]; + } + for (var i = numBytes - tail; i < numBytes; i++) { + dst[dstByteOffset + i] = src[i]; + } + } + var COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; + var COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; + var COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; + var DXT_FORMAT_MAP = [ + COMPRESSED_RGB_S3TC_DXT1_EXT, + COMPRESSED_RGBA_S3TC_DXT3_EXT, + COMPRESSED_RGBA_S3TC_DXT5_EXT + ]; + var CRNLoader = (function (_super) { + __extends(CRNLoader, _super); + function CRNLoader(_image) { + return _super.call(this, _image) || this; + } + CRNLoader.prototype.load = function (arrayBuffer) { + var srcSize = arrayBuffer.byteLength; + var bytes = new Uint8Array(arrayBuffer); + var src = CRN_Module._malloc(srcSize); + arrayBufferCopy(bytes, CRN_Module.HEAPU8, src, srcSize); + var width = CRN_Module._crn_get_width(src, srcSize); + var height = CRN_Module._crn_get_height(src, srcSize); + var levels = CRN_Module._crn_get_levels(src, srcSize); + var format = CRN_Module._crn_get_dxt_format(src, srcSize); + var dstSize = CRN_Module._crn_get_uncompressed_size(src, srcSize, 0); + var dst = CRN_Module._malloc(dstSize); + CRN_Module._crn_decompress(src, srcSize, dst, dstSize, 0); + var dxtData = new Uint8Array(CRN_Module.HEAPU8.buffer, dst, dstSize); + var internalFormat = DXT_FORMAT_MAP[format]; + var dest = this._image; + this._format = internalFormat; + this._caches = [src, dst]; + return dest.init(dest.src, dxtData, 'CRN', width, height, levels, internalFormat); + }; + CRNLoader.prototype.levelBufferSize = function (width, height, mipLevel) { + if (mipLevel === void 0) { mipLevel = 0; } + return pixi_compressed_textures.DDSLoader.prototype.levelBufferSize.call(this, width, height, mipLevel); + }; + CRNLoader.prototype.free = function () { + CRN_Module._free(this._caches[0]); + CRN_Module._free(this._caches[1]); + }; + CRNLoader.test = function (buffer) { + return !!CRN_Module; + }; + CRNLoader.type = "CRN"; + return CRNLoader; + }(pixi_compressed_textures.AbstractInternalLoader)); + pixi_compressed_textures.CRNLoader = CRNLoader; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + pixi_compressed_textures.Loaders = [ + pixi_compressed_textures.DDSLoader, + pixi_compressed_textures.PVRTCLoader, + pixi_compressed_textures.ASTCLoader, + pixi_compressed_textures.CRNLoader + ]; + PIXI.systems.TextureSystem.prototype.initCompressed = function () { + var gl = this.gl; + if (!this.compressedExtensions) { + this.compressedExtensions = { + dxt: gl.getExtension("WEBGL_compressed_texture_s3tc"), + pvrtc: (gl.getExtension("WEBGL_compressed_texture_pvrtc") || gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc")), + astc: gl.getExtension("WEBGL_compressed_texture_astc"), + atc: gl.getExtension("WEBGL_compressed_texture_atc"), + etc1: gl.getExtension("WEBGL_compressed_texture_etc1") + }; + this.compressedExtensions.crn = this.compressedExtensions.dxt; + } + }; + function RegisterCompressedLoader() { + var loaders = []; + for (var _i = 0; _i < arguments.length; _i++) { + loaders[_i] = arguments[_i]; + } + pixi_compressed_textures.Loaders = pixi_compressed_textures.Loaders || []; + for (var e in loaders) { + if (pixi_compressed_textures.Loaders.indexOf(loaders[e]) < 0) { + pixi_compressed_textures.Loaders.push(loaders[e]); + } + } + } + pixi_compressed_textures.RegisterCompressedLoader = RegisterCompressedLoader; + function detectExtensions(renderer, resolution) { + var extensions = []; + if (renderer instanceof PIXI.Renderer) { + renderer.texture.initCompressed(); + var data = renderer.texture.compressedExtensions; + if (data.dxt) + extensions.push('.dds'); + if (data.pvrtc) + extensions.push('.pvr'); + if (data.atc) + extensions.push('.atc'); + if (data.astc) + extensions.push('.astc'); + if (data.etc1) + extensions.push('.etc1'); + } + resolution = resolution || renderer.resolution; + var res = "@" + resolution + "x"; + var ext = extensions.slice(0); + while (ext.length > 0) { + extensions.push(res + ext.pop()); + } + extensions.push(res + ".png"); + extensions.push(res + ".jpg"); + extensions.push(res + ".json"); + extensions.push(res + ".atlas"); + return extensions; + } + pixi_compressed_textures.detectExtensions = detectExtensions; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + var Resource = PIXI.LoaderResource; + pixi_compressed_textures.TEXTURE_EXTENSIONS = []; + function RegisterCompressedExtensions() { + var exts = []; + for (var _i = 0; _i < arguments.length; _i++) { + exts[_i] = arguments[_i]; + } + for (var e in exts) { + if (pixi_compressed_textures.TEXTURE_EXTENSIONS.indexOf(exts[e]) < 0) { + pixi_compressed_textures.TEXTURE_EXTENSIONS.push(exts[e]); + Resource.setExtensionXhrType(exts[e], Resource.XHR_RESPONSE_TYPE.BUFFER); + } + } + } + pixi_compressed_textures.RegisterCompressedExtensions = RegisterCompressedExtensions; + var ImageParser = (function () { + function ImageParser() { + } + ImageParser.use = function (resource, next) { + var url = resource.url; + var idx = url.lastIndexOf('.'); + var amper = url.lastIndexOf('?'); + var ext = url.substring(idx + 1, amper > 0 ? amper : url.length); + if (pixi_compressed_textures.TEXTURE_EXTENSIONS.indexOf(ext) < 0) { + next(); + return; + } + if (!resource.data) { + throw new Error("compressedImageParser middleware for PixiJS v5 must be specified in loader.use()" + + " and must have resource.data when completed"); + } + if (resource.compressedImage) { + next(); + return; + } + resource.compressedImage = new pixi_compressed_textures.CompressedImage(resource.url); + resource.compressedImage.loadFromArrayBuffer(resource.data, ext === 'crn'); + resource.isCompressedImage = true; + resource.texture = fromResource(resource.compressedImage, resource.url, resource.name); + next(); + }; + return ImageParser; + }()); + pixi_compressed_textures.ImageParser = ImageParser; + function fromResource(resource, imageUrl, name) { + var baseTexture = new PIXI.BaseTexture(resource, { + scaleMode: PIXI.settings.SCALE_MODE, + resolution: PIXI.utils.getResolutionOfUrl(imageUrl), + }); + var texture = new PIXI.Texture(baseTexture); + if (!name) { + name = imageUrl; + } + PIXI.BaseTexture.addToCache(texture.baseTexture, name); + PIXI.Texture.addToCache(texture, name); + if (name !== imageUrl) { + PIXI.BaseTexture.addToCache(texture.baseTexture, imageUrl); + PIXI.Texture.addToCache(texture, imageUrl); + } + return texture; + } + RegisterCompressedExtensions('dds', 'crn', 'pvr', 'etc1', 'astc'); + PIXI.Loader.registerPlugin(ImageParser); +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + function extensionChooser(supportedExtensions) { + if (supportedExtensions === void 0) { supportedExtensions = []; } + return function (resource, next) { + var ext = resource.metadata.choice; + if (!ext) { + return next(); + } + var url = resource.url; + var k = 0; + if (!resource._defaultUrlChoice) { + resource._defaultUrlChoice = url; + k = url.lastIndexOf("."); + if (k >= 0) { + resource._baseUrl = url.substring(0, k); + if (k >= 4 && url.substring(k - 3, 3) === '@1x') { + resource._baseUrl = url.substring(0, k); + } + } + else { + return next(); + } + } + for (var i = ext.length - 1; i >= 0; i--) { + url = resource._baseUrl + ext[i]; + var isSupported = false; + for (var j = 0; j < supportedExtensions.length; j++) { + if (ext[i] === supportedExtensions[j]) { + resource.url = url; + var pureExt = ext[i]; + if (pureExt.indexOf('@') > -1) { + pureExt = pureExt.replace(/@[0-9.]*x/, ""); + } + k = pureExt.indexOf('.'); + if (k >= 0) { + pureExt = pureExt.substring(k + 1); + } + resource.extension = pureExt; + resource.loadType = resource._determineLoadType(); + next(); + return; + } + } + } + next(); + }; + } + pixi_compressed_textures.extensionChooser = extensionChooser; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + var ExtensionFixer = (function () { + function ExtensionFixer() { + } + ExtensionFixer.use = function (resource, next) { + if (resource.texture && resource._defaultUrlChoice && resource._defaultUrl !== resource.url) { + var texture = resource.texture; + var baseTexture = texture.baseTexture; + var oldUrl = resource.url; + var newUrl = resource._defaultUrlChoice; + var ind = baseTexture.textureCacheIds.indexOf(oldUrl); + if (ind >= 0) { + baseTexture.textureCacheIds[ind] = newUrl; + delete PIXI.utils.BaseTextureCache[resource.url]; + PIXI.utils.BaseTextureCache[newUrl] = baseTexture; + } + ind = texture.textureCacheIds.indexOf(oldUrl); + if (ind >= 0) { + texture.textureCacheIds[ind] = newUrl; + delete PIXI.utils.TextureCache[resource.url]; + PIXI.utils.TextureCache[newUrl] = baseTexture; + } + } + next(); + }; + return ExtensionFixer; + }()); + pixi_compressed_textures.ExtensionFixer = ExtensionFixer; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); +var pixi_compressed_textures; +(function (pixi_compressed_textures) { + PIXI.compressedTextures = pixi_compressed_textures; +})(pixi_compressed_textures || (pixi_compressed_textures = {})); /*! * pixi-filters - v3.0.3 @@ -49113,8 +49113,8 @@ var __filters=function(e,t,n,r,o,i,l,s){"use strict";var a="attribute vec2 aVert /*! - * pixi-particles - v4.1.3 - * Compiled Wed, 09 Oct 2019 14:08:42 UTC + * pixi-particles - v4.2.0 + * Compiled Sat, 26 Oct 2019 14:40:23 UTC * * pixi-particles is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license @@ -49123,2058 +49123,2090 @@ this.PIXI = this.PIXI || {}; (function (exports, pixi) { 'use strict'; - /** - * A single node in a PropertyList. - */ - var PropertyNode = /** @class */ (function () { - /** - * @param value The value for this node - * @param time The time for this node, between 0-1 - * @param [ease] Custom ease for this list. Only relevant for the first node. - */ - function PropertyNode(value, time, ease) { - this.value = value; - this.time = time; - this.next = null; - this.isStepped = false; - if (ease) { - this.ease = typeof ease == "function" ? ease : exports.ParticleUtils.generateEase(ease); - } - else { - this.ease = null; - } - } - /** - * Creates a list of property values from a data object {list, isStepped} with a list of objects in - * the form {value, time}. Alternatively, the data object can be in the deprecated form of - * {start, end}. - * @param data The data for the list. - * @param data.list The array of value and time objects. - * @param data.isStepped If the list is stepped rather than interpolated. - * @param data.ease Custom ease for this list. - * @return The first node in the list - */ - PropertyNode.createList = function (data) { - if ("list" in data) { - var array = data.list; - var node = void 0, first = void 0; - var _a = array[0], value = _a.value, time = _a.time; - first = node = new PropertyNode(typeof value === 'string' ? exports.ParticleUtils.hexToRGB(value) : value, time, data.ease); - //only set up subsequent nodes if there are a bunch or the 2nd one is different from the first - if (array.length > 2 || (array.length === 2 && array[1].value !== value)) { - for (var i = 1; i < array.length; ++i) { - var _b = array[i], value_1 = _b.value, time_1 = _b.time; - node.next = new PropertyNode(typeof value_1 === 'string' ? exports.ParticleUtils.hexToRGB(value_1) : value_1, time_1); - node = node.next; - } - } - first.isStepped = !!data.isStepped; - return first; - } - else { - //Handle deprecated version here - var start = new PropertyNode(typeof data.start === 'string' ? exports.ParticleUtils.hexToRGB(data.start) : data.start, 0); - //only set up a next value if it is different from the starting value - if (data.end !== data.start) - start.next = new PropertyNode(typeof data.end === 'string' ? exports.ParticleUtils.hexToRGB(data.end) : data.end, 1); - return start; - } - }; - return PropertyNode; + /** + * A single node in a PropertyList. + */ + var PropertyNode = /** @class */ (function () { + /** + * @param value The value for this node + * @param time The time for this node, between 0-1 + * @param [ease] Custom ease for this list. Only relevant for the first node. + */ + function PropertyNode(value, time, ease) { + this.value = value; + this.time = time; + this.next = null; + this.isStepped = false; + if (ease) { + this.ease = typeof ease == "function" ? ease : exports.ParticleUtils.generateEase(ease); + } + else { + this.ease = null; + } + } + /** + * Creates a list of property values from a data object {list, isStepped} with a list of objects in + * the form {value, time}. Alternatively, the data object can be in the deprecated form of + * {start, end}. + * @param data The data for the list. + * @param data.list The array of value and time objects. + * @param data.isStepped If the list is stepped rather than interpolated. + * @param data.ease Custom ease for this list. + * @return The first node in the list + */ + PropertyNode.createList = function (data) { + if ("list" in data) { + var array = data.list; + var node = void 0, first = void 0; + var _a = array[0], value = _a.value, time = _a.time; + first = node = new PropertyNode(typeof value === 'string' ? exports.ParticleUtils.hexToRGB(value) : value, time, data.ease); + //only set up subsequent nodes if there are a bunch or the 2nd one is different from the first + if (array.length > 2 || (array.length === 2 && array[1].value !== value)) { + for (var i = 1; i < array.length; ++i) { + var _b = array[i], value_1 = _b.value, time_1 = _b.time; + node.next = new PropertyNode(typeof value_1 === 'string' ? exports.ParticleUtils.hexToRGB(value_1) : value_1, time_1); + node = node.next; + } + } + first.isStepped = !!data.isStepped; + return first; + } + else { + //Handle deprecated version here + var start = new PropertyNode(typeof data.start === 'string' ? exports.ParticleUtils.hexToRGB(data.start) : data.start, 0); + //only set up a next value if it is different from the starting value + if (data.end !== data.start) + start.next = new PropertyNode(typeof data.end === 'string' ? exports.ParticleUtils.hexToRGB(data.end) : data.end, 1); + return start; + } + }; + return PropertyNode; }()); - // get Texture.from()/Texture.fromImage(), in V4 and V5 friendly methods - /** - * @hidden - */ - var TextureFromString; - // to avoid Rollup transforming our import, save pixi namespace in a variable - var pixiNS = pixi; - if (parseInt(/^(\d+)\./.exec(pixi.VERSION)[1]) < 5) { - TextureFromString = pixiNS.Texture.fromImage; - } - else { - TextureFromString = pixiNS.Texture.from; - } - function GetTextureFromString(s) { - return TextureFromString(s); - } - (function (ParticleUtils) { - /** - * If errors and warnings should be logged within the library. - */ - ParticleUtils.verbose = false; - ParticleUtils.DEG_TO_RADS = Math.PI / 180; - /** - * Rotates a point by a given angle. - * @param angle The angle to rotate by in degrees - * @param p The point to rotate around 0,0. - */ - function rotatePoint(angle, p) { - if (!angle) - return; - angle *= ParticleUtils.DEG_TO_RADS; - var s = Math.sin(angle); - var c = Math.cos(angle); - var xnew = p.x * c - p.y * s; - var ynew = p.x * s + p.y * c; - p.x = xnew; - p.y = ynew; - } - ParticleUtils.rotatePoint = rotatePoint; - /** - * Combines separate color components (0-255) into a single uint color. - * @param r The red value of the color - * @param g The green value of the color - * @param b The blue value of the color - * @return The color in the form of 0xRRGGBB - */ - function combineRGBComponents(r, g, b /*, a*/) { - return /*a << 24 |*/ r << 16 | g << 8 | b; - } - ParticleUtils.combineRGBComponents = combineRGBComponents; - /** - * Reduces the point to a length of 1. - * @param point The point to normalize - */ - function normalize(point) { - var oneOverLen = 1 / ParticleUtils.length(point); - point.x *= oneOverLen; - point.y *= oneOverLen; - } - ParticleUtils.normalize = normalize; - /** - * Multiplies the x and y values of this point by a value. - * @param point The point to scaleBy - * @param value The value to scale by. - */ - function scaleBy(point, value) { - point.x *= value; - point.y *= value; - } - ParticleUtils.scaleBy = scaleBy; - /** - * Returns the length (or magnitude) of this point. - * @param point The point to measure length - * @return The length of this point. - */ - function length(point) { - return Math.sqrt(point.x * point.x + point.y * point.y); - } - ParticleUtils.length = length; - /** - * Converts a hex string from "#AARRGGBB", "#RRGGBB", "0xAARRGGBB", "0xRRGGBB", - * "AARRGGBB", or "RRGGBB" to an object of ints of 0-255, as - * {r, g, b, (a)}. - * @param color The input color string. - * @param output An object to put the output in. If omitted, a new object is created. - * @return The object with r, g, and b properties, possibly with an a property. - */ - function hexToRGB(color, output) { - if (!output) - output = {}; - if (color.charAt(0) == "#") - color = color.substr(1); - else if (color.indexOf("0x") === 0) - color = color.substr(2); - var alpha; - if (color.length == 8) { - alpha = color.substr(0, 2); - color = color.substr(2); - } - output.r = parseInt(color.substr(0, 2), 16); //Red - output.g = parseInt(color.substr(2, 2), 16); //Green - output.b = parseInt(color.substr(4, 2), 16); //Blue - if (alpha) - output.a = parseInt(alpha, 16); - return output; - } - ParticleUtils.hexToRGB = hexToRGB; - /** - * Generates a custom ease function, based on the GreenSock custom ease, as demonstrated - * by the related tool at http://www.greensock.com/customease/. - * @param segments An array of segments, as created by - * http://www.greensock.com/customease/. - * @return A function that calculates the percentage of change at - * a given point in time (0-1 inclusive). - */ - function generateEase(segments) { - var qty = segments.length; - var oneOverQty = 1 / qty; - /* - * Calculates the percentage of change at a given point in time (0-1 inclusive). - * @param {Number} time The time of the ease, 0-1 inclusive. - * @return {Number} The percentage of the change, 0-1 inclusive (unless your - * ease goes outside those bounds). - */ - return function (time) { - var t, s; - var i = (qty * time) | 0; //do a quick floor operation - t = (time - (i * oneOverQty)) * qty; - s = segments[i] || segments[qty - 1]; - return (s.s + t * (2 * (1 - t) * (s.cp - s.s) + t * (s.e - s.s))); - }; - } - ParticleUtils.generateEase = generateEase; - /** - * Gets a blend mode, ensuring that it is valid. - * @param name The name of the blend mode to get. - * @return The blend mode as specified in the PIXI.BLEND_MODES enumeration. - */ - function getBlendMode(name) { - if (!name) - return pixi.BLEND_MODES.NORMAL; - name = name.toUpperCase(); - while (name.indexOf(" ") >= 0) - name = name.replace(" ", "_"); - return pixi.BLEND_MODES[name] || pixi.BLEND_MODES.NORMAL; - } - ParticleUtils.getBlendMode = getBlendMode; - /** - * Converts a list of {value, time} objects starting at time 0 and ending at time 1 into an evenly - * spaced stepped list of PropertyNodes for color values. This is primarily to handle conversion of - * linear gradients to fewer colors, allowing for some optimization for Canvas2d fallbacks. - * @param list The list of data to convert. - * @param [numSteps=10] The number of steps to use. - * @return The blend mode as specified in the PIXI.blendModes enumeration. - */ - function createSteppedGradient(list, numSteps) { - if (numSteps === void 0) { numSteps = 10; } - if (typeof numSteps !== 'number' || numSteps <= 0) - numSteps = 10; - var first = new PropertyNode(ParticleUtils.hexToRGB(list[0].value), list[0].time); - first.isStepped = true; - var currentNode = first; - var current = list[0]; - var nextIndex = 1; - var next = list[nextIndex]; - for (var i = 1; i < numSteps; ++i) { - var lerp = i / numSteps; - //ensure we are on the right segment, if multiple - while (lerp > next.time) { - current = next; - next = list[++nextIndex]; - } - //convert the lerp value to the segment range - lerp = (lerp - current.time) / (next.time - current.time); - var curVal = ParticleUtils.hexToRGB(current.value); - var nextVal = ParticleUtils.hexToRGB(next.value); - var output = { - r: (nextVal.r - curVal.r) * lerp + curVal.r, - g: (nextVal.g - curVal.g) * lerp + curVal.g, - b: (nextVal.b - curVal.b) * lerp + curVal.b, - }; - currentNode.next = new PropertyNode(output, i / numSteps); - currentNode = currentNode.next; - } - //we don't need to have a PropertyNode for time of 1, because in a stepped version at that point - //the particle has died of old age - return first; - } - ParticleUtils.createSteppedGradient = createSteppedGradient; + // get Texture.from()/Texture.fromImage(), in V4 and V5 friendly methods + /** + * @hidden + */ + var TextureFromString; + // to avoid Rollup transforming our import, save pixi namespace in a variable + var pixiNS = pixi; + if (parseInt(/^(\d+)\./.exec(pixi.VERSION)[1]) < 5) { + TextureFromString = pixiNS.Texture.fromImage; + } + else { + TextureFromString = pixiNS.Texture.from; + } + function GetTextureFromString(s) { + return TextureFromString(s); + } + (function (ParticleUtils) { + /** + * If errors and warnings should be logged within the library. + */ + ParticleUtils.verbose = false; + ParticleUtils.DEG_TO_RADS = Math.PI / 180; + /** + * Rotates a point by a given angle. + * @param angle The angle to rotate by in degrees + * @param p The point to rotate around 0,0. + */ + function rotatePoint(angle, p) { + if (!angle) + return; + angle *= ParticleUtils.DEG_TO_RADS; + var s = Math.sin(angle); + var c = Math.cos(angle); + var xnew = p.x * c - p.y * s; + var ynew = p.x * s + p.y * c; + p.x = xnew; + p.y = ynew; + } + ParticleUtils.rotatePoint = rotatePoint; + /** + * Combines separate color components (0-255) into a single uint color. + * @param r The red value of the color + * @param g The green value of the color + * @param b The blue value of the color + * @return The color in the form of 0xRRGGBB + */ + function combineRGBComponents(r, g, b /*, a*/) { + return /*a << 24 |*/ r << 16 | g << 8 | b; + } + ParticleUtils.combineRGBComponents = combineRGBComponents; + /** + * Reduces the point to a length of 1. + * @param point The point to normalize + */ + function normalize(point) { + var oneOverLen = 1 / ParticleUtils.length(point); + point.x *= oneOverLen; + point.y *= oneOverLen; + } + ParticleUtils.normalize = normalize; + /** + * Multiplies the x and y values of this point by a value. + * @param point The point to scaleBy + * @param value The value to scale by. + */ + function scaleBy(point, value) { + point.x *= value; + point.y *= value; + } + ParticleUtils.scaleBy = scaleBy; + /** + * Returns the length (or magnitude) of this point. + * @param point The point to measure length + * @return The length of this point. + */ + function length(point) { + return Math.sqrt(point.x * point.x + point.y * point.y); + } + ParticleUtils.length = length; + /** + * Converts a hex string from "#AARRGGBB", "#RRGGBB", "0xAARRGGBB", "0xRRGGBB", + * "AARRGGBB", or "RRGGBB" to an object of ints of 0-255, as + * {r, g, b, (a)}. + * @param color The input color string. + * @param output An object to put the output in. If omitted, a new object is created. + * @return The object with r, g, and b properties, possibly with an a property. + */ + function hexToRGB(color, output) { + if (!output) + output = {}; + if (color.charAt(0) == "#") + color = color.substr(1); + else if (color.indexOf("0x") === 0) + color = color.substr(2); + var alpha; + if (color.length == 8) { + alpha = color.substr(0, 2); + color = color.substr(2); + } + output.r = parseInt(color.substr(0, 2), 16); //Red + output.g = parseInt(color.substr(2, 2), 16); //Green + output.b = parseInt(color.substr(4, 2), 16); //Blue + if (alpha) + output.a = parseInt(alpha, 16); + return output; + } + ParticleUtils.hexToRGB = hexToRGB; + /** + * Generates a custom ease function, based on the GreenSock custom ease, as demonstrated + * by the related tool at http://www.greensock.com/customease/. + * @param segments An array of segments, as created by + * http://www.greensock.com/customease/. + * @return A function that calculates the percentage of change at + * a given point in time (0-1 inclusive). + */ + function generateEase(segments) { + var qty = segments.length; + var oneOverQty = 1 / qty; + /* + * Calculates the percentage of change at a given point in time (0-1 inclusive). + * @param {Number} time The time of the ease, 0-1 inclusive. + * @return {Number} The percentage of the change, 0-1 inclusive (unless your + * ease goes outside those bounds). + */ + return function (time) { + var t, s; + var i = (qty * time) | 0; //do a quick floor operation + t = (time - (i * oneOverQty)) * qty; + s = segments[i] || segments[qty - 1]; + return (s.s + t * (2 * (1 - t) * (s.cp - s.s) + t * (s.e - s.s))); + }; + } + ParticleUtils.generateEase = generateEase; + /** + * Gets a blend mode, ensuring that it is valid. + * @param name The name of the blend mode to get. + * @return The blend mode as specified in the PIXI.BLEND_MODES enumeration. + */ + function getBlendMode(name) { + if (!name) + return pixi.BLEND_MODES.NORMAL; + name = name.toUpperCase(); + while (name.indexOf(" ") >= 0) + name = name.replace(" ", "_"); + return pixi.BLEND_MODES[name] || pixi.BLEND_MODES.NORMAL; + } + ParticleUtils.getBlendMode = getBlendMode; + /** + * Converts a list of {value, time} objects starting at time 0 and ending at time 1 into an evenly + * spaced stepped list of PropertyNodes for color values. This is primarily to handle conversion of + * linear gradients to fewer colors, allowing for some optimization for Canvas2d fallbacks. + * @param list The list of data to convert. + * @param [numSteps=10] The number of steps to use. + * @return The blend mode as specified in the PIXI.blendModes enumeration. + */ + function createSteppedGradient(list, numSteps) { + if (numSteps === void 0) { numSteps = 10; } + if (typeof numSteps !== 'number' || numSteps <= 0) + numSteps = 10; + var first = new PropertyNode(ParticleUtils.hexToRGB(list[0].value), list[0].time); + first.isStepped = true; + var currentNode = first; + var current = list[0]; + var nextIndex = 1; + var next = list[nextIndex]; + for (var i = 1; i < numSteps; ++i) { + var lerp = i / numSteps; + //ensure we are on the right segment, if multiple + while (lerp > next.time) { + current = next; + next = list[++nextIndex]; + } + //convert the lerp value to the segment range + lerp = (lerp - current.time) / (next.time - current.time); + var curVal = ParticleUtils.hexToRGB(current.value); + var nextVal = ParticleUtils.hexToRGB(next.value); + var output = { + r: (nextVal.r - curVal.r) * lerp + curVal.r, + g: (nextVal.g - curVal.g) * lerp + curVal.g, + b: (nextVal.b - curVal.b) * lerp + curVal.b, + }; + currentNode.next = new PropertyNode(output, i / numSteps); + currentNode = currentNode.next; + } + //we don't need to have a PropertyNode for time of 1, because in a stepped version at that point + //the particle has died of old age + return first; + } + ParticleUtils.createSteppedGradient = createSteppedGradient; })(exports.ParticleUtils || (exports.ParticleUtils = {})); - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) + t[p[i]] = s[p[i]]; + return t; + } + + function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + } + + function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } + } + + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + } + + function __awaiter(thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + + function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + } + + function __exportStar(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + + function __values(o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + } + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + } + + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + + function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + } + + function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } + } + + function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } + } + + function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } + } + + function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; + }; + + function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result.default = mod; + return result; + } + + function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; } - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) - t[p[i]] = s[p[i]]; - return t; + /** + * Singly linked list container for keeping track of interpolated properties for particles. + * Each Particle will have one of these for each interpolated property. + */ + var PropertyList = /** @class */ (function () { + /** + * @param isColor If this list handles color values + */ + function PropertyList(isColor) { + if (isColor === void 0) { isColor = false; } + this.current = null; + this.next = null; + this.isColor = !!isColor; + this.interpolate = null; + this.ease = null; + } + /** + * Resets the list for use. + * @param first The first node in the list. + * @param first.isStepped If the values should be stepped instead of interpolated linearly. + */ + PropertyList.prototype.reset = function (first) { + this.current = first; + this.next = first.next; + var isSimple = this.next && this.next.time >= 1; + if (isSimple) { + this.interpolate = this.isColor ? intColorSimple : intValueSimple; + } + else if (first.isStepped) { + this.interpolate = this.isColor ? intColorStepped : intValueStepped; + } + else { + this.interpolate = this.isColor ? intColorComplex : intValueComplex; + } + this.ease = this.current.ease; + }; + return PropertyList; + }()); + function intValueSimple(lerp) { + if (this.ease) + lerp = this.ease(lerp); + return (this.next.value - this.current.value) * lerp + this.current.value; + } + function intColorSimple(lerp) { + if (this.ease) + lerp = this.ease(lerp); + var curVal = this.current.value, nextVal = this.next.value; + var r = (nextVal.r - curVal.r) * lerp + curVal.r; + var g = (nextVal.g - curVal.g) * lerp + curVal.g; + var b = (nextVal.b - curVal.b) * lerp + curVal.b; + return exports.ParticleUtils.combineRGBComponents(r, g, b); + } + function intValueComplex(lerp) { + if (this.ease) + lerp = this.ease(lerp); + //make sure we are on the right segment + while (lerp > this.next.time) { + this.current = this.next; + this.next = this.next.next; + } + //convert the lerp value to the segment range + lerp = (lerp - this.current.time) / (this.next.time - this.current.time); + return (this.next.value - this.current.value) * lerp + this.current.value; + } + function intColorComplex(lerp) { + if (this.ease) + lerp = this.ease(lerp); + //make sure we are on the right segment + while (lerp > this.next.time) { + this.current = this.next; + this.next = this.next.next; + } + //convert the lerp value to the segment range + lerp = (lerp - this.current.time) / (this.next.time - this.current.time); + var curVal = this.current.value, nextVal = this.next.value; + var r = (nextVal.r - curVal.r) * lerp + curVal.r; + var g = (nextVal.g - curVal.g) * lerp + curVal.g; + var b = (nextVal.b - curVal.b) * lerp + curVal.b; + return exports.ParticleUtils.combineRGBComponents(r, g, b); + } + function intValueStepped(lerp) { + if (this.ease) + lerp = this.ease(lerp); + //make sure we are on the right segment + while (this.next && lerp > this.next.time) { + this.current = this.next; + this.next = this.next.next; + } + return this.current.value; + } + function intColorStepped(lerp) { + if (this.ease) + lerp = this.ease(lerp); + //make sure we are on the right segment + while (this.next && lerp > this.next.time) { + this.current = this.next; + this.next = this.next.next; + } + var curVal = this.current.value; + return exports.ParticleUtils.combineRGBComponents(curVal.r, curVal.g, curVal.b); } - function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - - function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } - } - - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - } - - function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - } - - function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - - function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - } - - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; - } - - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; - } - - function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - } - - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } - } - - function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } - } - - function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } - } - - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; - }; - - function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; - } - - function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; - } - - /** - * Singly linked list container for keeping track of interpolated properties for particles. - * Each Particle will have one of these for each interpolated property. - */ - var PropertyList = /** @class */ (function () { - /** - * @param isColor If this list handles color values - */ - function PropertyList(isColor) { - if (isColor === void 0) { isColor = false; } - this.current = null; - this.next = null; - this.isColor = !!isColor; - this.interpolate = null; - this.ease = null; - } - /** - * Resets the list for use. - * @param first The first node in the list. - * @param first.isStepped If the values should be stepped instead of interpolated linearly. - */ - PropertyList.prototype.reset = function (first) { - this.current = first; - this.next = first.next; - var isSimple = this.next && this.next.time >= 1; - if (isSimple) { - this.interpolate = this.isColor ? intColorSimple : intValueSimple; - } - else if (first.isStepped) { - this.interpolate = this.isColor ? intColorStepped : intValueStepped; - } - else { - this.interpolate = this.isColor ? intColorComplex : intValueComplex; - } - this.ease = this.current.ease; - }; - return PropertyList; - }()); - function intValueSimple(lerp) { - if (this.ease) - lerp = this.ease(lerp); - return (this.next.value - this.current.value) * lerp + this.current.value; - } - function intColorSimple(lerp) { - if (this.ease) - lerp = this.ease(lerp); - var curVal = this.current.value, nextVal = this.next.value; - var r = (nextVal.r - curVal.r) * lerp + curVal.r; - var g = (nextVal.g - curVal.g) * lerp + curVal.g; - var b = (nextVal.b - curVal.b) * lerp + curVal.b; - return exports.ParticleUtils.combineRGBComponents(r, g, b); - } - function intValueComplex(lerp) { - if (this.ease) - lerp = this.ease(lerp); - //make sure we are on the right segment - while (lerp > this.next.time) { - this.current = this.next; - this.next = this.next.next; - } - //convert the lerp value to the segment range - lerp = (lerp - this.current.time) / (this.next.time - this.current.time); - return (this.next.value - this.current.value) * lerp + this.current.value; - } - function intColorComplex(lerp) { - if (this.ease) - lerp = this.ease(lerp); - //make sure we are on the right segment - while (lerp > this.next.time) { - this.current = this.next; - this.next = this.next.next; - } - //convert the lerp value to the segment range - lerp = (lerp - this.current.time) / (this.next.time - this.current.time); - var curVal = this.current.value, nextVal = this.next.value; - var r = (nextVal.r - curVal.r) * lerp + curVal.r; - var g = (nextVal.g - curVal.g) * lerp + curVal.g; - var b = (nextVal.b - curVal.b) * lerp + curVal.b; - return exports.ParticleUtils.combineRGBComponents(r, g, b); - } - function intValueStepped(lerp) { - if (this.ease) - lerp = this.ease(lerp); - //make sure we are on the right segment - while (this.next && lerp > this.next.time) { - this.current = this.next; - this.next = this.next.next; - } - return this.current.value; - } - function intColorStepped(lerp) { - if (this.ease) - lerp = this.ease(lerp); - //make sure we are on the right segment - while (this.next && lerp > this.next.time) { - this.current = this.next; - this.next = this.next.next; - } - var curVal = this.current.value; - return exports.ParticleUtils.combineRGBComponents(curVal.r, curVal.g, curVal.b); - } - - /** - * An individual particle image. You shouldn't have to deal with these. - */ - var Particle = /** @class */ (function (_super) { - __extends(Particle, _super); - /** - * @param {PIXI.particles.Emitter} emitter The emitter that controls this particle. - */ - function Particle(emitter) { - var _this = - //start off the sprite with a blank texture, since we are going to replace it - //later when the particle is initialized. - _super.call(this) || this; - _this.emitter = emitter; - //particles should be centered - _this.anchor.x = _this.anchor.y = 0.5; - _this.velocity = new pixi.Point(); - _this.rotationSpeed = 0; - _this.rotationAcceleration = 0; - _this.maxLife = 0; - _this.age = 0; - _this.ease = null; - _this.extraData = null; - _this.alphaList = new PropertyList(); - _this.speedList = new PropertyList(); - _this.speedMultiplier = 1; - _this.acceleration = new pixi.Point(); - _this.maxSpeed = NaN; - _this.scaleList = new PropertyList(); - _this.scaleMultiplier = 1; - _this.colorList = new PropertyList(true); - _this._doAlpha = false; - _this._doScale = false; - _this._doSpeed = false; - _this._doAcceleration = false; - _this._doColor = false; - _this._doNormalMovement = false; - _this._oneOverLife = 0; - _this.next = null; - _this.prev = null; - //save often used functions on the instance instead of the prototype for better speed - _this.init = _this.init; - _this.Particle_init = Particle.prototype.init; - _this.update = _this.update; - _this.Particle_update = Particle.prototype.update; - _this.Sprite_destroy = _super.prototype.destroy; - _this.Particle_destroy = Particle.prototype.destroy; - _this.applyArt = _this.applyArt; - _this.kill = _this.kill; - return _this; - } - /** - * Initializes the particle for use, based on the properties that have to - * have been set already on the particle. - */ - Particle.prototype.init = function () { - //reset the age - this.age = 0; - //set up the velocity based on the start speed and rotation - this.velocity.x = this.speedList.current.value * this.speedMultiplier; - this.velocity.y = 0; - exports.ParticleUtils.rotatePoint(this.rotation, this.velocity); - if (this.noRotation) { - this.rotation = 0; - } - else { - //convert rotation to Radians from Degrees - this.rotation *= exports.ParticleUtils.DEG_TO_RADS; - } - //convert rotation speed to Radians from Degrees - this.rotationSpeed *= exports.ParticleUtils.DEG_TO_RADS; - this.rotationAcceleration *= exports.ParticleUtils.DEG_TO_RADS; - //set alpha to inital alpha - this.alpha = this.alphaList.current.value; - //set scale to initial scale - this.scale.x = this.scale.y = this.scaleList.current.value; - //figure out what we need to interpolate - this._doAlpha = !!this.alphaList.current.next; - this._doSpeed = !!this.speedList.current.next; - this._doScale = !!this.scaleList.current.next; - this._doColor = !!this.colorList.current.next; - this._doAcceleration = this.acceleration.x !== 0 || this.acceleration.y !== 0; - //_doNormalMovement can be cancelled by subclasses - this._doNormalMovement = this._doSpeed || this.speedList.current.value !== 0 || this._doAcceleration; - //save our lerp helper - this._oneOverLife = 1 / this.maxLife; - //set the inital color - var color = this.colorList.current.value; - this.tint = exports.ParticleUtils.combineRGBComponents(color.r, color.g, color.b); - //ensure visibility - this.visible = true; - }; - /** - * Sets the texture for the particle. This can be overridden to allow - * for an animated particle. - * @param art The texture to set. - */ - Particle.prototype.applyArt = function (art) { - this.texture = art || pixi.Texture.EMPTY; - }; - /** - * Updates the particle. - * @param delta Time elapsed since the previous frame, in __seconds__. - * @return The standard interpolation multiplier (0-1) used for all - * relevant particle properties. A value of -1 means the particle - * died of old age instead. - */ - Particle.prototype.update = function (delta) { - //increase age - this.age += delta; - //recycle particle if it is too old - if (this.age >= this.maxLife || this.age < 0) { - this.kill(); - return -1; - } - //determine our interpolation value - var lerp = this.age * this._oneOverLife; //lifetime / maxLife; - if (this.ease) { - if (this.ease.length == 4) { - //the t, b, c, d parameters that some tween libraries use - //(time, initial value, end value, duration) - lerp = this.ease(lerp, 0, 1, 1); - } - else { - //the simplified version that we like that takes - //one parameter, time from 0-1. TweenJS eases provide this usage. - lerp = this.ease(lerp); - } - } - //interpolate alpha - if (this._doAlpha) - this.alpha = this.alphaList.interpolate(lerp); - //interpolate scale - if (this._doScale) { - var scale = this.scaleList.interpolate(lerp) * this.scaleMultiplier; - this.scale.x = this.scale.y = scale; - } - //handle movement - if (this._doNormalMovement) { - var deltaX = void 0; - var deltaY = void 0; - //interpolate speed - if (this._doSpeed) { - var speed = this.speedList.interpolate(lerp) * this.speedMultiplier; - exports.ParticleUtils.normalize(this.velocity); - exports.ParticleUtils.scaleBy(this.velocity, speed); - deltaX = this.velocity.x * delta; - deltaY = this.velocity.y * delta; - } - else if (this._doAcceleration) { - var oldVX = this.velocity.x; - var oldVY = this.velocity.y; - this.velocity.x += this.acceleration.x * delta; - this.velocity.y += this.acceleration.y * delta; - if (this.maxSpeed) { - var currentSpeed = exports.ParticleUtils.length(this.velocity); - //if we are going faster than we should, clamp at the max speed - //DO NOT recalculate vector length - if (currentSpeed > this.maxSpeed) { - exports.ParticleUtils.scaleBy(this.velocity, this.maxSpeed / currentSpeed); - } - } - // calculate position delta by the midpoint between our old velocity and our new velocity - deltaX = (oldVX + this.velocity.x) / 2 * delta; - deltaY = (oldVY + this.velocity.y) / 2 * delta; - } - else { - deltaX = this.velocity.x * delta; - deltaY = this.velocity.y * delta; - } - //adjust position based on velocity - this.position.x += deltaX; - this.position.y += deltaY; - } - //interpolate color - if (this._doColor) { - this.tint = this.colorList.interpolate(lerp); - } - //update rotation - if (this.rotationAcceleration !== 0) { - var newRotationSpeed = this.rotationSpeed + this.rotationAcceleration * delta; - this.rotation += (this.rotationSpeed + newRotationSpeed) / 2 * delta; - this.rotationSpeed = newRotationSpeed; - } - else if (this.rotationSpeed !== 0) { - this.rotation += this.rotationSpeed * delta; - } - else if (this.acceleration && !this.noRotation) { - this.rotation = Math.atan2(this.velocity.y, this.velocity.x); // + Math.PI / 2; - } - return lerp; - }; - /** - * Kills the particle, removing it from the display list - * and telling the emitter to recycle it. - */ - Particle.prototype.kill = function () { - this.emitter.recycle(this); - }; - /** - * Destroys the particle, removing references and preventing future use. - */ - Particle.prototype.destroy = function () { - if (this.parent) - this.parent.removeChild(this); - this.Sprite_destroy(); - this.emitter = this.velocity = this.colorList = this.scaleList = this.alphaList = - this.speedList = this.ease = this.next = this.prev = null; - }; - /** - * Checks over the art that was passed to the Emitter's init() function, to do any special - * modifications to prepare it ahead of time. - * @param art The array of art data. For Particle, it should be an array of - * Textures. Any strings in the array will be converted to - * Textures via Texture.from(). - * @return The art, after any needed modifications. - */ - Particle.parseArt = function (art) { - //convert any strings to Textures. - var i; - for (i = art.length; i >= 0; --i) { - if (typeof art[i] == "string") - art[i] = GetTextureFromString(art[i]); - } - //particles from different base textures will be slower in WebGL than if they - //were from one spritesheet - if (exports.ParticleUtils.verbose) { - for (i = art.length - 1; i > 0; --i) { - if (art[i].baseTexture != art[i - 1].baseTexture) { - if (window.console) - console.warn("PixiParticles: using particle textures from different images may hinder performance in WebGL"); - break; - } - } - } - return art; - }; - /** - * Parses extra emitter data to ensure it is set up for this particle class. - * Particle does nothing to the extra data. - * @param extraData The extra data from the particle config. - * @return The parsed extra data. - */ - Particle.parseData = function (extraData) { - return extraData; - }; - return Particle; + /** + * An individual particle image. You shouldn't have to deal with these. + */ + var Particle = /** @class */ (function (_super) { + __extends(Particle, _super); + /** + * @param {PIXI.particles.Emitter} emitter The emitter that controls this particle. + */ + function Particle(emitter) { + var _this = + //start off the sprite with a blank texture, since we are going to replace it + //later when the particle is initialized. + _super.call(this) || this; + _this.emitter = emitter; + //particles should be centered + _this.anchor.x = _this.anchor.y = 0.5; + _this.velocity = new pixi.Point(); + _this.rotationSpeed = 0; + _this.rotationAcceleration = 0; + _this.maxLife = 0; + _this.age = 0; + _this.ease = null; + _this.extraData = null; + _this.alphaList = new PropertyList(); + _this.speedList = new PropertyList(); + _this.speedMultiplier = 1; + _this.acceleration = new pixi.Point(); + _this.maxSpeed = NaN; + _this.scaleList = new PropertyList(); + _this.scaleMultiplier = 1; + _this.colorList = new PropertyList(true); + _this._doAlpha = false; + _this._doScale = false; + _this._doSpeed = false; + _this._doAcceleration = false; + _this._doColor = false; + _this._doNormalMovement = false; + _this._oneOverLife = 0; + _this.next = null; + _this.prev = null; + //save often used functions on the instance instead of the prototype for better speed + _this.init = _this.init; + _this.Particle_init = Particle.prototype.init; + _this.update = _this.update; + _this.Particle_update = Particle.prototype.update; + _this.Sprite_destroy = _super.prototype.destroy; + _this.Particle_destroy = Particle.prototype.destroy; + _this.applyArt = _this.applyArt; + _this.kill = _this.kill; + return _this; + } + /** + * Initializes the particle for use, based on the properties that have to + * have been set already on the particle. + */ + Particle.prototype.init = function () { + //reset the age + this.age = 0; + //set up the velocity based on the start speed and rotation + this.velocity.x = this.speedList.current.value * this.speedMultiplier; + this.velocity.y = 0; + exports.ParticleUtils.rotatePoint(this.rotation, this.velocity); + if (this.noRotation) { + this.rotation = 0; + } + else { + //convert rotation to Radians from Degrees + this.rotation *= exports.ParticleUtils.DEG_TO_RADS; + } + //convert rotation speed to Radians from Degrees + this.rotationSpeed *= exports.ParticleUtils.DEG_TO_RADS; + this.rotationAcceleration *= exports.ParticleUtils.DEG_TO_RADS; + //set alpha to inital alpha + this.alpha = this.alphaList.current.value; + //set scale to initial scale + this.scale.x = this.scale.y = this.scaleList.current.value; + //figure out what we need to interpolate + this._doAlpha = !!this.alphaList.current.next; + this._doSpeed = !!this.speedList.current.next; + this._doScale = !!this.scaleList.current.next; + this._doColor = !!this.colorList.current.next; + this._doAcceleration = this.acceleration.x !== 0 || this.acceleration.y !== 0; + //_doNormalMovement can be cancelled by subclasses + this._doNormalMovement = this._doSpeed || this.speedList.current.value !== 0 || this._doAcceleration; + //save our lerp helper + this._oneOverLife = 1 / this.maxLife; + //set the inital color + var color = this.colorList.current.value; + this.tint = exports.ParticleUtils.combineRGBComponents(color.r, color.g, color.b); + //ensure visibility + this.visible = true; + }; + /** + * Sets the texture for the particle. This can be overridden to allow + * for an animated particle. + * @param art The texture to set. + */ + Particle.prototype.applyArt = function (art) { + this.texture = art || pixi.Texture.EMPTY; + }; + /** + * Updates the particle. + * @param delta Time elapsed since the previous frame, in __seconds__. + * @return The standard interpolation multiplier (0-1) used for all + * relevant particle properties. A value of -1 means the particle + * died of old age instead. + */ + Particle.prototype.update = function (delta) { + //increase age + this.age += delta; + //recycle particle if it is too old + if (this.age >= this.maxLife || this.age < 0) { + this.kill(); + return -1; + } + //determine our interpolation value + var lerp = this.age * this._oneOverLife; //lifetime / maxLife; + if (this.ease) { + if (this.ease.length == 4) { + //the t, b, c, d parameters that some tween libraries use + //(time, initial value, end value, duration) + lerp = this.ease(lerp, 0, 1, 1); + } + else { + //the simplified version that we like that takes + //one parameter, time from 0-1. TweenJS eases provide this usage. + lerp = this.ease(lerp); + } + } + //interpolate alpha + if (this._doAlpha) + this.alpha = this.alphaList.interpolate(lerp); + //interpolate scale + if (this._doScale) { + var scale = this.scaleList.interpolate(lerp) * this.scaleMultiplier; + this.scale.x = this.scale.y = scale; + } + //handle movement + if (this._doNormalMovement) { + var deltaX = void 0; + var deltaY = void 0; + //interpolate speed + if (this._doSpeed) { + var speed = this.speedList.interpolate(lerp) * this.speedMultiplier; + exports.ParticleUtils.normalize(this.velocity); + exports.ParticleUtils.scaleBy(this.velocity, speed); + deltaX = this.velocity.x * delta; + deltaY = this.velocity.y * delta; + } + else if (this._doAcceleration) { + var oldVX = this.velocity.x; + var oldVY = this.velocity.y; + this.velocity.x += this.acceleration.x * delta; + this.velocity.y += this.acceleration.y * delta; + if (this.maxSpeed) { + var currentSpeed = exports.ParticleUtils.length(this.velocity); + //if we are going faster than we should, clamp at the max speed + //DO NOT recalculate vector length + if (currentSpeed > this.maxSpeed) { + exports.ParticleUtils.scaleBy(this.velocity, this.maxSpeed / currentSpeed); + } + } + // calculate position delta by the midpoint between our old velocity and our new velocity + deltaX = (oldVX + this.velocity.x) / 2 * delta; + deltaY = (oldVY + this.velocity.y) / 2 * delta; + } + else { + deltaX = this.velocity.x * delta; + deltaY = this.velocity.y * delta; + } + //adjust position based on velocity + this.position.x += deltaX; + this.position.y += deltaY; + } + //interpolate color + if (this._doColor) { + this.tint = this.colorList.interpolate(lerp); + } + //update rotation + if (this.rotationAcceleration !== 0) { + var newRotationSpeed = this.rotationSpeed + this.rotationAcceleration * delta; + this.rotation += (this.rotationSpeed + newRotationSpeed) / 2 * delta; + this.rotationSpeed = newRotationSpeed; + } + else if (this.rotationSpeed !== 0) { + this.rotation += this.rotationSpeed * delta; + } + else if (this.acceleration && !this.noRotation) { + this.rotation = Math.atan2(this.velocity.y, this.velocity.x); // + Math.PI / 2; + } + return lerp; + }; + /** + * Kills the particle, removing it from the display list + * and telling the emitter to recycle it. + */ + Particle.prototype.kill = function () { + this.emitter.recycle(this); + }; + /** + * Destroys the particle, removing references and preventing future use. + */ + Particle.prototype.destroy = function () { + if (this.parent) + this.parent.removeChild(this); + this.Sprite_destroy(); + this.emitter = this.velocity = this.colorList = this.scaleList = this.alphaList = + this.speedList = this.ease = this.next = this.prev = null; + }; + /** + * Checks over the art that was passed to the Emitter's init() function, to do any special + * modifications to prepare it ahead of time. + * @param art The array of art data. For Particle, it should be an array of + * Textures. Any strings in the array will be converted to + * Textures via Texture.from(). + * @return The art, after any needed modifications. + */ + Particle.parseArt = function (art) { + //convert any strings to Textures. + var i; + for (i = art.length; i >= 0; --i) { + if (typeof art[i] == "string") + art[i] = GetTextureFromString(art[i]); + } + //particles from different base textures will be slower in WebGL than if they + //were from one spritesheet + if (exports.ParticleUtils.verbose) { + for (i = art.length - 1; i > 0; --i) { + if (art[i].baseTexture != art[i - 1].baseTexture) { + if (window.console) + console.warn("PixiParticles: using particle textures from different images may hinder performance in WebGL"); + break; + } + } + } + return art; + }; + /** + * Parses extra emitter data to ensure it is set up for this particle class. + * Particle does nothing to the extra data. + * @param extraData The extra data from the particle config. + * @return The parsed extra data. + */ + Particle.parseData = function (extraData) { + return extraData; + }; + return Particle; }(pixi.Sprite)); - /** - * Chain of line segments for generating spawn positions. - */ - var PolygonalChain = /** @class */ (function () { - /** - * @param data Point data for polygon chains. Either a list of points for a single chain, or a list of chains. - */ - function PolygonalChain(data) { - this.segments = []; - this.countingLengths = []; - this.totalLength = 0; - this.init(data); - } - /** - * @param data Point data for polygon chains. Either a list of points for a single chain, or a list of chains. - */ - PolygonalChain.prototype.init = function (data) { - // if data is not present, set up a segment of length 0 - if (!data || !data.length) { - this.segments.push({ p1: { x: 0, y: 0 }, p2: { x: 0, y: 0 }, l: 0 }); - } - else { - if (Array.isArray(data[0])) { - // list of segment chains, each defined as a list of points - for (var i = 0; i < data.length; ++i) { - // loop through the chain, connecting points - var chain = data[i]; - var prevPoint = chain[0]; - for (var j = 1; j < chain.length; ++j) { - var second = chain[j]; - this.segments.push({ p1: prevPoint, p2: second, l: 0 }); - prevPoint = second; - } - } - } - else { - var prevPoint = data[0]; - // list of points - for (var i = 1; i < data.length; ++i) { - var second = data[i]; - this.segments.push({ p1: prevPoint, p2: second, l: 0 }); - prevPoint = second; - } - } - } - // now go through our segments to calculate the lengths so that we - // can set up a nice weighted random distribution - for (var i = 0; i < this.segments.length; ++i) { - var _a = this.segments[i], p1 = _a.p1, p2 = _a.p2; - var segLength = Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y)); - // save length so we can turn a random number into a 0-1 interpolation value later - this.segments[i].l = segLength; - this.totalLength += segLength; - // keep track of the length so far, counting up - this.countingLengths.push(this.totalLength); - } - }; - /** - * Gets a random point in the chain. - * @param out The point to store the selected position in. - */ - PolygonalChain.prototype.getRandomPoint = function (out) { - // select a random spot in the length of the chain - var rand = Math.random() * this.totalLength; - var chosenSeg; - var lerp; - // if only one segment, it wins - if (this.segments.length === 1) { - chosenSeg = this.segments[0]; - lerp = rand; - } - else { - // otherwise, go through countingLengths until we have determined - // which segment we chose - for (var i = 0; i < this.countingLengths.length; ++i) { - if (rand < this.countingLengths[i]) { - chosenSeg = this.segments[i]; - // set lerp equal to the length into that segment (i.e. the remainder after subtracting all the segments before it) - lerp = i === 0 ? rand : rand - this.countingLengths[i - 1]; - break; - } - } - } - // divide lerp by the segment length, to result in a 0-1 number. - lerp /= chosenSeg.l || 1; - var p1 = chosenSeg.p1, p2 = chosenSeg.p2; - // now calculate the position in the segment that the lerp value represents - out.x = p1.x + lerp * (p2.x - p1.x); - out.y = p1.y + lerp * (p2.y - p1.y); - }; - return PolygonalChain; + /** + * Chain of line segments for generating spawn positions. + */ + var PolygonalChain = /** @class */ (function () { + /** + * @param data Point data for polygon chains. Either a list of points for a single chain, or a list of chains. + */ + function PolygonalChain(data) { + this.segments = []; + this.countingLengths = []; + this.totalLength = 0; + this.init(data); + } + /** + * @param data Point data for polygon chains. Either a list of points for a single chain, or a list of chains. + */ + PolygonalChain.prototype.init = function (data) { + // if data is not present, set up a segment of length 0 + if (!data || !data.length) { + this.segments.push({ p1: { x: 0, y: 0 }, p2: { x: 0, y: 0 }, l: 0 }); + } + else { + if (Array.isArray(data[0])) { + // list of segment chains, each defined as a list of points + for (var i = 0; i < data.length; ++i) { + // loop through the chain, connecting points + var chain = data[i]; + var prevPoint = chain[0]; + for (var j = 1; j < chain.length; ++j) { + var second = chain[j]; + this.segments.push({ p1: prevPoint, p2: second, l: 0 }); + prevPoint = second; + } + } + } + else { + var prevPoint = data[0]; + // list of points + for (var i = 1; i < data.length; ++i) { + var second = data[i]; + this.segments.push({ p1: prevPoint, p2: second, l: 0 }); + prevPoint = second; + } + } + } + // now go through our segments to calculate the lengths so that we + // can set up a nice weighted random distribution + for (var i = 0; i < this.segments.length; ++i) { + var _a = this.segments[i], p1 = _a.p1, p2 = _a.p2; + var segLength = Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y)); + // save length so we can turn a random number into a 0-1 interpolation value later + this.segments[i].l = segLength; + this.totalLength += segLength; + // keep track of the length so far, counting up + this.countingLengths.push(this.totalLength); + } + }; + /** + * Gets a random point in the chain. + * @param out The point to store the selected position in. + */ + PolygonalChain.prototype.getRandomPoint = function (out) { + // select a random spot in the length of the chain + var rand = Math.random() * this.totalLength; + var chosenSeg; + var lerp; + // if only one segment, it wins + if (this.segments.length === 1) { + chosenSeg = this.segments[0]; + lerp = rand; + } + else { + // otherwise, go through countingLengths until we have determined + // which segment we chose + for (var i = 0; i < this.countingLengths.length; ++i) { + if (rand < this.countingLengths[i]) { + chosenSeg = this.segments[i]; + // set lerp equal to the length into that segment (i.e. the remainder after subtracting all the segments before it) + lerp = i === 0 ? rand : rand - this.countingLengths[i - 1]; + break; + } + } + } + // divide lerp by the segment length, to result in a 0-1 number. + lerp /= chosenSeg.l || 1; + var p1 = chosenSeg.p1, p2 = chosenSeg.p2; + // now calculate the position in the segment that the lerp value represents + out.x = p1.x + lerp * (p2.x - p1.x); + out.y = p1.y + lerp * (p2.y - p1.y); + }; + return PolygonalChain; }()); - // get the shared ticker, in V4 and V5 friendly methods - /** - * @hidden - */ - var ticker; - // to avoid Rollup transforming our import, save pixi namespace in a variable - var pixiNS$1 = pixi; - if (parseInt(/^(\d+)\./.exec(pixi.VERSION)[1]) < 5) { - ticker = pixiNS$1.ticker.shared; - } - else { - ticker = pixiNS$1.Ticker.shared; - } - /** - * @hidden - */ - var helperPoint = new pixi.Point(); - /** - * A particle emitter. - */ - var Emitter = /** @class */ (function () { - /** - * @param particleParent The container to add the particles to. - * @param particleImages A texture or array of textures to use - * for the particles. Strings will be turned - * into textures via Texture.fromImage(). - * @param config A configuration object containing settings for the emitter. - * @param config.emit If config.emit is explicitly passed as false, the - * Emitter will start disabled. - * @param config.autoUpdate If config.autoUpdate is explicitly passed as - * true, the Emitter will automatically call - * update via the PIXI shared ticker. - */ - function Emitter(particleParent, particleImages, config) { - this._particleConstructor = Particle; - //properties for individual particles - this.particleImages = null; - this.startAlpha = null; - this.startSpeed = null; - this.minimumSpeedMultiplier = 1; - this.acceleration = null; - this.maxSpeed = NaN; - this.startScale = null; - this.minimumScaleMultiplier = 1; - this.startColor = null; - this.minLifetime = 0; - this.maxLifetime = 0; - this.minStartRotation = 0; - this.maxStartRotation = 0; - this.noRotation = false; - this.minRotationSpeed = 0; - this.maxRotationSpeed = 0; - this.particleBlendMode = 0; - this.customEase = null; - this.extraData = null; - //properties for spawning particles - this._frequency = 1; - this.spawnChance = 1; - this.maxParticles = 1000; - this.emitterLifetime = -1; - this.spawnPos = null; - this.spawnType = null; - this._spawnFunc = null; - this.spawnRect = null; - this.spawnCircle = null; - this.spawnPolygonalChain = null; - this.particlesPerWave = 1; - this.particleSpacing = 0; - this.angleStart = 0; - //emitter properties - this.rotation = 0; - this.ownerPos = null; - this._prevEmitterPos = null; - this._prevPosIsValid = false; - this._posChanged = false; - this._parent = null; - this.addAtBack = false; - this.particleCount = 0; - this._emit = false; - this._spawnTimer = 0; - this._emitterLife = -1; - this._activeParticlesFirst = null; - this._activeParticlesLast = null; - this._poolFirst = null; - this._origConfig = null; - this._origArt = null; - this._autoUpdate = false; - this._destroyWhenComplete = false; - this._completeCallback = null; - //set the initial parent - this.parent = particleParent; - if (particleImages && config) - this.init(particleImages, config); - //save often used functions on the instance instead of the prototype for better speed - this.recycle = this.recycle; - this.update = this.update; - this.rotate = this.rotate; - this.updateSpawnPos = this.updateSpawnPos; - this.updateOwnerPos = this.updateOwnerPos; - } - Object.defineProperty(Emitter.prototype, "frequency", { - /** - * Time between particle spawns in seconds. If this value is not a number greater than 0, - * it will be set to 1 (particle per second) to prevent infinite loops. - */ - get: function () { return this._frequency; }, - set: function (value) { - //do some error checking to prevent infinite loops - if (typeof value == "number" && value > 0) - this._frequency = value; - else - this._frequency = 1; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Emitter.prototype, "particleConstructor", { - /** - * The constructor used to create new particles. The default is - * the built in Particle class. Setting this will dump any active or - * pooled particles, if the emitter has already been used. - */ - get: function () { return this._particleConstructor; }, - set: function (value) { - if (value != this._particleConstructor) { - this._particleConstructor = value; - //clean up existing particles - this.cleanup(); - //scrap all the particles - for (var particle = this._poolFirst; particle; particle = particle.next) { - particle.destroy(); - } - this._poolFirst = null; - //re-initialize the emitter so that the new constructor can do anything it needs to - if (this._origConfig && this._origArt) - this.init(this._origArt, this._origConfig); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Emitter.prototype, "parent", { - /** - * The container to add particles to. Settings this will dump any active particles. - */ - get: function () { return this._parent; }, - set: function (value) { - this.cleanup(); - this._parent = value; - }, - enumerable: true, - configurable: true - }); - /** - * Sets up the emitter based on the config settings. - * @param art A texture or array of textures to use for the particles. - * @param config A configuration object containing settings for the emitter. - */ - Emitter.prototype.init = function (art, config) { - if (!art || !config) - return; - //clean up any existing particles - this.cleanup(); - //store the original config and particle images, in case we need to re-initialize - //when the particle constructor is changed - this._origConfig = config; - this._origArt = art; - //set up the array of data, also ensuring that it is an array - art = Array.isArray(art) ? art.slice() : [art]; - //run the art through the particle class's parsing function - var partClass = this._particleConstructor; - this.particleImages = partClass.parseArt ? partClass.parseArt(art) : art; - /////////////////////////// - // Particle Properties // - /////////////////////////// - //set up the alpha - if (config.alpha) { - this.startAlpha = PropertyNode.createList(config.alpha); - } - else - this.startAlpha = new PropertyNode(1, 0); - //set up the speed - if (config.speed) { - this.startSpeed = PropertyNode.createList(config.speed); - this.minimumSpeedMultiplier = ('minimumSpeedMultiplier' in config ? config.minimumSpeedMultiplier : config.speed.minimumSpeedMultiplier) || 1; - } - else { - this.minimumSpeedMultiplier = 1; - this.startSpeed = new PropertyNode(0, 0); - } - //set up acceleration - var acceleration = config.acceleration; - if (acceleration && (acceleration.x || acceleration.y)) { - //make sure we disable speed interpolation - this.startSpeed.next = null; - this.acceleration = new pixi.Point(acceleration.x, acceleration.y); - this.maxSpeed = config.maxSpeed || NaN; - } - else - this.acceleration = new pixi.Point(); - //set up the scale - if (config.scale) { - this.startScale = PropertyNode.createList(config.scale); - this.minimumScaleMultiplier = ('minimumScaleMultiplier' in config ? config.minimumScaleMultiplier : config.scale.minimumScaleMultiplier) || 1; - } - else { - this.startScale = new PropertyNode(1, 0); - this.minimumScaleMultiplier = 1; - } - //set up the color - if (config.color) { - this.startColor = PropertyNode.createList(config.color); - } - else { - this.startColor = new PropertyNode({ r: 0xFF, g: 0xFF, b: 0xFF }, 0); - } - //set up the start rotation - if (config.startRotation) { - this.minStartRotation = config.startRotation.min; - this.maxStartRotation = config.startRotation.max; - } - else - this.minStartRotation = this.maxStartRotation = 0; - if (config.noRotation && - (this.minStartRotation || this.maxStartRotation)) { - this.noRotation = !!config.noRotation; - } - else - this.noRotation = false; - //set up the rotation speed - if (config.rotationSpeed) { - this.minRotationSpeed = config.rotationSpeed.min; - this.maxRotationSpeed = config.rotationSpeed.max; - } - else - this.minRotationSpeed = this.maxRotationSpeed = 0; - this.rotationAcceleration = config.rotationAcceleration || 0; - //set up the lifetime - this.minLifetime = config.lifetime.min; - this.maxLifetime = config.lifetime.max; - //get the blend mode - this.particleBlendMode = exports.ParticleUtils.getBlendMode(config.blendMode); - //use the custom ease if provided - if (config.ease) { - this.customEase = typeof config.ease == "function" ? - config.ease : exports.ParticleUtils.generateEase(config.ease); - } - else - this.customEase = null; - //set up the extra data, running it through the particle class's parseData function. - if (partClass.parseData) - this.extraData = partClass.parseData(config.extraData); - else - this.extraData = config.extraData || null; - ////////////////////////// - // Emitter Properties // - ////////////////////////// - //reset spawn type specific settings - this.spawnRect = this.spawnCircle = null; - this.particlesPerWave = 1; - if (config.particlesPerWave && config.particlesPerWave > 1) - this.particlesPerWave = config.particlesPerWave; - this.particleSpacing = 0; - this.angleStart = 0; - //determine the spawn function to use - this.parseSpawnType(config); - //set the spawning frequency - this.frequency = config.frequency; - this.spawnChance = (typeof config.spawnChance === 'number' && config.spawnChance > 0) ? config.spawnChance : 1; - //set the emitter lifetime - this.emitterLifetime = config.emitterLifetime || -1; - //set the max particles - this.maxParticles = config.maxParticles > 0 ? config.maxParticles : 1000; - //determine if we should add the particle at the back of the list or not - this.addAtBack = !!config.addAtBack; - //reset the emitter position and rotation variables - this.rotation = 0; - this.ownerPos = new pixi.Point(); - this.spawnPos = new pixi.Point(config.pos.x, config.pos.y); - this.initAdditional(art, config); - this._prevEmitterPos = this.spawnPos.clone(); - //previous emitter position is invalid and should not be used for interpolation - this._prevPosIsValid = false; - //start emitting - this._spawnTimer = 0; - this.emit = config.emit === undefined ? true : !!config.emit; - this.autoUpdate = !!config.autoUpdate; - }; - /** - * Sets up additional parameters to the emitter from config settings. - * Using for parsing additional parameters on classes that extend from Emitter - * @param art A texture or array of textures to use for the particles. - * @param config A configuration object containing settings for the emitter. - */ - Emitter.prototype.initAdditional = function (art, config) { - }; - /** - * Parsing emitter spawn type from config settings. - * Place for override and add new kind of spawn type - * @param config A configuration object containing settings for the emitter. - */ - Emitter.prototype.parseSpawnType = function (config) { - var spawnCircle; - switch (config.spawnType) { - case "rect": - this.spawnType = "rect"; - this._spawnFunc = this._spawnRect; - var spawnRect = config.spawnRect; - this.spawnRect = new pixi.Rectangle(spawnRect.x, spawnRect.y, spawnRect.w, spawnRect.h); - break; - case "circle": - this.spawnType = "circle"; - this._spawnFunc = this._spawnCircle; - spawnCircle = config.spawnCircle; - this.spawnCircle = new pixi.Circle(spawnCircle.x, spawnCircle.y, spawnCircle.r); - break; - case "ring": - this.spawnType = "ring"; - this._spawnFunc = this._spawnRing; - spawnCircle = config.spawnCircle; - this.spawnCircle = new pixi.Circle(spawnCircle.x, spawnCircle.y, spawnCircle.r); - this.spawnCircle.minRadius = spawnCircle.minR; - break; - case "burst": - this.spawnType = "burst"; - this._spawnFunc = this._spawnBurst; - this.particleSpacing = config.particleSpacing; - this.angleStart = config.angleStart ? config.angleStart : 0; - break; - case "point": - this.spawnType = "point"; - this._spawnFunc = this._spawnPoint; - break; - case "polygonalChain": - this.spawnType = "polygonalChain"; - this._spawnFunc = this._spawnPolygonalChain; - this.spawnPolygonalChain = new PolygonalChain(config.spawnPolygon); - break; - default: - this.spawnType = "point"; - this._spawnFunc = this._spawnPoint; - break; - } - }; - /** - * Recycles an individual particle. For internal use only. - * @param particle The particle to recycle. - * @internal - */ - Emitter.prototype.recycle = function (particle) { - if (particle.next) - particle.next.prev = particle.prev; - if (particle.prev) - particle.prev.next = particle.next; - if (particle == this._activeParticlesLast) - this._activeParticlesLast = particle.prev; - if (particle == this._activeParticlesFirst) - this._activeParticlesFirst = particle.next; - //add to pool - particle.prev = null; - particle.next = this._poolFirst; - this._poolFirst = particle; - //remove child from display, or make it invisible if it is in a ParticleContainer - if (particle.parent) - particle.parent.removeChild(particle); - //decrease count - --this.particleCount; - }; - /** - * Sets the rotation of the emitter to a new value. - * @param newRot The new rotation, in degrees. - */ - Emitter.prototype.rotate = function (newRot) { - if (this.rotation == newRot) - return; - //caclulate the difference in rotation for rotating spawnPos - var diff = newRot - this.rotation; - this.rotation = newRot; - //rotate spawnPos - exports.ParticleUtils.rotatePoint(diff, this.spawnPos); - //mark the position as having changed - this._posChanged = true; - }; - /** - * Changes the spawn position of the emitter. - * @param x The new x value of the spawn position for the emitter. - * @param y The new y value of the spawn position for the emitter. - */ - Emitter.prototype.updateSpawnPos = function (x, y) { - this._posChanged = true; - this.spawnPos.x = x; - this.spawnPos.y = y; - }; - /** - * Changes the position of the emitter's owner. You should call this if you are adding - * particles to the world container that your emitter's owner is moving around in. - * @param x The new x value of the emitter's owner. - * @param y The new y value of the emitter's owner. - */ - Emitter.prototype.updateOwnerPos = function (x, y) { - this._posChanged = true; - this.ownerPos.x = x; - this.ownerPos.y = y; - }; - /** - * Prevents emitter position interpolation in the next update. - * This should be used if you made a major position change of your emitter's owner - * that was not normal movement. - */ - Emitter.prototype.resetPositionTracking = function () { - this._prevPosIsValid = false; - }; - Object.defineProperty(Emitter.prototype, "emit", { - /** - * If particles should be emitted during update() calls. Setting this to false - * stops new particles from being created, but allows existing ones to die out. - */ - get: function () { return this._emit; }, - set: function (value) { - this._emit = !!value; - this._emitterLife = this.emitterLifetime; - }, - enumerable: true, - configurable: true - }); - ; - Object.defineProperty(Emitter.prototype, "autoUpdate", { - /** - * If the update function is called automatically from the shared ticker. - * Setting this to false requires calling the update function manually. - */ - get: function () { return this._autoUpdate; }, - set: function (value) { - if (this._autoUpdate && !value) { - ticker.remove(this.update, this); - } - else if (!this._autoUpdate && value) { - ticker.add(this.update, this); - } - this._autoUpdate = !!value; - }, - enumerable: true, - configurable: true - }); - /** - * Starts emitting particles, sets autoUpdate to true, and sets up the Emitter to destroy itself - * when particle emission is complete. - * @param callback Callback for when emission is complete (all particles have died off) - */ - Emitter.prototype.playOnceAndDestroy = function (callback) { - this.autoUpdate = true; - this.emit = true; - this._destroyWhenComplete = true; - this._completeCallback = callback; - }; - /** - * Starts emitting particles and optionally calls a callback when particle emission is complete. - * @param callback Callback for when emission is complete (all particles have died off) - */ - Emitter.prototype.playOnce = function (callback) { - this.emit = true; - this._completeCallback = callback; - }; - /** - * Updates all particles spawned by this emitter and emits new ones. - * @param delta Time elapsed since the previous frame, in __seconds__. - */ - Emitter.prototype.update = function (delta) { - if (this._autoUpdate) { - delta = delta / pixi.settings.TARGET_FPMS / 1000; - } - //if we don't have a parent to add particles to, then don't do anything. - //this also works as a isDestroyed check - if (!this._parent) - return; - //update existing particles - var i, particle, next; - for (particle = this._activeParticlesFirst; particle; particle = next) { - next = particle.next; - particle.update(delta); - } - var prevX, prevY; - //if the previous position is valid, store these for later interpolation - if (this._prevPosIsValid) { - prevX = this._prevEmitterPos.x; - prevY = this._prevEmitterPos.y; - } - //store current position of the emitter as local variables - var curX = this.ownerPos.x + this.spawnPos.x; - var curY = this.ownerPos.y + this.spawnPos.y; - //spawn new particles - if (this._emit) { - //decrease spawn timer - this._spawnTimer -= delta < 0 ? 0 : delta; - //while _spawnTimer < 0, we have particles to spawn - while (this._spawnTimer <= 0) { - //determine if the emitter should stop spawning - if (this._emitterLife > 0) { - this._emitterLife -= this._frequency; - if (this._emitterLife <= 0) { - this._spawnTimer = 0; - this._emitterLife = 0; - this.emit = false; - break; - } - } - //determine if we have hit the particle limit - if (this.particleCount >= this.maxParticles) { - this._spawnTimer += this._frequency; - continue; - } - //determine the particle lifetime - var lifetime = void 0; - if (this.minLifetime == this.maxLifetime) - lifetime = this.minLifetime; - else - lifetime = Math.random() * (this.maxLifetime - this.minLifetime) + this.minLifetime; - //only make the particle if it wouldn't immediately destroy itself - if (-this._spawnTimer < lifetime) { - //If the position has changed and this isn't the first spawn, - //interpolate the spawn position - var emitPosX = void 0, emitPosY = void 0; - if (this._prevPosIsValid && this._posChanged) { - //1 - _spawnTimer / delta, but _spawnTimer is negative - var lerp = 1 + this._spawnTimer / delta; - emitPosX = (curX - prevX) * lerp + prevX; - emitPosY = (curY - prevY) * lerp + prevY; - } - else //otherwise just set to the spawn position - { - emitPosX = curX; - emitPosY = curY; - } - //create enough particles to fill the wave (non-burst types have a wave of 1) - i = 0; - for (var len = Math.min(this.particlesPerWave, this.maxParticles - this.particleCount); i < len; ++i) { - //see if we actually spawn one - if (this.spawnChance < 1 && Math.random() >= this.spawnChance) - continue; - //create particle - var p = void 0; - if (this._poolFirst) { - p = this._poolFirst; - this._poolFirst = this._poolFirst.next; - p.next = null; - } - else { - p = new this.particleConstructor(this); - } - //set a random texture if we have more than one - if (this.particleImages.length > 1) { - p.applyArt(this.particleImages[Math.floor(Math.random() * this.particleImages.length)]); - } - else { - //if they are actually the same texture, a standard particle - //will quit early from the texture setting in setTexture(). - p.applyArt(this.particleImages[0]); - } - //set up the start and end values - p.alphaList.reset(this.startAlpha); - if (this.minimumSpeedMultiplier != 1) { - p.speedMultiplier = Math.random() * (1 - this.minimumSpeedMultiplier) + this.minimumSpeedMultiplier; - } - p.speedList.reset(this.startSpeed); - p.acceleration.x = this.acceleration.x; - p.acceleration.y = this.acceleration.y; - p.maxSpeed = this.maxSpeed; - if (this.minimumScaleMultiplier != 1) { - p.scaleMultiplier = Math.random() * (1 - this.minimumScaleMultiplier) + this.minimumScaleMultiplier; - } - p.scaleList.reset(this.startScale); - p.colorList.reset(this.startColor); - //randomize the rotation speed - if (this.minRotationSpeed == this.maxRotationSpeed) - p.rotationSpeed = this.minRotationSpeed; - else - p.rotationSpeed = Math.random() * (this.maxRotationSpeed - this.minRotationSpeed) + this.minRotationSpeed; - p.rotationAcceleration = this.rotationAcceleration; - p.noRotation = this.noRotation; - //set up the lifetime - p.maxLife = lifetime; - //set the blend mode - p.blendMode = this.particleBlendMode; - //set the custom ease, if any - p.ease = this.customEase; - //set the extra data, if any - p.extraData = this.extraData; - //set additional properties to particle - this.applyAdditionalProperties(p); - //call the proper function to handle rotation and position of particle - this._spawnFunc(p, emitPosX, emitPosY, i); - //initialize particle - p.init(); - //update the particle by the time passed, so the particles are spread out properly - p.update(-this._spawnTimer); //we want a positive delta, because a negative delta messes things up - //add the particle to the display list - if (!p.parent) { - if (this.addAtBack) - this._parent.addChildAt(p, 0); - else - this._parent.addChild(p); - } - else { - //kind of hacky, but performance friendly - //shuffle children to correct place - var children = this._parent.children; - //avoid using splice if possible - if (children[0] == p) - children.shift(); - else if (children[children.length - 1] == p) - children.pop(); - else { - var index = children.indexOf(p); - children.splice(index, 1); - } - if (this.addAtBack) - children.unshift(p); - else - children.push(p); - } - //add particle to list of active particles - if (this._activeParticlesLast) { - this._activeParticlesLast.next = p; - p.prev = this._activeParticlesLast; - this._activeParticlesLast = p; - } - else { - this._activeParticlesLast = this._activeParticlesFirst = p; - } - ++this.particleCount; - } - } - //increase timer and continue on to any other particles that need to be created - this._spawnTimer += this._frequency; - } - } - //if the position changed before this update, then keep track of that - if (this._posChanged) { - this._prevEmitterPos.x = curX; - this._prevEmitterPos.y = curY; - this._prevPosIsValid = true; - this._posChanged = false; - } - //if we are all done and should destroy ourselves, take care of that - if (!this._emit && !this._activeParticlesFirst) { - if (this._completeCallback) { - var cb = this._completeCallback; - this._completeCallback = null; - cb(); - } - if (this._destroyWhenComplete) { - this.destroy(); - } - } - }; - /** - * Set additional properties to new particle. - * Using on classes that extend from Emitter - * @param p The particle - */ - Emitter.prototype.applyAdditionalProperties = function (p) { - }; - /** - * Positions a particle for a point type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnPoint = function (p, emitPosX, emitPosY) { - //set the initial rotation/direction of the particle based on - //starting particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation; - //drop the particle at the emitter's position - p.position.x = emitPosX; - p.position.y = emitPosY; - }; - /** - * Positions a particle for a rectangle type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnRect = function (p, emitPosX, emitPosY) { - //set the initial rotation/direction of the particle based on starting - //particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation; - //place the particle at a random point in the rectangle - helperPoint.x = Math.random() * this.spawnRect.width + this.spawnRect.x; - helperPoint.y = Math.random() * this.spawnRect.height + this.spawnRect.y; - if (this.rotation !== 0) - exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); - p.position.x = emitPosX + helperPoint.x; - p.position.y = emitPosY + helperPoint.y; - }; - /** - * Positions a particle for a circle type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnCircle = function (p, emitPosX, emitPosY) { - //set the initial rotation/direction of the particle based on starting - //particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + - this.minStartRotation + this.rotation; - //place the particle at a random radius in the circle - helperPoint.x = Math.random() * this.spawnCircle.radius; - helperPoint.y = 0; - //rotate the point to a random angle in the circle - exports.ParticleUtils.rotatePoint(Math.random() * 360, helperPoint); - //offset by the circle's center - helperPoint.x += this.spawnCircle.x; - helperPoint.y += this.spawnCircle.y; - //rotate the point by the emitter's rotation - if (this.rotation !== 0) - exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); - //set the position, offset by the emitter's position - p.position.x = emitPosX + helperPoint.x; - p.position.y = emitPosY + helperPoint.y; - }; - /** - * Positions a particle for a ring type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnRing = function (p, emitPosX, emitPosY) { - var spawnCircle = this.spawnCircle; - //set the initial rotation/direction of the particle based on starting - //particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + - this.minStartRotation + this.rotation; - //place the particle at a random radius in the ring - if (spawnCircle.minRadius !== spawnCircle.radius) { - helperPoint.x = Math.random() * (spawnCircle.radius - spawnCircle.minRadius) + - spawnCircle.minRadius; - } - else - helperPoint.x = spawnCircle.radius; - helperPoint.y = 0; - //rotate the point to a random angle in the circle - var angle = Math.random() * 360; - p.rotation += angle; - exports.ParticleUtils.rotatePoint(angle, helperPoint); - //offset by the circle's center - helperPoint.x += this.spawnCircle.x; - helperPoint.y += this.spawnCircle.y; - //rotate the point by the emitter's rotation - if (this.rotation !== 0) - exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); - //set the position, offset by the emitter's position - p.position.x = emitPosX + helperPoint.x; - p.position.y = emitPosY + helperPoint.y; - }; - /** - * Positions a particle for polygonal chain. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnPolygonalChain = function (p, emitPosX, emitPosY) { - //set the initial rotation/direction of the particle based on starting - //particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + - this.minStartRotation + this.rotation; - // get random point on the polygon chain - this.spawnPolygonalChain.getRandomPoint(helperPoint); - //rotate the point by the emitter's rotation - if (this.rotation !== 0) - exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); - //set the position, offset by the emitter's position - p.position.x = emitPosX + helperPoint.x; - p.position.y = emitPosY + helperPoint.y; - }; - /** - * Positions a particle for a burst type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. - */ - Emitter.prototype._spawnBurst = function (p, emitPosX, emitPosY, i) { - //set the initial rotation/direction of the particle based on spawn - //angle and rotation of emitter - if (this.particleSpacing === 0) - p.rotation = Math.random() * 360; - else - p.rotation = this.angleStart + (this.particleSpacing * i) + this.rotation; - //drop the particle at the emitter's position - p.position.x = emitPosX; - p.position.y = emitPosY; - }; - /** - * Kills all active particles immediately. - */ - Emitter.prototype.cleanup = function () { - var particle, next; - for (particle = this._activeParticlesFirst; particle; particle = next) { - next = particle.next; - this.recycle(particle); - if (particle.parent) - particle.parent.removeChild(particle); - } - this._activeParticlesFirst = this._activeParticlesLast = null; - this.particleCount = 0; - }; - /** - * Destroys the emitter and all of its particles. - */ - Emitter.prototype.destroy = function () { - //make sure we aren't still listening to any tickers - this.autoUpdate = false; - //puts all active particles in the pool, and removes them from the particle parent - this.cleanup(); - //wipe the pool clean - var next; - for (var particle = this._poolFirst; particle; particle = next) { - //store next value so we don't lose it in our destroy call - next = particle.next; - particle.destroy(); - } - this._poolFirst = this._parent = this.particleImages = this.spawnPos = this.ownerPos = - this.startColor = this.startScale = this.startAlpha = this.startSpeed = - this.customEase = this._completeCallback = null; - }; - return Emitter; + // get the shared ticker, in V4 and V5 friendly methods + /** + * @hidden + */ + var ticker; + // to avoid Rollup transforming our import, save pixi namespace in a variable + var pixiNS$1 = pixi; + if (parseInt(/^(\d+)\./.exec(pixi.VERSION)[1]) < 5) { + ticker = pixiNS$1.ticker.shared; + } + else { + ticker = pixiNS$1.Ticker.shared; + } + /** + * @hidden + */ + var helperPoint = new pixi.Point(); + /** + * A particle emitter. + */ + var Emitter = /** @class */ (function () { + /** + * @param particleParent The container to add the particles to. + * @param particleImages A texture or array of textures to use + * for the particles. Strings will be turned + * into textures via Texture.fromImage(). + * @param config A configuration object containing settings for the emitter. + * @param config.emit If config.emit is explicitly passed as false, the + * Emitter will start disabled. + * @param config.autoUpdate If config.autoUpdate is explicitly passed as + * true, the Emitter will automatically call + * update via the PIXI shared ticker. + */ + function Emitter(particleParent, particleImages, config) { + /** + * A number keeping index of currently applied image. Used to emit arts in order. + */ + this._currentImageIndex = -1; + this._particleConstructor = Particle; + //properties for individual particles + this.particleImages = null; + this.startAlpha = null; + this.startSpeed = null; + this.minimumSpeedMultiplier = 1; + this.acceleration = null; + this.maxSpeed = NaN; + this.startScale = null; + this.minimumScaleMultiplier = 1; + this.startColor = null; + this.minLifetime = 0; + this.maxLifetime = 0; + this.minStartRotation = 0; + this.maxStartRotation = 0; + this.noRotation = false; + this.minRotationSpeed = 0; + this.maxRotationSpeed = 0; + this.particleBlendMode = 0; + this.customEase = null; + this.extraData = null; + //properties for spawning particles + this._frequency = 1; + this.spawnChance = 1; + this.maxParticles = 1000; + this.emitterLifetime = -1; + this.spawnPos = null; + this.spawnType = null; + this._spawnFunc = null; + this.spawnRect = null; + this.spawnCircle = null; + this.spawnPolygonalChain = null; + this.particlesPerWave = 1; + this.particleSpacing = 0; + this.angleStart = 0; + //emitter properties + this.rotation = 0; + this.ownerPos = null; + this._prevEmitterPos = null; + this._prevPosIsValid = false; + this._posChanged = false; + this._parent = null; + this.addAtBack = false; + this.particleCount = 0; + this._emit = false; + this._spawnTimer = 0; + this._emitterLife = -1; + this._activeParticlesFirst = null; + this._activeParticlesLast = null; + this._poolFirst = null; + this._origConfig = null; + this._origArt = null; + this._autoUpdate = false; + this._currentImageIndex = -1; + this._destroyWhenComplete = false; + this._completeCallback = null; + //set the initial parent + this.parent = particleParent; + if (particleImages && config) + this.init(particleImages, config); + //save often used functions on the instance instead of the prototype for better speed + this.recycle = this.recycle; + this.update = this.update; + this.rotate = this.rotate; + this.updateSpawnPos = this.updateSpawnPos; + this.updateOwnerPos = this.updateOwnerPos; + } + Object.defineProperty(Emitter.prototype, "orderedArt", { + /** + * If the emitter is using particle art in order as provided in `particleImages`. + * Effective only when `particleImages` has multiple art options. + * This is particularly useful ensuring that each art shows up once, in case you need to emit a body in an order. + * For example: dragon - [Head, body1, body2, ..., tail] + */ + get: function () { return this._currentImageIndex !== -1; }, + set: function (value) { + this._currentImageIndex = value ? 0 : -1; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Emitter.prototype, "frequency", { + /** + * Time between particle spawns in seconds. If this value is not a number greater than 0, + * it will be set to 1 (particle per second) to prevent infinite loops. + */ + get: function () { return this._frequency; }, + set: function (value) { + //do some error checking to prevent infinite loops + if (typeof value == "number" && value > 0) + this._frequency = value; + else + this._frequency = 1; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Emitter.prototype, "particleConstructor", { + /** + * The constructor used to create new particles. The default is + * the built in Particle class. Setting this will dump any active or + * pooled particles, if the emitter has already been used. + */ + get: function () { return this._particleConstructor; }, + set: function (value) { + if (value != this._particleConstructor) { + this._particleConstructor = value; + //clean up existing particles + this.cleanup(); + //scrap all the particles + for (var particle = this._poolFirst; particle; particle = particle.next) { + particle.destroy(); + } + this._poolFirst = null; + //re-initialize the emitter so that the new constructor can do anything it needs to + if (this._origConfig && this._origArt) + this.init(this._origArt, this._origConfig); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Emitter.prototype, "parent", { + /** + * The container to add particles to. Settings this will dump any active particles. + */ + get: function () { return this._parent; }, + set: function (value) { + this.cleanup(); + this._parent = value; + }, + enumerable: true, + configurable: true + }); + /** + * Sets up the emitter based on the config settings. + * @param art A texture or array of textures to use for the particles. + * @param config A configuration object containing settings for the emitter. + */ + Emitter.prototype.init = function (art, config) { + if (!art || !config) + return; + //clean up any existing particles + this.cleanup(); + //store the original config and particle images, in case we need to re-initialize + //when the particle constructor is changed + this._origConfig = config; + this._origArt = art; + //set up the array of data, also ensuring that it is an array + art = Array.isArray(art) ? art.slice() : [art]; + //run the art through the particle class's parsing function + var partClass = this._particleConstructor; + this.particleImages = partClass.parseArt ? partClass.parseArt(art) : art; + /////////////////////////// + // Particle Properties // + /////////////////////////// + //set up the alpha + if (config.alpha) { + this.startAlpha = PropertyNode.createList(config.alpha); + } + else + this.startAlpha = new PropertyNode(1, 0); + //set up the speed + if (config.speed) { + this.startSpeed = PropertyNode.createList(config.speed); + this.minimumSpeedMultiplier = ('minimumSpeedMultiplier' in config ? config.minimumSpeedMultiplier : config.speed.minimumSpeedMultiplier) || 1; + } + else { + this.minimumSpeedMultiplier = 1; + this.startSpeed = new PropertyNode(0, 0); + } + //set up acceleration + var acceleration = config.acceleration; + if (acceleration && (acceleration.x || acceleration.y)) { + //make sure we disable speed interpolation + this.startSpeed.next = null; + this.acceleration = new pixi.Point(acceleration.x, acceleration.y); + this.maxSpeed = config.maxSpeed || NaN; + } + else + this.acceleration = new pixi.Point(); + //set up the scale + if (config.scale) { + this.startScale = PropertyNode.createList(config.scale); + this.minimumScaleMultiplier = ('minimumScaleMultiplier' in config ? config.minimumScaleMultiplier : config.scale.minimumScaleMultiplier) || 1; + } + else { + this.startScale = new PropertyNode(1, 0); + this.minimumScaleMultiplier = 1; + } + //set up the color + if (config.color) { + this.startColor = PropertyNode.createList(config.color); + } + else { + this.startColor = new PropertyNode({ r: 0xFF, g: 0xFF, b: 0xFF }, 0); + } + //set up the start rotation + if (config.startRotation) { + this.minStartRotation = config.startRotation.min; + this.maxStartRotation = config.startRotation.max; + } + else + this.minStartRotation = this.maxStartRotation = 0; + if (config.noRotation && + (this.minStartRotation || this.maxStartRotation)) { + this.noRotation = !!config.noRotation; + } + else + this.noRotation = false; + //set up the rotation speed + if (config.rotationSpeed) { + this.minRotationSpeed = config.rotationSpeed.min; + this.maxRotationSpeed = config.rotationSpeed.max; + } + else + this.minRotationSpeed = this.maxRotationSpeed = 0; + this.rotationAcceleration = config.rotationAcceleration || 0; + //set up the lifetime + this.minLifetime = config.lifetime.min; + this.maxLifetime = config.lifetime.max; + //get the blend mode + this.particleBlendMode = exports.ParticleUtils.getBlendMode(config.blendMode); + //use the custom ease if provided + if (config.ease) { + this.customEase = typeof config.ease == "function" ? + config.ease : exports.ParticleUtils.generateEase(config.ease); + } + else + this.customEase = null; + //set up the extra data, running it through the particle class's parseData function. + if (partClass.parseData) + this.extraData = partClass.parseData(config.extraData); + else + this.extraData = config.extraData || null; + ////////////////////////// + // Emitter Properties // + ////////////////////////// + //reset spawn type specific settings + this.spawnRect = this.spawnCircle = null; + this.particlesPerWave = 1; + if (config.particlesPerWave && config.particlesPerWave > 1) + this.particlesPerWave = config.particlesPerWave; + this.particleSpacing = 0; + this.angleStart = 0; + //determine the spawn function to use + this.parseSpawnType(config); + //set the spawning frequency + this.frequency = config.frequency; + this.spawnChance = (typeof config.spawnChance === 'number' && config.spawnChance > 0) ? config.spawnChance : 1; + //set the emitter lifetime + this.emitterLifetime = config.emitterLifetime || -1; + //set the max particles + this.maxParticles = config.maxParticles > 0 ? config.maxParticles : 1000; + //determine if we should add the particle at the back of the list or not + this.addAtBack = !!config.addAtBack; + //reset the emitter position and rotation variables + this.rotation = 0; + this.ownerPos = new pixi.Point(); + this.spawnPos = new pixi.Point(config.pos.x, config.pos.y); + this.initAdditional(art, config); + this._prevEmitterPos = this.spawnPos.clone(); + //previous emitter position is invalid and should not be used for interpolation + this._prevPosIsValid = false; + //start emitting + this._spawnTimer = 0; + this.emit = config.emit === undefined ? true : !!config.emit; + this.autoUpdate = !!config.autoUpdate; + this.orderedArt = !!config.orderedArt; + }; + /** + * Sets up additional parameters to the emitter from config settings. + * Using for parsing additional parameters on classes that extend from Emitter + * @param art A texture or array of textures to use for the particles. + * @param config A configuration object containing settings for the emitter. + */ + Emitter.prototype.initAdditional = function (art, config) { + }; + /** + * Parsing emitter spawn type from config settings. + * Place for override and add new kind of spawn type + * @param config A configuration object containing settings for the emitter. + */ + Emitter.prototype.parseSpawnType = function (config) { + var spawnCircle; + switch (config.spawnType) { + case "rect": + this.spawnType = "rect"; + this._spawnFunc = this._spawnRect; + var spawnRect = config.spawnRect; + this.spawnRect = new pixi.Rectangle(spawnRect.x, spawnRect.y, spawnRect.w, spawnRect.h); + break; + case "circle": + this.spawnType = "circle"; + this._spawnFunc = this._spawnCircle; + spawnCircle = config.spawnCircle; + this.spawnCircle = new pixi.Circle(spawnCircle.x, spawnCircle.y, spawnCircle.r); + break; + case "ring": + this.spawnType = "ring"; + this._spawnFunc = this._spawnRing; + spawnCircle = config.spawnCircle; + this.spawnCircle = new pixi.Circle(spawnCircle.x, spawnCircle.y, spawnCircle.r); + this.spawnCircle.minRadius = spawnCircle.minR; + break; + case "burst": + this.spawnType = "burst"; + this._spawnFunc = this._spawnBurst; + this.particleSpacing = config.particleSpacing; + this.angleStart = config.angleStart ? config.angleStart : 0; + break; + case "point": + this.spawnType = "point"; + this._spawnFunc = this._spawnPoint; + break; + case "polygonalChain": + this.spawnType = "polygonalChain"; + this._spawnFunc = this._spawnPolygonalChain; + this.spawnPolygonalChain = new PolygonalChain(config.spawnPolygon); + break; + default: + this.spawnType = "point"; + this._spawnFunc = this._spawnPoint; + break; + } + }; + /** + * Recycles an individual particle. For internal use only. + * @param particle The particle to recycle. + * @internal + */ + Emitter.prototype.recycle = function (particle) { + if (particle.next) + particle.next.prev = particle.prev; + if (particle.prev) + particle.prev.next = particle.next; + if (particle == this._activeParticlesLast) + this._activeParticlesLast = particle.prev; + if (particle == this._activeParticlesFirst) + this._activeParticlesFirst = particle.next; + //add to pool + particle.prev = null; + particle.next = this._poolFirst; + this._poolFirst = particle; + //remove child from display, or make it invisible if it is in a ParticleContainer + if (particle.parent) + particle.parent.removeChild(particle); + //decrease count + --this.particleCount; + }; + /** + * Sets the rotation of the emitter to a new value. + * @param newRot The new rotation, in degrees. + */ + Emitter.prototype.rotate = function (newRot) { + if (this.rotation == newRot) + return; + //caclulate the difference in rotation for rotating spawnPos + var diff = newRot - this.rotation; + this.rotation = newRot; + //rotate spawnPos + exports.ParticleUtils.rotatePoint(diff, this.spawnPos); + //mark the position as having changed + this._posChanged = true; + }; + /** + * Changes the spawn position of the emitter. + * @param x The new x value of the spawn position for the emitter. + * @param y The new y value of the spawn position for the emitter. + */ + Emitter.prototype.updateSpawnPos = function (x, y) { + this._posChanged = true; + this.spawnPos.x = x; + this.spawnPos.y = y; + }; + /** + * Changes the position of the emitter's owner. You should call this if you are adding + * particles to the world container that your emitter's owner is moving around in. + * @param x The new x value of the emitter's owner. + * @param y The new y value of the emitter's owner. + */ + Emitter.prototype.updateOwnerPos = function (x, y) { + this._posChanged = true; + this.ownerPos.x = x; + this.ownerPos.y = y; + }; + /** + * Prevents emitter position interpolation in the next update. + * This should be used if you made a major position change of your emitter's owner + * that was not normal movement. + */ + Emitter.prototype.resetPositionTracking = function () { + this._prevPosIsValid = false; + }; + Object.defineProperty(Emitter.prototype, "emit", { + /** + * If particles should be emitted during update() calls. Setting this to false + * stops new particles from being created, but allows existing ones to die out. + */ + get: function () { return this._emit; }, + set: function (value) { + this._emit = !!value; + this._emitterLife = this.emitterLifetime; + }, + enumerable: true, + configurable: true + }); + ; + Object.defineProperty(Emitter.prototype, "autoUpdate", { + /** + * If the update function is called automatically from the shared ticker. + * Setting this to false requires calling the update function manually. + */ + get: function () { return this._autoUpdate; }, + set: function (value) { + if (this._autoUpdate && !value) { + ticker.remove(this.update, this); + } + else if (!this._autoUpdate && value) { + ticker.add(this.update, this); + } + this._autoUpdate = !!value; + }, + enumerable: true, + configurable: true + }); + /** + * Starts emitting particles, sets autoUpdate to true, and sets up the Emitter to destroy itself + * when particle emission is complete. + * @param callback Callback for when emission is complete (all particles have died off) + */ + Emitter.prototype.playOnceAndDestroy = function (callback) { + this.autoUpdate = true; + this.emit = true; + this._destroyWhenComplete = true; + this._completeCallback = callback; + }; + /** + * Starts emitting particles and optionally calls a callback when particle emission is complete. + * @param callback Callback for when emission is complete (all particles have died off) + */ + Emitter.prototype.playOnce = function (callback) { + this.emit = true; + this._completeCallback = callback; + }; + /** + * Updates all particles spawned by this emitter and emits new ones. + * @param delta Time elapsed since the previous frame, in __seconds__. + */ + Emitter.prototype.update = function (delta) { + if (this._autoUpdate) { + delta = delta / pixi.settings.TARGET_FPMS / 1000; + } + //if we don't have a parent to add particles to, then don't do anything. + //this also works as a isDestroyed check + if (!this._parent) + return; + //update existing particles + var i, particle, next; + for (particle = this._activeParticlesFirst; particle; particle = next) { + next = particle.next; + particle.update(delta); + } + var prevX, prevY; + //if the previous position is valid, store these for later interpolation + if (this._prevPosIsValid) { + prevX = this._prevEmitterPos.x; + prevY = this._prevEmitterPos.y; + } + //store current position of the emitter as local variables + var curX = this.ownerPos.x + this.spawnPos.x; + var curY = this.ownerPos.y + this.spawnPos.y; + //spawn new particles + if (this._emit) { + //decrease spawn timer + this._spawnTimer -= delta < 0 ? 0 : delta; + //while _spawnTimer < 0, we have particles to spawn + while (this._spawnTimer <= 0) { + //determine if the emitter should stop spawning + if (this._emitterLife > 0) { + this._emitterLife -= this._frequency; + if (this._emitterLife <= 0) { + this._spawnTimer = 0; + this._emitterLife = 0; + this.emit = false; + break; + } + } + //determine if we have hit the particle limit + if (this.particleCount >= this.maxParticles) { + this._spawnTimer += this._frequency; + continue; + } + //determine the particle lifetime + var lifetime = void 0; + if (this.minLifetime == this.maxLifetime) + lifetime = this.minLifetime; + else + lifetime = Math.random() * (this.maxLifetime - this.minLifetime) + this.minLifetime; + //only make the particle if it wouldn't immediately destroy itself + if (-this._spawnTimer < lifetime) { + //If the position has changed and this isn't the first spawn, + //interpolate the spawn position + var emitPosX = void 0, emitPosY = void 0; + if (this._prevPosIsValid && this._posChanged) { + //1 - _spawnTimer / delta, but _spawnTimer is negative + var lerp = 1 + this._spawnTimer / delta; + emitPosX = (curX - prevX) * lerp + prevX; + emitPosY = (curY - prevY) * lerp + prevY; + } + else //otherwise just set to the spawn position + { + emitPosX = curX; + emitPosY = curY; + } + //create enough particles to fill the wave (non-burst types have a wave of 1) + i = 0; + for (var len = Math.min(this.particlesPerWave, this.maxParticles - this.particleCount); i < len; ++i) { + //see if we actually spawn one + if (this.spawnChance < 1 && Math.random() >= this.spawnChance) + continue; + //create particle + var p = void 0; + if (this._poolFirst) { + p = this._poolFirst; + this._poolFirst = this._poolFirst.next; + p.next = null; + } + else { + p = new this.particleConstructor(this); + } + //set a random texture if we have more than one + if (this.particleImages.length > 1) { + // if using ordered art + if (this._currentImageIndex !== -1) { + // get current art index, then increment for the next particle + p.applyArt(this.particleImages[this._currentImageIndex++]); + // loop around if needed + if (this._currentImageIndex < 0 || this._currentImageIndex >= this.particleImages.length) { + this._currentImageIndex = 0; + } + } + // otherwise grab a random one + else { + p.applyArt(this.particleImages[Math.floor(Math.random() * this.particleImages.length)]); + } + } + else { + //if they are actually the same texture, a standard particle + //will quit early from the texture setting in setTexture(). + p.applyArt(this.particleImages[0]); + } + //set up the start and end values + p.alphaList.reset(this.startAlpha); + if (this.minimumSpeedMultiplier != 1) { + p.speedMultiplier = Math.random() * (1 - this.minimumSpeedMultiplier) + this.minimumSpeedMultiplier; + } + p.speedList.reset(this.startSpeed); + p.acceleration.x = this.acceleration.x; + p.acceleration.y = this.acceleration.y; + p.maxSpeed = this.maxSpeed; + if (this.minimumScaleMultiplier != 1) { + p.scaleMultiplier = Math.random() * (1 - this.minimumScaleMultiplier) + this.minimumScaleMultiplier; + } + p.scaleList.reset(this.startScale); + p.colorList.reset(this.startColor); + //randomize the rotation speed + if (this.minRotationSpeed == this.maxRotationSpeed) + p.rotationSpeed = this.minRotationSpeed; + else + p.rotationSpeed = Math.random() * (this.maxRotationSpeed - this.minRotationSpeed) + this.minRotationSpeed; + p.rotationAcceleration = this.rotationAcceleration; + p.noRotation = this.noRotation; + //set up the lifetime + p.maxLife = lifetime; + //set the blend mode + p.blendMode = this.particleBlendMode; + //set the custom ease, if any + p.ease = this.customEase; + //set the extra data, if any + p.extraData = this.extraData; + //set additional properties to particle + this.applyAdditionalProperties(p); + //call the proper function to handle rotation and position of particle + this._spawnFunc(p, emitPosX, emitPosY, i); + //initialize particle + p.init(); + //update the particle by the time passed, so the particles are spread out properly + p.update(-this._spawnTimer); //we want a positive delta, because a negative delta messes things up + //add the particle to the display list + if (!p.parent) { + if (this.addAtBack) + this._parent.addChildAt(p, 0); + else + this._parent.addChild(p); + } + else { + //kind of hacky, but performance friendly + //shuffle children to correct place + var children = this._parent.children; + //avoid using splice if possible + if (children[0] == p) + children.shift(); + else if (children[children.length - 1] == p) + children.pop(); + else { + var index = children.indexOf(p); + children.splice(index, 1); + } + if (this.addAtBack) + children.unshift(p); + else + children.push(p); + } + //add particle to list of active particles + if (this._activeParticlesLast) { + this._activeParticlesLast.next = p; + p.prev = this._activeParticlesLast; + this._activeParticlesLast = p; + } + else { + this._activeParticlesLast = this._activeParticlesFirst = p; + } + ++this.particleCount; + } + } + //increase timer and continue on to any other particles that need to be created + this._spawnTimer += this._frequency; + } + } + //if the position changed before this update, then keep track of that + if (this._posChanged) { + this._prevEmitterPos.x = curX; + this._prevEmitterPos.y = curY; + this._prevPosIsValid = true; + this._posChanged = false; + } + //if we are all done and should destroy ourselves, take care of that + if (!this._emit && !this._activeParticlesFirst) { + if (this._completeCallback) { + var cb = this._completeCallback; + this._completeCallback = null; + cb(); + } + if (this._destroyWhenComplete) { + this.destroy(); + } + } + }; + /** + * Set additional properties to new particle. + * Using on classes that extend from Emitter + * @param p The particle + */ + Emitter.prototype.applyAdditionalProperties = function (p) { + }; + /** + * Positions a particle for a point type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnPoint = function (p, emitPosX, emitPosY) { + //set the initial rotation/direction of the particle based on + //starting particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation; + //drop the particle at the emitter's position + p.position.x = emitPosX; + p.position.y = emitPosY; + }; + /** + * Positions a particle for a rectangle type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnRect = function (p, emitPosX, emitPosY) { + //set the initial rotation/direction of the particle based on starting + //particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation; + //place the particle at a random point in the rectangle + helperPoint.x = Math.random() * this.spawnRect.width + this.spawnRect.x; + helperPoint.y = Math.random() * this.spawnRect.height + this.spawnRect.y; + if (this.rotation !== 0) + exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); + p.position.x = emitPosX + helperPoint.x; + p.position.y = emitPosY + helperPoint.y; + }; + /** + * Positions a particle for a circle type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnCircle = function (p, emitPosX, emitPosY) { + //set the initial rotation/direction of the particle based on starting + //particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + + this.minStartRotation + this.rotation; + //place the particle at a random radius in the circle + helperPoint.x = Math.random() * this.spawnCircle.radius; + helperPoint.y = 0; + //rotate the point to a random angle in the circle + exports.ParticleUtils.rotatePoint(Math.random() * 360, helperPoint); + //offset by the circle's center + helperPoint.x += this.spawnCircle.x; + helperPoint.y += this.spawnCircle.y; + //rotate the point by the emitter's rotation + if (this.rotation !== 0) + exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); + //set the position, offset by the emitter's position + p.position.x = emitPosX + helperPoint.x; + p.position.y = emitPosY + helperPoint.y; + }; + /** + * Positions a particle for a ring type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnRing = function (p, emitPosX, emitPosY) { + var spawnCircle = this.spawnCircle; + //set the initial rotation/direction of the particle based on starting + //particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + + this.minStartRotation + this.rotation; + //place the particle at a random radius in the ring + if (spawnCircle.minRadius !== spawnCircle.radius) { + helperPoint.x = Math.random() * (spawnCircle.radius - spawnCircle.minRadius) + + spawnCircle.minRadius; + } + else + helperPoint.x = spawnCircle.radius; + helperPoint.y = 0; + //rotate the point to a random angle in the circle + var angle = Math.random() * 360; + p.rotation += angle; + exports.ParticleUtils.rotatePoint(angle, helperPoint); + //offset by the circle's center + helperPoint.x += this.spawnCircle.x; + helperPoint.y += this.spawnCircle.y; + //rotate the point by the emitter's rotation + if (this.rotation !== 0) + exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); + //set the position, offset by the emitter's position + p.position.x = emitPosX + helperPoint.x; + p.position.y = emitPosY + helperPoint.y; + }; + /** + * Positions a particle for polygonal chain. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnPolygonalChain = function (p, emitPosX, emitPosY) { + //set the initial rotation/direction of the particle based on starting + //particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + + this.minStartRotation + this.rotation; + // get random point on the polygon chain + this.spawnPolygonalChain.getRandomPoint(helperPoint); + //rotate the point by the emitter's rotation + if (this.rotation !== 0) + exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); + //set the position, offset by the emitter's position + p.position.x = emitPosX + helperPoint.x; + p.position.y = emitPosY + helperPoint.y; + }; + /** + * Positions a particle for a burst type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. + */ + Emitter.prototype._spawnBurst = function (p, emitPosX, emitPosY, i) { + //set the initial rotation/direction of the particle based on spawn + //angle and rotation of emitter + if (this.particleSpacing === 0) + p.rotation = Math.random() * 360; + else + p.rotation = this.angleStart + (this.particleSpacing * i) + this.rotation; + //drop the particle at the emitter's position + p.position.x = emitPosX; + p.position.y = emitPosY; + }; + /** + * Kills all active particles immediately. + */ + Emitter.prototype.cleanup = function () { + var particle, next; + for (particle = this._activeParticlesFirst; particle; particle = next) { + next = particle.next; + this.recycle(particle); + if (particle.parent) + particle.parent.removeChild(particle); + } + this._activeParticlesFirst = this._activeParticlesLast = null; + this.particleCount = 0; + }; + /** + * Destroys the emitter and all of its particles. + */ + Emitter.prototype.destroy = function () { + //make sure we aren't still listening to any tickers + this.autoUpdate = false; + //puts all active particles in the pool, and removes them from the particle parent + this.cleanup(); + //wipe the pool clean + var next; + for (var particle = this._poolFirst; particle; particle = next) { + //store next value so we don't lose it in our destroy call + next = particle.next; + particle.destroy(); + } + this._poolFirst = this._parent = this.particleImages = this.spawnPos = this.ownerPos = + this.startColor = this.startScale = this.startAlpha = this.startSpeed = + this.customEase = this._completeCallback = null; + }; + return Emitter; }()); - /** - * A helper point for math things. - * @hidden - */ - var helperPoint$1 = new pixi.Point(); - /** - * A hand picked list of Math functions (and a couple properties) that are - * allowable. They should be used without the preceding "Math." - * @hidden - */ - var MATH_FUNCS = [ - "pow", - "sqrt", - "abs", - "floor", - "round", - "ceil", - "E", - "PI", - "sin", - "cos", - "tan", - "asin", - "acos", - "atan", - "atan2", - "log" - ]; - /** - * create an actual regular expression object from the string - * @hidden - */ - var WHITELISTER = new RegExp([ - //Allow the 4 basic operations, parentheses and all numbers/decimals, as well - //as 'x', for the variable usage. - "[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]", - ].concat(MATH_FUNCS).join("|"), "g"); - /** - * Parses a string into a function for path following. - * This involves whitelisting the string for safety, inserting "Math." to math function - * names, and using `new Function()` to generate a function. - * @hidden - * @param pathString The string to parse. - * @return The path function - takes x, outputs y. - */ - var parsePath = function (pathString) { - var matches = pathString.match(WHITELISTER); - for (var i = matches.length - 1; i >= 0; --i) { - if (MATH_FUNCS.indexOf(matches[i]) >= 0) - matches[i] = "Math." + matches[i]; - } - pathString = matches.join(""); - return new Function("x", "return " + pathString + ";"); - }; - /** - * An particle that follows a path defined by an algebraic expression, e.g. "sin(x)" or - * "5x + 3". - * To use this class, the particle config must have a "path" string in the - * "extraData" parameter. This string should have "x" in it to represent movement (from the - * speed settings of the particle). It may have numbers, parentheses, the four basic - * operations, and the following Math functions or properties (without the preceding "Math."): - * "pow", "sqrt", "abs", "floor", "round", "ceil", "E", "PI", "sin", "cos", "tan", "asin", - * "acos", "atan", "atan2", "log". - * The overall movement of the particle and the expression value become x and y positions for - * the particle, respectively. The final position is rotated by the spawn rotation/angle of - * the particle. - * - * Some example paths: - * - * "sin(x/10) * 20" // A sine wave path. - * "cos(x/100) * 30" // Particles curve counterclockwise (for medium speed/low lifetime particles) - * "pow(x/10, 2) / 2" // Particles curve clockwise (remember, +y is down). - */ - var PathParticle = /** @class */ (function (_super) { - __extends(PathParticle, _super); - /** - * @param {PIXI.particles.Emitter} emitter The emitter that controls this PathParticle. - */ - function PathParticle(emitter) { - var _this = _super.call(this, emitter) || this; - _this.path = null; - _this.initialRotation = 0; - _this.initialPosition = new pixi.Point(); - _this.movement = 0; - return _this; - } - /** - * Initializes the particle for use, based on the properties that have to - * have been set already on the particle. - */ - PathParticle.prototype.init = function () { - //get initial rotation before it is converted to radians - this.initialRotation = this.rotation; - //standard init - this.Particle_init(); - //set the path for the particle - this.path = this.extraData.path; - //cancel the normal movement behavior - this._doNormalMovement = !this.path; - //reset movement - this.movement = 0; - //grab position - this.initialPosition.x = this.position.x; - this.initialPosition.y = this.position.y; - }; - /** - * Updates the particle. - * @param delta Time elapsed since the previous frame, in __seconds__. - */ - PathParticle.prototype.update = function (delta) { - var lerp = this.Particle_update(delta); - //if the particle died during the update, then don't bother - if (lerp >= 0 && this.path) { - //increase linear movement based on speed - var speed = this.speedList.interpolate(lerp) * this.speedMultiplier; - this.movement += speed * delta; - //set up the helper point for rotation - helperPoint$1.x = this.movement; - helperPoint$1.y = this.path(this.movement); - exports.ParticleUtils.rotatePoint(this.initialRotation, helperPoint$1); - this.position.x = this.initialPosition.x + helperPoint$1.x; - this.position.y = this.initialPosition.y + helperPoint$1.y; - } - return lerp; - }; - /** - * Destroys the particle, removing references and preventing future use. - */ - PathParticle.prototype.destroy = function () { - this.Particle_destroy(); - this.path = this.initialPosition = null; - }; - /** - * Checks over the art that was passed to the Emitter's init() function, to do any special - * modifications to prepare it ahead of time. This just runs Particle.parseArt(). - * @param art The array of art data. For Particle, it should be an array of - * Textures. Any strings in the array will be converted to - * Textures via Texture.fromImage(). - * @return The art, after any needed modifications. - */ - PathParticle.parseArt = function (art) { - return Particle.parseArt(art); - }; - /** - * Parses extra emitter data to ensure it is set up for this particle class. - * PathParticle checks for the existence of path data, and parses the path data for use - * by particle instances. - * @param extraData The extra data from the particle config. - * @return The parsed extra data. - */ - PathParticle.parseData = function (extraData) { - var output = {}; - if (extraData && extraData.path) { - try { - output.path = parsePath(extraData.path); - } - catch (e) { - if (exports.ParticleUtils.verbose) - console.error("PathParticle: error in parsing path expression"); - output.path = null; - } - } - else { - if (exports.ParticleUtils.verbose) - console.error("PathParticle requires a path string in extraData!"); - output.path = null; - } - return output; - }; - return PathParticle; + /** + * A helper point for math things. + * @hidden + */ + var helperPoint$1 = new pixi.Point(); + /** + * A hand picked list of Math functions (and a couple properties) that are + * allowable. They should be used without the preceding "Math." + * @hidden + */ + var MATH_FUNCS = [ + "pow", + "sqrt", + "abs", + "floor", + "round", + "ceil", + "E", + "PI", + "sin", + "cos", + "tan", + "asin", + "acos", + "atan", + "atan2", + "log" + ]; + /** + * create an actual regular expression object from the string + * @hidden + */ + var WHITELISTER = new RegExp([ + //Allow the 4 basic operations, parentheses and all numbers/decimals, as well + //as 'x', for the variable usage. + "[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]", + ].concat(MATH_FUNCS).join("|"), "g"); + /** + * Parses a string into a function for path following. + * This involves whitelisting the string for safety, inserting "Math." to math function + * names, and using `new Function()` to generate a function. + * @hidden + * @param pathString The string to parse. + * @return The path function - takes x, outputs y. + */ + var parsePath = function (pathString) { + var matches = pathString.match(WHITELISTER); + for (var i = matches.length - 1; i >= 0; --i) { + if (MATH_FUNCS.indexOf(matches[i]) >= 0) + matches[i] = "Math." + matches[i]; + } + pathString = matches.join(""); + return new Function("x", "return " + pathString + ";"); + }; + /** + * An particle that follows a path defined by an algebraic expression, e.g. "sin(x)" or + * "5x + 3". + * To use this class, the particle config must have a "path" string in the + * "extraData" parameter. This string should have "x" in it to represent movement (from the + * speed settings of the particle). It may have numbers, parentheses, the four basic + * operations, and the following Math functions or properties (without the preceding "Math."): + * "pow", "sqrt", "abs", "floor", "round", "ceil", "E", "PI", "sin", "cos", "tan", "asin", + * "acos", "atan", "atan2", "log". + * The overall movement of the particle and the expression value become x and y positions for + * the particle, respectively. The final position is rotated by the spawn rotation/angle of + * the particle. + * + * Some example paths: + * + * "sin(x/10) * 20" // A sine wave path. + * "cos(x/100) * 30" // Particles curve counterclockwise (for medium speed/low lifetime particles) + * "pow(x/10, 2) / 2" // Particles curve clockwise (remember, +y is down). + */ + var PathParticle = /** @class */ (function (_super) { + __extends(PathParticle, _super); + /** + * @param {PIXI.particles.Emitter} emitter The emitter that controls this PathParticle. + */ + function PathParticle(emitter) { + var _this = _super.call(this, emitter) || this; + _this.path = null; + _this.initialRotation = 0; + _this.initialPosition = new pixi.Point(); + _this.movement = 0; + return _this; + } + /** + * Initializes the particle for use, based on the properties that have to + * have been set already on the particle. + */ + PathParticle.prototype.init = function () { + //get initial rotation before it is converted to radians + this.initialRotation = this.rotation; + //standard init + this.Particle_init(); + //set the path for the particle + this.path = this.extraData.path; + //cancel the normal movement behavior + this._doNormalMovement = !this.path; + //reset movement + this.movement = 0; + //grab position + this.initialPosition.x = this.position.x; + this.initialPosition.y = this.position.y; + }; + /** + * Updates the particle. + * @param delta Time elapsed since the previous frame, in __seconds__. + */ + PathParticle.prototype.update = function (delta) { + var lerp = this.Particle_update(delta); + //if the particle died during the update, then don't bother + if (lerp >= 0 && this.path) { + //increase linear movement based on speed + var speed = this.speedList.interpolate(lerp) * this.speedMultiplier; + this.movement += speed * delta; + //set up the helper point for rotation + helperPoint$1.x = this.movement; + helperPoint$1.y = this.path(this.movement); + exports.ParticleUtils.rotatePoint(this.initialRotation, helperPoint$1); + this.position.x = this.initialPosition.x + helperPoint$1.x; + this.position.y = this.initialPosition.y + helperPoint$1.y; + } + return lerp; + }; + /** + * Destroys the particle, removing references and preventing future use. + */ + PathParticle.prototype.destroy = function () { + this.Particle_destroy(); + this.path = this.initialPosition = null; + }; + /** + * Checks over the art that was passed to the Emitter's init() function, to do any special + * modifications to prepare it ahead of time. This just runs Particle.parseArt(). + * @param art The array of art data. For Particle, it should be an array of + * Textures. Any strings in the array will be converted to + * Textures via Texture.fromImage(). + * @return The art, after any needed modifications. + */ + PathParticle.parseArt = function (art) { + return Particle.parseArt(art); + }; + /** + * Parses extra emitter data to ensure it is set up for this particle class. + * PathParticle checks for the existence of path data, and parses the path data for use + * by particle instances. + * @param extraData The extra data from the particle config. + * @return The parsed extra data. + */ + PathParticle.parseData = function (extraData) { + var output = {}; + if (extraData && extraData.path) { + try { + output.path = parsePath(extraData.path); + } + catch (e) { + if (exports.ParticleUtils.verbose) + console.error("PathParticle: error in parsing path expression"); + output.path = null; + } + } + else { + if (exports.ParticleUtils.verbose) + console.error("PathParticle requires a path string in extraData!"); + output.path = null; + } + return output; + }; + return PathParticle; }(Particle)); - /** - * An individual particle image with an animation. Art data passed to the emitter must be - * formatted in a particular way for AnimatedParticle to be able to handle it: - * - * ```typescript - * { - * //framerate is required. It is the animation speed of the particle in frames per - * //second. - * //A value of "matchLife" causes the animation to match the lifetime of an individual - * //particle, instead of at a constant framerate. This causes the animation to play - * //through one time, completing when the particle expires. - * framerate: 6, - * //loop is optional, and defaults to false. - * loop: true, - * //textures is required, and can be an array of any (non-zero) length. - * textures: [ - * //each entry represents a single texture that should be used for one or more - * //frames. Any strings will be converted to Textures with Texture.from(). - * //Instances of PIXI.Texture will be used directly. - * "animFrame1.png", - * //entries can be an object with a 'count' property, telling AnimatedParticle to - * //use that texture for 'count' frames sequentially. - * { - * texture: "animFrame2.png", - * count: 3 - * }, - * "animFrame3.png" - * ] - * } - * ``` - */ - var AnimatedParticle = /** @class */ (function (_super) { - __extends(AnimatedParticle, _super); - /** - * @param emitter The emitter that controls this AnimatedParticle. - */ - function AnimatedParticle(emitter) { - var _this = _super.call(this, emitter) || this; - _this.textures = null; - _this.duration = 0; - _this.framerate = 0; - _this.elapsed = 0; - _this.loop = false; - return _this; - } - /** - * Initializes the particle for use, based on the properties that have to - * have been set already on the particle. - */ - AnimatedParticle.prototype.init = function () { - this.Particle_init(); - this.elapsed = 0; - //if the animation needs to match the particle's life, then cacluate variables - if (this.framerate < 0) { - this.duration = this.maxLife; - this.framerate = this.textures.length / this.duration; - } - }; - /** - * Sets the textures for the particle. - * @param art An array of PIXI.Texture objects for this animated particle. - */ - AnimatedParticle.prototype.applyArt = function (art) { - this.textures = art.textures; - this.framerate = art.framerate; - this.duration = art.duration; - this.loop = art.loop; - }; - /** - * Updates the particle. - * @param delta Time elapsed since the previous frame, in __seconds__. - */ - AnimatedParticle.prototype.update = function (delta) { - var lerp = this.Particle_update(delta); - //only animate the particle if it is still alive - if (lerp >= 0) { - this.elapsed += delta; - if (this.elapsed > this.duration) { - //loop elapsed back around - if (this.loop) - this.elapsed = this.elapsed % this.duration; - //subtract a small amount to prevent attempting to go past the end of the animation - else - this.elapsed = this.duration - 0.000001; - } - // add a very small number to the frame and then floor it to avoid - // the frame being one short due to floating point errors. - var frame = (this.elapsed * this.framerate + 0.0000001) | 0; - this.texture = this.textures[frame] || pixi.Texture.EMPTY; - } - return lerp; - }; - /** - * Destroys the particle, removing references and preventing future use. - */ - AnimatedParticle.prototype.destroy = function () { - this.Particle_destroy(); - this.textures = null; - }; - /** - * Checks over the art that was passed to the Emitter's init() function, to do any special - * modifications to prepare it ahead of time. - * @param art The array of art data, properly formatted for AnimatedParticle. - * @return The art, after any needed modifications. - */ - AnimatedParticle.parseArt = function (art) { - var data, output, textures, tex, outTextures; - var outArr = []; - for (var i = 0; i < art.length; ++i) { - data = art[i]; - outArr[i] = output = {}; - output.textures = outTextures = []; - textures = data.textures; - for (var j = 0; j < textures.length; ++j) { - tex = textures[j]; - if (typeof tex == "string") - outTextures.push(GetTextureFromString(tex)); - else if (tex instanceof pixi.Texture) - outTextures.push(tex); - //assume an object with extra data determining duplicate frame data - else { - var dupe = tex.count || 1; - if (typeof tex.texture == "string") - tex = GetTextureFromString(tex.texture); - else // if(tex.texture instanceof Texture) - tex = tex.texture; - for (; dupe > 0; --dupe) { - outTextures.push(tex); - } - } - } - //use these values to signify that the animation should match the particle life time. - if (data.framerate == "matchLife") { - //-1 means that it should be calculated - output.framerate = -1; - output.duration = 0; - output.loop = false; - } - else { - //determine if the animation should loop - output.loop = !!data.loop; - //get the framerate, default to 60 - output.framerate = data.framerate > 0 ? data.framerate : 60; - //determine the duration - output.duration = outTextures.length / output.framerate; - } - } - return outArr; - }; - return AnimatedParticle; + /** + * An individual particle image with an animation. Art data passed to the emitter must be + * formatted in a particular way for AnimatedParticle to be able to handle it: + * + * ```typescript + * { + * //framerate is required. It is the animation speed of the particle in frames per + * //second. + * //A value of "matchLife" causes the animation to match the lifetime of an individual + * //particle, instead of at a constant framerate. This causes the animation to play + * //through one time, completing when the particle expires. + * framerate: 6, + * //loop is optional, and defaults to false. + * loop: true, + * //textures is required, and can be an array of any (non-zero) length. + * textures: [ + * //each entry represents a single texture that should be used for one or more + * //frames. Any strings will be converted to Textures with Texture.from(). + * //Instances of PIXI.Texture will be used directly. + * "animFrame1.png", + * //entries can be an object with a 'count' property, telling AnimatedParticle to + * //use that texture for 'count' frames sequentially. + * { + * texture: "animFrame2.png", + * count: 3 + * }, + * "animFrame3.png" + * ] + * } + * ``` + */ + var AnimatedParticle = /** @class */ (function (_super) { + __extends(AnimatedParticle, _super); + /** + * @param emitter The emitter that controls this AnimatedParticle. + */ + function AnimatedParticle(emitter) { + var _this = _super.call(this, emitter) || this; + _this.textures = null; + _this.duration = 0; + _this.framerate = 0; + _this.elapsed = 0; + _this.loop = false; + return _this; + } + /** + * Initializes the particle for use, based on the properties that have to + * have been set already on the particle. + */ + AnimatedParticle.prototype.init = function () { + this.Particle_init(); + this.elapsed = 0; + //if the animation needs to match the particle's life, then cacluate variables + if (this.framerate < 0) { + this.duration = this.maxLife; + this.framerate = this.textures.length / this.duration; + } + }; + /** + * Sets the textures for the particle. + * @param art An array of PIXI.Texture objects for this animated particle. + */ + AnimatedParticle.prototype.applyArt = function (art) { + this.textures = art.textures; + this.framerate = art.framerate; + this.duration = art.duration; + this.loop = art.loop; + }; + /** + * Updates the particle. + * @param delta Time elapsed since the previous frame, in __seconds__. + */ + AnimatedParticle.prototype.update = function (delta) { + var lerp = this.Particle_update(delta); + //only animate the particle if it is still alive + if (lerp >= 0) { + this.elapsed += delta; + if (this.elapsed > this.duration) { + //loop elapsed back around + if (this.loop) + this.elapsed = this.elapsed % this.duration; + //subtract a small amount to prevent attempting to go past the end of the animation + else + this.elapsed = this.duration - 0.000001; + } + // add a very small number to the frame and then floor it to avoid + // the frame being one short due to floating point errors. + var frame = (this.elapsed * this.framerate + 0.0000001) | 0; + this.texture = this.textures[frame] || pixi.Texture.EMPTY; + } + return lerp; + }; + /** + * Destroys the particle, removing references and preventing future use. + */ + AnimatedParticle.prototype.destroy = function () { + this.Particle_destroy(); + this.textures = null; + }; + /** + * Checks over the art that was passed to the Emitter's init() function, to do any special + * modifications to prepare it ahead of time. + * @param art The array of art data, properly formatted for AnimatedParticle. + * @return The art, after any needed modifications. + */ + AnimatedParticle.parseArt = function (art) { + var data, output, textures, tex, outTextures; + var outArr = []; + for (var i = 0; i < art.length; ++i) { + data = art[i]; + outArr[i] = output = {}; + output.textures = outTextures = []; + textures = data.textures; + for (var j = 0; j < textures.length; ++j) { + tex = textures[j]; + if (typeof tex == "string") + outTextures.push(GetTextureFromString(tex)); + else if (tex instanceof pixi.Texture) + outTextures.push(tex); + //assume an object with extra data determining duplicate frame data + else { + var dupe = tex.count || 1; + if (typeof tex.texture == "string") + tex = GetTextureFromString(tex.texture); + else // if(tex.texture instanceof Texture) + tex = tex.texture; + for (; dupe > 0; --dupe) { + outTextures.push(tex); + } + } + } + //use these values to signify that the animation should match the particle life time. + if (data.framerate == "matchLife") { + //-1 means that it should be calculated + output.framerate = -1; + output.duration = 0; + output.loop = false; + } + else { + //determine if the animation should loop + output.loop = !!data.loop; + //get the framerate, default to 60 + output.framerate = data.framerate > 0 ? data.framerate : 60; + //determine the duration + output.duration = outTextures.length / output.framerate; + } + } + return outArr; + }; + return AnimatedParticle; }(Particle)); exports.GetTextureFromString = GetTextureFromString; @@ -51189,3654 +51221,3654 @@ this.PIXI = this.PIXI || {}; }(this.PIXI.particles = this.PIXI.particles || {}, PIXI)); -var pixi_projection; -(function (pixi_projection) { - var utils; - (function (utils) { - function getIntersectionFactor(p1, p2, p3, p4, out) { - var A1 = p2.x - p1.x, B1 = p3.x - p4.x, C1 = p3.x - p1.x; - var A2 = p2.y - p1.y, B2 = p3.y - p4.y, C2 = p3.y - p1.y; - var D = A1 * B2 - A2 * B1; - if (Math.abs(D) < 1e-7) { - out.x = A1; - out.y = A2; - return 0; - } - var T = C1 * B2 - C2 * B1; - var U = A1 * C2 - A2 * C1; - var t = T / D, u = U / D; - if (u < (1e-6) || u - 1 > -1e-6) { - return -1; - } - out.x = p1.x + t * (p2.x - p1.x); - out.y = p1.y + t * (p2.y - p1.y); - return 1; - } - utils.getIntersectionFactor = getIntersectionFactor; - function getPositionFromQuad(p, anchor, out) { - out = out || new PIXI.Point(); - var a1 = 1.0 - anchor.x, a2 = 1.0 - a1; - var b1 = 1.0 - anchor.y, b2 = 1.0 - b1; - out.x = (p[0].x * a1 + p[1].x * a2) * b1 + (p[3].x * a1 + p[2].x * a2) * b2; - out.y = (p[0].y * a1 + p[1].y * a2) * b1 + (p[3].y * a1 + p[2].y * a2) * b2; - return out; - } - utils.getPositionFromQuad = getPositionFromQuad; - })(utils = pixi_projection.utils || (pixi_projection.utils = {})); -})(pixi_projection || (pixi_projection = {})); -PIXI.projection = pixi_projection; -var pixi_projection; -(function (pixi_projection) { - var AbstractProjection = (function () { - function AbstractProjection(legacy, enable) { - if (enable === void 0) { enable = true; } - this._enabled = false; - this.legacy = legacy; - if (enable) { - this.enabled = true; - } - this.legacy.proj = this; - } - Object.defineProperty(AbstractProjection.prototype, "enabled", { - get: function () { - return this._enabled; - }, - set: function (value) { - this._enabled = value; - }, - enumerable: true, - configurable: true - }); - AbstractProjection.prototype.clear = function () { - }; - return AbstractProjection; - }()); - pixi_projection.AbstractProjection = AbstractProjection; - var TRANSFORM_STEP; - (function (TRANSFORM_STEP) { - TRANSFORM_STEP[TRANSFORM_STEP["NONE"] = 0] = "NONE"; - TRANSFORM_STEP[TRANSFORM_STEP["BEFORE_PROJ"] = 4] = "BEFORE_PROJ"; - TRANSFORM_STEP[TRANSFORM_STEP["PROJ"] = 5] = "PROJ"; - TRANSFORM_STEP[TRANSFORM_STEP["ALL"] = 9] = "ALL"; - })(TRANSFORM_STEP = pixi_projection.TRANSFORM_STEP || (pixi_projection.TRANSFORM_STEP = {})); -})(pixi_projection || (pixi_projection = {})); -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var pixi_projection; -(function (pixi_projection) { - function transformHack(parentTransform) { - var proj = this.proj; - var ta = this; - var pwid = parentTransform._worldID; - var lt = ta.localTransform; - var scaleAfterAffine = proj.scaleAfterAffine && proj.affine >= 2; - if (ta._localID !== ta._currentLocalID) { - if (scaleAfterAffine) { - lt.a = ta._cx; - lt.b = ta._sx; - lt.c = ta._cy; - lt.d = ta._sy; - lt.tx = ta.position._x; - lt.ty = ta.position._y; - } - else { - lt.a = ta._cx * ta.scale._x; - lt.b = ta._sx * ta.scale._x; - lt.c = ta._cy * ta.scale._y; - lt.d = ta._sy * ta.scale._y; - lt.tx = ta.position._x - ((ta.pivot._x * lt.a) + (ta.pivot._y * lt.c)); - lt.ty = ta.position._y - ((ta.pivot._x * lt.b) + (ta.pivot._y * lt.d)); - } - ta._currentLocalID = ta._localID; - proj._currentProjID = -1; - } - var _matrixID = proj._projID; - if (proj._currentProjID !== _matrixID) { - proj._currentProjID = _matrixID; - proj.updateLocalTransform(lt); - ta._parentID = -1; - } - if (ta._parentID !== pwid) { - var pp = parentTransform.proj; - if (pp && !pp._affine) { - proj.world.setToMult(pp.world, proj.local); - } - else { - proj.world.setToMultLegacy(parentTransform.worldTransform, proj.local); - } - var wa = ta.worldTransform; - proj.world.copyTo(wa, proj._affine, proj.affinePreserveOrientation); - if (scaleAfterAffine) { - wa.a *= ta.scale._x; - wa.b *= ta.scale._x; - wa.c *= ta.scale._y; - wa.d *= ta.scale._y; - wa.tx -= ((ta.pivot._x * wa.a) + (ta.pivot._y * wa.c)); - wa.ty -= ((ta.pivot._x * wa.b) + (ta.pivot._y * wa.d)); - } - ta._parentID = pwid; - ta._worldID++; - } - } - var LinearProjection = (function (_super) { - __extends(LinearProjection, _super); - function LinearProjection() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._projID = 0; - _this._currentProjID = -1; - _this._affine = pixi_projection.AFFINE.NONE; - _this.affinePreserveOrientation = false; - _this.scaleAfterAffine = true; - return _this; - } - LinearProjection.prototype.updateLocalTransform = function (lt) { - }; - Object.defineProperty(LinearProjection.prototype, "affine", { - get: function () { - return this._affine; - }, - set: function (value) { - if (this._affine == value) - return; - this._affine = value; - this._currentProjID = -1; - this.legacy._currentLocalID = -1; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(LinearProjection.prototype, "enabled", { - set: function (value) { - if (value === this._enabled) { - return; - } - this._enabled = value; - if (value) { - this.legacy.updateTransform = transformHack; - this.legacy._parentID = -1; - } - else { - this.legacy.updateTransform = PIXI.Transform.prototype.updateTransform; - this.legacy._parentID = -1; - } - }, - enumerable: true, - configurable: true - }); - LinearProjection.prototype.clear = function () { - this._currentProjID = -1; - this._projID = 0; - }; - return LinearProjection; - }(pixi_projection.AbstractProjection)); - pixi_projection.LinearProjection = LinearProjection; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var TYPES = PIXI.TYPES; - var premultiplyTint = PIXI.utils.premultiplyTint; - var shaderVert = "precision highp float;\nattribute vec3 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * aVertexPosition;\n gl_Position.z = 0.0;\n \n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor;\n}\n"; - var shaderFrag = "\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\nvec4 color;\n%forloop%\ngl_FragColor = color * vColor;\n}"; - var Batch3dGeometry = (function (_super) { - __extends(Batch3dGeometry, _super); - function Batch3dGeometry(_static) { - if (_static === void 0) { _static = false; } - var _this = _super.call(this) || this; - _this._buffer = new PIXI.Buffer(null, _static, false); - _this._indexBuffer = new PIXI.Buffer(null, _static, true); - _this.addAttribute('aVertexPosition', _this._buffer, 3, false, TYPES.FLOAT) - .addAttribute('aTextureCoord', _this._buffer, 2, false, TYPES.FLOAT) - .addAttribute('aColor', _this._buffer, 4, true, TYPES.UNSIGNED_BYTE) - .addAttribute('aTextureId', _this._buffer, 1, true, TYPES.FLOAT) - .addIndex(_this._indexBuffer); - return _this; - } - return Batch3dGeometry; - }(PIXI.Geometry)); - pixi_projection.Batch3dGeometry = Batch3dGeometry; - var Batch2dPluginFactory = (function () { - function Batch2dPluginFactory() { - } - Batch2dPluginFactory.create = function (options) { - var _a = Object.assign({ - vertex: shaderVert, - fragment: shaderFrag, - geometryClass: Batch3dGeometry, - vertexSize: 7, - }, options), vertex = _a.vertex, fragment = _a.fragment, vertexSize = _a.vertexSize, geometryClass = _a.geometryClass; - return (function (_super) { - __extends(BatchPlugin, _super); - function BatchPlugin(renderer) { - var _this = _super.call(this, renderer) || this; - _this.shaderGenerator = new PIXI.BatchShaderGenerator(vertex, fragment); - _this.geometryClass = geometryClass; - _this.vertexSize = vertexSize; - return _this; - } - BatchPlugin.prototype.packInterleavedGeometry = function (element, attributeBuffer, indexBuffer, aIndex, iIndex) { - var uint32View = attributeBuffer.uint32View, float32View = attributeBuffer.float32View; - var p = aIndex / this.vertexSize; - var uvs = element.uvs; - var indicies = element.indices; - var vertexData = element.vertexData; - var vertexData2d = element.vertexData2d; - var textureId = element._texture.baseTexture._id; - var alpha = Math.min(element.worldAlpha, 1.0); - var argb = alpha < 1.0 && element._texture.baseTexture.premultiplyAlpha ? premultiplyTint(element._tintRGB, alpha) - : element._tintRGB + (alpha * 255 << 24); - if (vertexData2d) { - var j = 0; - for (var i = 0; i < vertexData2d.length; i += 3, j += 2) { - float32View[aIndex++] = vertexData2d[i]; - float32View[aIndex++] = vertexData2d[i + 1]; - float32View[aIndex++] = vertexData2d[i + 2]; - float32View[aIndex++] = uvs[j]; - float32View[aIndex++] = uvs[j + 1]; - uint32View[aIndex++] = argb; - float32View[aIndex++] = textureId; - } - } - else { - for (var i = 0; i < vertexData.length; i += 2) { - float32View[aIndex++] = vertexData[i]; - float32View[aIndex++] = vertexData[i + 1]; - float32View[aIndex++] = 1.0; - float32View[aIndex++] = uvs[i]; - float32View[aIndex++] = uvs[i + 1]; - uint32View[aIndex++] = argb; - float32View[aIndex++] = textureId; - } - } - for (var i = 0; i < indicies.length; i++) { - indexBuffer[iIndex++] = p + indicies[i]; - } - }; - return BatchPlugin; - }(PIXI.AbstractBatchRenderer)); - }; - return Batch2dPluginFactory; - }()); - pixi_projection.Batch2dPluginFactory = Batch2dPluginFactory; - PIXI.Renderer.registerPlugin('batch2d', Batch2dPluginFactory.create({})); -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var UniformBatchRenderer = (function (_super) { - __extends(UniformBatchRenderer, _super); - function UniformBatchRenderer() { - return _super !== null && _super.apply(this, arguments) || this; - } - UniformBatchRenderer.prototype.addToBatch = function (sprite) { - }; - return UniformBatchRenderer; - }(PIXI.AbstractBatchRenderer)); - pixi_projection.UniformBatchRenderer = UniformBatchRenderer; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var p = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()]; - var a = [0, 0, 0, 0]; - var Surface = (function () { - function Surface() { - this.surfaceID = "default"; - this._updateID = 0; - this.vertexSrc = ""; - this.fragmentSrc = ""; - } - Surface.prototype.fillUniforms = function (uniforms) { - }; - Surface.prototype.clear = function () { - }; - Surface.prototype.boundsQuad = function (v, out, after) { - var minX = out[0], minY = out[1]; - var maxX = out[0], maxY = out[1]; - for (var i = 2; i < 8; i += 2) { - if (minX > out[i]) - minX = out[i]; - if (maxX < out[i]) - maxX = out[i]; - if (minY > out[i + 1]) - minY = out[i + 1]; - if (maxY < out[i + 1]) - maxY = out[i + 1]; - } - p[0].set(minX, minY); - this.apply(p[0], p[0]); - p[1].set(maxX, minY); - this.apply(p[1], p[1]); - p[2].set(maxX, maxY); - this.apply(p[2], p[2]); - p[3].set(minX, maxY); - this.apply(p[3], p[3]); - if (after) { - after.apply(p[0], p[0]); - after.apply(p[1], p[1]); - after.apply(p[2], p[2]); - after.apply(p[3], p[3]); - out[0] = p[0].x; - out[1] = p[0].y; - out[2] = p[1].x; - out[3] = p[1].y; - out[4] = p[2].x; - out[5] = p[2].y; - out[6] = p[3].x; - out[7] = p[3].y; - } - else { - for (var i = 1; i <= 3; i++) { - if (p[i].y < p[0].y || p[i].y == p[0].y && p[i].x < p[0].x) { - var t = p[0]; - p[0] = p[i]; - p[i] = t; - } - } - for (var i = 1; i <= 3; i++) { - a[i] = Math.atan2(p[i].y - p[0].y, p[i].x - p[0].x); - } - for (var i = 1; i <= 3; i++) { - for (var j = i + 1; j <= 3; j++) { - if (a[i] > a[j]) { - var t = p[i]; - p[i] = p[j]; - p[j] = t; - var t2 = a[i]; - a[i] = a[j]; - a[j] = t2; - } - } - } - out[0] = p[0].x; - out[1] = p[0].y; - out[2] = p[1].x; - out[3] = p[1].y; - out[4] = p[2].x; - out[5] = p[2].y; - out[6] = p[3].x; - out[7] = p[3].y; - if ((p[3].x - p[2].x) * (p[1].y - p[2].y) - (p[1].x - p[2].x) * (p[3].y - p[2].y) < 0) { - out[4] = p[3].x; - out[5] = p[3].y; - return; - } - } - }; - return Surface; - }()); - pixi_projection.Surface = Surface; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var tempMat = new PIXI.Matrix(); - var tempRect = new PIXI.Rectangle(); - var tempPoint = new PIXI.Point(); - var BilinearSurface = (function (_super) { - __extends(BilinearSurface, _super); - function BilinearSurface() { - var _this = _super.call(this) || this; - _this.distortion = new PIXI.Point(); - return _this; - } - BilinearSurface.prototype.clear = function () { - this.distortion.set(0, 0); - }; - BilinearSurface.prototype.apply = function (pos, newPos) { - newPos = newPos || new PIXI.Point(); - var d = this.distortion; - var m = pos.x * pos.y; - newPos.x = pos.x + d.x * m; - newPos.y = pos.y + d.y * m; - return newPos; - }; - BilinearSurface.prototype.applyInverse = function (pos, newPos) { - newPos = newPos || new PIXI.Point(); - var vx = pos.x, vy = pos.y; - var dx = this.distortion.x, dy = this.distortion.y; - if (dx == 0.0) { - newPos.x = vx; - newPos.y = vy / (1.0 + dy * vx); - } - else if (dy == 0.0) { - newPos.y = vy; - newPos.x = vx / (1.0 + dx * vy); - } - else { - var b = (vy * dx - vx * dy + 1.0) * 0.5 / dy; - var d = b * b + vx / dy; - if (d <= 0.00001) { - newPos.set(NaN, NaN); - return; - } - if (dy > 0.0) { - newPos.x = -b + Math.sqrt(d); - } - else { - newPos.x = -b - Math.sqrt(d); - } - newPos.y = (vx / newPos.x - 1.0) / dx; - } - return newPos; - }; - BilinearSurface.prototype.mapSprite = function (sprite, quad, outTransform) { - var tex = sprite.texture; - tempRect.x = -sprite.anchor.x * tex.orig.width; - tempRect.y = -sprite.anchor.y * tex.orig.height; - tempRect.width = tex.orig.width; - tempRect.height = tex.orig.height; - return this.mapQuad(tempRect, quad, outTransform || sprite.transform); - }; - BilinearSurface.prototype.mapQuad = function (rect, quad, outTransform) { - var ax = -rect.x / rect.width; - var ay = -rect.y / rect.height; - var ax2 = (1.0 - rect.x) / rect.width; - var ay2 = (1.0 - rect.y) / rect.height; - var up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax); - var up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax); - var up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2); - var up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2); - var down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax); - var down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax); - var down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2); - var down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2); - var x00 = up1x * (1.0 - ay) + down1x * ay; - var y00 = up1y * (1.0 - ay) + down1y * ay; - var x10 = up2x * (1.0 - ay) + down2x * ay; - var y10 = up2y * (1.0 - ay) + down2y * ay; - var x01 = up1x * (1.0 - ay2) + down1x * ay2; - var y01 = up1y * (1.0 - ay2) + down1y * ay2; - var x11 = up2x * (1.0 - ay2) + down2x * ay2; - var y11 = up2y * (1.0 - ay2) + down2y * ay2; - var mat = tempMat; - mat.tx = x00; - mat.ty = y00; - mat.a = x10 - x00; - mat.b = y10 - y00; - mat.c = x01 - x00; - mat.d = y01 - y00; - tempPoint.set(x11, y11); - mat.applyInverse(tempPoint, tempPoint); - this.distortion.set(tempPoint.x - 1, tempPoint.y - 1); - outTransform.setFromMatrix(mat); - return this; - }; - BilinearSurface.prototype.fillUniforms = function (uniforms) { - uniforms.distortion = uniforms.distortion || new Float32Array([0, 0, 0, 0]); - var ax = Math.abs(this.distortion.x); - var ay = Math.abs(this.distortion.y); - uniforms.distortion[0] = ax * 10000 <= ay ? 0 : this.distortion.x; - uniforms.distortion[1] = ay * 10000 <= ax ? 0 : this.distortion.y; - uniforms.distortion[2] = 1.0 / uniforms.distortion[0]; - uniforms.distortion[3] = 1.0 / uniforms.distortion[1]; - }; - return BilinearSurface; - }(pixi_projection.Surface)); - pixi_projection.BilinearSurface = BilinearSurface; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Container2s = (function (_super) { - __extends(Container2s, _super); - function Container2s() { - var _this = _super.call(this) || this; - _this.proj = new pixi_projection.ProjectionSurface(_this.transform); - return _this; - } - Object.defineProperty(Container2s.prototype, "worldTransform", { - get: function () { - return this.proj; - }, - enumerable: true, - configurable: true - }); - return Container2s; - }(PIXI.Container)); - pixi_projection.Container2s = Container2s; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var fun = PIXI.Transform.prototype.updateTransform; - function transformHack(parentTransform) { - var proj = this.proj; - var pp = parentTransform.proj; - var ta = this; - if (!pp) { - fun.call(this, parentTransform); - proj._activeProjection = null; - return; - } - if (pp._surface) { - proj._activeProjection = pp; - this.updateLocalTransform(); - this.localTransform.copyFrom(this.worldTransform); - if (ta._parentID < 0) { - ++ta._worldID; - } - return; - } - fun.call(this, parentTransform); - proj._activeProjection = pp._activeProjection; - } - var ProjectionSurface = (function (_super) { - __extends(ProjectionSurface, _super); - function ProjectionSurface(legacy, enable) { - var _this = _super.call(this, legacy, enable) || this; - _this._surface = null; - _this._activeProjection = null; - _this._currentSurfaceID = -1; - _this._currentLegacyID = -1; - _this._lastUniforms = null; - return _this; - } - Object.defineProperty(ProjectionSurface.prototype, "enabled", { - set: function (value) { - if (value === this._enabled) { - return; - } - this._enabled = value; - if (value) { - this.legacy.updateTransform = transformHack; - this.legacy._parentID = -1; - } - else { - this.legacy.updateTransform = PIXI.Transform.prototype.updateTransform; - this.legacy._parentID = -1; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ProjectionSurface.prototype, "surface", { - get: function () { - return this._surface; - }, - set: function (value) { - if (this._surface == value) { - return; - } - this._surface = value || null; - this.legacy._parentID = -1; - }, - enumerable: true, - configurable: true - }); - ProjectionSurface.prototype.applyPartial = function (pos, newPos) { - if (this._activeProjection !== null) { - newPos = this.legacy.worldTransform.apply(pos, newPos); - return this._activeProjection.surface.apply(newPos, newPos); - } - if (this._surface !== null) { - return this.surface.apply(pos, newPos); - } - return this.legacy.worldTransform.apply(pos, newPos); - }; - ProjectionSurface.prototype.apply = function (pos, newPos) { - if (this._activeProjection !== null) { - newPos = this.legacy.worldTransform.apply(pos, newPos); - this._activeProjection.surface.apply(newPos, newPos); - return this._activeProjection.legacy.worldTransform.apply(newPos, newPos); - } - if (this._surface !== null) { - newPos = this.surface.apply(pos, newPos); - return this.legacy.worldTransform.apply(newPos, newPos); - } - return this.legacy.worldTransform.apply(pos, newPos); - }; - ProjectionSurface.prototype.applyInverse = function (pos, newPos) { - if (this._activeProjection !== null) { - newPos = this._activeProjection.legacy.worldTransform.applyInverse(pos, newPos); - this._activeProjection._surface.applyInverse(newPos, newPos); - return this.legacy.worldTransform.applyInverse(newPos, newPos); - } - if (this._surface !== null) { - newPos = this.legacy.worldTransform.applyInverse(pos, newPos); - return this._surface.applyInverse(newPos, newPos); - } - return this.legacy.worldTransform.applyInverse(pos, newPos); - }; - ProjectionSurface.prototype.mapBilinearSprite = function (sprite, quad) { - if (!(this._surface instanceof pixi_projection.BilinearSurface)) { - this.surface = new pixi_projection.BilinearSurface(); - } - this.surface.mapSprite(sprite, quad, this.legacy); - }; - ProjectionSurface.prototype.clear = function () { - if (this.surface) { - this.surface.clear(); - } - }; - Object.defineProperty(ProjectionSurface.prototype, "uniforms", { - get: function () { - if (this._currentLegacyID === this.legacy._worldID && - this._currentSurfaceID === this.surface._updateID) { - return this._lastUniforms; - } - this._lastUniforms = this._lastUniforms || {}; - this._lastUniforms.worldTransform = this.legacy.worldTransform.toArray(true); - this._surface.fillUniforms(this._lastUniforms); - return this._lastUniforms; - }, - enumerable: true, - configurable: true - }); - return ProjectionSurface; - }(pixi_projection.AbstractProjection)); - pixi_projection.ProjectionSurface = ProjectionSurface; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var TYPES = PIXI.TYPES; - var premultiplyTint = PIXI.utils.premultiplyTint; - var shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec3 aTrans1;\nattribute vec3 aTrans2;\nattribute vec4 aFrame;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 worldTransform;\n\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n \n vTextureCoord = aVertexPosition;\n vTrans1 = aTrans1;\n vTrans2 = aTrans2;\n vTextureId = aTextureId;\n vColor = aColor;\n vFrame = aFrame;\n}\n"; - var shaderFrag = "precision highp float;\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nuniform sampler2D uSamplers[%count%];\nuniform vec2 samplerSize[%count%]; \nuniform vec4 distortion;\n\nvoid main(void){\nvec2 surface;\nvec2 surface2;\n\nfloat vx = vTextureCoord.x;\nfloat vy = vTextureCoord.y;\nfloat dx = distortion.x;\nfloat dy = distortion.y;\nfloat revx = distortion.z;\nfloat revy = distortion.w;\n\nif (distortion.x == 0.0) {\n surface.x = vx;\n surface.y = vy / (1.0 + dy * vx);\n surface2 = surface;\n} else\nif (distortion.y == 0.0) {\n surface.y = vy;\n surface.x = vx/ (1.0 + dx * vy);\n surface2 = surface;\n} else {\n float c = vy * dx - vx * dy;\n float b = (c + 1.0) * 0.5;\n float b2 = (-c + 1.0) * 0.5;\n float d = b * b + vx * dy;\n if (d < -0.00001) {\n discard;\n }\n d = sqrt(max(d, 0.0));\n surface.x = (- b + d) * revy;\n surface2.x = (- b - d) * revy;\n surface.y = (- b2 + d) * revx;\n surface2.y = (- b2 - d) * revx;\n}\n\nvec2 uv;\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\n\nvec2 pixels = uv * samplerSize[0];\n\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * samplerSize[0];\n \n if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n discard;\n }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\n%forloop%\ngl_FragColor = color * rColor;\n}"; - var BatchBilineardGeometry = (function (_super) { - __extends(BatchBilineardGeometry, _super); - function BatchBilineardGeometry(_static) { - if (_static === void 0) { _static = false; } - var _this = _super.call(this) || this; - _this._buffer = new PIXI.Buffer(null, _static, false); - _this._indexBuffer = new PIXI.Buffer(null, _static, true); - _this.addAttribute('aVertexPosition', _this._buffer, 2, false, TYPES.FLOAT) - .addAttribute('aTrans1', _this._buffer, 3, false, TYPES.FLOAT) - .addAttribute('aTrans2', _this._buffer, 3, false, TYPES.FLOAT) - .addAttribute('aFrame', _this._buffer, 4, false, TYPES.FLOAT) - .addAttribute('aColor', _this._buffer, 4, true, TYPES.UNSIGNED_BYTE) - .addIndex(_this._indexBuffer); - return _this; - } - return BatchBilineardGeometry; - }(PIXI.Geometry)); - pixi_projection.BatchBilineardGeometry = BatchBilineardGeometry; - var BatchBilinearPluginFactory = (function () { - function BatchBilinearPluginFactory() { - } - BatchBilinearPluginFactory.create = function (options) { - var _a = Object.assign({ - vertex: shaderVert, - fragment: shaderFrag, - geometryClass: pixi_projection.Batch3dGeometry, - vertexSize: 7, - }, options), vertex = _a.vertex, fragment = _a.fragment, vertexSize = _a.vertexSize, geometryClass = _a.geometryClass; - return (function (_super) { - __extends(BatchPlugin, _super); - function BatchPlugin(renderer) { - var _this = _super.call(this, renderer) || this; - _this.defUniforms = { - worldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]), - distortion: new Float32Array([0, 0]) - }; - _this.shaderGenerator = new PIXI.BatchShaderGenerator(vertex, fragment); - _this.geometryClass = geometryClass; - _this.vertexSize = vertexSize; - return _this; - } - BatchPlugin.prototype.getUniforms = function (sprite) { - var proj = sprite.proj; - var shader = this._shader; - if (proj.surface !== null) { - return proj.uniforms; - } - if (proj._activeProjection !== null) { - return proj._activeProjection.uniforms; - } - return this.defUniforms; - }; - BatchPlugin.prototype.packGeometry = function (element, float32View, uint32View, indexBuffer, index, indexCount) { - var p = index / this.vertexSize; - var uvs = element.uvs; - var indices = element.indices; - var vertexData = element.vertexData; - var tex = element._texture; - var frame = tex._frame; - var aTrans = element.aTrans; - var alpha = Math.min(element.worldAlpha, 1.0); - var argb = alpha < 1.0 && element._texture.baseTexture.premultiplyAlpha ? premultiplyTint(element._tintRGB, alpha) - : element._tintRGB + (alpha * 255 << 24); - for (var i = 0; i < vertexData.length; i += 2) { - float32View[index] = vertexData[i * 2]; - float32View[index + 1] = vertexData[i * 2 + 1]; - float32View[index + 2] = aTrans.a; - float32View[index + 3] = aTrans.c; - float32View[index + 4] = aTrans.tx; - float32View[index + 5] = aTrans.b; - float32View[index + 6] = aTrans.d; - float32View[index + 7] = aTrans.ty; - float32View[index + 8] = frame.x; - float32View[index + 9] = frame.y; - float32View[index + 10] = frame.x + frame.width; - float32View[index + 11] = frame.y + frame.height; - uint32View[index + 12] = argb; - index += 13; - } - for (var i = 0; i < indices.length; i++) { - indexBuffer[indexCount++] = p + indices[i]; - } - }; - return BatchPlugin; - }(PIXI.AbstractBatchRenderer)); - }; - return BatchBilinearPluginFactory; - }()); - pixi_projection.BatchBilinearPluginFactory = BatchBilinearPluginFactory; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Sprite2s = (function (_super) { - __extends(Sprite2s, _super); - function Sprite2s(texture) { - var _this = _super.call(this, texture) || this; - _this.aTrans = new PIXI.Matrix(); - _this.proj = new pixi_projection.ProjectionSurface(_this.transform); - _this.pluginName = 'batch_bilinear'; - return _this; - } - Sprite2s.prototype._calculateBounds = function () { - this.calculateTrimmedVertices(); - this._bounds.addQuad(this.vertexTrimmedData); - }; - Sprite2s.prototype.calculateVertices = function () { - var wid = this.transform._worldID; - var tuid = this._texture._updateID; - if (this._transformID === wid && this._textureID === tuid) { - return; - } - this._transformID = wid; - this._textureID = tuid; - var texture = this._texture; - var vertexData = this.vertexData; - var trim = texture.trim; - var orig = texture.orig; - var anchor = this._anchor; - var w0 = 0; - var w1 = 0; - var h0 = 0; - var h1 = 0; - if (trim) { - w1 = trim.x - (anchor._x * orig.width); - w0 = w1 + trim.width; - h1 = trim.y - (anchor._y * orig.height); - h0 = h1 + trim.height; - } - else { - w1 = -anchor._x * orig.width; - w0 = w1 + orig.width; - h1 = -anchor._y * orig.height; - h0 = h1 + orig.height; - } - if (this.proj._surface) { - vertexData[0] = w1; - vertexData[1] = h1; - vertexData[2] = w0; - vertexData[3] = h1; - vertexData[4] = w0; - vertexData[5] = h0; - vertexData[6] = w1; - vertexData[7] = h0; - this.proj._surface.boundsQuad(vertexData, vertexData); - } - else { - var wt = this.transform.worldTransform; - var a = wt.a; - var b = wt.b; - var c = wt.c; - var d = wt.d; - var tx = wt.tx; - var ty = wt.ty; - vertexData[0] = (a * w1) + (c * h1) + tx; - vertexData[1] = (d * h1) + (b * w1) + ty; - vertexData[2] = (a * w0) + (c * h1) + tx; - vertexData[3] = (d * h1) + (b * w0) + ty; - vertexData[4] = (a * w0) + (c * h0) + tx; - vertexData[5] = (d * h0) + (b * w0) + ty; - vertexData[6] = (a * w1) + (c * h0) + tx; - vertexData[7] = (d * h0) + (b * w1) + ty; - if (this.proj._activeProjection) { - this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData); - } - } - if (!texture.uvMatrix) { - texture.uvMatrix = new PIXI.TextureMatrix(texture); - } - texture.uvMatrix.update(); - var aTrans = this.aTrans; - aTrans.set(orig.width, 0, 0, orig.height, w1, h1); - if (this.proj._surface === null) { - aTrans.prepend(this.transform.worldTransform); - } - aTrans.invert(); - aTrans.prepend(texture.uvMatrix.mapCoord); - }; - Sprite2s.prototype.calculateTrimmedVertices = function () { - var wid = this.transform._worldID; - var tuid = this._texture._updateID; - if (!this.vertexTrimmedData) { - this.vertexTrimmedData = new Float32Array(8); - } - else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { - return; - } - this._transformTrimmedID = wid; - this._textureTrimmedID = tuid; - var texture = this._texture; - var vertexData = this.vertexTrimmedData; - var orig = texture.orig; - var anchor = this._anchor; - var w1 = -anchor._x * orig.width; - var w0 = w1 + orig.width; - var h1 = -anchor._y * orig.height; - var h0 = h1 + orig.height; - if (this.proj._surface) { - vertexData[0] = w1; - vertexData[1] = h1; - vertexData[2] = w0; - vertexData[3] = h1; - vertexData[4] = w0; - vertexData[5] = h0; - vertexData[6] = w1; - vertexData[7] = h0; - this.proj._surface.boundsQuad(vertexData, vertexData, this.transform.worldTransform); - } - else { - var wt = this.transform.worldTransform; - var a = wt.a; - var b = wt.b; - var c = wt.c; - var d = wt.d; - var tx = wt.tx; - var ty = wt.ty; - vertexData[0] = (a * w1) + (c * h1) + tx; - vertexData[1] = (d * h1) + (b * w1) + ty; - vertexData[2] = (a * w0) + (c * h1) + tx; - vertexData[3] = (d * h1) + (b * w0) + ty; - vertexData[4] = (a * w0) + (c * h0) + tx; - vertexData[5] = (d * h0) + (b * w0) + ty; - vertexData[6] = (a * w1) + (c * h0) + tx; - vertexData[7] = (d * h0) + (b * w1) + ty; - if (this.proj._activeProjection) { - this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData, this.proj._activeProjection.legacy.worldTransform); - } - } - }; - Object.defineProperty(Sprite2s.prototype, "worldTransform", { - get: function () { - return this.proj; - }, - enumerable: true, - configurable: true - }); - return Sprite2s; - }(PIXI.Sprite)); - pixi_projection.Sprite2s = Sprite2s; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Text2s = (function (_super) { - __extends(Text2s, _super); - function Text2s(text, style, canvas) { - var _this = _super.call(this, text, style, canvas) || this; - _this.aTrans = new PIXI.Matrix(); - _this.proj = new pixi_projection.ProjectionSurface(_this.transform); - _this.pluginName = 'batch_bilinear'; - return _this; - } - Object.defineProperty(Text2s.prototype, "worldTransform", { - get: function () { - return this.proj; - }, - enumerable: true, - configurable: true - }); - return Text2s; - }(PIXI.Text)); - pixi_projection.Text2s = Text2s; - Text2s.prototype.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices; - Text2s.prototype.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices; - Text2s.prototype._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - PIXI.Sprite.prototype.convertTo2s = function () { - if (this.proj) - return; - this.pluginName = 'sprite_bilinear'; - this.aTrans = new PIXI.Matrix(); - this.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices; - this.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices; - this._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds; - PIXI.Container.prototype.convertTo2s.call(this); - }; - PIXI.Container.prototype.convertTo2s = function () { - if (this.proj) - return; - this.proj = new pixi_projection.Projection2d(this.transform); - Object.defineProperty(this, "worldTransform", { - get: function () { - return this.proj; - }, - enumerable: true, - configurable: true - }); - }; - PIXI.Container.prototype.convertSubtreeTo2s = function () { - this.convertTo2s(); - for (var i = 0; i < this.children.length; i++) { - this.children[i].convertSubtreeTo2s(); - } - }; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - function container2dWorldTransform() { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - } - pixi_projection.container2dWorldTransform = container2dWorldTransform; - var Container2d = (function (_super) { - __extends(Container2d, _super); - function Container2d() { - var _this = _super.call(this) || this; - _this.proj = new pixi_projection.Projection2d(_this.transform); - return _this; - } - Container2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - if (from) { - position = from.toGlobal(position, point, skipUpdate); - } - if (!skipUpdate) { - this._recursivePostUpdateTransform(); - } - if (step >= pixi_projection.TRANSFORM_STEP.PROJ) { - if (!skipUpdate) { - this.displayObjectUpdateTransform(); - } - if (this.proj.affine) { - return this.transform.worldTransform.applyInverse(position, point); - } - return this.proj.world.applyInverse(position, point); - } - if (this.parent) { - point = this.parent.worldTransform.applyInverse(position, point); - } - else { - point.copyFrom(position); - } - if (step === pixi_projection.TRANSFORM_STEP.NONE) { - return point; - } - return this.transform.localTransform.applyInverse(point, point); - }; - Object.defineProperty(Container2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - return Container2d; - }(PIXI.Container)); - pixi_projection.Container2d = Container2d; - pixi_projection.container2dToLocal = Container2d.prototype.toLocal; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Point = PIXI.Point; - var mat3id = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - var AFFINE; - (function (AFFINE) { - AFFINE[AFFINE["NONE"] = 0] = "NONE"; - AFFINE[AFFINE["FREE"] = 1] = "FREE"; - AFFINE[AFFINE["AXIS_X"] = 2] = "AXIS_X"; - AFFINE[AFFINE["AXIS_Y"] = 3] = "AXIS_Y"; - AFFINE[AFFINE["POINT"] = 4] = "POINT"; - AFFINE[AFFINE["AXIS_XR"] = 5] = "AXIS_XR"; - })(AFFINE = pixi_projection.AFFINE || (pixi_projection.AFFINE = {})); - var Matrix2d = (function () { - function Matrix2d(backingArray) { - this.floatArray = null; - this.mat3 = new Float64Array(backingArray || mat3id); - } - Object.defineProperty(Matrix2d.prototype, "a", { - get: function () { - return this.mat3[0] / this.mat3[8]; - }, - set: function (value) { - this.mat3[0] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "b", { - get: function () { - return this.mat3[1] / this.mat3[8]; - }, - set: function (value) { - this.mat3[1] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "c", { - get: function () { - return this.mat3[3] / this.mat3[8]; - }, - set: function (value) { - this.mat3[3] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "d", { - get: function () { - return this.mat3[4] / this.mat3[8]; - }, - set: function (value) { - this.mat3[4] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "tx", { - get: function () { - return this.mat3[6] / this.mat3[8]; - }, - set: function (value) { - this.mat3[6] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "ty", { - get: function () { - return this.mat3[7] / this.mat3[8]; - }, - set: function (value) { - this.mat3[7] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Matrix2d.prototype.set = function (a, b, c, d, tx, ty) { - var mat3 = this.mat3; - mat3[0] = a; - mat3[1] = b; - mat3[2] = 0; - mat3[3] = c; - mat3[4] = d; - mat3[5] = 0; - mat3[6] = tx; - mat3[7] = ty; - mat3[8] = 1; - return this; - }; - Matrix2d.prototype.toArray = function (transpose, out) { - if (!this.floatArray) { - this.floatArray = new Float32Array(9); - } - var array = out || this.floatArray; - var mat3 = this.mat3; - if (transpose) { - array[0] = mat3[0]; - array[1] = mat3[1]; - array[2] = mat3[2]; - array[3] = mat3[3]; - array[4] = mat3[4]; - array[5] = mat3[5]; - array[6] = mat3[6]; - array[7] = mat3[7]; - array[8] = mat3[8]; - } - else { - array[0] = mat3[0]; - array[1] = mat3[3]; - array[2] = mat3[6]; - array[3] = mat3[1]; - array[4] = mat3[4]; - array[5] = mat3[7]; - array[6] = mat3[2]; - array[7] = mat3[5]; - array[8] = mat3[8]; - } - return array; - }; - Matrix2d.prototype.apply = function (pos, newPos) { - newPos = newPos || new PIXI.Point(); - var mat3 = this.mat3; - var x = pos.x; - var y = pos.y; - var z = 1.0 / (mat3[2] * x + mat3[5] * y + mat3[8]); - newPos.x = z * (mat3[0] * x + mat3[3] * y + mat3[6]); - newPos.y = z * (mat3[1] * x + mat3[4] * y + mat3[7]); - return newPos; - }; - Matrix2d.prototype.translate = function (tx, ty) { - var mat3 = this.mat3; - mat3[0] += tx * mat3[2]; - mat3[1] += ty * mat3[2]; - mat3[3] += tx * mat3[5]; - mat3[4] += ty * mat3[5]; - mat3[6] += tx * mat3[8]; - mat3[7] += ty * mat3[8]; - return this; - }; - Matrix2d.prototype.scale = function (x, y) { - var mat3 = this.mat3; - mat3[0] *= x; - mat3[1] *= y; - mat3[3] *= x; - mat3[4] *= y; - mat3[6] *= x; - mat3[7] *= y; - return this; - }; - Matrix2d.prototype.scaleAndTranslate = function (scaleX, scaleY, tx, ty) { - var mat3 = this.mat3; - mat3[0] = scaleX * mat3[0] + tx * mat3[2]; - mat3[1] = scaleY * mat3[1] + ty * mat3[2]; - mat3[3] = scaleX * mat3[3] + tx * mat3[5]; - mat3[4] = scaleY * mat3[4] + ty * mat3[5]; - mat3[6] = scaleX * mat3[6] + tx * mat3[8]; - mat3[7] = scaleY * mat3[7] + ty * mat3[8]; - }; - Matrix2d.prototype.applyInverse = function (pos, newPos) { - newPos = newPos || new Point(); - var a = this.mat3; - var x = pos.x; - var y = pos.y; - var a00 = a[0], a01 = a[3], a02 = a[6], a10 = a[1], a11 = a[4], a12 = a[7], a20 = a[2], a21 = a[5], a22 = a[8]; - var newX = (a22 * a11 - a12 * a21) * x + (-a22 * a01 + a02 * a21) * y + (a12 * a01 - a02 * a11); - var newY = (-a22 * a10 + a12 * a20) * x + (a22 * a00 - a02 * a20) * y + (-a12 * a00 + a02 * a10); - var newZ = (a21 * a10 - a11 * a20) * x + (-a21 * a00 + a01 * a20) * y + (a11 * a00 - a01 * a10); - newPos.x = newX / newZ; - newPos.y = newY / newZ; - return newPos; - }; - Matrix2d.prototype.invert = function () { - var a = this.mat3; - 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; - var det = a00 * b01 + a01 * b11 + a02 * b21; - if (!det) { - return this; - } - det = 1.0 / det; - a[0] = b01 * det; - a[1] = (-a22 * a01 + a02 * a21) * det; - a[2] = (a12 * a01 - a02 * a11) * det; - a[3] = b11 * det; - a[4] = (a22 * a00 - a02 * a20) * det; - a[5] = (-a12 * a00 + a02 * a10) * det; - a[6] = b21 * det; - a[7] = (-a21 * a00 + a01 * a20) * det; - a[8] = (a11 * a00 - a01 * a10) * det; - return this; - }; - Matrix2d.prototype.identity = function () { - var mat3 = this.mat3; - mat3[0] = 1; - mat3[1] = 0; - mat3[2] = 0; - mat3[3] = 0; - mat3[4] = 1; - mat3[5] = 0; - mat3[6] = 0; - mat3[7] = 0; - mat3[8] = 1; - return this; - }; - Matrix2d.prototype.clone = function () { - return new Matrix2d(this.mat3); - }; - Matrix2d.prototype.copyTo2dOr3d = function (matrix) { - var mat3 = this.mat3; - var ar2 = matrix.mat3; - ar2[0] = mat3[0]; - ar2[1] = mat3[1]; - ar2[2] = mat3[2]; - ar2[3] = mat3[3]; - ar2[4] = mat3[4]; - ar2[5] = mat3[5]; - ar2[6] = mat3[6]; - ar2[7] = mat3[7]; - ar2[8] = mat3[8]; - return matrix; - }; - Matrix2d.prototype.copyTo = function (matrix, affine, preserveOrientation) { - var mat3 = this.mat3; - var d = 1.0 / mat3[8]; - var tx = mat3[6] * d, ty = mat3[7] * d; - matrix.a = (mat3[0] - mat3[2] * tx) * d; - matrix.b = (mat3[1] - mat3[2] * ty) * d; - matrix.c = (mat3[3] - mat3[5] * tx) * d; - matrix.d = (mat3[4] - mat3[5] * ty) * d; - matrix.tx = tx; - matrix.ty = ty; - if (affine >= 2) { - var D = matrix.a * matrix.d - matrix.b * matrix.c; - if (!preserveOrientation) { - D = Math.abs(D); - } - if (affine === AFFINE.POINT) { - if (D > 0) { - D = 1; - } - else - D = -1; - matrix.a = D; - matrix.b = 0; - matrix.c = 0; - matrix.d = D; - } - else if (affine === AFFINE.AXIS_X) { - D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d); - matrix.c = 0; - matrix.d = D; - } - else if (affine === AFFINE.AXIS_Y) { - D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c); - matrix.a = D; - matrix.c = 0; - } - else if (affine === AFFINE.AXIS_XR) { - matrix.a = matrix.d * D; - matrix.c = -matrix.b * D; - } - } - return matrix; - }; - Matrix2d.prototype.copyFrom = function (matrix) { - var mat3 = this.mat3; - mat3[0] = matrix.a; - mat3[1] = matrix.b; - mat3[2] = 0; - mat3[3] = matrix.c; - mat3[4] = matrix.d; - mat3[5] = 0; - mat3[6] = matrix.tx; - mat3[7] = matrix.ty; - mat3[8] = 1.0; - return this; - }; - Matrix2d.prototype.setToMultLegacy = function (pt, lt) { - var out = this.mat3; - var b = lt.mat3; - var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a20 = pt.tx, a21 = pt.ty, 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] = b02; - out[3] = b10 * a00 + b11 * a10 + b12 * a20; - out[4] = b10 * a01 + b11 * a11 + b12 * a21; - out[5] = b12; - out[6] = b20 * a00 + b21 * a10 + b22 * a20; - out[7] = b20 * a01 + b21 * a11 + b22 * a21; - out[8] = b22; - return this; - }; - Matrix2d.prototype.setToMultLegacy2 = function (pt, lt) { - var out = this.mat3; - var a = pt.mat3; - 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 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b20 = lt.tx, b21 = lt.ty; - out[0] = b00 * a00 + b01 * a10; - out[1] = b00 * a01 + b01 * a11; - out[2] = b00 * a02 + b01 * a12; - out[3] = b10 * a00 + b11 * a10; - out[4] = b10 * a01 + b11 * a11; - out[5] = b10 * a02 + b11 * a12; - out[6] = b20 * a00 + b21 * a10 + a20; - out[7] = b20 * a01 + b21 * a11 + a21; - out[8] = b20 * a02 + b21 * a12 + a22; - return this; - }; - Matrix2d.prototype.setToMult = function (pt, lt) { - var out = this.mat3; - var a = pt.mat3, b = lt.mat3; - 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 this; - }; - Matrix2d.prototype.prepend = function (lt) { - if (lt.mat3) { - return this.setToMult(lt, this); - } - else { - return this.setToMultLegacy(lt, this); - } - }; - Matrix2d.IDENTITY = new Matrix2d(); - Matrix2d.TEMP_MATRIX = new Matrix2d(); - return Matrix2d; - }()); - pixi_projection.Matrix2d = Matrix2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var t0 = new PIXI.Point(); - var tt = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()]; - var tempRect = new PIXI.Rectangle(); - var tempMat = new pixi_projection.Matrix2d(); - var Projection2d = (function (_super) { - __extends(Projection2d, _super); - function Projection2d(legacy, enable) { - var _this = _super.call(this, legacy, enable) || this; - _this.matrix = new pixi_projection.Matrix2d(); - _this.pivot = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0); - _this.reverseLocalOrder = false; - _this.local = new pixi_projection.Matrix2d(); - _this.world = new pixi_projection.Matrix2d(); - return _this; - } - Projection2d.prototype.onChange = function () { - var pivot = this.pivot; - var mat3 = this.matrix.mat3; - mat3[6] = -(pivot._x * mat3[0] + pivot._y * mat3[3]); - mat3[7] = -(pivot._x * mat3[1] + pivot._y * mat3[4]); - this._projID++; - }; - Projection2d.prototype.setAxisX = function (p, factor) { - if (factor === void 0) { factor = 1; } - var x = p.x, y = p.y; - var d = Math.sqrt(x * x + y * y); - var mat3 = this.matrix.mat3; - mat3[0] = x / d; - mat3[1] = y / d; - mat3[2] = factor / d; - this.onChange(); - }; - Projection2d.prototype.setAxisY = function (p, factor) { - if (factor === void 0) { factor = 1; } - var x = p.x, y = p.y; - var d = Math.sqrt(x * x + y * y); - var mat3 = this.matrix.mat3; - mat3[3] = x / d; - mat3[4] = y / d; - mat3[5] = factor / d; - this.onChange(); - }; - Projection2d.prototype.mapSprite = function (sprite, quad) { - var tex = sprite.texture; - tempRect.x = -sprite.anchor.x * tex.orig.width; - tempRect.y = -sprite.anchor.y * tex.orig.height; - tempRect.width = tex.orig.width; - tempRect.height = tex.orig.height; - return this.mapQuad(tempRect, quad); - }; - Projection2d.prototype.mapQuad = function (rect, p) { - tt[0].set(rect.x, rect.y); - tt[1].set(rect.x + rect.width, rect.y); - tt[2].set(rect.x + rect.width, rect.y + rect.height); - tt[3].set(rect.x, rect.y + rect.height); - var k1 = 1, k2 = 2, k3 = 3; - var f = pixi_projection.utils.getIntersectionFactor(p[0], p[2], p[1], p[3], t0); - if (f !== 0) { - k1 = 1; - k2 = 3; - k3 = 2; - } - else { - return; - } - var d0 = Math.sqrt((p[0].x - t0.x) * (p[0].x - t0.x) + (p[0].y - t0.y) * (p[0].y - t0.y)); - var d1 = Math.sqrt((p[k1].x - t0.x) * (p[k1].x - t0.x) + (p[k1].y - t0.y) * (p[k1].y - t0.y)); - var d2 = Math.sqrt((p[k2].x - t0.x) * (p[k2].x - t0.x) + (p[k2].y - t0.y) * (p[k2].y - t0.y)); - var d3 = Math.sqrt((p[k3].x - t0.x) * (p[k3].x - t0.x) + (p[k3].y - t0.y) * (p[k3].y - t0.y)); - var q0 = (d0 + d3) / d3; - var q1 = (d1 + d2) / d2; - var q2 = (d1 + d2) / d1; - var mat3 = this.matrix.mat3; - mat3[0] = tt[0].x * q0; - mat3[1] = tt[0].y * q0; - mat3[2] = q0; - mat3[3] = tt[k1].x * q1; - mat3[4] = tt[k1].y * q1; - mat3[5] = q1; - mat3[6] = tt[k2].x * q2; - mat3[7] = tt[k2].y * q2; - mat3[8] = q2; - this.matrix.invert(); - mat3 = tempMat.mat3; - mat3[0] = p[0].x; - mat3[1] = p[0].y; - mat3[2] = 1; - mat3[3] = p[k1].x; - mat3[4] = p[k1].y; - mat3[5] = 1; - mat3[6] = p[k2].x; - mat3[7] = p[k2].y; - mat3[8] = 1; - this.matrix.setToMult(tempMat, this.matrix); - this._projID++; - }; - Projection2d.prototype.updateLocalTransform = function (lt) { - if (this._projID !== 0) { - if (this.reverseLocalOrder) { - this.local.setToMultLegacy2(this.matrix, lt); - } - else { - this.local.setToMultLegacy(lt, this.matrix); - } - } - else { - this.local.copyFrom(lt); - } - }; - Projection2d.prototype.clear = function () { - _super.prototype.clear.call(this); - this.matrix.identity(); - this.pivot.set(0, 0); - }; - return Projection2d; - }(pixi_projection.LinearProjection)); - pixi_projection.Projection2d = Projection2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Mesh2d = (function (_super) { - __extends(Mesh2d, _super); - function Mesh2d(geometry, shader, state, drawMode) { - var _this = _super.call(this, geometry, shader, state, drawMode) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection2d(_this.transform); - return _this; - } - Mesh2d.prototype.calculateVertices = function () { - if (this.proj._affine) { - this.vertexData2d = null; - _super.prototype.calculateVertices.call(this); - return; - } - var geometry = this.geometry; - var vertices = geometry.buffers[0].data; - var thisAny = this; - if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID) { - return; - } - thisAny._transformID = thisAny.transform._worldID; - if (thisAny.vertexData.length !== vertices.length) { - thisAny.vertexData = new Float32Array(vertices.length); - } - if (this.vertexData2d.length !== vertices.length * 3 / 2) { - this.vertexData2d = new Float32Array(vertices.length * 3); - } - var wt = this.proj.world.mat3; - var vertexData2d = this.vertexData2d; - var vertexData = thisAny.vertexData; - for (var i = 0; i < vertexData.length / 2; i++) { - var x = vertices[(i * 2)]; - var y = vertices[(i * 2) + 1]; - var xx = (wt[0] * x) + (wt[3] * y) + wt[6]; - var yy = (wt[1] * x) + (wt[4] * y) + wt[7]; - var ww = (wt[2] * x) + (wt[5] * y) + wt[8]; - vertexData2d[i * 3] = xx; - vertexData2d[i * 3 + 1] = yy; - vertexData2d[i * 3 + 2] = ww; - vertexData[(i * 2)] = xx / ww; - vertexData[(i * 2) + 1] = yy / ww; - } - thisAny.vertexDirty = geometry.vertexDirtyId; - }; - Mesh2d.prototype._renderDefault = function (renderer) { - var shader = this.shader; - shader.alpha = this.worldAlpha; - if (shader.update) { - shader.update(); - } - renderer.batch.flush(); - if (shader.program.uniformData.translationMatrix) { - shader.uniforms.translationMatrix = this.worldTransform.toArray(true); - } - renderer.shader.bind(shader, false); - renderer.state.set(this.state); - renderer.geometry.bind(this.geometry, shader); - renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount); - }; - Mesh2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Object.defineProperty(Mesh2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Mesh2d.defaultVertexShader = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n"; - Mesh2d.defaultFragmentShader = "\nvarying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}"; - return Mesh2d; - }(PIXI.Mesh)); - pixi_projection.Mesh2d = Mesh2d; - var SimpleMesh2d = (function (_super) { - __extends(SimpleMesh2d, _super); - function SimpleMesh2d(texture, vertices, uvs, indices, drawMode) { - var _this = _super.call(this, new PIXI.MeshGeometry(vertices, uvs, indices), new PIXI.MeshMaterial(texture, { - program: PIXI.Program.from(Mesh2d.defaultVertexShader, Mesh2d.defaultFragmentShader), - pluginName: 'batch2d' - }), null, drawMode) || this; - _this.autoUpdate = true; - _this.geometry.getBuffer('aVertexPosition').static = false; - return _this; - } - Object.defineProperty(SimpleMesh2d.prototype, "vertices", { - get: function () { - return this.geometry.getBuffer('aVertexPosition').data; - }, - set: function (value) { - this.geometry.getBuffer('aVertexPosition').data = value; - }, - enumerable: true, - configurable: true - }); - SimpleMesh2d.prototype._render = function (renderer) { - if (this.autoUpdate) { - this.geometry.getBuffer('aVertexPosition').update(); - } - _super.prototype._render.call(this, renderer); - }; - return SimpleMesh2d; - }(Mesh2d)); - pixi_projection.SimpleMesh2d = SimpleMesh2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Sprite2d = (function (_super) { - __extends(Sprite2d, _super); - function Sprite2d(texture) { - var _this = _super.call(this, texture) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection2d(_this.transform); - _this.pluginName = 'batch2d'; - return _this; - } - Sprite2d.prototype._calculateBounds = function () { - this.calculateTrimmedVertices(); - this._bounds.addQuad(this.vertexTrimmedData); - }; - Sprite2d.prototype.calculateVertices = function () { - var texture = this._texture; - if (this.proj._affine) { - this.vertexData2d = null; - _super.prototype.calculateVertices.call(this); - return; - } - if (!this.vertexData2d) { - this.vertexData2d = new Float32Array(12); - } - var wid = this.transform._worldID; - var tuid = texture._updateID; - if (this._transformID === wid && this._textureID === tuid) { - return; - } - if (this._textureID !== tuid) { - this.uvs = texture._uvs.uvsFloat32; - } - this._transformID = wid; - this._textureID = tuid; - var wt = this.proj.world.mat3; - var vertexData2d = this.vertexData2d; - var vertexData = this.vertexData; - var trim = texture.trim; - var orig = texture.orig; - var anchor = this._anchor; - var w0 = 0; - var w1 = 0; - var h0 = 0; - var h1 = 0; - if (trim) { - w1 = trim.x - (anchor._x * orig.width); - w0 = w1 + trim.width; - h1 = trim.y - (anchor._y * orig.height); - h0 = h1 + trim.height; - } - else { - w1 = -anchor._x * orig.width; - w0 = w1 + orig.width; - h1 = -anchor._y * orig.height; - h0 = h1 + orig.height; - } - vertexData2d[0] = (wt[0] * w1) + (wt[3] * h1) + wt[6]; - vertexData2d[1] = (wt[1] * w1) + (wt[4] * h1) + wt[7]; - vertexData2d[2] = (wt[2] * w1) + (wt[5] * h1) + wt[8]; - vertexData2d[3] = (wt[0] * w0) + (wt[3] * h1) + wt[6]; - vertexData2d[4] = (wt[1] * w0) + (wt[4] * h1) + wt[7]; - vertexData2d[5] = (wt[2] * w0) + (wt[5] * h1) + wt[8]; - vertexData2d[6] = (wt[0] * w0) + (wt[3] * h0) + wt[6]; - vertexData2d[7] = (wt[1] * w0) + (wt[4] * h0) + wt[7]; - vertexData2d[8] = (wt[2] * w0) + (wt[5] * h0) + wt[8]; - vertexData2d[9] = (wt[0] * w1) + (wt[3] * h0) + wt[6]; - vertexData2d[10] = (wt[1] * w1) + (wt[4] * h0) + wt[7]; - vertexData2d[11] = (wt[2] * w1) + (wt[5] * h0) + wt[8]; - vertexData[0] = vertexData2d[0] / vertexData2d[2]; - vertexData[1] = vertexData2d[1] / vertexData2d[2]; - vertexData[2] = vertexData2d[3] / vertexData2d[5]; - vertexData[3] = vertexData2d[4] / vertexData2d[5]; - vertexData[4] = vertexData2d[6] / vertexData2d[8]; - vertexData[5] = vertexData2d[7] / vertexData2d[8]; - vertexData[6] = vertexData2d[9] / vertexData2d[11]; - vertexData[7] = vertexData2d[10] / vertexData2d[11]; - }; - Sprite2d.prototype.calculateTrimmedVertices = function () { - if (this.proj._affine) { - _super.prototype.calculateTrimmedVertices.call(this); - return; - } - var wid = this.transform._worldID; - var tuid = this._texture._updateID; - if (!this.vertexTrimmedData) { - this.vertexTrimmedData = new Float32Array(8); - } - else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { - return; - } - this._transformTrimmedID = wid; - this._textureTrimmedID = tuid; - var texture = this._texture; - var vertexData = this.vertexTrimmedData; - var orig = texture.orig; - var anchor = this._anchor; - var wt = this.proj.world.mat3; - var w1 = -anchor._x * orig.width; - var w0 = w1 + orig.width; - var h1 = -anchor._y * orig.height; - var h0 = h1 + orig.height; - var z = 1.0 / (wt[2] * w1 + wt[5] * h1 + wt[8]); - vertexData[0] = z * ((wt[0] * w1) + (wt[3] * h1) + wt[6]); - vertexData[1] = z * ((wt[1] * w1) + (wt[4] * h1) + wt[7]); - z = 1.0 / (wt[2] * w0 + wt[5] * h1 + wt[8]); - vertexData[2] = z * ((wt[0] * w0) + (wt[3] * h1) + wt[6]); - vertexData[3] = z * ((wt[1] * w0) + (wt[4] * h1) + wt[7]); - z = 1.0 / (wt[2] * w0 + wt[5] * h0 + wt[8]); - vertexData[4] = z * ((wt[0] * w0) + (wt[3] * h0) + wt[6]); - vertexData[5] = z * ((wt[1] * w0) + (wt[4] * h0) + wt[7]); - z = 1.0 / (wt[2] * w1 + wt[5] * h0 + wt[8]); - vertexData[6] = z * ((wt[0] * w1) + (wt[3] * h0) + wt[6]); - vertexData[7] = z * ((wt[1] * w1) + (wt[4] * h0) + wt[7]); - }; - Sprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Object.defineProperty(Sprite2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - return Sprite2d; - }(PIXI.Sprite)); - pixi_projection.Sprite2d = Sprite2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Text2d = (function (_super) { - __extends(Text2d, _super); - function Text2d(text, style, canvas) { - var _this = _super.call(this, text, style, canvas) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection2d(_this.transform); - _this.pluginName = 'batch2d'; - return _this; - } - Object.defineProperty(Text2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - return Text2d; - }(PIXI.Text)); - pixi_projection.Text2d = Text2d; - Text2d.prototype.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices; - Text2d.prototype.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices; - Text2d.prototype._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - function convertTo2d() { - if (this.proj) - return; - this.proj = new pixi_projection.Projection2d(this.transform); - this.toLocal = pixi_projection.Container2d.prototype.toLocal; - Object.defineProperty(this, "worldTransform", { - get: pixi_projection.container2dWorldTransform, - enumerable: true, - configurable: true - }); - } - PIXI.Container.prototype.convertTo2d = convertTo2d; - PIXI.Sprite.prototype.convertTo2d = function () { - if (this.proj) - return; - this.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices; - this.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices; - this._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds; - this.pluginName = 'sprite2d'; - convertTo2d.call(this); - }; - PIXI.Container.prototype.convertSubtreeTo2d = function () { - this.convertTo2d(); - for (var i = 0; i < this.children.length; i++) { - this.children[i].convertSubtreeTo2d(); - } - }; - if (PIXI.SimpleMesh) { - PIXI.SimpleMesh.prototype.convertTo2d = - PIXI.SimpleRope.prototype.convertTo2d = - function () { - if (this.proj) - return; - this.calculateVertices = pixi_projection.Mesh2d.prototype.calculateVertices; - this._renderDefault = pixi_projection.Mesh2d.prototype._renderDefault; - if (this.material.pluginName !== 'batch2d') { - this.material = new PIXI.MeshMaterial(this.material.texture, { - program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), - pluginName: 'batch2d' - }); - } - convertTo2d.call(this); - }; - } -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var tempTransform = new PIXI.Transform(); - var TilingSprite2d = (function (_super) { - __extends(TilingSprite2d, _super); - function TilingSprite2d(texture, width, height) { - var _this = _super.call(this, texture, width, height) || this; - _this.tileProj = new pixi_projection.Projection2d(_this.tileTransform); - _this.tileProj.reverseLocalOrder = true; - _this.proj = new pixi_projection.Projection2d(_this.transform); - _this.pluginName = 'tilingSprite2d'; - _this.uvRespectAnchor = true; - return _this; - } - Object.defineProperty(TilingSprite2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - TilingSprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); - }; - TilingSprite2d.prototype._render = function (renderer) { - var texture = this._texture; - if (!texture || !texture.valid) { - return; - } - this.tileTransform.updateTransform(tempTransform); - this.uvMatrix.update(); - renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); - renderer.plugins[this.pluginName].render(this); - }; - return TilingSprite2d; - }(PIXI.TilingSprite)); - pixi_projection.TilingSprite2d = TilingSprite2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var shaderVert = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec3 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n\n vTextureCoord = uTransform * vec3(aTextureCoord, 1.0);\n}\n"; - var shaderFrag = "\nvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = mod(vTextureCoord.xy / vTextureCoord.z - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 sample = texture2D(uSampler, coord);\n gl_FragColor = sample * uColor;\n}\n"; - var shaderSimpleFrag = "\n\tvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 sample = texture2D(uSampler, vTextureCoord.xy / vTextureCoord.z);\n gl_FragColor = sample * uColor;\n}\n"; - var tempMat = new pixi_projection.Matrix2d(); - var WRAP_MODES = PIXI.WRAP_MODES; - var utils = PIXI.utils; - var TilingSprite2dRenderer = (function (_super) { - __extends(TilingSprite2dRenderer, _super); - function TilingSprite2dRenderer(renderer) { - var _this = _super.call(this, renderer) || this; - _this.quad = new PIXI.QuadUv(); - var uniforms = { globals: _this.renderer.globalUniforms }; - _this.shader = PIXI.Shader.from(shaderVert, shaderFrag, uniforms); - _this.simpleShader = PIXI.Shader.from(shaderVert, shaderSimpleFrag, uniforms); - return _this; - } - TilingSprite2dRenderer.prototype.render = function (ts) { - var renderer = this.renderer; - var quad = this.quad; - var vertices = quad.vertices; - vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x; - vertices[1] = vertices[3] = ts._height * -ts.anchor.y; - vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x); - vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y); - if (ts.uvRespectAnchor) { - vertices = quad.uvs; - vertices[0] = vertices[6] = -ts.anchor.x; - vertices[1] = vertices[3] = -ts.anchor.y; - vertices[2] = vertices[4] = 1.0 - ts.anchor.x; - vertices[5] = vertices[7] = 1.0 - ts.anchor.y; - } - quad.invalidate(); - var tex = ts._texture; - var baseTex = tex.baseTexture; - var lt = ts.tileProj.world; - var uv = ts.uvMatrix; - var isSimple = baseTex.isPowerOfTwo - && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height; - if (isSimple) { - if (!baseTex._glTextures[renderer.CONTEXT_UID]) { - if (baseTex.wrapMode === WRAP_MODES.CLAMP) { - baseTex.wrapMode = WRAP_MODES.REPEAT; - } - } - else { - isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP; - } - } - var shader = isSimple ? this.simpleShader : this.shader; - tempMat.identity(); - tempMat.scale(tex.width, tex.height); - tempMat.prepend(lt); - tempMat.scale(1.0 / ts._width, 1.0 / ts._height); - tempMat.invert(); - if (isSimple) { - tempMat.prepend(uv.mapCoord); - } - else { - shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); - shader.uniforms.uClampFrame = uv.uClampFrame; - shader.uniforms.uClampOffset = uv.uClampOffset; - } - shader.uniforms.uTransform = tempMat.toArray(true); - shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.premultiplyAlpha); - shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true); - shader.uniforms.uSampler = tex; - renderer.shader.bind(shader, false); - renderer.geometry.bind(quad, undefined); - renderer.state.setBlendMode(utils.correctBlendMode(ts.blendMode, baseTex.premultiplyAlpha)); - renderer.geometry.draw(PIXI.DRAW_MODES.TRIANGLES, 6, 0); - }; - return TilingSprite2dRenderer; - }(PIXI.ObjectRenderer)); - pixi_projection.TilingSprite2dRenderer = TilingSprite2dRenderer; - PIXI.Renderer.registerPlugin('tilingSprite2d', TilingSprite2dRenderer); -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - PIXI.systems.MaskSystem.prototype.pushSpriteMask = function (target, maskData) { - var alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex]; - if (!alphaMaskFilter) { - alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new pixi_projection.SpriteMaskFilter2d(maskData)]; - } - alphaMaskFilter[0].resolution = this.renderer.resolution; - alphaMaskFilter[0].maskSprite = maskData; - target.filterArea = maskData.getBounds(true); - this.renderer.filter.push(target, alphaMaskFilter); - this.alphaMaskIndex++; - }; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var spriteMaskVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n\tgl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n\tvTextureCoord = aTextureCoord;\n\tvMaskCoord = otherMatrix * vec3( aTextureCoord, 1.0);\n}\n"; - var spriteMaskFrag = "\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n vec2 uv = vMaskCoord.xy / vMaskCoord.z;\n \n float clip = step(3.5,\n step(maskClamp.x, uv.x) +\n step(maskClamp.y, uv.y) +\n step(uv.x, maskClamp.z) +\n step(uv.y, maskClamp.w));\n\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, uv);\n \n original *= (masky.r * masky.a * alpha * clip);\n\n gl_FragColor = original;\n}\n"; - var tempMat = new pixi_projection.Matrix2d(); - var SpriteMaskFilter2d = (function (_super) { - __extends(SpriteMaskFilter2d, _super); - function SpriteMaskFilter2d(sprite) { - var _this = _super.call(this, spriteMaskVert, spriteMaskFrag) || this; - _this.maskMatrix = new pixi_projection.Matrix2d(); - sprite.renderable = false; - _this.maskSprite = sprite; - return _this; - } - SpriteMaskFilter2d.prototype.apply = function (filterManager, input, output, clear) { - var maskSprite = this.maskSprite; - var tex = this.maskSprite.texture; - if (!tex.valid) { - return; - } - if (!tex.uvMatrix) { - tex.uvMatrix = new PIXI.TextureMatrix(tex, 0.0); - } - tex.uvMatrix.update(); - this.uniforms.mask = maskSprite.texture; - this.uniforms.otherMatrix = SpriteMaskFilter2d.calculateSpriteMatrix(input, this.maskMatrix, maskSprite) - .prepend(tex.uvMatrix.mapCoord); - this.uniforms.alpha = maskSprite.worldAlpha; - this.uniforms.maskClamp = tex.uvMatrix.uClampFrame; - filterManager.applyFilter(this, input, output, clear); - }; - SpriteMaskFilter2d.calculateSpriteMatrix = function (input, mappedMatrix, sprite) { - var proj = sprite.proj; - var filterArea = input.filterFrame; - var worldTransform = proj && !proj._affine ? proj.world.copyTo2dOr3d(tempMat) : tempMat.copyFrom(sprite.transform.worldTransform); - var texture = sprite.texture.orig; - mappedMatrix.set(input.width, 0, 0, input.height, filterArea.x, filterArea.y); - worldTransform.invert(); - mappedMatrix.setToMult(worldTransform, mappedMatrix); - mappedMatrix.scaleAndTranslate(1.0 / texture.width, 1.0 / texture.height, sprite.anchor.x, sprite.anchor.y); - return mappedMatrix; - }; - return SpriteMaskFilter2d; - }(PIXI.Filter)); - pixi_projection.SpriteMaskFilter2d = SpriteMaskFilter2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - function container3dWorldTransform() { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - } - pixi_projection.container3dWorldTransform = container3dWorldTransform; - var Container3d = (function (_super) { - __extends(Container3d, _super); - function Container3d() { - var _this = _super.call(this) || this; - _this.proj = new pixi_projection.Projection3d(_this.transform); - return _this; - } - Container3d.prototype.isFrontFace = function (forceUpdate) { - if (forceUpdate === void 0) { forceUpdate = false; } - if (forceUpdate) { - this._recursivePostUpdateTransform(); - this.displayObjectUpdateTransform(); - } - var mat = this.proj.world.mat4; - var dx1 = mat[0] * mat[15] - mat[3] * mat[12]; - var dy1 = mat[1] * mat[15] - mat[3] * mat[13]; - var dx2 = mat[4] * mat[15] - mat[7] * mat[12]; - var dy2 = mat[5] * mat[15] - mat[7] * mat[13]; - return dx1 * dy2 - dx2 * dy1 > 0; - }; - Container3d.prototype.getDepth = function (forceUpdate) { - if (forceUpdate === void 0) { forceUpdate = false; } - if (forceUpdate) { - this._recursivePostUpdateTransform(); - this.displayObjectUpdateTransform(); - } - var mat4 = this.proj.world.mat4; - return mat4[14] / mat4[15]; - }; - Container3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - if (from) { - position = from.toGlobal(position, point, skipUpdate); - } - if (!skipUpdate) { - this._recursivePostUpdateTransform(); - } - if (step === pixi_projection.TRANSFORM_STEP.ALL) { - if (!skipUpdate) { - this.displayObjectUpdateTransform(); - } - if (this.proj.affine) { - return this.transform.worldTransform.applyInverse(position, point); - } - return this.proj.world.applyInverse(position, point); - } - if (this.parent) { - point = this.parent.worldTransform.applyInverse(position, point); - } - else { - point.copyFrom(position); - } - if (step === pixi_projection.TRANSFORM_STEP.NONE) { - return point; - } - point = this.transform.localTransform.applyInverse(point, point); - if (step === pixi_projection.TRANSFORM_STEP.PROJ && this.proj.cameraMode) { - point = this.proj.cameraMatrix.applyInverse(point, point); - } - return point; - }; - Object.defineProperty(Container3d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Container3d.prototype, "position3d", { - get: function () { - return this.proj.position; - }, - set: function (value) { - this.proj.position.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Container3d.prototype, "scale3d", { - get: function () { - return this.proj.scale; - }, - set: function (value) { - this.proj.scale.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Container3d.prototype, "euler", { - get: function () { - return this.proj.euler; - }, - set: function (value) { - this.proj.euler.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Container3d.prototype, "pivot3d", { - get: function () { - return this.proj.pivot; - }, - set: function (value) { - this.proj.pivot.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - return Container3d; - }(PIXI.Container)); - pixi_projection.Container3d = Container3d; - pixi_projection.container3dToLocal = Container3d.prototype.toLocal; - pixi_projection.container3dGetDepth = Container3d.prototype.getDepth; - pixi_projection.container3dIsFrontFace = Container3d.prototype.isFrontFace; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Camera3d = (function (_super) { - __extends(Camera3d, _super); - function Camera3d() { - var _this = _super.call(this) || this; - _this._far = 0; - _this._near = 0; - _this._focus = 0; - _this._orthographic = false; - _this.proj.cameraMode = true; - _this.setPlanes(400, 10, 10000, false); - return _this; - } - Object.defineProperty(Camera3d.prototype, "far", { - get: function () { - return this._far; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Camera3d.prototype, "near", { - get: function () { - return this._near; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Camera3d.prototype, "focus", { - get: function () { - return this._focus; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Camera3d.prototype, "ortographic", { - get: function () { - return this._orthographic; - }, - enumerable: true, - configurable: true - }); - Camera3d.prototype.setPlanes = function (focus, near, far, orthographic) { - if (near === void 0) { near = 10; } - if (far === void 0) { far = 10000; } - if (orthographic === void 0) { orthographic = false; } - this._focus = focus; - this._near = near; - this._far = far; - this._orthographic = orthographic; - var proj = this.proj; - var mat4 = proj.cameraMatrix.mat4; - proj._projID++; - mat4[10] = 1.0 / (far - near); - mat4[14] = (focus - near) / (far - near); - if (this._orthographic) { - mat4[11] = 0; - } - else { - mat4[11] = 1.0 / focus; - } - }; - return Camera3d; - }(pixi_projection.Container3d)); - pixi_projection.Camera3d = Camera3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Euler = (function () { - function Euler(x, y, z) { - this._quatUpdateId = -1; - this._quatDirtyId = 0; - this._sign = 1; - this._x = x || 0; - this._y = y || 0; - this._z = z || 0; - this.quaternion = new Float64Array(4); - this.quaternion[3] = 1; - this.update(); - } - Object.defineProperty(Euler.prototype, "x", { - get: function () { - return this._x; - }, - set: function (value) { - if (this._x !== value) { - this._x = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "y", { - get: function () { - return this._y; - }, - set: function (value) { - if (this._y !== value) { - this._y = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "z", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "pitch", { - get: function () { - return this._x; - }, - set: function (value) { - if (this._x !== value) { - this._x = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "yaw", { - get: function () { - return this._y; - }, - set: function (value) { - if (this._y !== value) { - this._y = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "roll", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Euler.prototype.set = function (x, y, z) { - var _x = x || 0; - var _y = y || 0; - var _z = z || 0; - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this._quatDirtyId++; - } - }; - ; - Euler.prototype.copyFrom = function (euler) { - var _x = euler.x; - var _y = euler.y; - var _z = euler.z; - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this._quatDirtyId++; - } - }; - Euler.prototype.copyTo = function (p) { - p.set(this._x, this._y, this._z); - return p; - }; - Euler.prototype.equals = function (euler) { - return this._x === euler.x - && this._y === euler.y - && this._z === euler.z; - }; - Euler.prototype.clone = function () { - return new Euler(this._x, this._y, this._z); - }; - Euler.prototype.update = function () { - if (this._quatUpdateId === this._quatDirtyId) { - return false; - } - this._quatUpdateId = this._quatDirtyId; - var c1 = Math.cos(this._x / 2); - var c2 = Math.cos(this._y / 2); - var c3 = Math.cos(this._z / 2); - var s = this._sign; - var s1 = s * Math.sin(this._x / 2); - var s2 = s * Math.sin(this._y / 2); - var s3 = s * Math.sin(this._z / 2); - var q = this.quaternion; - q[0] = s1 * c2 * c3 + c1 * s2 * s3; - q[1] = c1 * s2 * c3 - s1 * c2 * s3; - q[2] = c1 * c2 * s3 + s1 * s2 * c3; - q[3] = c1 * c2 * c3 - s1 * s2 * s3; - return true; - }; - return Euler; - }()); - pixi_projection.Euler = Euler; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var mat4id = [1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1]; - var Matrix3d = (function () { - function Matrix3d(backingArray) { - this.floatArray = null; - this._dirtyId = 0; - this._updateId = -1; - this._mat4inv = null; - this.cacheInverse = false; - this.mat4 = new Float64Array(backingArray || mat4id); - } - Object.defineProperty(Matrix3d.prototype, "a", { - get: function () { - return this.mat4[0] / this.mat4[15]; - }, - set: function (value) { - this.mat4[0] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "b", { - get: function () { - return this.mat4[1] / this.mat4[15]; - }, - set: function (value) { - this.mat4[1] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "c", { - get: function () { - return this.mat4[4] / this.mat4[15]; - }, - set: function (value) { - this.mat4[4] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "d", { - get: function () { - return this.mat4[5] / this.mat4[15]; - }, - set: function (value) { - this.mat4[5] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "tx", { - get: function () { - return this.mat4[12] / this.mat4[15]; - }, - set: function (value) { - this.mat4[12] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "ty", { - get: function () { - return this.mat4[13] / this.mat4[15]; - }, - set: function (value) { - this.mat4[13] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Matrix3d.prototype.set = function (a, b, c, d, tx, ty) { - var mat4 = this.mat4; - mat4[0] = a; - mat4[1] = b; - mat4[2] = 0; - mat4[3] = 0; - mat4[4] = c; - mat4[5] = d; - mat4[6] = 0; - mat4[7] = 0; - mat4[8] = 0; - mat4[9] = 0; - mat4[10] = 1; - mat4[11] = 0; - mat4[12] = tx; - mat4[13] = ty; - mat4[14] = 0; - mat4[15] = 1; - return this; - }; - Matrix3d.prototype.toArray = function (transpose, out) { - if (!this.floatArray) { - this.floatArray = new Float32Array(9); - } - var array = out || this.floatArray; - var mat3 = this.mat4; - if (transpose) { - array[0] = mat3[0]; - array[1] = mat3[1]; - array[2] = mat3[3]; - array[3] = mat3[4]; - array[4] = mat3[5]; - array[5] = mat3[7]; - array[6] = mat3[12]; - array[7] = mat3[13]; - array[8] = mat3[15]; - } - else { - array[0] = mat3[0]; - array[1] = mat3[4]; - array[2] = mat3[12]; - array[3] = mat3[2]; - array[4] = mat3[6]; - array[5] = mat3[13]; - array[6] = mat3[3]; - array[7] = mat3[7]; - array[8] = mat3[15]; - } - return array; - }; - Matrix3d.prototype.setToTranslation = function (tx, ty, tz) { - var mat4 = this.mat4; - mat4[0] = 1; - mat4[1] = 0; - mat4[2] = 0; - mat4[3] = 0; - mat4[4] = 0; - mat4[5] = 1; - mat4[6] = 0; - mat4[7] = 0; - mat4[8] = 0; - mat4[9] = 0; - mat4[10] = 1; - mat4[11] = 0; - mat4[12] = tx; - mat4[13] = ty; - mat4[14] = tz; - mat4[15] = 1; - }; - Matrix3d.prototype.setToRotationTranslationScale = function (quat, tx, ty, tz, sx, sy, sz) { - var out = this.mat4; - var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; - var x2 = x + x; - var y2 = y + y; - var z2 = z + z; - var xx = x * x2; - var xy = x * y2; - var xz = x * z2; - var yy = y * y2; - var yz = y * z2; - var zz = z * z2; - var wx = w * x2; - var wy = w * y2; - var wz = w * z2; - out[0] = (1 - (yy + zz)) * sx; - out[1] = (xy + wz) * sx; - out[2] = (xz - wy) * sx; - out[3] = 0; - out[4] = (xy - wz) * sy; - out[5] = (1 - (xx + zz)) * sy; - out[6] = (yz + wx) * sy; - out[7] = 0; - out[8] = (xz + wy) * sz; - out[9] = (yz - wx) * sz; - out[10] = (1 - (xx + yy)) * sz; - out[11] = 0; - out[12] = tx; - out[13] = ty; - out[14] = tz; - out[15] = 1; - return out; - }; - Matrix3d.prototype.apply = function (pos, newPos) { - newPos = newPos || new pixi_projection.Point3d(); - var mat4 = this.mat4; - var x = pos.x; - var y = pos.y; - var z = pos.z || 0; - var w = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); - newPos.x = w * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); - newPos.y = w * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); - newPos.z = w * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); - return newPos; - }; - Matrix3d.prototype.translate = function (tx, ty, tz) { - var a = this.mat4; - a[12] = a[0] * tx + a[4] * ty + a[8] * tz + a[12]; - a[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13]; - a[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14]; - a[15] = a[3] * tx + a[7] * ty + a[11] * tz + a[15]; - return this; - }; - Matrix3d.prototype.scale = function (x, y, z) { - var mat4 = this.mat4; - mat4[0] *= x; - mat4[1] *= x; - mat4[2] *= x; - mat4[3] *= x; - mat4[4] *= y; - mat4[5] *= y; - mat4[6] *= y; - mat4[7] *= y; - if (z !== undefined) { - mat4[8] *= z; - mat4[9] *= z; - mat4[10] *= z; - mat4[11] *= z; - } - return this; - }; - Matrix3d.prototype.scaleAndTranslate = function (scaleX, scaleY, scaleZ, tx, ty, tz) { - var mat4 = this.mat4; - mat4[0] = scaleX * mat4[0] + tx * mat4[3]; - mat4[1] = scaleY * mat4[1] + ty * mat4[3]; - mat4[2] = scaleZ * mat4[2] + tz * mat4[3]; - mat4[4] = scaleX * mat4[4] + tx * mat4[7]; - mat4[5] = scaleY * mat4[5] + ty * mat4[7]; - mat4[6] = scaleZ * mat4[6] + tz * mat4[7]; - mat4[8] = scaleX * mat4[8] + tx * mat4[11]; - mat4[9] = scaleY * mat4[9] + ty * mat4[11]; - mat4[10] = scaleZ * mat4[10] + tz * mat4[11]; - mat4[12] = scaleX * mat4[12] + tx * mat4[15]; - mat4[13] = scaleY * mat4[13] + ty * mat4[15]; - mat4[14] = scaleZ * mat4[14] + tz * mat4[15]; - }; - Matrix3d.prototype.applyInverse = function (pos, newPos) { - newPos = newPos || new pixi_projection.Point3d(); - if (!this._mat4inv) { - this._mat4inv = new Float64Array(16); - } - var mat4 = this._mat4inv; - var a = this.mat4; - var x = pos.x; - var y = pos.y; - var z = pos.z || 0; - if (!this.cacheInverse || this._updateId !== this._dirtyId) { - this._updateId = this._dirtyId; - Matrix3d.glMatrixMat4Invert(mat4, a); - } - var w1 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); - var x1 = w1 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); - var y1 = w1 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); - var z1 = w1 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); - z += 1.0; - var w2 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); - var x2 = w2 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); - var y2 = w2 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); - var z2 = w2 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); - if (Math.abs(z1 - z2) < 1e-10) { - newPos.set(NaN, NaN, 0); - } - var alpha = (0 - z1) / (z2 - z1); - newPos.set((x2 - x1) * alpha + x1, (y2 - y1) * alpha + y1, 0.0); - return newPos; - }; - Matrix3d.prototype.invert = function () { - Matrix3d.glMatrixMat4Invert(this.mat4, this.mat4); - return this; - }; - Matrix3d.prototype.invertCopyTo = function (matrix) { - if (!this._mat4inv) { - this._mat4inv = new Float64Array(16); - } - var mat4 = this._mat4inv; - var a = this.mat4; - if (!this.cacheInverse || this._updateId !== this._dirtyId) { - this._updateId = this._dirtyId; - Matrix3d.glMatrixMat4Invert(mat4, a); - } - matrix.mat4.set(mat4); - }; - Matrix3d.prototype.identity = function () { - var mat3 = this.mat4; - mat3[0] = 1; - mat3[1] = 0; - mat3[2] = 0; - mat3[3] = 0; - mat3[4] = 0; - mat3[5] = 1; - mat3[6] = 0; - mat3[7] = 0; - mat3[8] = 0; - mat3[9] = 0; - mat3[10] = 1; - mat3[11] = 0; - mat3[12] = 0; - mat3[13] = 0; - mat3[14] = 0; - mat3[15] = 1; - return this; - }; - Matrix3d.prototype.clone = function () { - return new Matrix3d(this.mat4); - }; - Matrix3d.prototype.copyTo3d = function (matrix) { - var mat3 = this.mat4; - var ar2 = matrix.mat4; - ar2[0] = mat3[0]; - ar2[1] = mat3[1]; - ar2[2] = mat3[2]; - ar2[3] = mat3[3]; - ar2[4] = mat3[4]; - ar2[5] = mat3[5]; - ar2[6] = mat3[6]; - ar2[7] = mat3[7]; - ar2[8] = mat3[8]; - return matrix; - }; - Matrix3d.prototype.copyTo2d = function (matrix) { - var mat3 = this.mat4; - var ar2 = matrix.mat3; - ar2[0] = mat3[0]; - ar2[1] = mat3[1]; - ar2[2] = mat3[3]; - ar2[3] = mat3[4]; - ar2[4] = mat3[5]; - ar2[5] = mat3[7]; - ar2[6] = mat3[12]; - ar2[7] = mat3[13]; - ar2[8] = mat3[15]; - return matrix; - }; - Matrix3d.prototype.copyTo2dOr3d = function (matrix) { - if (matrix instanceof pixi_projection.Matrix2d) { - return this.copyTo2d(matrix); - } - else { - return this.copyTo3d(matrix); - } - }; - Matrix3d.prototype.copyTo = function (matrix, affine, preserveOrientation) { - var mat3 = this.mat4; - var d = 1.0 / mat3[15]; - var tx = mat3[12] * d, ty = mat3[13] * d; - matrix.a = (mat3[0] - mat3[3] * tx) * d; - matrix.b = (mat3[1] - mat3[3] * ty) * d; - matrix.c = (mat3[4] - mat3[7] * tx) * d; - matrix.d = (mat3[5] - mat3[7] * ty) * d; - matrix.tx = tx; - matrix.ty = ty; - if (affine >= 2) { - var D = matrix.a * matrix.d - matrix.b * matrix.c; - if (!preserveOrientation) { - D = Math.abs(D); - } - if (affine === pixi_projection.AFFINE.POINT) { - if (D > 0) { - D = 1; - } - else - D = -1; - matrix.a = D; - matrix.b = 0; - matrix.c = 0; - matrix.d = D; - } - else if (affine === pixi_projection.AFFINE.AXIS_X) { - D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d); - matrix.c = 0; - matrix.d = D; - } - else if (affine === pixi_projection.AFFINE.AXIS_Y) { - D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c); - matrix.a = D; - matrix.c = 0; - } - } - return matrix; - }; - Matrix3d.prototype.copyFrom = function (matrix) { - var mat3 = this.mat4; - mat3[0] = matrix.a; - mat3[1] = matrix.b; - mat3[2] = 0; - mat3[3] = 0; - mat3[4] = matrix.c; - mat3[5] = matrix.d; - mat3[6] = 0; - mat3[7] = 0; - mat3[8] = 0; - mat3[9] = 0; - mat3[10] = 1; - mat3[11] = 0; - mat3[12] = matrix.tx; - mat3[13] = matrix.ty; - mat3[14] = 0; - mat3[15] = 1; - this._dirtyId++; - return this; - }; - Matrix3d.prototype.setToMultLegacy = function (pt, lt) { - var out = this.mat4; - var b = lt.mat4; - var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a30 = pt.tx, a31 = pt.ty; - var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = b0 * a00 + b1 * a10 + b3 * a30; - out[1] = b0 * a01 + b1 * a11 + b3 * a31; - out[2] = b2; - out[3] = b3; - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - out[4] = b0 * a00 + b1 * a10 + b3 * a30; - out[5] = b0 * a01 + b1 * a11 + b3 * a31; - out[6] = b2; - out[7] = b3; - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - out[8] = b0 * a00 + b1 * a10 + b3 * a30; - out[9] = b0 * a01 + b1 * a11 + b3 * a31; - out[10] = b2; - out[11] = b3; - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - out[12] = b0 * a00 + b1 * a10 + b3 * a30; - out[13] = b0 * a01 + b1 * a11 + b3 * a31; - out[14] = b2; - out[15] = b3; - this._dirtyId++; - return this; - }; - Matrix3d.prototype.setToMultLegacy2 = function (pt, lt) { - var out = this.mat4; - var a = pt.mat4; - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - var b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b30 = lt.tx, b31 = lt.ty; - out[0] = b00 * a00 + b01 * a10; - out[1] = b00 * a01 + b01 * a11; - out[2] = b00 * a02 + b01 * a12; - out[3] = b00 * a03 + b01 * a13; - out[4] = b10 * a00 + b11 * a10; - out[5] = b10 * a01 + b11 * a11; - out[6] = b10 * a02 + b11 * a12; - out[7] = b10 * a03 + b11 * a13; - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = b30 * a00 + b31 * a10 + a[12]; - out[13] = b30 * a01 + b31 * a11 + a[13]; - out[14] = b30 * a02 + b31 * a12 + a[14]; - out[15] = b30 * a03 + b31 * a13 + a[15]; - this._dirtyId++; - return this; - }; - Matrix3d.prototype.setToMult = function (pt, lt) { - Matrix3d.glMatrixMat4Multiply(this.mat4, pt.mat4, lt.mat4); - this._dirtyId++; - return this; - }; - Matrix3d.prototype.prepend = function (lt) { - if (lt.mat4) { - this.setToMult(lt, this); - } - else { - this.setToMultLegacy(lt, this); - } - }; - Matrix3d.glMatrixMat4Invert = function (out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - var b00 = a00 * a11 - a01 * a10; - var b01 = a00 * a12 - a02 * a10; - var b02 = a00 * a13 - a03 * a10; - var b03 = a01 * a12 - a02 * a11; - var b04 = a01 * a13 - a03 * a11; - var b05 = a02 * a13 - a03 * a12; - var b06 = a20 * a31 - a21 * a30; - var b07 = a20 * a32 - a22 * a30; - var b08 = a20 * a33 - a23 * a30; - var b09 = a21 * a32 - a22 * a31; - var b10 = a21 * a33 - a23 * a31; - var b11 = a22 * a33 - a23 * a32; - var 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; - }; - Matrix3d.glMatrixMat4Multiply = function (out, a, b) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - 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; - }; - Matrix3d.IDENTITY = new Matrix3d(); - Matrix3d.TEMP_MATRIX = new Matrix3d(); - return Matrix3d; - }()); - pixi_projection.Matrix3d = Matrix3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var ObservableEuler = (function () { - function ObservableEuler(cb, scope, x, y, z) { - this.cb = cb; - this.scope = scope; - this._quatUpdateId = -1; - this._quatDirtyId = 0; - this._sign = 1; - this._x = x || 0; - this._y = y || 0; - this._z = z || 0; - this.quaternion = new Float64Array(4); - this.quaternion[3] = 1; - this.update(); - } - Object.defineProperty(ObservableEuler.prototype, "x", { - get: function () { - return this._x; - }, - set: function (value) { - if (this._x !== value) { - this._x = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "y", { - get: function () { - return this._y; - }, - set: function (value) { - if (this._y !== value) { - this._y = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "z", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "pitch", { - get: function () { - return this._x; - }, - set: function (value) { - if (this._x !== value) { - this._x = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "yaw", { - get: function () { - return this._y; - }, - set: function (value) { - if (this._y !== value) { - this._y = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "roll", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - ObservableEuler.prototype.set = function (x, y, z) { - var _x = x || 0; - var _y = y || 0; - var _z = z || 0; - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }; - ; - ObservableEuler.prototype.copyFrom = function (euler) { - var _x = euler.x; - var _y = euler.y; - var _z = euler.z; - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }; - ObservableEuler.prototype.copyTo = function (p) { - p.set(this._x, this._y, this._z); - return p; - }; - ObservableEuler.prototype.equals = function (euler) { - return this._x === euler.x - && this._y === euler.y - && this._z === euler.z; - }; - ObservableEuler.prototype.clone = function () { - return new pixi_projection.Euler(this._x, this._y, this._z); - }; - ObservableEuler.prototype.update = function () { - if (this._quatUpdateId === this._quatDirtyId) { - return false; - } - this._quatUpdateId = this._quatDirtyId; - var c1 = Math.cos(this._x / 2); - var c2 = Math.cos(this._y / 2); - var c3 = Math.cos(this._z / 2); - var s = this._sign; - var s1 = s * Math.sin(this._x / 2); - var s2 = s * Math.sin(this._y / 2); - var s3 = s * Math.sin(this._z / 2); - var q = this.quaternion; - q[0] = s1 * c2 * c3 + c1 * s2 * s3; - q[1] = c1 * s2 * c3 - s1 * c2 * s3; - q[2] = c1 * c2 * s3 + s1 * s2 * c3; - q[3] = c1 * c2 * c3 - s1 * s2 * s3; - return true; - }; - return ObservableEuler; - }()); - pixi_projection.ObservableEuler = ObservableEuler; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - PIXI.ObservablePoint.prototype.copy = function (point) { - }; - var Point3d = (function (_super) { - __extends(Point3d, _super); - function Point3d(x, y, z) { - var _this = _super.call(this, x, y) || this; - _this.z = z; - return _this; - } - Point3d.prototype.set = function (x, y, z) { - this.x = x || 0; - this.y = (y === undefined) ? this.x : (y || 0); - this.z = (y === undefined) ? this.x : (z || 0); - }; - Point3d.prototype.copyFrom = function (p) { - this.set(p.x, p.y, p.z || 0); - return this; - }; - Point3d.prototype.copyTo = function (p) { - p.set(this.x, this.y, this.z); - return p; - }; - return Point3d; - }(PIXI.Point)); - pixi_projection.Point3d = Point3d; - var ObservablePoint3d = (function (_super) { - __extends(ObservablePoint3d, _super); - function ObservablePoint3d() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._z = 0; - return _this; - } - Object.defineProperty(ObservablePoint3d.prototype, "z", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - ObservablePoint3d.prototype.set = function (x, y, z) { - var _x = x || 0; - var _y = (y === undefined) ? _x : (y || 0); - var _z = (y === undefined) ? _x : (z || 0); - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this.cb.call(this.scope); - } - }; - ObservablePoint3d.prototype.copyFrom = function (p) { - this.set(p.x, p.y, p.z || 0); - return this; - }; - ObservablePoint3d.prototype.copyTo = function (p) { - p.set(this._x, this._y, this._z); - return p; - }; - return ObservablePoint3d; - }(PIXI.ObservablePoint)); - pixi_projection.ObservablePoint3d = ObservablePoint3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var tempMat = new pixi_projection.Matrix3d(); - var Projection3d = (function (_super) { - __extends(Projection3d, _super); - function Projection3d(legacy, enable) { - var _this = _super.call(this, legacy, enable) || this; - _this.cameraMatrix = null; - _this._cameraMode = false; - _this.position = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 0, 0); - _this.scale = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 1, 1); - _this.euler = new pixi_projection.ObservableEuler(_this.onChange, _this, 0, 0, 0); - _this.pivot = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 0, 0); - _this.local = new pixi_projection.Matrix3d(); - _this.world = new pixi_projection.Matrix3d(); - _this.local.cacheInverse = true; - _this.world.cacheInverse = true; - _this.position._z = 0; - _this.scale._z = 1; - _this.pivot._z = 0; - return _this; - } - Object.defineProperty(Projection3d.prototype, "cameraMode", { - get: function () { - return this._cameraMode; - }, - set: function (value) { - if (this._cameraMode === value) { - return; - } - this._cameraMode = value; - this.euler._sign = this._cameraMode ? -1 : 1; - this.euler._quatDirtyId++; - if (value) { - this.cameraMatrix = new pixi_projection.Matrix3d(); - } - }, - enumerable: true, - configurable: true - }); - Projection3d.prototype.onChange = function () { - this._projID++; - }; - Projection3d.prototype.clear = function () { - if (this.cameraMatrix) { - this.cameraMatrix.identity(); - } - this.position.set(0, 0, 0); - this.scale.set(1, 1, 1); - this.euler.set(0, 0, 0); - this.pivot.set(0, 0, 0); - _super.prototype.clear.call(this); - }; - Projection3d.prototype.updateLocalTransform = function (lt) { - if (this._projID === 0) { - this.local.copyFrom(lt); - return; - } - var matrix = this.local; - var euler = this.euler; - var pos = this.position; - var scale = this.scale; - var pivot = this.pivot; - euler.update(); - if (!this.cameraMode) { - matrix.setToRotationTranslationScale(euler.quaternion, pos._x, pos._y, pos._z, scale._x, scale._y, scale._z); - matrix.translate(-pivot._x, -pivot._y, -pivot._z); - matrix.setToMultLegacy(lt, matrix); - return; - } - matrix.setToMultLegacy(lt, this.cameraMatrix); - matrix.translate(pivot._x, pivot._y, pivot._z); - matrix.scale(1.0 / scale._x, 1.0 / scale._y, 1.0 / scale._z); - tempMat.setToRotationTranslationScale(euler.quaternion, 0, 0, 0, 1, 1, 1); - matrix.setToMult(matrix, tempMat); - matrix.translate(-pos._x, -pos._y, -pos._z); - this.local._dirtyId++; - }; - return Projection3d; - }(pixi_projection.LinearProjection)); - pixi_projection.Projection3d = Projection3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Mesh3d2d = (function (_super) { - __extends(Mesh3d2d, _super); - function Mesh3d2d(geometry, shader, state, drawMode) { - var _this = _super.call(this, geometry, shader, state, drawMode) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection3d(_this.transform); - return _this; - } - Mesh3d2d.prototype.calculateVertices = function () { - if (this.proj._affine) { - this.vertexData2d = null; - _super.prototype.calculateVertices.call(this); - return; - } - var geometry = this.geometry; - var vertices = geometry.buffers[0].data; - var thisAny = this; - if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID) { - return; - } - thisAny._transformID = thisAny.transform._worldID; - if (thisAny.vertexData.length !== vertices.length) { - thisAny.vertexData = new Float32Array(vertices.length); - } - if (this.vertexData2d.length !== vertices.length * 3 / 2) { - this.vertexData2d = new Float32Array(vertices.length * 3); - } - var wt = this.proj.world.mat4; - var vertexData2d = this.vertexData2d; - var vertexData = thisAny.vertexData; - for (var i = 0; i < vertexData.length / 2; i++) { - var x = vertices[(i * 2)]; - var y = vertices[(i * 2) + 1]; - var xx = (wt[0] * x) + (wt[4] * y) + wt[12]; - var yy = (wt[1] * x) + (wt[5] * y) + wt[13]; - var ww = (wt[3] * x) + (wt[7] * y) + wt[15]; - vertexData2d[i * 3] = xx; - vertexData2d[i * 3 + 1] = yy; - vertexData2d[i * 3 + 2] = ww; - vertexData[(i * 2)] = xx / ww; - vertexData[(i * 2) + 1] = yy / ww; - } - thisAny.vertexDirty = geometry.vertexDirtyId; - }; - Object.defineProperty(Mesh3d2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Mesh3d2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Mesh3d2d.prototype.isFrontFace = function (forceUpdate) { - return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); - }; - Mesh3d2d.prototype.getDepth = function (forceUpdate) { - return pixi_projection.container3dGetDepth.call(this, forceUpdate); - }; - Object.defineProperty(Mesh3d2d.prototype, "position3d", { - get: function () { - return this.proj.position; - }, - set: function (value) { - this.proj.position.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Mesh3d2d.prototype, "scale3d", { - get: function () { - return this.proj.scale; - }, - set: function (value) { - this.proj.scale.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Mesh3d2d.prototype, "euler", { - get: function () { - return this.proj.euler; - }, - set: function (value) { - this.proj.euler.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Mesh3d2d.prototype, "pivot3d", { - get: function () { - return this.proj.pivot; - }, - set: function (value) { - this.proj.pivot.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - return Mesh3d2d; - }(PIXI.Mesh)); - pixi_projection.Mesh3d2d = Mesh3d2d; - Mesh3d2d.prototype._renderDefault = pixi_projection.Mesh2d.prototype._renderDefault; - var SimpleMesh3d2d = (function (_super) { - __extends(SimpleMesh3d2d, _super); - function SimpleMesh3d2d(texture, vertices, uvs, indices, drawMode) { - var _this = _super.call(this, new PIXI.MeshGeometry(vertices, uvs, indices), new PIXI.MeshMaterial(texture, { - program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), - pluginName: 'batch2d' - }), null, drawMode) || this; - _this.autoUpdate = true; - _this.geometry.getBuffer('aVertexPosition').static = false; - return _this; - } - Object.defineProperty(SimpleMesh3d2d.prototype, "vertices", { - get: function () { - return this.geometry.getBuffer('aVertexPosition').data; - }, - set: function (value) { - this.geometry.getBuffer('aVertexPosition').data = value; - }, - enumerable: true, - configurable: true - }); - SimpleMesh3d2d.prototype._render = function (renderer) { - if (this.autoUpdate) { - this.geometry.getBuffer('aVertexPosition').update(); - } - _super.prototype._render.call(this, renderer); - }; - return SimpleMesh3d2d; - }(Mesh3d2d)); - pixi_projection.SimpleMesh3d2d = SimpleMesh3d2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Sprite3d = (function (_super) { - __extends(Sprite3d, _super); - function Sprite3d(texture) { - var _this = _super.call(this, texture) || this; - _this.vertexData2d = null; - _this.culledByFrustrum = false; - _this.trimmedCulledByFrustrum = false; - _this.proj = new pixi_projection.Projection3d(_this.transform); - _this.pluginName = 'batch2d'; - return _this; - } - Sprite3d.prototype.calculateVertices = function () { - var texture = this._texture; - if (this.proj._affine) { - this.vertexData2d = null; - _super.prototype.calculateVertices.call(this); - return; - } - if (!this.vertexData2d) { - this.vertexData2d = new Float32Array(12); - } - var wid = this.transform._worldID; - var tuid = texture._updateID; - if (this._transformID === wid && this._textureID === tuid) { - return; - } - if (this._textureID !== tuid) { - this.uvs = texture._uvs.uvsFloat32; - } - this._transformID = wid; - this._textureID = tuid; - var wt = this.proj.world.mat4; - var vertexData2d = this.vertexData2d; - var vertexData = this.vertexData; - var trim = texture.trim; - var orig = texture.orig; - var anchor = this._anchor; - var w0 = 0; - var w1 = 0; - var h0 = 0; - var h1 = 0; - if (trim) { - w1 = trim.x - (anchor._x * orig.width); - w0 = w1 + trim.width; - h1 = trim.y - (anchor._y * orig.height); - h0 = h1 + trim.height; - } - else { - w1 = -anchor._x * orig.width; - w0 = w1 + orig.width; - h1 = -anchor._y * orig.height; - h0 = h1 + orig.height; - } - var culled = false; - var z; - vertexData2d[0] = (wt[0] * w1) + (wt[4] * h1) + wt[12]; - vertexData2d[1] = (wt[1] * w1) + (wt[5] * h1) + wt[13]; - z = (wt[2] * w1) + (wt[6] * h1) + wt[14]; - vertexData2d[2] = (wt[3] * w1) + (wt[7] * h1) + wt[15]; - culled = culled || z < 0; - vertexData2d[3] = (wt[0] * w0) + (wt[4] * h1) + wt[12]; - vertexData2d[4] = (wt[1] * w0) + (wt[5] * h1) + wt[13]; - z = (wt[2] * w0) + (wt[6] * h1) + wt[14]; - vertexData2d[5] = (wt[3] * w0) + (wt[7] * h1) + wt[15]; - culled = culled || z < 0; - vertexData2d[6] = (wt[0] * w0) + (wt[4] * h0) + wt[12]; - vertexData2d[7] = (wt[1] * w0) + (wt[5] * h0) + wt[13]; - z = (wt[2] * w0) + (wt[6] * h0) + wt[14]; - vertexData2d[8] = (wt[3] * w0) + (wt[7] * h0) + wt[15]; - culled = culled || z < 0; - vertexData2d[9] = (wt[0] * w1) + (wt[4] * h0) + wt[12]; - vertexData2d[10] = (wt[1] * w1) + (wt[5] * h0) + wt[13]; - z = (wt[2] * w1) + (wt[6] * h0) + wt[14]; - vertexData2d[11] = (wt[3] * w1) + (wt[7] * h0) + wt[15]; - culled = culled || z < 0; - this.culledByFrustrum = culled; - vertexData[0] = vertexData2d[0] / vertexData2d[2]; - vertexData[1] = vertexData2d[1] / vertexData2d[2]; - vertexData[2] = vertexData2d[3] / vertexData2d[5]; - vertexData[3] = vertexData2d[4] / vertexData2d[5]; - vertexData[4] = vertexData2d[6] / vertexData2d[8]; - vertexData[5] = vertexData2d[7] / vertexData2d[8]; - vertexData[6] = vertexData2d[9] / vertexData2d[11]; - vertexData[7] = vertexData2d[10] / vertexData2d[11]; - }; - Sprite3d.prototype.calculateTrimmedVertices = function () { - if (this.proj._affine) { - _super.prototype.calculateTrimmedVertices.call(this); - return; - } - var wid = this.transform._worldID; - var tuid = this._texture._updateID; - if (!this.vertexTrimmedData) { - this.vertexTrimmedData = new Float32Array(8); - } - else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { - return; - } - this._transformTrimmedID = wid; - this._textureTrimmedID = tuid; - var texture = this._texture; - var vertexData = this.vertexTrimmedData; - var orig = texture.orig; - var anchor = this._anchor; - var wt = this.proj.world.mat4; - var w1 = -anchor._x * orig.width; - var w0 = w1 + orig.width; - var h1 = -anchor._y * orig.height; - var h0 = h1 + orig.height; - var culled = false; - var z; - var w = 1.0 / ((wt[3] * w1) + (wt[7] * h1) + wt[15]); - vertexData[0] = w * ((wt[0] * w1) + (wt[4] * h1) + wt[12]); - vertexData[1] = w * ((wt[1] * w1) + (wt[5] * h1) + wt[13]); - z = (wt[2] * w1) + (wt[6] * h1) + wt[14]; - culled = culled || z < 0; - w = 1.0 / ((wt[3] * w0) + (wt[7] * h1) + wt[15]); - vertexData[2] = w * ((wt[0] * w0) + (wt[4] * h1) + wt[12]); - vertexData[3] = w * ((wt[1] * w0) + (wt[5] * h1) + wt[13]); - z = (wt[2] * w0) + (wt[6] * h1) + wt[14]; - culled = culled || z < 0; - w = 1.0 / ((wt[3] * w0) + (wt[7] * h0) + wt[15]); - vertexData[4] = w * ((wt[0] * w0) + (wt[4] * h0) + wt[12]); - vertexData[5] = w * ((wt[1] * w0) + (wt[5] * h0) + wt[13]); - z = (wt[2] * w0) + (wt[6] * h0) + wt[14]; - culled = culled || z < 0; - w = 1.0 / ((wt[3] * w1) + (wt[7] * h0) + wt[15]); - vertexData[6] = w * ((wt[0] * w1) + (wt[4] * h0) + wt[12]); - vertexData[7] = w * ((wt[1] * w1) + (wt[5] * h0) + wt[13]); - z = (wt[2] * w1) + (wt[6] * h0) + wt[14]; - culled = culled || z < 0; - this.culledByFrustrum = culled; - }; - Sprite3d.prototype._calculateBounds = function () { - this.calculateVertices(); - if (this.culledByFrustrum) { - return; - } - var trim = this._texture.trim; - var orig = this._texture.orig; - if (!trim || (trim.width === orig.width && trim.height === orig.height)) { - this._bounds.addQuad(this.vertexData); - return; - } - this.calculateTrimmedVertices(); - if (!this.trimmedCulledByFrustrum) { - this._bounds.addQuad(this.vertexTrimmedData); - } - }; - Sprite3d.prototype._render = function (renderer) { - this.calculateVertices(); - if (this.culledByFrustrum) { - return; - } - renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); - renderer.plugins[this.pluginName].render(this); - }; - Sprite3d.prototype.containsPoint = function (point) { - if (this.culledByFrustrum) { - return false; - } - return _super.prototype.containsPoint.call(this, point); - }; - Object.defineProperty(Sprite3d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Sprite3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Sprite3d.prototype.isFrontFace = function (forceUpdate) { - return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); - }; - Sprite3d.prototype.getDepth = function (forceUpdate) { - return pixi_projection.container3dGetDepth.call(this, forceUpdate); - }; - Object.defineProperty(Sprite3d.prototype, "position3d", { - get: function () { - return this.proj.position; - }, - set: function (value) { - this.proj.position.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sprite3d.prototype, "scale3d", { - get: function () { - return this.proj.scale; - }, - set: function (value) { - this.proj.scale.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sprite3d.prototype, "euler", { - get: function () { - return this.proj.euler; - }, - set: function (value) { - this.proj.euler.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sprite3d.prototype, "pivot3d", { - get: function () { - return this.proj.pivot; - }, - set: function (value) { - this.proj.pivot.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - return Sprite3d; - }(PIXI.Sprite)); - pixi_projection.Sprite3d = Sprite3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Text3d = (function (_super) { - __extends(Text3d, _super); - function Text3d(text, style, canvas) { - var _this = _super.call(this, text, style, canvas) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection3d(_this.transform); - _this.pluginName = 'batch2d'; - return _this; - } - Object.defineProperty(Text3d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Text3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Text3d.prototype.isFrontFace = function (forceUpdate) { - return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); - }; - Text3d.prototype.getDepth = function (forceUpdate) { - return pixi_projection.container3dGetDepth.call(this, forceUpdate); - }; - Object.defineProperty(Text3d.prototype, "position3d", { - get: function () { - return this.proj.position; - }, - set: function (value) { - this.proj.position.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Text3d.prototype, "scale3d", { - get: function () { - return this.proj.scale; - }, - set: function (value) { - this.proj.scale.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Text3d.prototype, "euler", { - get: function () { - return this.proj.euler; - }, - set: function (value) { - this.proj.euler.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Text3d.prototype, "pivot3d", { - get: function () { - return this.proj.pivot; - }, - set: function (value) { - this.proj.pivot.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - return Text3d; - }(PIXI.Text)); - pixi_projection.Text3d = Text3d; - Text3d.prototype.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices; - Text3d.prototype.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices; - Text3d.prototype._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds; - Text3d.prototype.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint; - Text3d.prototype._render = pixi_projection.Sprite3d.prototype._render; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var containerProps = { - worldTransform: { - get: pixi_projection.container3dWorldTransform, - enumerable: true, - configurable: true - }, - position3d: { - get: function () { return this.proj.position; }, - set: function (value) { this.proj.position.copy(value); } - }, - scale3d: { - get: function () { return this.proj.scale; }, - set: function (value) { this.proj.scale.copy(value); } - }, - pivot3d: { - get: function () { return this.proj.pivot; }, - set: function (value) { this.proj.pivot.copy(value); } - }, - euler: { - get: function () { return this.proj.euler; }, - set: function (value) { this.proj.euler.copy(value); } - } - }; - function convertTo3d() { - if (this.proj) - return; - this.proj = new pixi_projection.Projection3d(this.transform); - this.toLocal = pixi_projection.Container3d.prototype.toLocal; - this.isFrontFace = pixi_projection.Container3d.prototype.isFrontFace; - this.getDepth = pixi_projection.Container3d.prototype.getDepth; - Object.defineProperties(this, containerProps); - } - PIXI.Container.prototype.convertTo3d = convertTo3d; - PIXI.Sprite.prototype.convertTo3d = function () { - if (this.proj) - return; - this.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices; - this.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices; - this._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds; - this.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint; - this.pluginName = 'batch2d'; - convertTo3d.call(this); - }; - PIXI.Container.prototype.convertSubtreeTo3d = function () { - this.convertTo3d(); - for (var i = 0; i < this.children.length; i++) { - this.children[i].convertSubtreeTo3d(); - } - }; - if (PIXI.SimpleMesh) { - PIXI.SimpleMesh.prototype.convertTo3d = - PIXI.SimpleRope.prototype.convertTo3d = - function () { - if (this.proj) - return; - this.calculateVertices = pixi_projection.Mesh3d2d.prototype.calculateVertices; - this._renderDefault = pixi_projection.Mesh3d2d.prototype._renderDefault; - if (this.material.pluginName !== 'batch2d') { - this.material = new PIXI.MeshMaterial(this.material.texture, { - program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), - pluginName: 'batch2d' - }); - } - convertTo3d.call(this); - }; - } -})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var utils; + (function (utils) { + function getIntersectionFactor(p1, p2, p3, p4, out) { + var A1 = p2.x - p1.x, B1 = p3.x - p4.x, C1 = p3.x - p1.x; + var A2 = p2.y - p1.y, B2 = p3.y - p4.y, C2 = p3.y - p1.y; + var D = A1 * B2 - A2 * B1; + if (Math.abs(D) < 1e-7) { + out.x = A1; + out.y = A2; + return 0; + } + var T = C1 * B2 - C2 * B1; + var U = A1 * C2 - A2 * C1; + var t = T / D, u = U / D; + if (u < (1e-6) || u - 1 > -1e-6) { + return -1; + } + out.x = p1.x + t * (p2.x - p1.x); + out.y = p1.y + t * (p2.y - p1.y); + return 1; + } + utils.getIntersectionFactor = getIntersectionFactor; + function getPositionFromQuad(p, anchor, out) { + out = out || new PIXI.Point(); + var a1 = 1.0 - anchor.x, a2 = 1.0 - a1; + var b1 = 1.0 - anchor.y, b2 = 1.0 - b1; + out.x = (p[0].x * a1 + p[1].x * a2) * b1 + (p[3].x * a1 + p[2].x * a2) * b2; + out.y = (p[0].y * a1 + p[1].y * a2) * b1 + (p[3].y * a1 + p[2].y * a2) * b2; + return out; + } + utils.getPositionFromQuad = getPositionFromQuad; + })(utils = pixi_projection.utils || (pixi_projection.utils = {})); +})(pixi_projection || (pixi_projection = {})); +PIXI.projection = pixi_projection; +var pixi_projection; +(function (pixi_projection) { + var AbstractProjection = (function () { + function AbstractProjection(legacy, enable) { + if (enable === void 0) { enable = true; } + this._enabled = false; + this.legacy = legacy; + if (enable) { + this.enabled = true; + } + this.legacy.proj = this; + } + Object.defineProperty(AbstractProjection.prototype, "enabled", { + get: function () { + return this._enabled; + }, + set: function (value) { + this._enabled = value; + }, + enumerable: true, + configurable: true + }); + AbstractProjection.prototype.clear = function () { + }; + return AbstractProjection; + }()); + pixi_projection.AbstractProjection = AbstractProjection; + var TRANSFORM_STEP; + (function (TRANSFORM_STEP) { + TRANSFORM_STEP[TRANSFORM_STEP["NONE"] = 0] = "NONE"; + TRANSFORM_STEP[TRANSFORM_STEP["BEFORE_PROJ"] = 4] = "BEFORE_PROJ"; + TRANSFORM_STEP[TRANSFORM_STEP["PROJ"] = 5] = "PROJ"; + TRANSFORM_STEP[TRANSFORM_STEP["ALL"] = 9] = "ALL"; + })(TRANSFORM_STEP = pixi_projection.TRANSFORM_STEP || (pixi_projection.TRANSFORM_STEP = {})); +})(pixi_projection || (pixi_projection = {})); +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var pixi_projection; +(function (pixi_projection) { + function transformHack(parentTransform) { + var proj = this.proj; + var ta = this; + var pwid = parentTransform._worldID; + var lt = ta.localTransform; + var scaleAfterAffine = proj.scaleAfterAffine && proj.affine >= 2; + if (ta._localID !== ta._currentLocalID) { + if (scaleAfterAffine) { + lt.a = ta._cx; + lt.b = ta._sx; + lt.c = ta._cy; + lt.d = ta._sy; + lt.tx = ta.position._x; + lt.ty = ta.position._y; + } + else { + lt.a = ta._cx * ta.scale._x; + lt.b = ta._sx * ta.scale._x; + lt.c = ta._cy * ta.scale._y; + lt.d = ta._sy * ta.scale._y; + lt.tx = ta.position._x - ((ta.pivot._x * lt.a) + (ta.pivot._y * lt.c)); + lt.ty = ta.position._y - ((ta.pivot._x * lt.b) + (ta.pivot._y * lt.d)); + } + ta._currentLocalID = ta._localID; + proj._currentProjID = -1; + } + var _matrixID = proj._projID; + if (proj._currentProjID !== _matrixID) { + proj._currentProjID = _matrixID; + proj.updateLocalTransform(lt); + ta._parentID = -1; + } + if (ta._parentID !== pwid) { + var pp = parentTransform.proj; + if (pp && !pp._affine) { + proj.world.setToMult(pp.world, proj.local); + } + else { + proj.world.setToMultLegacy(parentTransform.worldTransform, proj.local); + } + var wa = ta.worldTransform; + proj.world.copyTo(wa, proj._affine, proj.affinePreserveOrientation); + if (scaleAfterAffine) { + wa.a *= ta.scale._x; + wa.b *= ta.scale._x; + wa.c *= ta.scale._y; + wa.d *= ta.scale._y; + wa.tx -= ((ta.pivot._x * wa.a) + (ta.pivot._y * wa.c)); + wa.ty -= ((ta.pivot._x * wa.b) + (ta.pivot._y * wa.d)); + } + ta._parentID = pwid; + ta._worldID++; + } + } + var LinearProjection = (function (_super) { + __extends(LinearProjection, _super); + function LinearProjection() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._projID = 0; + _this._currentProjID = -1; + _this._affine = pixi_projection.AFFINE.NONE; + _this.affinePreserveOrientation = false; + _this.scaleAfterAffine = true; + return _this; + } + LinearProjection.prototype.updateLocalTransform = function (lt) { + }; + Object.defineProperty(LinearProjection.prototype, "affine", { + get: function () { + return this._affine; + }, + set: function (value) { + if (this._affine == value) + return; + this._affine = value; + this._currentProjID = -1; + this.legacy._currentLocalID = -1; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LinearProjection.prototype, "enabled", { + set: function (value) { + if (value === this._enabled) { + return; + } + this._enabled = value; + if (value) { + this.legacy.updateTransform = transformHack; + this.legacy._parentID = -1; + } + else { + this.legacy.updateTransform = PIXI.Transform.prototype.updateTransform; + this.legacy._parentID = -1; + } + }, + enumerable: true, + configurable: true + }); + LinearProjection.prototype.clear = function () { + this._currentProjID = -1; + this._projID = 0; + }; + return LinearProjection; + }(pixi_projection.AbstractProjection)); + pixi_projection.LinearProjection = LinearProjection; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var TYPES = PIXI.TYPES; + var premultiplyTint = PIXI.utils.premultiplyTint; + var shaderVert = "precision highp float;\nattribute vec3 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * aVertexPosition;\n gl_Position.z = 0.0;\n \n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor;\n}\n"; + var shaderFrag = "\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\nvec4 color;\n%forloop%\ngl_FragColor = color * vColor;\n}"; + var Batch3dGeometry = (function (_super) { + __extends(Batch3dGeometry, _super); + function Batch3dGeometry(_static) { + if (_static === void 0) { _static = false; } + var _this = _super.call(this) || this; + _this._buffer = new PIXI.Buffer(null, _static, false); + _this._indexBuffer = new PIXI.Buffer(null, _static, true); + _this.addAttribute('aVertexPosition', _this._buffer, 3, false, TYPES.FLOAT) + .addAttribute('aTextureCoord', _this._buffer, 2, false, TYPES.FLOAT) + .addAttribute('aColor', _this._buffer, 4, true, TYPES.UNSIGNED_BYTE) + .addAttribute('aTextureId', _this._buffer, 1, true, TYPES.FLOAT) + .addIndex(_this._indexBuffer); + return _this; + } + return Batch3dGeometry; + }(PIXI.Geometry)); + pixi_projection.Batch3dGeometry = Batch3dGeometry; + var Batch2dPluginFactory = (function () { + function Batch2dPluginFactory() { + } + Batch2dPluginFactory.create = function (options) { + var _a = Object.assign({ + vertex: shaderVert, + fragment: shaderFrag, + geometryClass: Batch3dGeometry, + vertexSize: 7, + }, options), vertex = _a.vertex, fragment = _a.fragment, vertexSize = _a.vertexSize, geometryClass = _a.geometryClass; + return (function (_super) { + __extends(BatchPlugin, _super); + function BatchPlugin(renderer) { + var _this = _super.call(this, renderer) || this; + _this.shaderGenerator = new PIXI.BatchShaderGenerator(vertex, fragment); + _this.geometryClass = geometryClass; + _this.vertexSize = vertexSize; + return _this; + } + BatchPlugin.prototype.packInterleavedGeometry = function (element, attributeBuffer, indexBuffer, aIndex, iIndex) { + var uint32View = attributeBuffer.uint32View, float32View = attributeBuffer.float32View; + var p = aIndex / this.vertexSize; + var uvs = element.uvs; + var indicies = element.indices; + var vertexData = element.vertexData; + var vertexData2d = element.vertexData2d; + var textureId = element._texture.baseTexture._id; + var alpha = Math.min(element.worldAlpha, 1.0); + var argb = alpha < 1.0 && element._texture.baseTexture.premultiplyAlpha ? premultiplyTint(element._tintRGB, alpha) + : element._tintRGB + (alpha * 255 << 24); + if (vertexData2d) { + var j = 0; + for (var i = 0; i < vertexData2d.length; i += 3, j += 2) { + float32View[aIndex++] = vertexData2d[i]; + float32View[aIndex++] = vertexData2d[i + 1]; + float32View[aIndex++] = vertexData2d[i + 2]; + float32View[aIndex++] = uvs[j]; + float32View[aIndex++] = uvs[j + 1]; + uint32View[aIndex++] = argb; + float32View[aIndex++] = textureId; + } + } + else { + for (var i = 0; i < vertexData.length; i += 2) { + float32View[aIndex++] = vertexData[i]; + float32View[aIndex++] = vertexData[i + 1]; + float32View[aIndex++] = 1.0; + float32View[aIndex++] = uvs[i]; + float32View[aIndex++] = uvs[i + 1]; + uint32View[aIndex++] = argb; + float32View[aIndex++] = textureId; + } + } + for (var i = 0; i < indicies.length; i++) { + indexBuffer[iIndex++] = p + indicies[i]; + } + }; + return BatchPlugin; + }(PIXI.AbstractBatchRenderer)); + }; + return Batch2dPluginFactory; + }()); + pixi_projection.Batch2dPluginFactory = Batch2dPluginFactory; + PIXI.Renderer.registerPlugin('batch2d', Batch2dPluginFactory.create({})); +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var UniformBatchRenderer = (function (_super) { + __extends(UniformBatchRenderer, _super); + function UniformBatchRenderer() { + return _super !== null && _super.apply(this, arguments) || this; + } + UniformBatchRenderer.prototype.addToBatch = function (sprite) { + }; + return UniformBatchRenderer; + }(PIXI.AbstractBatchRenderer)); + pixi_projection.UniformBatchRenderer = UniformBatchRenderer; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var p = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()]; + var a = [0, 0, 0, 0]; + var Surface = (function () { + function Surface() { + this.surfaceID = "default"; + this._updateID = 0; + this.vertexSrc = ""; + this.fragmentSrc = ""; + } + Surface.prototype.fillUniforms = function (uniforms) { + }; + Surface.prototype.clear = function () { + }; + Surface.prototype.boundsQuad = function (v, out, after) { + var minX = out[0], minY = out[1]; + var maxX = out[0], maxY = out[1]; + for (var i = 2; i < 8; i += 2) { + if (minX > out[i]) + minX = out[i]; + if (maxX < out[i]) + maxX = out[i]; + if (minY > out[i + 1]) + minY = out[i + 1]; + if (maxY < out[i + 1]) + maxY = out[i + 1]; + } + p[0].set(minX, minY); + this.apply(p[0], p[0]); + p[1].set(maxX, minY); + this.apply(p[1], p[1]); + p[2].set(maxX, maxY); + this.apply(p[2], p[2]); + p[3].set(minX, maxY); + this.apply(p[3], p[3]); + if (after) { + after.apply(p[0], p[0]); + after.apply(p[1], p[1]); + after.apply(p[2], p[2]); + after.apply(p[3], p[3]); + out[0] = p[0].x; + out[1] = p[0].y; + out[2] = p[1].x; + out[3] = p[1].y; + out[4] = p[2].x; + out[5] = p[2].y; + out[6] = p[3].x; + out[7] = p[3].y; + } + else { + for (var i = 1; i <= 3; i++) { + if (p[i].y < p[0].y || p[i].y == p[0].y && p[i].x < p[0].x) { + var t = p[0]; + p[0] = p[i]; + p[i] = t; + } + } + for (var i = 1; i <= 3; i++) { + a[i] = Math.atan2(p[i].y - p[0].y, p[i].x - p[0].x); + } + for (var i = 1; i <= 3; i++) { + for (var j = i + 1; j <= 3; j++) { + if (a[i] > a[j]) { + var t = p[i]; + p[i] = p[j]; + p[j] = t; + var t2 = a[i]; + a[i] = a[j]; + a[j] = t2; + } + } + } + out[0] = p[0].x; + out[1] = p[0].y; + out[2] = p[1].x; + out[3] = p[1].y; + out[4] = p[2].x; + out[5] = p[2].y; + out[6] = p[3].x; + out[7] = p[3].y; + if ((p[3].x - p[2].x) * (p[1].y - p[2].y) - (p[1].x - p[2].x) * (p[3].y - p[2].y) < 0) { + out[4] = p[3].x; + out[5] = p[3].y; + return; + } + } + }; + return Surface; + }()); + pixi_projection.Surface = Surface; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var tempMat = new PIXI.Matrix(); + var tempRect = new PIXI.Rectangle(); + var tempPoint = new PIXI.Point(); + var BilinearSurface = (function (_super) { + __extends(BilinearSurface, _super); + function BilinearSurface() { + var _this = _super.call(this) || this; + _this.distortion = new PIXI.Point(); + return _this; + } + BilinearSurface.prototype.clear = function () { + this.distortion.set(0, 0); + }; + BilinearSurface.prototype.apply = function (pos, newPos) { + newPos = newPos || new PIXI.Point(); + var d = this.distortion; + var m = pos.x * pos.y; + newPos.x = pos.x + d.x * m; + newPos.y = pos.y + d.y * m; + return newPos; + }; + BilinearSurface.prototype.applyInverse = function (pos, newPos) { + newPos = newPos || new PIXI.Point(); + var vx = pos.x, vy = pos.y; + var dx = this.distortion.x, dy = this.distortion.y; + if (dx == 0.0) { + newPos.x = vx; + newPos.y = vy / (1.0 + dy * vx); + } + else if (dy == 0.0) { + newPos.y = vy; + newPos.x = vx / (1.0 + dx * vy); + } + else { + var b = (vy * dx - vx * dy + 1.0) * 0.5 / dy; + var d = b * b + vx / dy; + if (d <= 0.00001) { + newPos.set(NaN, NaN); + return; + } + if (dy > 0.0) { + newPos.x = -b + Math.sqrt(d); + } + else { + newPos.x = -b - Math.sqrt(d); + } + newPos.y = (vx / newPos.x - 1.0) / dx; + } + return newPos; + }; + BilinearSurface.prototype.mapSprite = function (sprite, quad, outTransform) { + var tex = sprite.texture; + tempRect.x = -sprite.anchor.x * tex.orig.width; + tempRect.y = -sprite.anchor.y * tex.orig.height; + tempRect.width = tex.orig.width; + tempRect.height = tex.orig.height; + return this.mapQuad(tempRect, quad, outTransform || sprite.transform); + }; + BilinearSurface.prototype.mapQuad = function (rect, quad, outTransform) { + var ax = -rect.x / rect.width; + var ay = -rect.y / rect.height; + var ax2 = (1.0 - rect.x) / rect.width; + var ay2 = (1.0 - rect.y) / rect.height; + var up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax); + var up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax); + var up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2); + var up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2); + var down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax); + var down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax); + var down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2); + var down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2); + var x00 = up1x * (1.0 - ay) + down1x * ay; + var y00 = up1y * (1.0 - ay) + down1y * ay; + var x10 = up2x * (1.0 - ay) + down2x * ay; + var y10 = up2y * (1.0 - ay) + down2y * ay; + var x01 = up1x * (1.0 - ay2) + down1x * ay2; + var y01 = up1y * (1.0 - ay2) + down1y * ay2; + var x11 = up2x * (1.0 - ay2) + down2x * ay2; + var y11 = up2y * (1.0 - ay2) + down2y * ay2; + var mat = tempMat; + mat.tx = x00; + mat.ty = y00; + mat.a = x10 - x00; + mat.b = y10 - y00; + mat.c = x01 - x00; + mat.d = y01 - y00; + tempPoint.set(x11, y11); + mat.applyInverse(tempPoint, tempPoint); + this.distortion.set(tempPoint.x - 1, tempPoint.y - 1); + outTransform.setFromMatrix(mat); + return this; + }; + BilinearSurface.prototype.fillUniforms = function (uniforms) { + uniforms.distortion = uniforms.distortion || new Float32Array([0, 0, 0, 0]); + var ax = Math.abs(this.distortion.x); + var ay = Math.abs(this.distortion.y); + uniforms.distortion[0] = ax * 10000 <= ay ? 0 : this.distortion.x; + uniforms.distortion[1] = ay * 10000 <= ax ? 0 : this.distortion.y; + uniforms.distortion[2] = 1.0 / uniforms.distortion[0]; + uniforms.distortion[3] = 1.0 / uniforms.distortion[1]; + }; + return BilinearSurface; + }(pixi_projection.Surface)); + pixi_projection.BilinearSurface = BilinearSurface; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Container2s = (function (_super) { + __extends(Container2s, _super); + function Container2s() { + var _this = _super.call(this) || this; + _this.proj = new pixi_projection.ProjectionSurface(_this.transform); + return _this; + } + Object.defineProperty(Container2s.prototype, "worldTransform", { + get: function () { + return this.proj; + }, + enumerable: true, + configurable: true + }); + return Container2s; + }(PIXI.Container)); + pixi_projection.Container2s = Container2s; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var fun = PIXI.Transform.prototype.updateTransform; + function transformHack(parentTransform) { + var proj = this.proj; + var pp = parentTransform.proj; + var ta = this; + if (!pp) { + fun.call(this, parentTransform); + proj._activeProjection = null; + return; + } + if (pp._surface) { + proj._activeProjection = pp; + this.updateLocalTransform(); + this.localTransform.copyFrom(this.worldTransform); + if (ta._parentID < 0) { + ++ta._worldID; + } + return; + } + fun.call(this, parentTransform); + proj._activeProjection = pp._activeProjection; + } + var ProjectionSurface = (function (_super) { + __extends(ProjectionSurface, _super); + function ProjectionSurface(legacy, enable) { + var _this = _super.call(this, legacy, enable) || this; + _this._surface = null; + _this._activeProjection = null; + _this._currentSurfaceID = -1; + _this._currentLegacyID = -1; + _this._lastUniforms = null; + return _this; + } + Object.defineProperty(ProjectionSurface.prototype, "enabled", { + set: function (value) { + if (value === this._enabled) { + return; + } + this._enabled = value; + if (value) { + this.legacy.updateTransform = transformHack; + this.legacy._parentID = -1; + } + else { + this.legacy.updateTransform = PIXI.Transform.prototype.updateTransform; + this.legacy._parentID = -1; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ProjectionSurface.prototype, "surface", { + get: function () { + return this._surface; + }, + set: function (value) { + if (this._surface == value) { + return; + } + this._surface = value || null; + this.legacy._parentID = -1; + }, + enumerable: true, + configurable: true + }); + ProjectionSurface.prototype.applyPartial = function (pos, newPos) { + if (this._activeProjection !== null) { + newPos = this.legacy.worldTransform.apply(pos, newPos); + return this._activeProjection.surface.apply(newPos, newPos); + } + if (this._surface !== null) { + return this.surface.apply(pos, newPos); + } + return this.legacy.worldTransform.apply(pos, newPos); + }; + ProjectionSurface.prototype.apply = function (pos, newPos) { + if (this._activeProjection !== null) { + newPos = this.legacy.worldTransform.apply(pos, newPos); + this._activeProjection.surface.apply(newPos, newPos); + return this._activeProjection.legacy.worldTransform.apply(newPos, newPos); + } + if (this._surface !== null) { + newPos = this.surface.apply(pos, newPos); + return this.legacy.worldTransform.apply(newPos, newPos); + } + return this.legacy.worldTransform.apply(pos, newPos); + }; + ProjectionSurface.prototype.applyInverse = function (pos, newPos) { + if (this._activeProjection !== null) { + newPos = this._activeProjection.legacy.worldTransform.applyInverse(pos, newPos); + this._activeProjection._surface.applyInverse(newPos, newPos); + return this.legacy.worldTransform.applyInverse(newPos, newPos); + } + if (this._surface !== null) { + newPos = this.legacy.worldTransform.applyInverse(pos, newPos); + return this._surface.applyInverse(newPos, newPos); + } + return this.legacy.worldTransform.applyInverse(pos, newPos); + }; + ProjectionSurface.prototype.mapBilinearSprite = function (sprite, quad) { + if (!(this._surface instanceof pixi_projection.BilinearSurface)) { + this.surface = new pixi_projection.BilinearSurface(); + } + this.surface.mapSprite(sprite, quad, this.legacy); + }; + ProjectionSurface.prototype.clear = function () { + if (this.surface) { + this.surface.clear(); + } + }; + Object.defineProperty(ProjectionSurface.prototype, "uniforms", { + get: function () { + if (this._currentLegacyID === this.legacy._worldID && + this._currentSurfaceID === this.surface._updateID) { + return this._lastUniforms; + } + this._lastUniforms = this._lastUniforms || {}; + this._lastUniforms.worldTransform = this.legacy.worldTransform.toArray(true); + this._surface.fillUniforms(this._lastUniforms); + return this._lastUniforms; + }, + enumerable: true, + configurable: true + }); + return ProjectionSurface; + }(pixi_projection.AbstractProjection)); + pixi_projection.ProjectionSurface = ProjectionSurface; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var TYPES = PIXI.TYPES; + var premultiplyTint = PIXI.utils.premultiplyTint; + var shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec3 aTrans1;\nattribute vec3 aTrans2;\nattribute vec4 aFrame;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 worldTransform;\n\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n \n vTextureCoord = aVertexPosition;\n vTrans1 = aTrans1;\n vTrans2 = aTrans2;\n vTextureId = aTextureId;\n vColor = aColor;\n vFrame = aFrame;\n}\n"; + var shaderFrag = "precision highp float;\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nuniform sampler2D uSamplers[%count%];\nuniform vec2 samplerSize[%count%]; \nuniform vec4 distortion;\n\nvoid main(void){\nvec2 surface;\nvec2 surface2;\n\nfloat vx = vTextureCoord.x;\nfloat vy = vTextureCoord.y;\nfloat dx = distortion.x;\nfloat dy = distortion.y;\nfloat revx = distortion.z;\nfloat revy = distortion.w;\n\nif (distortion.x == 0.0) {\n surface.x = vx;\n surface.y = vy / (1.0 + dy * vx);\n surface2 = surface;\n} else\nif (distortion.y == 0.0) {\n surface.y = vy;\n surface.x = vx/ (1.0 + dx * vy);\n surface2 = surface;\n} else {\n float c = vy * dx - vx * dy;\n float b = (c + 1.0) * 0.5;\n float b2 = (-c + 1.0) * 0.5;\n float d = b * b + vx * dy;\n if (d < -0.00001) {\n discard;\n }\n d = sqrt(max(d, 0.0));\n surface.x = (- b + d) * revy;\n surface2.x = (- b - d) * revy;\n surface.y = (- b2 + d) * revx;\n surface2.y = (- b2 - d) * revx;\n}\n\nvec2 uv;\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\n\nvec2 pixels = uv * samplerSize[0];\n\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * samplerSize[0];\n \n if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n discard;\n }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\n%forloop%\ngl_FragColor = color * rColor;\n}"; + var BatchBilineardGeometry = (function (_super) { + __extends(BatchBilineardGeometry, _super); + function BatchBilineardGeometry(_static) { + if (_static === void 0) { _static = false; } + var _this = _super.call(this) || this; + _this._buffer = new PIXI.Buffer(null, _static, false); + _this._indexBuffer = new PIXI.Buffer(null, _static, true); + _this.addAttribute('aVertexPosition', _this._buffer, 2, false, TYPES.FLOAT) + .addAttribute('aTrans1', _this._buffer, 3, false, TYPES.FLOAT) + .addAttribute('aTrans2', _this._buffer, 3, false, TYPES.FLOAT) + .addAttribute('aFrame', _this._buffer, 4, false, TYPES.FLOAT) + .addAttribute('aColor', _this._buffer, 4, true, TYPES.UNSIGNED_BYTE) + .addIndex(_this._indexBuffer); + return _this; + } + return BatchBilineardGeometry; + }(PIXI.Geometry)); + pixi_projection.BatchBilineardGeometry = BatchBilineardGeometry; + var BatchBilinearPluginFactory = (function () { + function BatchBilinearPluginFactory() { + } + BatchBilinearPluginFactory.create = function (options) { + var _a = Object.assign({ + vertex: shaderVert, + fragment: shaderFrag, + geometryClass: pixi_projection.Batch3dGeometry, + vertexSize: 7, + }, options), vertex = _a.vertex, fragment = _a.fragment, vertexSize = _a.vertexSize, geometryClass = _a.geometryClass; + return (function (_super) { + __extends(BatchPlugin, _super); + function BatchPlugin(renderer) { + var _this = _super.call(this, renderer) || this; + _this.defUniforms = { + worldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]), + distortion: new Float32Array([0, 0]) + }; + _this.shaderGenerator = new PIXI.BatchShaderGenerator(vertex, fragment); + _this.geometryClass = geometryClass; + _this.vertexSize = vertexSize; + return _this; + } + BatchPlugin.prototype.getUniforms = function (sprite) { + var proj = sprite.proj; + var shader = this._shader; + if (proj.surface !== null) { + return proj.uniforms; + } + if (proj._activeProjection !== null) { + return proj._activeProjection.uniforms; + } + return this.defUniforms; + }; + BatchPlugin.prototype.packGeometry = function (element, float32View, uint32View, indexBuffer, index, indexCount) { + var p = index / this.vertexSize; + var uvs = element.uvs; + var indices = element.indices; + var vertexData = element.vertexData; + var tex = element._texture; + var frame = tex._frame; + var aTrans = element.aTrans; + var alpha = Math.min(element.worldAlpha, 1.0); + var argb = alpha < 1.0 && element._texture.baseTexture.premultiplyAlpha ? premultiplyTint(element._tintRGB, alpha) + : element._tintRGB + (alpha * 255 << 24); + for (var i = 0; i < vertexData.length; i += 2) { + float32View[index] = vertexData[i * 2]; + float32View[index + 1] = vertexData[i * 2 + 1]; + float32View[index + 2] = aTrans.a; + float32View[index + 3] = aTrans.c; + float32View[index + 4] = aTrans.tx; + float32View[index + 5] = aTrans.b; + float32View[index + 6] = aTrans.d; + float32View[index + 7] = aTrans.ty; + float32View[index + 8] = frame.x; + float32View[index + 9] = frame.y; + float32View[index + 10] = frame.x + frame.width; + float32View[index + 11] = frame.y + frame.height; + uint32View[index + 12] = argb; + index += 13; + } + for (var i = 0; i < indices.length; i++) { + indexBuffer[indexCount++] = p + indices[i]; + } + }; + return BatchPlugin; + }(PIXI.AbstractBatchRenderer)); + }; + return BatchBilinearPluginFactory; + }()); + pixi_projection.BatchBilinearPluginFactory = BatchBilinearPluginFactory; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Sprite2s = (function (_super) { + __extends(Sprite2s, _super); + function Sprite2s(texture) { + var _this = _super.call(this, texture) || this; + _this.aTrans = new PIXI.Matrix(); + _this.proj = new pixi_projection.ProjectionSurface(_this.transform); + _this.pluginName = 'batch_bilinear'; + return _this; + } + Sprite2s.prototype._calculateBounds = function () { + this.calculateTrimmedVertices(); + this._bounds.addQuad(this.vertexTrimmedData); + }; + Sprite2s.prototype.calculateVertices = function () { + var wid = this.transform._worldID; + var tuid = this._texture._updateID; + if (this._transformID === wid && this._textureID === tuid) { + return; + } + this._transformID = wid; + this._textureID = tuid; + var texture = this._texture; + var vertexData = this.vertexData; + var trim = texture.trim; + var orig = texture.orig; + var anchor = this._anchor; + var w0 = 0; + var w1 = 0; + var h0 = 0; + var h1 = 0; + if (trim) { + w1 = trim.x - (anchor._x * orig.width); + w0 = w1 + trim.width; + h1 = trim.y - (anchor._y * orig.height); + h0 = h1 + trim.height; + } + else { + w1 = -anchor._x * orig.width; + w0 = w1 + orig.width; + h1 = -anchor._y * orig.height; + h0 = h1 + orig.height; + } + if (this.proj._surface) { + vertexData[0] = w1; + vertexData[1] = h1; + vertexData[2] = w0; + vertexData[3] = h1; + vertexData[4] = w0; + vertexData[5] = h0; + vertexData[6] = w1; + vertexData[7] = h0; + this.proj._surface.boundsQuad(vertexData, vertexData); + } + else { + var wt = this.transform.worldTransform; + var a = wt.a; + var b = wt.b; + var c = wt.c; + var d = wt.d; + var tx = wt.tx; + var ty = wt.ty; + vertexData[0] = (a * w1) + (c * h1) + tx; + vertexData[1] = (d * h1) + (b * w1) + ty; + vertexData[2] = (a * w0) + (c * h1) + tx; + vertexData[3] = (d * h1) + (b * w0) + ty; + vertexData[4] = (a * w0) + (c * h0) + tx; + vertexData[5] = (d * h0) + (b * w0) + ty; + vertexData[6] = (a * w1) + (c * h0) + tx; + vertexData[7] = (d * h0) + (b * w1) + ty; + if (this.proj._activeProjection) { + this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData); + } + } + if (!texture.uvMatrix) { + texture.uvMatrix = new PIXI.TextureMatrix(texture); + } + texture.uvMatrix.update(); + var aTrans = this.aTrans; + aTrans.set(orig.width, 0, 0, orig.height, w1, h1); + if (this.proj._surface === null) { + aTrans.prepend(this.transform.worldTransform); + } + aTrans.invert(); + aTrans.prepend(texture.uvMatrix.mapCoord); + }; + Sprite2s.prototype.calculateTrimmedVertices = function () { + var wid = this.transform._worldID; + var tuid = this._texture._updateID; + if (!this.vertexTrimmedData) { + this.vertexTrimmedData = new Float32Array(8); + } + else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { + return; + } + this._transformTrimmedID = wid; + this._textureTrimmedID = tuid; + var texture = this._texture; + var vertexData = this.vertexTrimmedData; + var orig = texture.orig; + var anchor = this._anchor; + var w1 = -anchor._x * orig.width; + var w0 = w1 + orig.width; + var h1 = -anchor._y * orig.height; + var h0 = h1 + orig.height; + if (this.proj._surface) { + vertexData[0] = w1; + vertexData[1] = h1; + vertexData[2] = w0; + vertexData[3] = h1; + vertexData[4] = w0; + vertexData[5] = h0; + vertexData[6] = w1; + vertexData[7] = h0; + this.proj._surface.boundsQuad(vertexData, vertexData, this.transform.worldTransform); + } + else { + var wt = this.transform.worldTransform; + var a = wt.a; + var b = wt.b; + var c = wt.c; + var d = wt.d; + var tx = wt.tx; + var ty = wt.ty; + vertexData[0] = (a * w1) + (c * h1) + tx; + vertexData[1] = (d * h1) + (b * w1) + ty; + vertexData[2] = (a * w0) + (c * h1) + tx; + vertexData[3] = (d * h1) + (b * w0) + ty; + vertexData[4] = (a * w0) + (c * h0) + tx; + vertexData[5] = (d * h0) + (b * w0) + ty; + vertexData[6] = (a * w1) + (c * h0) + tx; + vertexData[7] = (d * h0) + (b * w1) + ty; + if (this.proj._activeProjection) { + this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData, this.proj._activeProjection.legacy.worldTransform); + } + } + }; + Object.defineProperty(Sprite2s.prototype, "worldTransform", { + get: function () { + return this.proj; + }, + enumerable: true, + configurable: true + }); + return Sprite2s; + }(PIXI.Sprite)); + pixi_projection.Sprite2s = Sprite2s; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Text2s = (function (_super) { + __extends(Text2s, _super); + function Text2s(text, style, canvas) { + var _this = _super.call(this, text, style, canvas) || this; + _this.aTrans = new PIXI.Matrix(); + _this.proj = new pixi_projection.ProjectionSurface(_this.transform); + _this.pluginName = 'batch_bilinear'; + return _this; + } + Object.defineProperty(Text2s.prototype, "worldTransform", { + get: function () { + return this.proj; + }, + enumerable: true, + configurable: true + }); + return Text2s; + }(PIXI.Text)); + pixi_projection.Text2s = Text2s; + Text2s.prototype.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices; + Text2s.prototype.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices; + Text2s.prototype._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + PIXI.Sprite.prototype.convertTo2s = function () { + if (this.proj) + return; + this.pluginName = 'sprite_bilinear'; + this.aTrans = new PIXI.Matrix(); + this.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices; + this.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices; + this._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds; + PIXI.Container.prototype.convertTo2s.call(this); + }; + PIXI.Container.prototype.convertTo2s = function () { + if (this.proj) + return; + this.proj = new pixi_projection.Projection2d(this.transform); + Object.defineProperty(this, "worldTransform", { + get: function () { + return this.proj; + }, + enumerable: true, + configurable: true + }); + }; + PIXI.Container.prototype.convertSubtreeTo2s = function () { + this.convertTo2s(); + for (var i = 0; i < this.children.length; i++) { + this.children[i].convertSubtreeTo2s(); + } + }; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + function container2dWorldTransform() { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + } + pixi_projection.container2dWorldTransform = container2dWorldTransform; + var Container2d = (function (_super) { + __extends(Container2d, _super); + function Container2d() { + var _this = _super.call(this) || this; + _this.proj = new pixi_projection.Projection2d(_this.transform); + return _this; + } + Container2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + if (from) { + position = from.toGlobal(position, point, skipUpdate); + } + if (!skipUpdate) { + this._recursivePostUpdateTransform(); + } + if (step >= pixi_projection.TRANSFORM_STEP.PROJ) { + if (!skipUpdate) { + this.displayObjectUpdateTransform(); + } + if (this.proj.affine) { + return this.transform.worldTransform.applyInverse(position, point); + } + return this.proj.world.applyInverse(position, point); + } + if (this.parent) { + point = this.parent.worldTransform.applyInverse(position, point); + } + else { + point.copyFrom(position); + } + if (step === pixi_projection.TRANSFORM_STEP.NONE) { + return point; + } + return this.transform.localTransform.applyInverse(point, point); + }; + Object.defineProperty(Container2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + return Container2d; + }(PIXI.Container)); + pixi_projection.Container2d = Container2d; + pixi_projection.container2dToLocal = Container2d.prototype.toLocal; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Point = PIXI.Point; + var mat3id = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + var AFFINE; + (function (AFFINE) { + AFFINE[AFFINE["NONE"] = 0] = "NONE"; + AFFINE[AFFINE["FREE"] = 1] = "FREE"; + AFFINE[AFFINE["AXIS_X"] = 2] = "AXIS_X"; + AFFINE[AFFINE["AXIS_Y"] = 3] = "AXIS_Y"; + AFFINE[AFFINE["POINT"] = 4] = "POINT"; + AFFINE[AFFINE["AXIS_XR"] = 5] = "AXIS_XR"; + })(AFFINE = pixi_projection.AFFINE || (pixi_projection.AFFINE = {})); + var Matrix2d = (function () { + function Matrix2d(backingArray) { + this.floatArray = null; + this.mat3 = new Float64Array(backingArray || mat3id); + } + Object.defineProperty(Matrix2d.prototype, "a", { + get: function () { + return this.mat3[0] / this.mat3[8]; + }, + set: function (value) { + this.mat3[0] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "b", { + get: function () { + return this.mat3[1] / this.mat3[8]; + }, + set: function (value) { + this.mat3[1] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "c", { + get: function () { + return this.mat3[3] / this.mat3[8]; + }, + set: function (value) { + this.mat3[3] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "d", { + get: function () { + return this.mat3[4] / this.mat3[8]; + }, + set: function (value) { + this.mat3[4] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "tx", { + get: function () { + return this.mat3[6] / this.mat3[8]; + }, + set: function (value) { + this.mat3[6] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "ty", { + get: function () { + return this.mat3[7] / this.mat3[8]; + }, + set: function (value) { + this.mat3[7] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Matrix2d.prototype.set = function (a, b, c, d, tx, ty) { + var mat3 = this.mat3; + mat3[0] = a; + mat3[1] = b; + mat3[2] = 0; + mat3[3] = c; + mat3[4] = d; + mat3[5] = 0; + mat3[6] = tx; + mat3[7] = ty; + mat3[8] = 1; + return this; + }; + Matrix2d.prototype.toArray = function (transpose, out) { + if (!this.floatArray) { + this.floatArray = new Float32Array(9); + } + var array = out || this.floatArray; + var mat3 = this.mat3; + if (transpose) { + array[0] = mat3[0]; + array[1] = mat3[1]; + array[2] = mat3[2]; + array[3] = mat3[3]; + array[4] = mat3[4]; + array[5] = mat3[5]; + array[6] = mat3[6]; + array[7] = mat3[7]; + array[8] = mat3[8]; + } + else { + array[0] = mat3[0]; + array[1] = mat3[3]; + array[2] = mat3[6]; + array[3] = mat3[1]; + array[4] = mat3[4]; + array[5] = mat3[7]; + array[6] = mat3[2]; + array[7] = mat3[5]; + array[8] = mat3[8]; + } + return array; + }; + Matrix2d.prototype.apply = function (pos, newPos) { + newPos = newPos || new PIXI.Point(); + var mat3 = this.mat3; + var x = pos.x; + var y = pos.y; + var z = 1.0 / (mat3[2] * x + mat3[5] * y + mat3[8]); + newPos.x = z * (mat3[0] * x + mat3[3] * y + mat3[6]); + newPos.y = z * (mat3[1] * x + mat3[4] * y + mat3[7]); + return newPos; + }; + Matrix2d.prototype.translate = function (tx, ty) { + var mat3 = this.mat3; + mat3[0] += tx * mat3[2]; + mat3[1] += ty * mat3[2]; + mat3[3] += tx * mat3[5]; + mat3[4] += ty * mat3[5]; + mat3[6] += tx * mat3[8]; + mat3[7] += ty * mat3[8]; + return this; + }; + Matrix2d.prototype.scale = function (x, y) { + var mat3 = this.mat3; + mat3[0] *= x; + mat3[1] *= y; + mat3[3] *= x; + mat3[4] *= y; + mat3[6] *= x; + mat3[7] *= y; + return this; + }; + Matrix2d.prototype.scaleAndTranslate = function (scaleX, scaleY, tx, ty) { + var mat3 = this.mat3; + mat3[0] = scaleX * mat3[0] + tx * mat3[2]; + mat3[1] = scaleY * mat3[1] + ty * mat3[2]; + mat3[3] = scaleX * mat3[3] + tx * mat3[5]; + mat3[4] = scaleY * mat3[4] + ty * mat3[5]; + mat3[6] = scaleX * mat3[6] + tx * mat3[8]; + mat3[7] = scaleY * mat3[7] + ty * mat3[8]; + }; + Matrix2d.prototype.applyInverse = function (pos, newPos) { + newPos = newPos || new Point(); + var a = this.mat3; + var x = pos.x; + var y = pos.y; + var a00 = a[0], a01 = a[3], a02 = a[6], a10 = a[1], a11 = a[4], a12 = a[7], a20 = a[2], a21 = a[5], a22 = a[8]; + var newX = (a22 * a11 - a12 * a21) * x + (-a22 * a01 + a02 * a21) * y + (a12 * a01 - a02 * a11); + var newY = (-a22 * a10 + a12 * a20) * x + (a22 * a00 - a02 * a20) * y + (-a12 * a00 + a02 * a10); + var newZ = (a21 * a10 - a11 * a20) * x + (-a21 * a00 + a01 * a20) * y + (a11 * a00 - a01 * a10); + newPos.x = newX / newZ; + newPos.y = newY / newZ; + return newPos; + }; + Matrix2d.prototype.invert = function () { + var a = this.mat3; + 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; + var det = a00 * b01 + a01 * b11 + a02 * b21; + if (!det) { + return this; + } + det = 1.0 / det; + a[0] = b01 * det; + a[1] = (-a22 * a01 + a02 * a21) * det; + a[2] = (a12 * a01 - a02 * a11) * det; + a[3] = b11 * det; + a[4] = (a22 * a00 - a02 * a20) * det; + a[5] = (-a12 * a00 + a02 * a10) * det; + a[6] = b21 * det; + a[7] = (-a21 * a00 + a01 * a20) * det; + a[8] = (a11 * a00 - a01 * a10) * det; + return this; + }; + Matrix2d.prototype.identity = function () { + var mat3 = this.mat3; + mat3[0] = 1; + mat3[1] = 0; + mat3[2] = 0; + mat3[3] = 0; + mat3[4] = 1; + mat3[5] = 0; + mat3[6] = 0; + mat3[7] = 0; + mat3[8] = 1; + return this; + }; + Matrix2d.prototype.clone = function () { + return new Matrix2d(this.mat3); + }; + Matrix2d.prototype.copyTo2dOr3d = function (matrix) { + var mat3 = this.mat3; + var ar2 = matrix.mat3; + ar2[0] = mat3[0]; + ar2[1] = mat3[1]; + ar2[2] = mat3[2]; + ar2[3] = mat3[3]; + ar2[4] = mat3[4]; + ar2[5] = mat3[5]; + ar2[6] = mat3[6]; + ar2[7] = mat3[7]; + ar2[8] = mat3[8]; + return matrix; + }; + Matrix2d.prototype.copyTo = function (matrix, affine, preserveOrientation) { + var mat3 = this.mat3; + var d = 1.0 / mat3[8]; + var tx = mat3[6] * d, ty = mat3[7] * d; + matrix.a = (mat3[0] - mat3[2] * tx) * d; + matrix.b = (mat3[1] - mat3[2] * ty) * d; + matrix.c = (mat3[3] - mat3[5] * tx) * d; + matrix.d = (mat3[4] - mat3[5] * ty) * d; + matrix.tx = tx; + matrix.ty = ty; + if (affine >= 2) { + var D = matrix.a * matrix.d - matrix.b * matrix.c; + if (!preserveOrientation) { + D = Math.abs(D); + } + if (affine === AFFINE.POINT) { + if (D > 0) { + D = 1; + } + else + D = -1; + matrix.a = D; + matrix.b = 0; + matrix.c = 0; + matrix.d = D; + } + else if (affine === AFFINE.AXIS_X) { + D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d); + matrix.c = 0; + matrix.d = D; + } + else if (affine === AFFINE.AXIS_Y) { + D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c); + matrix.a = D; + matrix.c = 0; + } + else if (affine === AFFINE.AXIS_XR) { + matrix.a = matrix.d * D; + matrix.c = -matrix.b * D; + } + } + return matrix; + }; + Matrix2d.prototype.copyFrom = function (matrix) { + var mat3 = this.mat3; + mat3[0] = matrix.a; + mat3[1] = matrix.b; + mat3[2] = 0; + mat3[3] = matrix.c; + mat3[4] = matrix.d; + mat3[5] = 0; + mat3[6] = matrix.tx; + mat3[7] = matrix.ty; + mat3[8] = 1.0; + return this; + }; + Matrix2d.prototype.setToMultLegacy = function (pt, lt) { + var out = this.mat3; + var b = lt.mat3; + var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a20 = pt.tx, a21 = pt.ty, 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] = b02; + out[3] = b10 * a00 + b11 * a10 + b12 * a20; + out[4] = b10 * a01 + b11 * a11 + b12 * a21; + out[5] = b12; + out[6] = b20 * a00 + b21 * a10 + b22 * a20; + out[7] = b20 * a01 + b21 * a11 + b22 * a21; + out[8] = b22; + return this; + }; + Matrix2d.prototype.setToMultLegacy2 = function (pt, lt) { + var out = this.mat3; + var a = pt.mat3; + 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 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b20 = lt.tx, b21 = lt.ty; + out[0] = b00 * a00 + b01 * a10; + out[1] = b00 * a01 + b01 * a11; + out[2] = b00 * a02 + b01 * a12; + out[3] = b10 * a00 + b11 * a10; + out[4] = b10 * a01 + b11 * a11; + out[5] = b10 * a02 + b11 * a12; + out[6] = b20 * a00 + b21 * a10 + a20; + out[7] = b20 * a01 + b21 * a11 + a21; + out[8] = b20 * a02 + b21 * a12 + a22; + return this; + }; + Matrix2d.prototype.setToMult = function (pt, lt) { + var out = this.mat3; + var a = pt.mat3, b = lt.mat3; + 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 this; + }; + Matrix2d.prototype.prepend = function (lt) { + if (lt.mat3) { + return this.setToMult(lt, this); + } + else { + return this.setToMultLegacy(lt, this); + } + }; + Matrix2d.IDENTITY = new Matrix2d(); + Matrix2d.TEMP_MATRIX = new Matrix2d(); + return Matrix2d; + }()); + pixi_projection.Matrix2d = Matrix2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var t0 = new PIXI.Point(); + var tt = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()]; + var tempRect = new PIXI.Rectangle(); + var tempMat = new pixi_projection.Matrix2d(); + var Projection2d = (function (_super) { + __extends(Projection2d, _super); + function Projection2d(legacy, enable) { + var _this = _super.call(this, legacy, enable) || this; + _this.matrix = new pixi_projection.Matrix2d(); + _this.pivot = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0); + _this.reverseLocalOrder = false; + _this.local = new pixi_projection.Matrix2d(); + _this.world = new pixi_projection.Matrix2d(); + return _this; + } + Projection2d.prototype.onChange = function () { + var pivot = this.pivot; + var mat3 = this.matrix.mat3; + mat3[6] = -(pivot._x * mat3[0] + pivot._y * mat3[3]); + mat3[7] = -(pivot._x * mat3[1] + pivot._y * mat3[4]); + this._projID++; + }; + Projection2d.prototype.setAxisX = function (p, factor) { + if (factor === void 0) { factor = 1; } + var x = p.x, y = p.y; + var d = Math.sqrt(x * x + y * y); + var mat3 = this.matrix.mat3; + mat3[0] = x / d; + mat3[1] = y / d; + mat3[2] = factor / d; + this.onChange(); + }; + Projection2d.prototype.setAxisY = function (p, factor) { + if (factor === void 0) { factor = 1; } + var x = p.x, y = p.y; + var d = Math.sqrt(x * x + y * y); + var mat3 = this.matrix.mat3; + mat3[3] = x / d; + mat3[4] = y / d; + mat3[5] = factor / d; + this.onChange(); + }; + Projection2d.prototype.mapSprite = function (sprite, quad) { + var tex = sprite.texture; + tempRect.x = -sprite.anchor.x * tex.orig.width; + tempRect.y = -sprite.anchor.y * tex.orig.height; + tempRect.width = tex.orig.width; + tempRect.height = tex.orig.height; + return this.mapQuad(tempRect, quad); + }; + Projection2d.prototype.mapQuad = function (rect, p) { + tt[0].set(rect.x, rect.y); + tt[1].set(rect.x + rect.width, rect.y); + tt[2].set(rect.x + rect.width, rect.y + rect.height); + tt[3].set(rect.x, rect.y + rect.height); + var k1 = 1, k2 = 2, k3 = 3; + var f = pixi_projection.utils.getIntersectionFactor(p[0], p[2], p[1], p[3], t0); + if (f !== 0) { + k1 = 1; + k2 = 3; + k3 = 2; + } + else { + return; + } + var d0 = Math.sqrt((p[0].x - t0.x) * (p[0].x - t0.x) + (p[0].y - t0.y) * (p[0].y - t0.y)); + var d1 = Math.sqrt((p[k1].x - t0.x) * (p[k1].x - t0.x) + (p[k1].y - t0.y) * (p[k1].y - t0.y)); + var d2 = Math.sqrt((p[k2].x - t0.x) * (p[k2].x - t0.x) + (p[k2].y - t0.y) * (p[k2].y - t0.y)); + var d3 = Math.sqrt((p[k3].x - t0.x) * (p[k3].x - t0.x) + (p[k3].y - t0.y) * (p[k3].y - t0.y)); + var q0 = (d0 + d3) / d3; + var q1 = (d1 + d2) / d2; + var q2 = (d1 + d2) / d1; + var mat3 = this.matrix.mat3; + mat3[0] = tt[0].x * q0; + mat3[1] = tt[0].y * q0; + mat3[2] = q0; + mat3[3] = tt[k1].x * q1; + mat3[4] = tt[k1].y * q1; + mat3[5] = q1; + mat3[6] = tt[k2].x * q2; + mat3[7] = tt[k2].y * q2; + mat3[8] = q2; + this.matrix.invert(); + mat3 = tempMat.mat3; + mat3[0] = p[0].x; + mat3[1] = p[0].y; + mat3[2] = 1; + mat3[3] = p[k1].x; + mat3[4] = p[k1].y; + mat3[5] = 1; + mat3[6] = p[k2].x; + mat3[7] = p[k2].y; + mat3[8] = 1; + this.matrix.setToMult(tempMat, this.matrix); + this._projID++; + }; + Projection2d.prototype.updateLocalTransform = function (lt) { + if (this._projID !== 0) { + if (this.reverseLocalOrder) { + this.local.setToMultLegacy2(this.matrix, lt); + } + else { + this.local.setToMultLegacy(lt, this.matrix); + } + } + else { + this.local.copyFrom(lt); + } + }; + Projection2d.prototype.clear = function () { + _super.prototype.clear.call(this); + this.matrix.identity(); + this.pivot.set(0, 0); + }; + return Projection2d; + }(pixi_projection.LinearProjection)); + pixi_projection.Projection2d = Projection2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Mesh2d = (function (_super) { + __extends(Mesh2d, _super); + function Mesh2d(geometry, shader, state, drawMode) { + var _this = _super.call(this, geometry, shader, state, drawMode) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection2d(_this.transform); + return _this; + } + Mesh2d.prototype.calculateVertices = function () { + if (this.proj._affine) { + this.vertexData2d = null; + _super.prototype.calculateVertices.call(this); + return; + } + var geometry = this.geometry; + var vertices = geometry.buffers[0].data; + var thisAny = this; + if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID) { + return; + } + thisAny._transformID = thisAny.transform._worldID; + if (thisAny.vertexData.length !== vertices.length) { + thisAny.vertexData = new Float32Array(vertices.length); + } + if (this.vertexData2d.length !== vertices.length * 3 / 2) { + this.vertexData2d = new Float32Array(vertices.length * 3); + } + var wt = this.proj.world.mat3; + var vertexData2d = this.vertexData2d; + var vertexData = thisAny.vertexData; + for (var i = 0; i < vertexData.length / 2; i++) { + var x = vertices[(i * 2)]; + var y = vertices[(i * 2) + 1]; + var xx = (wt[0] * x) + (wt[3] * y) + wt[6]; + var yy = (wt[1] * x) + (wt[4] * y) + wt[7]; + var ww = (wt[2] * x) + (wt[5] * y) + wt[8]; + vertexData2d[i * 3] = xx; + vertexData2d[i * 3 + 1] = yy; + vertexData2d[i * 3 + 2] = ww; + vertexData[(i * 2)] = xx / ww; + vertexData[(i * 2) + 1] = yy / ww; + } + thisAny.vertexDirty = geometry.vertexDirtyId; + }; + Mesh2d.prototype._renderDefault = function (renderer) { + var shader = this.shader; + shader.alpha = this.worldAlpha; + if (shader.update) { + shader.update(); + } + renderer.batch.flush(); + if (shader.program.uniformData.translationMatrix) { + shader.uniforms.translationMatrix = this.worldTransform.toArray(true); + } + renderer.shader.bind(shader, false); + renderer.state.set(this.state); + renderer.geometry.bind(this.geometry, shader); + renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount); + }; + Mesh2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Object.defineProperty(Mesh2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Mesh2d.defaultVertexShader = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n"; + Mesh2d.defaultFragmentShader = "\nvarying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}"; + return Mesh2d; + }(PIXI.Mesh)); + pixi_projection.Mesh2d = Mesh2d; + var SimpleMesh2d = (function (_super) { + __extends(SimpleMesh2d, _super); + function SimpleMesh2d(texture, vertices, uvs, indices, drawMode) { + var _this = _super.call(this, new PIXI.MeshGeometry(vertices, uvs, indices), new PIXI.MeshMaterial(texture, { + program: PIXI.Program.from(Mesh2d.defaultVertexShader, Mesh2d.defaultFragmentShader), + pluginName: 'batch2d' + }), null, drawMode) || this; + _this.autoUpdate = true; + _this.geometry.getBuffer('aVertexPosition').static = false; + return _this; + } + Object.defineProperty(SimpleMesh2d.prototype, "vertices", { + get: function () { + return this.geometry.getBuffer('aVertexPosition').data; + }, + set: function (value) { + this.geometry.getBuffer('aVertexPosition').data = value; + }, + enumerable: true, + configurable: true + }); + SimpleMesh2d.prototype._render = function (renderer) { + if (this.autoUpdate) { + this.geometry.getBuffer('aVertexPosition').update(); + } + _super.prototype._render.call(this, renderer); + }; + return SimpleMesh2d; + }(Mesh2d)); + pixi_projection.SimpleMesh2d = SimpleMesh2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Sprite2d = (function (_super) { + __extends(Sprite2d, _super); + function Sprite2d(texture) { + var _this = _super.call(this, texture) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection2d(_this.transform); + _this.pluginName = 'batch2d'; + return _this; + } + Sprite2d.prototype._calculateBounds = function () { + this.calculateTrimmedVertices(); + this._bounds.addQuad(this.vertexTrimmedData); + }; + Sprite2d.prototype.calculateVertices = function () { + var texture = this._texture; + if (this.proj._affine) { + this.vertexData2d = null; + _super.prototype.calculateVertices.call(this); + return; + } + if (!this.vertexData2d) { + this.vertexData2d = new Float32Array(12); + } + var wid = this.transform._worldID; + var tuid = texture._updateID; + if (this._transformID === wid && this._textureID === tuid) { + return; + } + if (this._textureID !== tuid) { + this.uvs = texture._uvs.uvsFloat32; + } + this._transformID = wid; + this._textureID = tuid; + var wt = this.proj.world.mat3; + var vertexData2d = this.vertexData2d; + var vertexData = this.vertexData; + var trim = texture.trim; + var orig = texture.orig; + var anchor = this._anchor; + var w0 = 0; + var w1 = 0; + var h0 = 0; + var h1 = 0; + if (trim) { + w1 = trim.x - (anchor._x * orig.width); + w0 = w1 + trim.width; + h1 = trim.y - (anchor._y * orig.height); + h0 = h1 + trim.height; + } + else { + w1 = -anchor._x * orig.width; + w0 = w1 + orig.width; + h1 = -anchor._y * orig.height; + h0 = h1 + orig.height; + } + vertexData2d[0] = (wt[0] * w1) + (wt[3] * h1) + wt[6]; + vertexData2d[1] = (wt[1] * w1) + (wt[4] * h1) + wt[7]; + vertexData2d[2] = (wt[2] * w1) + (wt[5] * h1) + wt[8]; + vertexData2d[3] = (wt[0] * w0) + (wt[3] * h1) + wt[6]; + vertexData2d[4] = (wt[1] * w0) + (wt[4] * h1) + wt[7]; + vertexData2d[5] = (wt[2] * w0) + (wt[5] * h1) + wt[8]; + vertexData2d[6] = (wt[0] * w0) + (wt[3] * h0) + wt[6]; + vertexData2d[7] = (wt[1] * w0) + (wt[4] * h0) + wt[7]; + vertexData2d[8] = (wt[2] * w0) + (wt[5] * h0) + wt[8]; + vertexData2d[9] = (wt[0] * w1) + (wt[3] * h0) + wt[6]; + vertexData2d[10] = (wt[1] * w1) + (wt[4] * h0) + wt[7]; + vertexData2d[11] = (wt[2] * w1) + (wt[5] * h0) + wt[8]; + vertexData[0] = vertexData2d[0] / vertexData2d[2]; + vertexData[1] = vertexData2d[1] / vertexData2d[2]; + vertexData[2] = vertexData2d[3] / vertexData2d[5]; + vertexData[3] = vertexData2d[4] / vertexData2d[5]; + vertexData[4] = vertexData2d[6] / vertexData2d[8]; + vertexData[5] = vertexData2d[7] / vertexData2d[8]; + vertexData[6] = vertexData2d[9] / vertexData2d[11]; + vertexData[7] = vertexData2d[10] / vertexData2d[11]; + }; + Sprite2d.prototype.calculateTrimmedVertices = function () { + if (this.proj._affine) { + _super.prototype.calculateTrimmedVertices.call(this); + return; + } + var wid = this.transform._worldID; + var tuid = this._texture._updateID; + if (!this.vertexTrimmedData) { + this.vertexTrimmedData = new Float32Array(8); + } + else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { + return; + } + this._transformTrimmedID = wid; + this._textureTrimmedID = tuid; + var texture = this._texture; + var vertexData = this.vertexTrimmedData; + var orig = texture.orig; + var anchor = this._anchor; + var wt = this.proj.world.mat3; + var w1 = -anchor._x * orig.width; + var w0 = w1 + orig.width; + var h1 = -anchor._y * orig.height; + var h0 = h1 + orig.height; + var z = 1.0 / (wt[2] * w1 + wt[5] * h1 + wt[8]); + vertexData[0] = z * ((wt[0] * w1) + (wt[3] * h1) + wt[6]); + vertexData[1] = z * ((wt[1] * w1) + (wt[4] * h1) + wt[7]); + z = 1.0 / (wt[2] * w0 + wt[5] * h1 + wt[8]); + vertexData[2] = z * ((wt[0] * w0) + (wt[3] * h1) + wt[6]); + vertexData[3] = z * ((wt[1] * w0) + (wt[4] * h1) + wt[7]); + z = 1.0 / (wt[2] * w0 + wt[5] * h0 + wt[8]); + vertexData[4] = z * ((wt[0] * w0) + (wt[3] * h0) + wt[6]); + vertexData[5] = z * ((wt[1] * w0) + (wt[4] * h0) + wt[7]); + z = 1.0 / (wt[2] * w1 + wt[5] * h0 + wt[8]); + vertexData[6] = z * ((wt[0] * w1) + (wt[3] * h0) + wt[6]); + vertexData[7] = z * ((wt[1] * w1) + (wt[4] * h0) + wt[7]); + }; + Sprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Object.defineProperty(Sprite2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + return Sprite2d; + }(PIXI.Sprite)); + pixi_projection.Sprite2d = Sprite2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Text2d = (function (_super) { + __extends(Text2d, _super); + function Text2d(text, style, canvas) { + var _this = _super.call(this, text, style, canvas) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection2d(_this.transform); + _this.pluginName = 'batch2d'; + return _this; + } + Object.defineProperty(Text2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + return Text2d; + }(PIXI.Text)); + pixi_projection.Text2d = Text2d; + Text2d.prototype.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices; + Text2d.prototype.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices; + Text2d.prototype._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + function convertTo2d() { + if (this.proj) + return; + this.proj = new pixi_projection.Projection2d(this.transform); + this.toLocal = pixi_projection.Container2d.prototype.toLocal; + Object.defineProperty(this, "worldTransform", { + get: pixi_projection.container2dWorldTransform, + enumerable: true, + configurable: true + }); + } + PIXI.Container.prototype.convertTo2d = convertTo2d; + PIXI.Sprite.prototype.convertTo2d = function () { + if (this.proj) + return; + this.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices; + this.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices; + this._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds; + this.pluginName = 'sprite2d'; + convertTo2d.call(this); + }; + PIXI.Container.prototype.convertSubtreeTo2d = function () { + this.convertTo2d(); + for (var i = 0; i < this.children.length; i++) { + this.children[i].convertSubtreeTo2d(); + } + }; + if (PIXI.SimpleMesh) { + PIXI.SimpleMesh.prototype.convertTo2d = + PIXI.SimpleRope.prototype.convertTo2d = + function () { + if (this.proj) + return; + this.calculateVertices = pixi_projection.Mesh2d.prototype.calculateVertices; + this._renderDefault = pixi_projection.Mesh2d.prototype._renderDefault; + if (this.material.pluginName !== 'batch2d') { + this.material = new PIXI.MeshMaterial(this.material.texture, { + program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), + pluginName: 'batch2d' + }); + } + convertTo2d.call(this); + }; + } +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var tempTransform = new PIXI.Transform(); + var TilingSprite2d = (function (_super) { + __extends(TilingSprite2d, _super); + function TilingSprite2d(texture, width, height) { + var _this = _super.call(this, texture, width, height) || this; + _this.tileProj = new pixi_projection.Projection2d(_this.tileTransform); + _this.tileProj.reverseLocalOrder = true; + _this.proj = new pixi_projection.Projection2d(_this.transform); + _this.pluginName = 'tilingSprite2d'; + _this.uvRespectAnchor = true; + return _this; + } + Object.defineProperty(TilingSprite2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + TilingSprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); + }; + TilingSprite2d.prototype._render = function (renderer) { + var texture = this._texture; + if (!texture || !texture.valid) { + return; + } + this.tileTransform.updateTransform(tempTransform); + this.uvMatrix.update(); + renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); + renderer.plugins[this.pluginName].render(this); + }; + return TilingSprite2d; + }(PIXI.TilingSprite)); + pixi_projection.TilingSprite2d = TilingSprite2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var shaderVert = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec3 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n\n vTextureCoord = uTransform * vec3(aTextureCoord, 1.0);\n}\n"; + var shaderFrag = "\nvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = mod(vTextureCoord.xy / vTextureCoord.z - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 sample = texture2D(uSampler, coord);\n gl_FragColor = sample * uColor;\n}\n"; + var shaderSimpleFrag = "\n\tvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 sample = texture2D(uSampler, vTextureCoord.xy / vTextureCoord.z);\n gl_FragColor = sample * uColor;\n}\n"; + var tempMat = new pixi_projection.Matrix2d(); + var WRAP_MODES = PIXI.WRAP_MODES; + var utils = PIXI.utils; + var TilingSprite2dRenderer = (function (_super) { + __extends(TilingSprite2dRenderer, _super); + function TilingSprite2dRenderer(renderer) { + var _this = _super.call(this, renderer) || this; + _this.quad = new PIXI.QuadUv(); + var uniforms = { globals: _this.renderer.globalUniforms }; + _this.shader = PIXI.Shader.from(shaderVert, shaderFrag, uniforms); + _this.simpleShader = PIXI.Shader.from(shaderVert, shaderSimpleFrag, uniforms); + return _this; + } + TilingSprite2dRenderer.prototype.render = function (ts) { + var renderer = this.renderer; + var quad = this.quad; + var vertices = quad.vertices; + vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x; + vertices[1] = vertices[3] = ts._height * -ts.anchor.y; + vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x); + vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y); + if (ts.uvRespectAnchor) { + vertices = quad.uvs; + vertices[0] = vertices[6] = -ts.anchor.x; + vertices[1] = vertices[3] = -ts.anchor.y; + vertices[2] = vertices[4] = 1.0 - ts.anchor.x; + vertices[5] = vertices[7] = 1.0 - ts.anchor.y; + } + quad.invalidate(); + var tex = ts._texture; + var baseTex = tex.baseTexture; + var lt = ts.tileProj.world; + var uv = ts.uvMatrix; + var isSimple = baseTex.isPowerOfTwo + && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height; + if (isSimple) { + if (!baseTex._glTextures[renderer.CONTEXT_UID]) { + if (baseTex.wrapMode === WRAP_MODES.CLAMP) { + baseTex.wrapMode = WRAP_MODES.REPEAT; + } + } + else { + isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP; + } + } + var shader = isSimple ? this.simpleShader : this.shader; + tempMat.identity(); + tempMat.scale(tex.width, tex.height); + tempMat.prepend(lt); + tempMat.scale(1.0 / ts._width, 1.0 / ts._height); + tempMat.invert(); + if (isSimple) { + tempMat.prepend(uv.mapCoord); + } + else { + shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); + shader.uniforms.uClampFrame = uv.uClampFrame; + shader.uniforms.uClampOffset = uv.uClampOffset; + } + shader.uniforms.uTransform = tempMat.toArray(true); + shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.premultiplyAlpha); + shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true); + shader.uniforms.uSampler = tex; + renderer.shader.bind(shader, false); + renderer.geometry.bind(quad, undefined); + renderer.state.setBlendMode(utils.correctBlendMode(ts.blendMode, baseTex.premultiplyAlpha)); + renderer.geometry.draw(PIXI.DRAW_MODES.TRIANGLES, 6, 0); + }; + return TilingSprite2dRenderer; + }(PIXI.ObjectRenderer)); + pixi_projection.TilingSprite2dRenderer = TilingSprite2dRenderer; + PIXI.Renderer.registerPlugin('tilingSprite2d', TilingSprite2dRenderer); +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + PIXI.systems.MaskSystem.prototype.pushSpriteMask = function (target, maskData) { + var alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex]; + if (!alphaMaskFilter) { + alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new pixi_projection.SpriteMaskFilter2d(maskData)]; + } + alphaMaskFilter[0].resolution = this.renderer.resolution; + alphaMaskFilter[0].maskSprite = maskData; + target.filterArea = maskData.getBounds(true); + this.renderer.filter.push(target, alphaMaskFilter); + this.alphaMaskIndex++; + }; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var spriteMaskVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n\tgl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n\tvTextureCoord = aTextureCoord;\n\tvMaskCoord = otherMatrix * vec3( aTextureCoord, 1.0);\n}\n"; + var spriteMaskFrag = "\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n vec2 uv = vMaskCoord.xy / vMaskCoord.z;\n \n float clip = step(3.5,\n step(maskClamp.x, uv.x) +\n step(maskClamp.y, uv.y) +\n step(uv.x, maskClamp.z) +\n step(uv.y, maskClamp.w));\n\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, uv);\n \n original *= (masky.r * masky.a * alpha * clip);\n\n gl_FragColor = original;\n}\n"; + var tempMat = new pixi_projection.Matrix2d(); + var SpriteMaskFilter2d = (function (_super) { + __extends(SpriteMaskFilter2d, _super); + function SpriteMaskFilter2d(sprite) { + var _this = _super.call(this, spriteMaskVert, spriteMaskFrag) || this; + _this.maskMatrix = new pixi_projection.Matrix2d(); + sprite.renderable = false; + _this.maskSprite = sprite; + return _this; + } + SpriteMaskFilter2d.prototype.apply = function (filterManager, input, output, clear) { + var maskSprite = this.maskSprite; + var tex = this.maskSprite.texture; + if (!tex.valid) { + return; + } + if (!tex.uvMatrix) { + tex.uvMatrix = new PIXI.TextureMatrix(tex, 0.0); + } + tex.uvMatrix.update(); + this.uniforms.mask = maskSprite.texture; + this.uniforms.otherMatrix = SpriteMaskFilter2d.calculateSpriteMatrix(input, this.maskMatrix, maskSprite) + .prepend(tex.uvMatrix.mapCoord); + this.uniforms.alpha = maskSprite.worldAlpha; + this.uniforms.maskClamp = tex.uvMatrix.uClampFrame; + filterManager.applyFilter(this, input, output, clear); + }; + SpriteMaskFilter2d.calculateSpriteMatrix = function (input, mappedMatrix, sprite) { + var proj = sprite.proj; + var filterArea = input.filterFrame; + var worldTransform = proj && !proj._affine ? proj.world.copyTo2dOr3d(tempMat) : tempMat.copyFrom(sprite.transform.worldTransform); + var texture = sprite.texture.orig; + mappedMatrix.set(input.width, 0, 0, input.height, filterArea.x, filterArea.y); + worldTransform.invert(); + mappedMatrix.setToMult(worldTransform, mappedMatrix); + mappedMatrix.scaleAndTranslate(1.0 / texture.width, 1.0 / texture.height, sprite.anchor.x, sprite.anchor.y); + return mappedMatrix; + }; + return SpriteMaskFilter2d; + }(PIXI.Filter)); + pixi_projection.SpriteMaskFilter2d = SpriteMaskFilter2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + function container3dWorldTransform() { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + } + pixi_projection.container3dWorldTransform = container3dWorldTransform; + var Container3d = (function (_super) { + __extends(Container3d, _super); + function Container3d() { + var _this = _super.call(this) || this; + _this.proj = new pixi_projection.Projection3d(_this.transform); + return _this; + } + Container3d.prototype.isFrontFace = function (forceUpdate) { + if (forceUpdate === void 0) { forceUpdate = false; } + if (forceUpdate) { + this._recursivePostUpdateTransform(); + this.displayObjectUpdateTransform(); + } + var mat = this.proj.world.mat4; + var dx1 = mat[0] * mat[15] - mat[3] * mat[12]; + var dy1 = mat[1] * mat[15] - mat[3] * mat[13]; + var dx2 = mat[4] * mat[15] - mat[7] * mat[12]; + var dy2 = mat[5] * mat[15] - mat[7] * mat[13]; + return dx1 * dy2 - dx2 * dy1 > 0; + }; + Container3d.prototype.getDepth = function (forceUpdate) { + if (forceUpdate === void 0) { forceUpdate = false; } + if (forceUpdate) { + this._recursivePostUpdateTransform(); + this.displayObjectUpdateTransform(); + } + var mat4 = this.proj.world.mat4; + return mat4[14] / mat4[15]; + }; + Container3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + if (from) { + position = from.toGlobal(position, point, skipUpdate); + } + if (!skipUpdate) { + this._recursivePostUpdateTransform(); + } + if (step === pixi_projection.TRANSFORM_STEP.ALL) { + if (!skipUpdate) { + this.displayObjectUpdateTransform(); + } + if (this.proj.affine) { + return this.transform.worldTransform.applyInverse(position, point); + } + return this.proj.world.applyInverse(position, point); + } + if (this.parent) { + point = this.parent.worldTransform.applyInverse(position, point); + } + else { + point.copyFrom(position); + } + if (step === pixi_projection.TRANSFORM_STEP.NONE) { + return point; + } + point = this.transform.localTransform.applyInverse(point, point); + if (step === pixi_projection.TRANSFORM_STEP.PROJ && this.proj.cameraMode) { + point = this.proj.cameraMatrix.applyInverse(point, point); + } + return point; + }; + Object.defineProperty(Container3d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Container3d.prototype, "position3d", { + get: function () { + return this.proj.position; + }, + set: function (value) { + this.proj.position.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Container3d.prototype, "scale3d", { + get: function () { + return this.proj.scale; + }, + set: function (value) { + this.proj.scale.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Container3d.prototype, "euler", { + get: function () { + return this.proj.euler; + }, + set: function (value) { + this.proj.euler.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Container3d.prototype, "pivot3d", { + get: function () { + return this.proj.pivot; + }, + set: function (value) { + this.proj.pivot.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + return Container3d; + }(PIXI.Container)); + pixi_projection.Container3d = Container3d; + pixi_projection.container3dToLocal = Container3d.prototype.toLocal; + pixi_projection.container3dGetDepth = Container3d.prototype.getDepth; + pixi_projection.container3dIsFrontFace = Container3d.prototype.isFrontFace; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Camera3d = (function (_super) { + __extends(Camera3d, _super); + function Camera3d() { + var _this = _super.call(this) || this; + _this._far = 0; + _this._near = 0; + _this._focus = 0; + _this._orthographic = false; + _this.proj.cameraMode = true; + _this.setPlanes(400, 10, 10000, false); + return _this; + } + Object.defineProperty(Camera3d.prototype, "far", { + get: function () { + return this._far; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Camera3d.prototype, "near", { + get: function () { + return this._near; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Camera3d.prototype, "focus", { + get: function () { + return this._focus; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Camera3d.prototype, "ortographic", { + get: function () { + return this._orthographic; + }, + enumerable: true, + configurable: true + }); + Camera3d.prototype.setPlanes = function (focus, near, far, orthographic) { + if (near === void 0) { near = 10; } + if (far === void 0) { far = 10000; } + if (orthographic === void 0) { orthographic = false; } + this._focus = focus; + this._near = near; + this._far = far; + this._orthographic = orthographic; + var proj = this.proj; + var mat4 = proj.cameraMatrix.mat4; + proj._projID++; + mat4[10] = 1.0 / (far - near); + mat4[14] = (focus - near) / (far - near); + if (this._orthographic) { + mat4[11] = 0; + } + else { + mat4[11] = 1.0 / focus; + } + }; + return Camera3d; + }(pixi_projection.Container3d)); + pixi_projection.Camera3d = Camera3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Euler = (function () { + function Euler(x, y, z) { + this._quatUpdateId = -1; + this._quatDirtyId = 0; + this._sign = 1; + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this.quaternion = new Float64Array(4); + this.quaternion[3] = 1; + this.update(); + } + Object.defineProperty(Euler.prototype, "x", { + get: function () { + return this._x; + }, + set: function (value) { + if (this._x !== value) { + this._x = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "y", { + get: function () { + return this._y; + }, + set: function (value) { + if (this._y !== value) { + this._y = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "z", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "pitch", { + get: function () { + return this._x; + }, + set: function (value) { + if (this._x !== value) { + this._x = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "yaw", { + get: function () { + return this._y; + }, + set: function (value) { + if (this._y !== value) { + this._y = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "roll", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Euler.prototype.set = function (x, y, z) { + var _x = x || 0; + var _y = y || 0; + var _z = z || 0; + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this._quatDirtyId++; + } + }; + ; + Euler.prototype.copyFrom = function (euler) { + var _x = euler.x; + var _y = euler.y; + var _z = euler.z; + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this._quatDirtyId++; + } + }; + Euler.prototype.copyTo = function (p) { + p.set(this._x, this._y, this._z); + return p; + }; + Euler.prototype.equals = function (euler) { + return this._x === euler.x + && this._y === euler.y + && this._z === euler.z; + }; + Euler.prototype.clone = function () { + return new Euler(this._x, this._y, this._z); + }; + Euler.prototype.update = function () { + if (this._quatUpdateId === this._quatDirtyId) { + return false; + } + this._quatUpdateId = this._quatDirtyId; + var c1 = Math.cos(this._x / 2); + var c2 = Math.cos(this._y / 2); + var c3 = Math.cos(this._z / 2); + var s = this._sign; + var s1 = s * Math.sin(this._x / 2); + var s2 = s * Math.sin(this._y / 2); + var s3 = s * Math.sin(this._z / 2); + var q = this.quaternion; + q[0] = s1 * c2 * c3 + c1 * s2 * s3; + q[1] = c1 * s2 * c3 - s1 * c2 * s3; + q[2] = c1 * c2 * s3 + s1 * s2 * c3; + q[3] = c1 * c2 * c3 - s1 * s2 * s3; + return true; + }; + return Euler; + }()); + pixi_projection.Euler = Euler; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var mat4id = [1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1]; + var Matrix3d = (function () { + function Matrix3d(backingArray) { + this.floatArray = null; + this._dirtyId = 0; + this._updateId = -1; + this._mat4inv = null; + this.cacheInverse = false; + this.mat4 = new Float64Array(backingArray || mat4id); + } + Object.defineProperty(Matrix3d.prototype, "a", { + get: function () { + return this.mat4[0] / this.mat4[15]; + }, + set: function (value) { + this.mat4[0] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "b", { + get: function () { + return this.mat4[1] / this.mat4[15]; + }, + set: function (value) { + this.mat4[1] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "c", { + get: function () { + return this.mat4[4] / this.mat4[15]; + }, + set: function (value) { + this.mat4[4] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "d", { + get: function () { + return this.mat4[5] / this.mat4[15]; + }, + set: function (value) { + this.mat4[5] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "tx", { + get: function () { + return this.mat4[12] / this.mat4[15]; + }, + set: function (value) { + this.mat4[12] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "ty", { + get: function () { + return this.mat4[13] / this.mat4[15]; + }, + set: function (value) { + this.mat4[13] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Matrix3d.prototype.set = function (a, b, c, d, tx, ty) { + var mat4 = this.mat4; + mat4[0] = a; + mat4[1] = b; + mat4[2] = 0; + mat4[3] = 0; + mat4[4] = c; + mat4[5] = d; + mat4[6] = 0; + mat4[7] = 0; + mat4[8] = 0; + mat4[9] = 0; + mat4[10] = 1; + mat4[11] = 0; + mat4[12] = tx; + mat4[13] = ty; + mat4[14] = 0; + mat4[15] = 1; + return this; + }; + Matrix3d.prototype.toArray = function (transpose, out) { + if (!this.floatArray) { + this.floatArray = new Float32Array(9); + } + var array = out || this.floatArray; + var mat3 = this.mat4; + if (transpose) { + array[0] = mat3[0]; + array[1] = mat3[1]; + array[2] = mat3[3]; + array[3] = mat3[4]; + array[4] = mat3[5]; + array[5] = mat3[7]; + array[6] = mat3[12]; + array[7] = mat3[13]; + array[8] = mat3[15]; + } + else { + array[0] = mat3[0]; + array[1] = mat3[4]; + array[2] = mat3[12]; + array[3] = mat3[2]; + array[4] = mat3[6]; + array[5] = mat3[13]; + array[6] = mat3[3]; + array[7] = mat3[7]; + array[8] = mat3[15]; + } + return array; + }; + Matrix3d.prototype.setToTranslation = function (tx, ty, tz) { + var mat4 = this.mat4; + mat4[0] = 1; + mat4[1] = 0; + mat4[2] = 0; + mat4[3] = 0; + mat4[4] = 0; + mat4[5] = 1; + mat4[6] = 0; + mat4[7] = 0; + mat4[8] = 0; + mat4[9] = 0; + mat4[10] = 1; + mat4[11] = 0; + mat4[12] = tx; + mat4[13] = ty; + mat4[14] = tz; + mat4[15] = 1; + }; + Matrix3d.prototype.setToRotationTranslationScale = function (quat, tx, ty, tz, sx, sy, sz) { + var out = this.mat4; + var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = (1 - (yy + zz)) * sx; + out[1] = (xy + wz) * sx; + out[2] = (xz - wy) * sx; + out[3] = 0; + out[4] = (xy - wz) * sy; + out[5] = (1 - (xx + zz)) * sy; + out[6] = (yz + wx) * sy; + out[7] = 0; + out[8] = (xz + wy) * sz; + out[9] = (yz - wx) * sz; + out[10] = (1 - (xx + yy)) * sz; + out[11] = 0; + out[12] = tx; + out[13] = ty; + out[14] = tz; + out[15] = 1; + return out; + }; + Matrix3d.prototype.apply = function (pos, newPos) { + newPos = newPos || new pixi_projection.Point3d(); + var mat4 = this.mat4; + var x = pos.x; + var y = pos.y; + var z = pos.z || 0; + var w = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); + newPos.x = w * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); + newPos.y = w * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); + newPos.z = w * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); + return newPos; + }; + Matrix3d.prototype.translate = function (tx, ty, tz) { + var a = this.mat4; + a[12] = a[0] * tx + a[4] * ty + a[8] * tz + a[12]; + a[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13]; + a[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14]; + a[15] = a[3] * tx + a[7] * ty + a[11] * tz + a[15]; + return this; + }; + Matrix3d.prototype.scale = function (x, y, z) { + var mat4 = this.mat4; + mat4[0] *= x; + mat4[1] *= x; + mat4[2] *= x; + mat4[3] *= x; + mat4[4] *= y; + mat4[5] *= y; + mat4[6] *= y; + mat4[7] *= y; + if (z !== undefined) { + mat4[8] *= z; + mat4[9] *= z; + mat4[10] *= z; + mat4[11] *= z; + } + return this; + }; + Matrix3d.prototype.scaleAndTranslate = function (scaleX, scaleY, scaleZ, tx, ty, tz) { + var mat4 = this.mat4; + mat4[0] = scaleX * mat4[0] + tx * mat4[3]; + mat4[1] = scaleY * mat4[1] + ty * mat4[3]; + mat4[2] = scaleZ * mat4[2] + tz * mat4[3]; + mat4[4] = scaleX * mat4[4] + tx * mat4[7]; + mat4[5] = scaleY * mat4[5] + ty * mat4[7]; + mat4[6] = scaleZ * mat4[6] + tz * mat4[7]; + mat4[8] = scaleX * mat4[8] + tx * mat4[11]; + mat4[9] = scaleY * mat4[9] + ty * mat4[11]; + mat4[10] = scaleZ * mat4[10] + tz * mat4[11]; + mat4[12] = scaleX * mat4[12] + tx * mat4[15]; + mat4[13] = scaleY * mat4[13] + ty * mat4[15]; + mat4[14] = scaleZ * mat4[14] + tz * mat4[15]; + }; + Matrix3d.prototype.applyInverse = function (pos, newPos) { + newPos = newPos || new pixi_projection.Point3d(); + if (!this._mat4inv) { + this._mat4inv = new Float64Array(16); + } + var mat4 = this._mat4inv; + var a = this.mat4; + var x = pos.x; + var y = pos.y; + var z = pos.z || 0; + if (!this.cacheInverse || this._updateId !== this._dirtyId) { + this._updateId = this._dirtyId; + Matrix3d.glMatrixMat4Invert(mat4, a); + } + var w1 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); + var x1 = w1 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); + var y1 = w1 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); + var z1 = w1 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); + z += 1.0; + var w2 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); + var x2 = w2 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); + var y2 = w2 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); + var z2 = w2 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); + if (Math.abs(z1 - z2) < 1e-10) { + newPos.set(NaN, NaN, 0); + } + var alpha = (0 - z1) / (z2 - z1); + newPos.set((x2 - x1) * alpha + x1, (y2 - y1) * alpha + y1, 0.0); + return newPos; + }; + Matrix3d.prototype.invert = function () { + Matrix3d.glMatrixMat4Invert(this.mat4, this.mat4); + return this; + }; + Matrix3d.prototype.invertCopyTo = function (matrix) { + if (!this._mat4inv) { + this._mat4inv = new Float64Array(16); + } + var mat4 = this._mat4inv; + var a = this.mat4; + if (!this.cacheInverse || this._updateId !== this._dirtyId) { + this._updateId = this._dirtyId; + Matrix3d.glMatrixMat4Invert(mat4, a); + } + matrix.mat4.set(mat4); + }; + Matrix3d.prototype.identity = function () { + var mat3 = this.mat4; + mat3[0] = 1; + mat3[1] = 0; + mat3[2] = 0; + mat3[3] = 0; + mat3[4] = 0; + mat3[5] = 1; + mat3[6] = 0; + mat3[7] = 0; + mat3[8] = 0; + mat3[9] = 0; + mat3[10] = 1; + mat3[11] = 0; + mat3[12] = 0; + mat3[13] = 0; + mat3[14] = 0; + mat3[15] = 1; + return this; + }; + Matrix3d.prototype.clone = function () { + return new Matrix3d(this.mat4); + }; + Matrix3d.prototype.copyTo3d = function (matrix) { + var mat3 = this.mat4; + var ar2 = matrix.mat4; + ar2[0] = mat3[0]; + ar2[1] = mat3[1]; + ar2[2] = mat3[2]; + ar2[3] = mat3[3]; + ar2[4] = mat3[4]; + ar2[5] = mat3[5]; + ar2[6] = mat3[6]; + ar2[7] = mat3[7]; + ar2[8] = mat3[8]; + return matrix; + }; + Matrix3d.prototype.copyTo2d = function (matrix) { + var mat3 = this.mat4; + var ar2 = matrix.mat3; + ar2[0] = mat3[0]; + ar2[1] = mat3[1]; + ar2[2] = mat3[3]; + ar2[3] = mat3[4]; + ar2[4] = mat3[5]; + ar2[5] = mat3[7]; + ar2[6] = mat3[12]; + ar2[7] = mat3[13]; + ar2[8] = mat3[15]; + return matrix; + }; + Matrix3d.prototype.copyTo2dOr3d = function (matrix) { + if (matrix instanceof pixi_projection.Matrix2d) { + return this.copyTo2d(matrix); + } + else { + return this.copyTo3d(matrix); + } + }; + Matrix3d.prototype.copyTo = function (matrix, affine, preserveOrientation) { + var mat3 = this.mat4; + var d = 1.0 / mat3[15]; + var tx = mat3[12] * d, ty = mat3[13] * d; + matrix.a = (mat3[0] - mat3[3] * tx) * d; + matrix.b = (mat3[1] - mat3[3] * ty) * d; + matrix.c = (mat3[4] - mat3[7] * tx) * d; + matrix.d = (mat3[5] - mat3[7] * ty) * d; + matrix.tx = tx; + matrix.ty = ty; + if (affine >= 2) { + var D = matrix.a * matrix.d - matrix.b * matrix.c; + if (!preserveOrientation) { + D = Math.abs(D); + } + if (affine === pixi_projection.AFFINE.POINT) { + if (D > 0) { + D = 1; + } + else + D = -1; + matrix.a = D; + matrix.b = 0; + matrix.c = 0; + matrix.d = D; + } + else if (affine === pixi_projection.AFFINE.AXIS_X) { + D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d); + matrix.c = 0; + matrix.d = D; + } + else if (affine === pixi_projection.AFFINE.AXIS_Y) { + D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c); + matrix.a = D; + matrix.c = 0; + } + } + return matrix; + }; + Matrix3d.prototype.copyFrom = function (matrix) { + var mat3 = this.mat4; + mat3[0] = matrix.a; + mat3[1] = matrix.b; + mat3[2] = 0; + mat3[3] = 0; + mat3[4] = matrix.c; + mat3[5] = matrix.d; + mat3[6] = 0; + mat3[7] = 0; + mat3[8] = 0; + mat3[9] = 0; + mat3[10] = 1; + mat3[11] = 0; + mat3[12] = matrix.tx; + mat3[13] = matrix.ty; + mat3[14] = 0; + mat3[15] = 1; + this._dirtyId++; + return this; + }; + Matrix3d.prototype.setToMultLegacy = function (pt, lt) { + var out = this.mat4; + var b = lt.mat4; + var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a30 = pt.tx, a31 = pt.ty; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + out[0] = b0 * a00 + b1 * a10 + b3 * a30; + out[1] = b0 * a01 + b1 * a11 + b3 * a31; + out[2] = b2; + out[3] = b3; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + b3 = b[7]; + out[4] = b0 * a00 + b1 * a10 + b3 * a30; + out[5] = b0 * a01 + b1 * a11 + b3 * a31; + out[6] = b2; + out[7] = b3; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + b3 = b[11]; + out[8] = b0 * a00 + b1 * a10 + b3 * a30; + out[9] = b0 * a01 + b1 * a11 + b3 * a31; + out[10] = b2; + out[11] = b3; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + b3 = b[15]; + out[12] = b0 * a00 + b1 * a10 + b3 * a30; + out[13] = b0 * a01 + b1 * a11 + b3 * a31; + out[14] = b2; + out[15] = b3; + this._dirtyId++; + return this; + }; + Matrix3d.prototype.setToMultLegacy2 = function (pt, lt) { + var out = this.mat4; + var a = pt.mat4; + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b30 = lt.tx, b31 = lt.ty; + out[0] = b00 * a00 + b01 * a10; + out[1] = b00 * a01 + b01 * a11; + out[2] = b00 * a02 + b01 * a12; + out[3] = b00 * a03 + b01 * a13; + out[4] = b10 * a00 + b11 * a10; + out[5] = b10 * a01 + b11 * a11; + out[6] = b10 * a02 + b11 * a12; + out[7] = b10 * a03 + b11 * a13; + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = b30 * a00 + b31 * a10 + a[12]; + out[13] = b30 * a01 + b31 * a11 + a[13]; + out[14] = b30 * a02 + b31 * a12 + a[14]; + out[15] = b30 * a03 + b31 * a13 + a[15]; + this._dirtyId++; + return this; + }; + Matrix3d.prototype.setToMult = function (pt, lt) { + Matrix3d.glMatrixMat4Multiply(this.mat4, pt.mat4, lt.mat4); + this._dirtyId++; + return this; + }; + Matrix3d.prototype.prepend = function (lt) { + if (lt.mat4) { + this.setToMult(lt, this); + } + else { + this.setToMultLegacy(lt, this); + } + }; + Matrix3d.glMatrixMat4Invert = function (out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var 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; + }; + Matrix3d.glMatrixMat4Multiply = function (out, a, b) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + 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; + }; + Matrix3d.IDENTITY = new Matrix3d(); + Matrix3d.TEMP_MATRIX = new Matrix3d(); + return Matrix3d; + }()); + pixi_projection.Matrix3d = Matrix3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var ObservableEuler = (function () { + function ObservableEuler(cb, scope, x, y, z) { + this.cb = cb; + this.scope = scope; + this._quatUpdateId = -1; + this._quatDirtyId = 0; + this._sign = 1; + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this.quaternion = new Float64Array(4); + this.quaternion[3] = 1; + this.update(); + } + Object.defineProperty(ObservableEuler.prototype, "x", { + get: function () { + return this._x; + }, + set: function (value) { + if (this._x !== value) { + this._x = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "y", { + get: function () { + return this._y; + }, + set: function (value) { + if (this._y !== value) { + this._y = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "z", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "pitch", { + get: function () { + return this._x; + }, + set: function (value) { + if (this._x !== value) { + this._x = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "yaw", { + get: function () { + return this._y; + }, + set: function (value) { + if (this._y !== value) { + this._y = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "roll", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + ObservableEuler.prototype.set = function (x, y, z) { + var _x = x || 0; + var _y = y || 0; + var _z = z || 0; + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }; + ; + ObservableEuler.prototype.copyFrom = function (euler) { + var _x = euler.x; + var _y = euler.y; + var _z = euler.z; + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }; + ObservableEuler.prototype.copyTo = function (p) { + p.set(this._x, this._y, this._z); + return p; + }; + ObservableEuler.prototype.equals = function (euler) { + return this._x === euler.x + && this._y === euler.y + && this._z === euler.z; + }; + ObservableEuler.prototype.clone = function () { + return new pixi_projection.Euler(this._x, this._y, this._z); + }; + ObservableEuler.prototype.update = function () { + if (this._quatUpdateId === this._quatDirtyId) { + return false; + } + this._quatUpdateId = this._quatDirtyId; + var c1 = Math.cos(this._x / 2); + var c2 = Math.cos(this._y / 2); + var c3 = Math.cos(this._z / 2); + var s = this._sign; + var s1 = s * Math.sin(this._x / 2); + var s2 = s * Math.sin(this._y / 2); + var s3 = s * Math.sin(this._z / 2); + var q = this.quaternion; + q[0] = s1 * c2 * c3 + c1 * s2 * s3; + q[1] = c1 * s2 * c3 - s1 * c2 * s3; + q[2] = c1 * c2 * s3 + s1 * s2 * c3; + q[3] = c1 * c2 * c3 - s1 * s2 * s3; + return true; + }; + return ObservableEuler; + }()); + pixi_projection.ObservableEuler = ObservableEuler; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + PIXI.ObservablePoint.prototype.copy = function (point) { + }; + var Point3d = (function (_super) { + __extends(Point3d, _super); + function Point3d(x, y, z) { + var _this = _super.call(this, x, y) || this; + _this.z = z; + return _this; + } + Point3d.prototype.set = function (x, y, z) { + this.x = x || 0; + this.y = (y === undefined) ? this.x : (y || 0); + this.z = (y === undefined) ? this.x : (z || 0); + }; + Point3d.prototype.copyFrom = function (p) { + this.set(p.x, p.y, p.z || 0); + return this; + }; + Point3d.prototype.copyTo = function (p) { + p.set(this.x, this.y, this.z); + return p; + }; + return Point3d; + }(PIXI.Point)); + pixi_projection.Point3d = Point3d; + var ObservablePoint3d = (function (_super) { + __extends(ObservablePoint3d, _super); + function ObservablePoint3d() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._z = 0; + return _this; + } + Object.defineProperty(ObservablePoint3d.prototype, "z", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + ObservablePoint3d.prototype.set = function (x, y, z) { + var _x = x || 0; + var _y = (y === undefined) ? _x : (y || 0); + var _z = (y === undefined) ? _x : (z || 0); + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this.cb.call(this.scope); + } + }; + ObservablePoint3d.prototype.copyFrom = function (p) { + this.set(p.x, p.y, p.z || 0); + return this; + }; + ObservablePoint3d.prototype.copyTo = function (p) { + p.set(this._x, this._y, this._z); + return p; + }; + return ObservablePoint3d; + }(PIXI.ObservablePoint)); + pixi_projection.ObservablePoint3d = ObservablePoint3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var tempMat = new pixi_projection.Matrix3d(); + var Projection3d = (function (_super) { + __extends(Projection3d, _super); + function Projection3d(legacy, enable) { + var _this = _super.call(this, legacy, enable) || this; + _this.cameraMatrix = null; + _this._cameraMode = false; + _this.position = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 0, 0); + _this.scale = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 1, 1); + _this.euler = new pixi_projection.ObservableEuler(_this.onChange, _this, 0, 0, 0); + _this.pivot = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 0, 0); + _this.local = new pixi_projection.Matrix3d(); + _this.world = new pixi_projection.Matrix3d(); + _this.local.cacheInverse = true; + _this.world.cacheInverse = true; + _this.position._z = 0; + _this.scale._z = 1; + _this.pivot._z = 0; + return _this; + } + Object.defineProperty(Projection3d.prototype, "cameraMode", { + get: function () { + return this._cameraMode; + }, + set: function (value) { + if (this._cameraMode === value) { + return; + } + this._cameraMode = value; + this.euler._sign = this._cameraMode ? -1 : 1; + this.euler._quatDirtyId++; + if (value) { + this.cameraMatrix = new pixi_projection.Matrix3d(); + } + }, + enumerable: true, + configurable: true + }); + Projection3d.prototype.onChange = function () { + this._projID++; + }; + Projection3d.prototype.clear = function () { + if (this.cameraMatrix) { + this.cameraMatrix.identity(); + } + this.position.set(0, 0, 0); + this.scale.set(1, 1, 1); + this.euler.set(0, 0, 0); + this.pivot.set(0, 0, 0); + _super.prototype.clear.call(this); + }; + Projection3d.prototype.updateLocalTransform = function (lt) { + if (this._projID === 0) { + this.local.copyFrom(lt); + return; + } + var matrix = this.local; + var euler = this.euler; + var pos = this.position; + var scale = this.scale; + var pivot = this.pivot; + euler.update(); + if (!this.cameraMode) { + matrix.setToRotationTranslationScale(euler.quaternion, pos._x, pos._y, pos._z, scale._x, scale._y, scale._z); + matrix.translate(-pivot._x, -pivot._y, -pivot._z); + matrix.setToMultLegacy(lt, matrix); + return; + } + matrix.setToMultLegacy(lt, this.cameraMatrix); + matrix.translate(pivot._x, pivot._y, pivot._z); + matrix.scale(1.0 / scale._x, 1.0 / scale._y, 1.0 / scale._z); + tempMat.setToRotationTranslationScale(euler.quaternion, 0, 0, 0, 1, 1, 1); + matrix.setToMult(matrix, tempMat); + matrix.translate(-pos._x, -pos._y, -pos._z); + this.local._dirtyId++; + }; + return Projection3d; + }(pixi_projection.LinearProjection)); + pixi_projection.Projection3d = Projection3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Mesh3d2d = (function (_super) { + __extends(Mesh3d2d, _super); + function Mesh3d2d(geometry, shader, state, drawMode) { + var _this = _super.call(this, geometry, shader, state, drawMode) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection3d(_this.transform); + return _this; + } + Mesh3d2d.prototype.calculateVertices = function () { + if (this.proj._affine) { + this.vertexData2d = null; + _super.prototype.calculateVertices.call(this); + return; + } + var geometry = this.geometry; + var vertices = geometry.buffers[0].data; + var thisAny = this; + if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID) { + return; + } + thisAny._transformID = thisAny.transform._worldID; + if (thisAny.vertexData.length !== vertices.length) { + thisAny.vertexData = new Float32Array(vertices.length); + } + if (this.vertexData2d.length !== vertices.length * 3 / 2) { + this.vertexData2d = new Float32Array(vertices.length * 3); + } + var wt = this.proj.world.mat4; + var vertexData2d = this.vertexData2d; + var vertexData = thisAny.vertexData; + for (var i = 0; i < vertexData.length / 2; i++) { + var x = vertices[(i * 2)]; + var y = vertices[(i * 2) + 1]; + var xx = (wt[0] * x) + (wt[4] * y) + wt[12]; + var yy = (wt[1] * x) + (wt[5] * y) + wt[13]; + var ww = (wt[3] * x) + (wt[7] * y) + wt[15]; + vertexData2d[i * 3] = xx; + vertexData2d[i * 3 + 1] = yy; + vertexData2d[i * 3 + 2] = ww; + vertexData[(i * 2)] = xx / ww; + vertexData[(i * 2) + 1] = yy / ww; + } + thisAny.vertexDirty = geometry.vertexDirtyId; + }; + Object.defineProperty(Mesh3d2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Mesh3d2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Mesh3d2d.prototype.isFrontFace = function (forceUpdate) { + return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); + }; + Mesh3d2d.prototype.getDepth = function (forceUpdate) { + return pixi_projection.container3dGetDepth.call(this, forceUpdate); + }; + Object.defineProperty(Mesh3d2d.prototype, "position3d", { + get: function () { + return this.proj.position; + }, + set: function (value) { + this.proj.position.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Mesh3d2d.prototype, "scale3d", { + get: function () { + return this.proj.scale; + }, + set: function (value) { + this.proj.scale.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Mesh3d2d.prototype, "euler", { + get: function () { + return this.proj.euler; + }, + set: function (value) { + this.proj.euler.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Mesh3d2d.prototype, "pivot3d", { + get: function () { + return this.proj.pivot; + }, + set: function (value) { + this.proj.pivot.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + return Mesh3d2d; + }(PIXI.Mesh)); + pixi_projection.Mesh3d2d = Mesh3d2d; + Mesh3d2d.prototype._renderDefault = pixi_projection.Mesh2d.prototype._renderDefault; + var SimpleMesh3d2d = (function (_super) { + __extends(SimpleMesh3d2d, _super); + function SimpleMesh3d2d(texture, vertices, uvs, indices, drawMode) { + var _this = _super.call(this, new PIXI.MeshGeometry(vertices, uvs, indices), new PIXI.MeshMaterial(texture, { + program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), + pluginName: 'batch2d' + }), null, drawMode) || this; + _this.autoUpdate = true; + _this.geometry.getBuffer('aVertexPosition').static = false; + return _this; + } + Object.defineProperty(SimpleMesh3d2d.prototype, "vertices", { + get: function () { + return this.geometry.getBuffer('aVertexPosition').data; + }, + set: function (value) { + this.geometry.getBuffer('aVertexPosition').data = value; + }, + enumerable: true, + configurable: true + }); + SimpleMesh3d2d.prototype._render = function (renderer) { + if (this.autoUpdate) { + this.geometry.getBuffer('aVertexPosition').update(); + } + _super.prototype._render.call(this, renderer); + }; + return SimpleMesh3d2d; + }(Mesh3d2d)); + pixi_projection.SimpleMesh3d2d = SimpleMesh3d2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Sprite3d = (function (_super) { + __extends(Sprite3d, _super); + function Sprite3d(texture) { + var _this = _super.call(this, texture) || this; + _this.vertexData2d = null; + _this.culledByFrustrum = false; + _this.trimmedCulledByFrustrum = false; + _this.proj = new pixi_projection.Projection3d(_this.transform); + _this.pluginName = 'batch2d'; + return _this; + } + Sprite3d.prototype.calculateVertices = function () { + var texture = this._texture; + if (this.proj._affine) { + this.vertexData2d = null; + _super.prototype.calculateVertices.call(this); + return; + } + if (!this.vertexData2d) { + this.vertexData2d = new Float32Array(12); + } + var wid = this.transform._worldID; + var tuid = texture._updateID; + if (this._transformID === wid && this._textureID === tuid) { + return; + } + if (this._textureID !== tuid) { + this.uvs = texture._uvs.uvsFloat32; + } + this._transformID = wid; + this._textureID = tuid; + var wt = this.proj.world.mat4; + var vertexData2d = this.vertexData2d; + var vertexData = this.vertexData; + var trim = texture.trim; + var orig = texture.orig; + var anchor = this._anchor; + var w0 = 0; + var w1 = 0; + var h0 = 0; + var h1 = 0; + if (trim) { + w1 = trim.x - (anchor._x * orig.width); + w0 = w1 + trim.width; + h1 = trim.y - (anchor._y * orig.height); + h0 = h1 + trim.height; + } + else { + w1 = -anchor._x * orig.width; + w0 = w1 + orig.width; + h1 = -anchor._y * orig.height; + h0 = h1 + orig.height; + } + var culled = false; + var z; + vertexData2d[0] = (wt[0] * w1) + (wt[4] * h1) + wt[12]; + vertexData2d[1] = (wt[1] * w1) + (wt[5] * h1) + wt[13]; + z = (wt[2] * w1) + (wt[6] * h1) + wt[14]; + vertexData2d[2] = (wt[3] * w1) + (wt[7] * h1) + wt[15]; + culled = culled || z < 0; + vertexData2d[3] = (wt[0] * w0) + (wt[4] * h1) + wt[12]; + vertexData2d[4] = (wt[1] * w0) + (wt[5] * h1) + wt[13]; + z = (wt[2] * w0) + (wt[6] * h1) + wt[14]; + vertexData2d[5] = (wt[3] * w0) + (wt[7] * h1) + wt[15]; + culled = culled || z < 0; + vertexData2d[6] = (wt[0] * w0) + (wt[4] * h0) + wt[12]; + vertexData2d[7] = (wt[1] * w0) + (wt[5] * h0) + wt[13]; + z = (wt[2] * w0) + (wt[6] * h0) + wt[14]; + vertexData2d[8] = (wt[3] * w0) + (wt[7] * h0) + wt[15]; + culled = culled || z < 0; + vertexData2d[9] = (wt[0] * w1) + (wt[4] * h0) + wt[12]; + vertexData2d[10] = (wt[1] * w1) + (wt[5] * h0) + wt[13]; + z = (wt[2] * w1) + (wt[6] * h0) + wt[14]; + vertexData2d[11] = (wt[3] * w1) + (wt[7] * h0) + wt[15]; + culled = culled || z < 0; + this.culledByFrustrum = culled; + vertexData[0] = vertexData2d[0] / vertexData2d[2]; + vertexData[1] = vertexData2d[1] / vertexData2d[2]; + vertexData[2] = vertexData2d[3] / vertexData2d[5]; + vertexData[3] = vertexData2d[4] / vertexData2d[5]; + vertexData[4] = vertexData2d[6] / vertexData2d[8]; + vertexData[5] = vertexData2d[7] / vertexData2d[8]; + vertexData[6] = vertexData2d[9] / vertexData2d[11]; + vertexData[7] = vertexData2d[10] / vertexData2d[11]; + }; + Sprite3d.prototype.calculateTrimmedVertices = function () { + if (this.proj._affine) { + _super.prototype.calculateTrimmedVertices.call(this); + return; + } + var wid = this.transform._worldID; + var tuid = this._texture._updateID; + if (!this.vertexTrimmedData) { + this.vertexTrimmedData = new Float32Array(8); + } + else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { + return; + } + this._transformTrimmedID = wid; + this._textureTrimmedID = tuid; + var texture = this._texture; + var vertexData = this.vertexTrimmedData; + var orig = texture.orig; + var anchor = this._anchor; + var wt = this.proj.world.mat4; + var w1 = -anchor._x * orig.width; + var w0 = w1 + orig.width; + var h1 = -anchor._y * orig.height; + var h0 = h1 + orig.height; + var culled = false; + var z; + var w = 1.0 / ((wt[3] * w1) + (wt[7] * h1) + wt[15]); + vertexData[0] = w * ((wt[0] * w1) + (wt[4] * h1) + wt[12]); + vertexData[1] = w * ((wt[1] * w1) + (wt[5] * h1) + wt[13]); + z = (wt[2] * w1) + (wt[6] * h1) + wt[14]; + culled = culled || z < 0; + w = 1.0 / ((wt[3] * w0) + (wt[7] * h1) + wt[15]); + vertexData[2] = w * ((wt[0] * w0) + (wt[4] * h1) + wt[12]); + vertexData[3] = w * ((wt[1] * w0) + (wt[5] * h1) + wt[13]); + z = (wt[2] * w0) + (wt[6] * h1) + wt[14]; + culled = culled || z < 0; + w = 1.0 / ((wt[3] * w0) + (wt[7] * h0) + wt[15]); + vertexData[4] = w * ((wt[0] * w0) + (wt[4] * h0) + wt[12]); + vertexData[5] = w * ((wt[1] * w0) + (wt[5] * h0) + wt[13]); + z = (wt[2] * w0) + (wt[6] * h0) + wt[14]; + culled = culled || z < 0; + w = 1.0 / ((wt[3] * w1) + (wt[7] * h0) + wt[15]); + vertexData[6] = w * ((wt[0] * w1) + (wt[4] * h0) + wt[12]); + vertexData[7] = w * ((wt[1] * w1) + (wt[5] * h0) + wt[13]); + z = (wt[2] * w1) + (wt[6] * h0) + wt[14]; + culled = culled || z < 0; + this.culledByFrustrum = culled; + }; + Sprite3d.prototype._calculateBounds = function () { + this.calculateVertices(); + if (this.culledByFrustrum) { + return; + } + var trim = this._texture.trim; + var orig = this._texture.orig; + if (!trim || (trim.width === orig.width && trim.height === orig.height)) { + this._bounds.addQuad(this.vertexData); + return; + } + this.calculateTrimmedVertices(); + if (!this.trimmedCulledByFrustrum) { + this._bounds.addQuad(this.vertexTrimmedData); + } + }; + Sprite3d.prototype._render = function (renderer) { + this.calculateVertices(); + if (this.culledByFrustrum) { + return; + } + renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); + renderer.plugins[this.pluginName].render(this); + }; + Sprite3d.prototype.containsPoint = function (point) { + if (this.culledByFrustrum) { + return false; + } + return _super.prototype.containsPoint.call(this, point); + }; + Object.defineProperty(Sprite3d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Sprite3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Sprite3d.prototype.isFrontFace = function (forceUpdate) { + return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); + }; + Sprite3d.prototype.getDepth = function (forceUpdate) { + return pixi_projection.container3dGetDepth.call(this, forceUpdate); + }; + Object.defineProperty(Sprite3d.prototype, "position3d", { + get: function () { + return this.proj.position; + }, + set: function (value) { + this.proj.position.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Sprite3d.prototype, "scale3d", { + get: function () { + return this.proj.scale; + }, + set: function (value) { + this.proj.scale.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Sprite3d.prototype, "euler", { + get: function () { + return this.proj.euler; + }, + set: function (value) { + this.proj.euler.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Sprite3d.prototype, "pivot3d", { + get: function () { + return this.proj.pivot; + }, + set: function (value) { + this.proj.pivot.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + return Sprite3d; + }(PIXI.Sprite)); + pixi_projection.Sprite3d = Sprite3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Text3d = (function (_super) { + __extends(Text3d, _super); + function Text3d(text, style, canvas) { + var _this = _super.call(this, text, style, canvas) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection3d(_this.transform); + _this.pluginName = 'batch2d'; + return _this; + } + Object.defineProperty(Text3d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Text3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Text3d.prototype.isFrontFace = function (forceUpdate) { + return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); + }; + Text3d.prototype.getDepth = function (forceUpdate) { + return pixi_projection.container3dGetDepth.call(this, forceUpdate); + }; + Object.defineProperty(Text3d.prototype, "position3d", { + get: function () { + return this.proj.position; + }, + set: function (value) { + this.proj.position.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Text3d.prototype, "scale3d", { + get: function () { + return this.proj.scale; + }, + set: function (value) { + this.proj.scale.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Text3d.prototype, "euler", { + get: function () { + return this.proj.euler; + }, + set: function (value) { + this.proj.euler.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Text3d.prototype, "pivot3d", { + get: function () { + return this.proj.pivot; + }, + set: function (value) { + this.proj.pivot.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + return Text3d; + }(PIXI.Text)); + pixi_projection.Text3d = Text3d; + Text3d.prototype.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices; + Text3d.prototype.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices; + Text3d.prototype._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds; + Text3d.prototype.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint; + Text3d.prototype._render = pixi_projection.Sprite3d.prototype._render; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var containerProps = { + worldTransform: { + get: pixi_projection.container3dWorldTransform, + enumerable: true, + configurable: true + }, + position3d: { + get: function () { return this.proj.position; }, + set: function (value) { this.proj.position.copy(value); } + }, + scale3d: { + get: function () { return this.proj.scale; }, + set: function (value) { this.proj.scale.copy(value); } + }, + pivot3d: { + get: function () { return this.proj.pivot; }, + set: function (value) { this.proj.pivot.copy(value); } + }, + euler: { + get: function () { return this.proj.euler; }, + set: function (value) { this.proj.euler.copy(value); } + } + }; + function convertTo3d() { + if (this.proj) + return; + this.proj = new pixi_projection.Projection3d(this.transform); + this.toLocal = pixi_projection.Container3d.prototype.toLocal; + this.isFrontFace = pixi_projection.Container3d.prototype.isFrontFace; + this.getDepth = pixi_projection.Container3d.prototype.getDepth; + Object.defineProperties(this, containerProps); + } + PIXI.Container.prototype.convertTo3d = convertTo3d; + PIXI.Sprite.prototype.convertTo3d = function () { + if (this.proj) + return; + this.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices; + this.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices; + this._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds; + this.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint; + this.pluginName = 'batch2d'; + convertTo3d.call(this); + }; + PIXI.Container.prototype.convertSubtreeTo3d = function () { + this.convertTo3d(); + for (var i = 0; i < this.children.length; i++) { + this.children[i].convertSubtreeTo3d(); + } + }; + if (PIXI.SimpleMesh) { + PIXI.SimpleMesh.prototype.convertTo3d = + PIXI.SimpleRope.prototype.convertTo3d = + function () { + if (this.proj) + return; + this.calculateVertices = pixi_projection.Mesh3d2d.prototype.calculateVertices; + this._renderDefault = pixi_projection.Mesh3d2d.prototype._renderDefault; + if (this.material.pluginName !== 'batch2d') { + this.material = new PIXI.MeshMaterial(this.material.texture, { + program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), + pluginName: 'batch2d' + }); + } + convertTo3d.call(this); + }; + } +})(pixi_projection || (pixi_projection = {})); /*! * VERSION: 2.1.3 @@ -74907,14 +74939,14 @@ var Wait = require('./wait'); var Ease = function (_Events) { _inherits(Ease, _Events); - /** - * Main class for creating eases - * @param {object} [options] - * @param {boolean} [options.noTicker] don't add the update function to PIXI.ticker - * @param {PIXI.ticker} [options.ticker=PIXI.ticker.shared] use this PIXI.ticker for the list - * @extends eventemitter - * @fire done - * @fire each + /** + * Main class for creating eases + * @param {object} [options] + * @param {boolean} [options.noTicker] don't add the update function to PIXI.ticker + * @param {PIXI.ticker} [options.ticker=PIXI.ticker.shared] use this PIXI.ticker for the list + * @extends eventemitter + * @fire done + * @fire each */ function Ease(options) { _classCallCheck(this, Ease); @@ -74936,10 +74968,10 @@ var Ease = function (_Events) { return _this; } - /** - * Add animation(s) to animation list - * @param {(object|object[])} any animation class - * @return {object} first animation + /** + * Add animation(s) to animation list + * @param {(object|object[])} any animation class + * @return {object} first animation */ @@ -75007,9 +75039,9 @@ var Ease = function (_Events) { return first; } - /** - * remove animation(s) - * @param {object|array} animate - the animation (or array of animations) to remove; can be null + /** + * remove animation(s) + * @param {object|array} animate - the animation (or array of animations) to remove; can be null */ }, { @@ -75025,9 +75057,9 @@ var Ease = function (_Events) { } } - /** - * remove all animations from list - * @inherited from yy-loop + /** + * remove all animations from list + * @inherited from yy-loop */ }, { @@ -75040,11 +75072,11 @@ var Ease = function (_Events) { } } - /** - * update frame - * this is automatically added to PIXI.ticker unless options.noTicker is set - * if using options.noTicker, this should be called manually - * @param {number} elasped time in MS since last update + /** + * update frame + * this is automatically added to PIXI.ticker unless options.noTicker is set + * if using options.noTicker, this should be called manually + * @param {number} elasped time in MS since last update */ }, { @@ -75073,50 +75105,50 @@ var Ease = function (_Events) { } } - /** - * number of animations - * @type {number} + /** + * number of animations + * @type {number} */ }, { key: 'to', - /** - * default options for all eases - * @typedef {object} EaseOptions - * @param {object} [EaseOptions.options] - * @param {number} [EaseOptions.options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) - * @param {boolean} [EaseOptions.options.pause] start the animation paused - * @param {boolean|number} [EaseOptions.options.repeat] true: repeat animation forever n: repeat animation n times - * @param {boolean|number} [EaseOptions.options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times - * @param {Function} [EaseOptions.options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set - * @param {string|Function} [EaseOptions.options.ease] name or function from easing.js (see http://easings.net for examples) + /** + * default options for all eases + * @typedef {object} EaseOptions + * @param {object} [EaseOptions.options] + * @param {number} [EaseOptions.options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) + * @param {boolean} [EaseOptions.options.pause] start the animation paused + * @param {boolean|number} [EaseOptions.options.repeat] true: repeat animation forever n: repeat animation n times + * @param {boolean|number} [EaseOptions.options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times + * @param {Function} [EaseOptions.options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set + * @param {string|Function} [EaseOptions.options.ease] name or function from easing.js (see http://easings.net for examples) */ - /** - * ease parameters of object - * @param {PIXI.DisplayObject} object to animate - * @param {object} goto - parameters to animate, e.g.: {alpha: 5, scale: {3, 5}, scale: 5, rotation: Math.PI} - * @param {number} duration - time to run - * @fires done - * @fires wait - * @fires first - * @fires each - * @fires loop - * @fires reverse + /** + * ease parameters of object + * @param {PIXI.DisplayObject} object to animate + * @param {object} goto - parameters to animate, e.g.: {alpha: 5, scale: {3, 5}, scale: 5, rotation: Math.PI} + * @param {number} duration - time to run + * @fires done + * @fires wait + * @fires first + * @fires each + * @fires loop + * @fires reverse */ value: function to() { return this.add(new (Function.prototype.bind.apply(To, [null].concat(Array.prototype.slice.call(arguments))))()); } - /** - * animate object's {x, y} using an angle - * @param {object} object to animate - * @param {number} angle in radians - * @param {number} speed in pixels/millisecond - * @param {number} [duration=0] in milliseconds; if 0, then continues forever - * @param {object} [options] @see {@link Wait} + /** + * animate object's {x, y} using an angle + * @param {object} object to animate + * @param {number} angle in radians + * @param {number} speed in pixels/millisecond + * @param {number} [duration=0] in milliseconds; if 0, then continues forever + * @param {object} [options] @see {@link Wait} */ }, { @@ -75186,9 +75218,9 @@ var Ease = function (_Events) { return this.list.length; } - /** - * number of active animations - * @type {number} + /** + * number of active animations + * @type {number} */ }, { @@ -75780,24 +75812,24 @@ var wait = require('./wait'); var to = function (_wait) { _inherits(to, _wait); - /** - * @private - * @param {object} object to animate - * @param {object} goto - parameters to animate, e.g.: {alpha: 5, scale: {3, 5}, scale: 5, rotation: Math.PI} - * @param {number} duration - time to run - * @param {object} [options] - * @param {number} [options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) - * @param {boolean} [options.pause] start the animation paused - * @param {boolean|number} [options.repeat] true: repeat animation forever n: repeat animation n times - * @param {boolean|number} [options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times - * @param {Function} [options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set - * @param {string|Function} [options.ease] name or function from easing.js (see http://easings.net for examples) - * @emits to:done animation expires - * @emits to:wait each update during a wait - * @emits to:first first update when animation starts - * @emits to:each each update while animation is running - * @emits to:loop when animation is repeated - * @emits to:reverse when animation is reversed + /** + * @private + * @param {object} object to animate + * @param {object} goto - parameters to animate, e.g.: {alpha: 5, scale: {3, 5}, scale: 5, rotation: Math.PI} + * @param {number} duration - time to run + * @param {object} [options] + * @param {number} [options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) + * @param {boolean} [options.pause] start the animation paused + * @param {boolean|number} [options.repeat] true: repeat animation forever n: repeat animation n times + * @param {boolean|number} [options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times + * @param {Function} [options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set + * @param {string|Function} [options.ease] name or function from easing.js (see http://easings.net for examples) + * @emits to:done animation expires + * @emits to:wait each update during a wait + * @emits to:first first update when animation starts + * @emits to:each each update while animation is running + * @emits to:loop when animation is repeated + * @emits to:reverse when animation is reversed */ function to(object, goto, duration, options) { _classCallCheck(this, to); @@ -75822,9 +75854,9 @@ var to = function (_wait) { return _this; } - /** - * converts scale from { scale: n } to { scale: { x: n, y: n }} - * @private + /** + * converts scale from { scale: n } to { scale: { x: n, y: n }} + * @private */ @@ -75976,24 +76008,24 @@ var EventEmitter = require('eventemitter3'); var wait = function (_EventEmitter) { _inherits(wait, _EventEmitter); - /** - * @param {object|object[]} object or list of objects to animate - * @param {object} [options] - * @param {number} [options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) - * @param {boolean} [options.pause] start the animation paused - * @param {(boolean|number)} [options.repeat] true: repeat animation forever n: repeat animation n times - * @param {(boolean|number)} [options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times - * - * @param {number} [options.id] user-generated id (e.g., I use it to properly load animations when an object has multiple animations running) - * @param {Function} [options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set - * @param {Function|string} [options.ease] function (or penner function name) from easing.js (see http://easings.net for examples)* - * - * @emits {done} animation expires - * @emits {wait} each update during a wait - * @emits {first} first update when animation starts - * @emits {each} each update while animation is running - * @emits {loop} when animation is repeated - * @emits {reverse} when animation is reversed + /** + * @param {object|object[]} object or list of objects to animate + * @param {object} [options] + * @param {number} [options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) + * @param {boolean} [options.pause] start the animation paused + * @param {(boolean|number)} [options.repeat] true: repeat animation forever n: repeat animation n times + * @param {(boolean|number)} [options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times + * + * @param {number} [options.id] user-generated id (e.g., I use it to properly load animations when an object has multiple animations running) + * @param {Function} [options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set + * @param {Function|string} [options.ease] function (or penner function name) from easing.js (see http://easings.net for examples)* + * + * @emits {done} animation expires + * @emits {wait} each update during a wait + * @emits {first} first update when animation starts + * @emits {each} each update while animation is running + * @emits {loop} when animation is repeated + * @emits {reverse} when animation is reversed */ function wait(object, options) { _classCallCheck(this, wait); @@ -76060,9 +76092,9 @@ var wait = function (_EventEmitter) { this.duration = _load.duration; } - /** - * pause this entry - * @type {boolean} + /** + * pause this entry + * @type {boolean} */ }, { @@ -78794,19 +78826,19 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Bounce, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {string} [options.sides=all] all, horizontal, vertical, or combination of top, bottom, right, left (e.g., 'top-bottom-right') - * @param {number} [options.friction=0.5] friction to apply to decelerate if active - * @param {number} [options.time=150] time in ms to finish bounce - * @param {string|function} [ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen - * @fires bounce-start-x - * @fires bounce.end-x - * @fires bounce-start-y - * @fires bounce-end-y + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {string} [options.sides=all] all, horizontal, vertical, or combination of top, bottom, right, left (e.g., 'top-bottom-right') + * @param {number} [options.friction=0.5] friction to apply to decelerate if active + * @param {number} [options.time=150] time in ms to finish bounce + * @param {string|function} [ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + * @fires bounce-start-x + * @fires bounce.end-x + * @fires bounce-start-y + * @fires bounce-end-y */ function Bounce(parent, options) { _classCallCheck(this, Bounce); @@ -79004,13 +79036,13 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(ClampZoom, _Plugin); - /** - * @private - * @param {object} [options] - * @param {number} [options.minWidth] minimum width - * @param {number} [options.minHeight] minimum height - * @param {number} [options.maxWidth] maximum width - * @param {number} [options.maxHeight] maximum height + /** + * @private + * @param {object} [options] + * @param {number} [options.minWidth] minimum width + * @param {number} [options.minHeight] minimum height + * @param {number} [options.maxWidth] maximum width + * @param {number} [options.maxHeight] maximum height */ function ClampZoom(parent, options) { _classCallCheck(this, ClampZoom); @@ -79083,15 +79115,15 @@ var utils = require('./utils'); module.exports = function (_Plugin) { _inherits(clamp, _Plugin); - /** - * @private - * @param {object} options - * @param {(number|boolean)} [options.left] clamp left; true=0 - * @param {(number|boolean)} [options.right] clamp right; true=viewport.worldWidth - * @param {(number|boolean)} [options.top] clamp top; true=0 - * @param {(number|boolean)} [options.bottom] clamp bottom; true=viewport.worldHeight - * @param {string} [options.direction] (all, x, or y) using clamps of [0, viewport.worldWidth/viewport.worldHeight]; replaces left/right/top/bottom if set - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + /** + * @private + * @param {object} options + * @param {(number|boolean)} [options.left] clamp left; true=0 + * @param {(number|boolean)} [options.right] clamp right; true=viewport.worldWidth + * @param {(number|boolean)} [options.top] clamp top; true=0 + * @param {(number|boolean)} [options.bottom] clamp bottom; true=viewport.worldHeight + * @param {string} [options.direction] (all, x, or y) using clamps of [0, viewport.worldWidth/viewport.worldHeight]; replaces left/right/top/bottom if set + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen */ function clamp(parent, options) { _classCallCheck(this, clamp); @@ -79248,13 +79280,13 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Decelerate, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {number} [options.friction=0.95] percent to decelerate after movement - * @param {number} [options.bounce=0.8] percent to decelerate when past boundaries (only applicable when viewport.bounce() is active) - * @param {number} [options.minSpeed=0.01] minimum velocity before stopping/reversing acceleration + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {number} [options.friction=0.95] percent to decelerate after movement + * @param {number} [options.bounce=0.8] percent to decelerate when past boundaries (only applicable when viewport.bounce() is active) + * @param {number} [options.minSpeed=0.01] minimum velocity before stopping/reversing acceleration */ function Decelerate(parent, options) { _classCallCheck(this, Decelerate); @@ -79328,11 +79360,11 @@ module.exports = function (_Plugin) { } } - /** - * manually activate plugin - * @param {object} options - * @param {number} [options.x] - * @param {number} [options.y] + /** + * manually activate plugin + * @param {object} options + * @param {number} [options.x] + * @param {number} [options.y] */ }, { @@ -79404,17 +79436,17 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Drag, _Plugin); - /** - * enable one-finger touch to drag - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {string} [options.direction=all] direction to drag (all, x, or y) - * @param {boolean} [options.wheel=true] use wheel to scroll in y direction (unless wheel plugin is active) - * @param {number} [options.wheelScroll=1] number of pixels to scroll with each wheel spin - * @param {boolean} [options.reverse] reverse the direction of the wheel scroll - * @param {boolean|string} [options.clampWheel] (true, x, or y) clamp wheel (to avoid weird bounce with mouse wheel) - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + /** + * enable one-finger touch to drag + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {string} [options.direction=all] direction to drag (all, x, or y) + * @param {boolean} [options.wheel=true] use wheel to scroll in y direction (unless wheel plugin is active) + * @param {number} [options.wheelScroll=1] number of pixels to scroll with each wheel spin + * @param {boolean} [options.reverse] reverse the direction of the wheel scroll + * @param {boolean|string} [options.clampWheel] (true, x, or y) clamp wheel (to avoid weird bounce with mouse wheel) + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen */ function Drag(parent, options) { _classCallCheck(this, Drag); @@ -79619,13 +79651,13 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Follow, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {PIXI.DisplayObject} target to follow (object must include {x: x-coordinate, y: y-coordinate}) - * @param {object} [options] - * @param {number} [options.speed=0] to follow in pixels/frame (0=teleport to location) - * @param {number} [options.radius] radius (in world coordinates) of center circle where movement is allowed without moving the viewport + /** + * @private + * @param {Viewport} parent + * @param {PIXI.DisplayObject} target to follow (object must include {x: x-coordinate, y: y-coordinate}) + * @param {object} [options] + * @param {number} [options.speed=0] to follow in pixels/frame (0=teleport to location) + * @param {number} [options.radius] radius (in world coordinates) of center circle where movement is allowed without moving the viewport */ function Follow(parent, target, options) { _classCallCheck(this, Follow); @@ -79698,24 +79730,24 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(MouseEdges, _Plugin); - /** - * Scroll viewport when mouse hovers near one of the edges. - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {number} [options.radius] distance from center of screen in screen pixels - * @param {number} [options.distance] distance from all sides in screen pixels - * @param {number} [options.top] alternatively, set top distance (leave unset for no top scroll) - * @param {number} [options.bottom] alternatively, set bottom distance (leave unset for no top scroll) - * @param {number} [options.left] alternatively, set left distance (leave unset for no top scroll) - * @param {number} [options.right] alternatively, set right distance (leave unset for no top scroll) - * @param {number} [options.speed=8] speed in pixels/frame to scroll viewport - * @param {boolean} [options.reverse] reverse direction of scroll - * @param {boolean} [options.noDecelerate] don't use decelerate plugin even if it's installed - * @param {boolean} [options.linear] if using radius, use linear movement (+/- 1, +/- 1) instead of angled movement (Math.cos(angle from center), Math.sin(angle from center)) - * - * @event mouse-edge-start(Viewport) emitted when mouse-edge starts - * @event mouse-edge-end(Viewport) emitted when mouse-edge ends + /** + * Scroll viewport when mouse hovers near one of the edges. + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {number} [options.radius] distance from center of screen in screen pixels + * @param {number} [options.distance] distance from all sides in screen pixels + * @param {number} [options.top] alternatively, set top distance (leave unset for no top scroll) + * @param {number} [options.bottom] alternatively, set bottom distance (leave unset for no top scroll) + * @param {number} [options.left] alternatively, set left distance (leave unset for no top scroll) + * @param {number} [options.right] alternatively, set right distance (leave unset for no top scroll) + * @param {number} [options.speed=8] speed in pixels/frame to scroll viewport + * @param {boolean} [options.reverse] reverse direction of scroll + * @param {boolean} [options.noDecelerate] don't use decelerate plugin even if it's installed + * @param {boolean} [options.linear] if using radius, use linear movement (+/- 1, +/- 1) instead of angled movement (Math.cos(angle from center), Math.sin(angle from center)) + * + * @event mouse-edge-start(Viewport) emitted when mouse-edge starts + * @event mouse-edge-end(Viewport) emitted when mouse-edge ends */ function MouseEdges(parent, options) { _classCallCheck(this, MouseEdges); @@ -79871,13 +79903,13 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Pinch, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {boolean} [options.noDrag] disable two-finger dragging - * @param {number} [options.percent=1.0] percent to modify pinch speed - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of two fingers + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {boolean} [options.noDrag] disable two-finger dragging + * @param {number} [options.percent=1.0] percent to modify pinch speed + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of two fingers */ function Pinch(parent, options) { _classCallCheck(this, Pinch); @@ -80045,24 +80077,24 @@ var utils = require('./utils'); module.exports = function (_Plugin) { _inherits(SnapZoom, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {number} [options.width] the desired width to snap (to maintain aspect ratio, choose only width or height) - * @param {number} [options.height] the desired height to snap (to maintain aspect ratio, choose only width or height) - * @param {number} [options.time=1000] - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of the viewport - * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport - * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete - * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input - * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired zoom - * @param {boolean} [options.noMove] zoom but do not move - * - * @event snap-zoom-start(Viewport) emitted each time a fit animation starts - * @event snap-zoom-end(Viewport) emitted each time fit reaches its target - * @event snap-zoom-end(Viewport) emitted each time fit reaches its target + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {number} [options.width] the desired width to snap (to maintain aspect ratio, choose only width or height) + * @param {number} [options.height] the desired height to snap (to maintain aspect ratio, choose only width or height) + * @param {number} [options.time=1000] + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of the viewport + * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport + * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete + * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input + * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired zoom + * @param {boolean} [options.noMove] zoom but do not move + * + * @event snap-zoom-start(Viewport) emitted each time a fit animation starts + * @event snap-zoom-end(Viewport) emitted each time fit reaches its target + * @event snap-zoom-end(Viewport) emitted each time fit reaches its target */ function SnapZoom(parent, options) { _classCallCheck(this, SnapZoom); @@ -80219,25 +80251,25 @@ var utils = require('./utils'); module.exports = function (_Plugin) { _inherits(Snap, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {number} x - * @param {number} y - * @param {object} [options] - * @param {boolean} [options.topLeft] snap to the top-left of viewport instead of center - * @param {number} [options.friction=0.8] friction/frame to apply if decelerate is active - * @param {number} [options.time=1000] - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport - * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete - * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input - * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired location - * - * @event snap-start(Viewport) emitted each time a snap animation starts - * @event snap-restart(Viewport) emitted each time a snap resets because of a change in viewport size - * @event snap-end(Viewport) emitted each time snap reaches its target - * @event snap-remove(Viewport) emitted if snap plugin is removed + /** + * @private + * @param {Viewport} parent + * @param {number} x + * @param {number} y + * @param {object} [options] + * @param {boolean} [options.topLeft] snap to the top-left of viewport instead of center + * @param {number} [options.friction=0.8] friction/frame to apply if decelerate is active + * @param {number} [options.time=1000] + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport + * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete + * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input + * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired location + * + * @event snap-start(Viewport) emitted each time a snap animation starts + * @event snap-restart(Viewport) emitted each time a snap resets because of a change in viewport size + * @event snap-end(Viewport) emitted each time snap reaches its target + * @event snap-remove(Viewport) emitted if snap plugin is removed */ function Snap(parent, x, y, options) { _classCallCheck(this, Snap); @@ -80413,45 +80445,45 @@ var PLUGIN_ORDER = ['drag', 'pinch', 'wheel', 'follow', 'mouse-edges', 'decelera var Viewport = function (_PIXI$Container) { _inherits(Viewport, _PIXI$Container); - /** - * @extends PIXI.Container - * @extends EventEmitter - * @param {object} [options] - * @param {number} [options.screenWidth=window.innerWidth] - * @param {number} [options.screenHeight=window.innerHeight] - * @param {number} [options.worldWidth=this.width] - * @param {number} [options.worldHeight=this.height] - * @param {number} [options.threshold = 5] number of pixels to move to trigger an input event (e.g., drag, pinch) - * @param {(PIXI.Rectangle|PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.RoundedRectangle)} [options.forceHitArea] change the default hitArea from world size to a new value - * @param {PIXI.ticker.Ticker} [options.ticker=PIXI.ticker.shared] use this PIXI.ticker for updates - * @param {PIXI.InteractionManager} [options.interaction=null] InteractionManager, available from instantiated WebGLRenderer/CanvasRenderer.plugins.interaction - used to calculate pointer postion relative to canvas location on screen - * @param {HTMLElement} [options.divWheel=document.body] div to attach the wheel event - * @fires clicked - * @fires drag-start - * @fires drag-end - * @fires drag-remove - * @fires pinch-start - * @fires pinch-end - * @fires pinch-remove - * @fires snap-start - * @fires snap-end - * @fires snap-remove - * @fires snap-zoom-start - * @fires snap-zoom-end - * @fires snap-zoom-remove - * @fires bounce-x-start - * @fires bounce-x-end - * @fires bounce-y-start - * @fires bounce-y-end - * @fires bounce-remove - * @fires wheel - * @fires wheel-remove - * @fires wheel-scroll - * @fires wheel-scroll-remove - * @fires mouse-edge-start - * @fires mouse-edge-end - * @fires mouse-edge-remove - * @fires moved + /** + * @extends PIXI.Container + * @extends EventEmitter + * @param {object} [options] + * @param {number} [options.screenWidth=window.innerWidth] + * @param {number} [options.screenHeight=window.innerHeight] + * @param {number} [options.worldWidth=this.width] + * @param {number} [options.worldHeight=this.height] + * @param {number} [options.threshold = 5] number of pixels to move to trigger an input event (e.g., drag, pinch) + * @param {(PIXI.Rectangle|PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.RoundedRectangle)} [options.forceHitArea] change the default hitArea from world size to a new value + * @param {PIXI.ticker.Ticker} [options.ticker=PIXI.ticker.shared] use this PIXI.ticker for updates + * @param {PIXI.InteractionManager} [options.interaction=null] InteractionManager, available from instantiated WebGLRenderer/CanvasRenderer.plugins.interaction - used to calculate pointer postion relative to canvas location on screen + * @param {HTMLElement} [options.divWheel=document.body] div to attach the wheel event + * @fires clicked + * @fires drag-start + * @fires drag-end + * @fires drag-remove + * @fires pinch-start + * @fires pinch-end + * @fires pinch-remove + * @fires snap-start + * @fires snap-end + * @fires snap-remove + * @fires snap-zoom-start + * @fires snap-zoom-end + * @fires snap-zoom-remove + * @fires bounce-x-start + * @fires bounce-x-end + * @fires bounce-y-start + * @fires bounce-y-end + * @fires bounce-remove + * @fires wheel + * @fires wheel-remove + * @fires wheel-scroll + * @fires wheel-scroll-remove + * @fires mouse-edge-start + * @fires mouse-edge-end + * @fires mouse-edge-remove + * @fires moved */ function Viewport(options) { _classCallCheck(this, Viewport); @@ -80473,10 +80505,10 @@ var Viewport = function (_PIXI$Container) { _this.div = options.divWheel || document.body; _this.listeners(_this.div); - /** - * active touch point ids on the viewport - * @type {number[]} - * @readonly + /** + * active touch point ids on the viewport + * @type {number[]} + * @readonly */ _this.touches = []; @@ -80488,9 +80520,9 @@ var Viewport = function (_PIXI$Container) { return _this; } - /** - * removes all event listeners from viewport - * (useful for cleanup of wheel and ticker events when removing viewport) + /** + * removes all event listeners from viewport + * (useful for cleanup of wheel and ticker events when removing viewport) */ @@ -80501,8 +80533,8 @@ var Viewport = function (_PIXI$Container) { this.div.removeEventListener('wheel', this.wheelFunction); } - /** - * overrides PIXI.Container's destroy to also remove the 'wheel' and PIXI.Ticker listeners + /** + * overrides PIXI.Container's destroy to also remove the 'wheel' and PIXI.Ticker listeners */ }, { @@ -80512,9 +80544,9 @@ var Viewport = function (_PIXI$Container) { this.removeListeners(); } - /** - * update animations - * @private + /** + * update animations + * @private */ }, { @@ -80554,12 +80586,12 @@ var Viewport = function (_PIXI$Container) { } } - /** - * use this to set screen and world sizes--needed for pinch/wheel/clamp/bounce - * @param {number} screenWidth - * @param {number} screenHeight - * @param {number} [worldWidth] - * @param {number} [worldHeight] + /** + * use this to set screen and world sizes--needed for pinch/wheel/clamp/bounce + * @param {number} screenWidth + * @param {number} screenHeight + * @param {number} [worldWidth] + * @param {number} [worldHeight] */ }, { @@ -80572,9 +80604,9 @@ var Viewport = function (_PIXI$Container) { this.resizePlugins(); } - /** - * called after a worldWidth/Height change - * @private + /** + * called after a worldWidth/Height change + * @private */ }, { @@ -80606,18 +80638,18 @@ var Viewport = function (_PIXI$Container) { } } - /** - * screen width in screen pixels - * @type {number} + /** + * screen width in screen pixels + * @type {number} */ }, { key: 'listeners', - /** - * add input listeners - * @private + /** + * add input listeners + * @private */ value: function listeners(div) { var _this2 = this; @@ -80639,9 +80671,9 @@ var Viewport = function (_PIXI$Container) { this.leftDown = false; } - /** - * handle down events - * @private + /** + * handle down events + * @private */ }, { @@ -80697,10 +80729,10 @@ var Viewport = function (_PIXI$Container) { } } - /** - * whether change exceeds threshold - * @private - * @param {number} change + /** + * whether change exceeds threshold + * @private + * @param {number} change */ }, { @@ -80712,9 +80744,9 @@ var Viewport = function (_PIXI$Container) { return false; } - /** - * handle move events - * @private + /** + * handle move events + * @private */ }, { @@ -80758,9 +80790,9 @@ var Viewport = function (_PIXI$Container) { } } - /** - * handle up events - * @private + /** + * handle up events + * @private */ }, { @@ -80814,10 +80846,10 @@ var Viewport = function (_PIXI$Container) { } } - /** - * gets pointer position if this.interaction is set - * @param {UIEvent} evt - * @private + /** + * gets pointer position if this.interaction is set + * @param {UIEvent} evt + * @private */ }, { @@ -80833,9 +80865,9 @@ var Viewport = function (_PIXI$Container) { return point; } - /** - * handle wheel events - * @private + /** + * handle wheel events + * @private */ }, { @@ -80880,11 +80912,11 @@ var Viewport = function (_PIXI$Container) { } } - /** - * change coordinates from screen to world - * @param {number|PIXI.Point} x - * @param {number} [y] - * @returns {PIXI.Point} + /** + * change coordinates from screen to world + * @param {number|PIXI.Point} x + * @param {number} [y] + * @returns {PIXI.Point} */ }, { @@ -80899,11 +80931,11 @@ var Viewport = function (_PIXI$Container) { } } - /** - * change coordinates from world to screen - * @param {number|PIXI.Point} x - * @param {number} [y] - * @returns {PIXI.Point} + /** + * change coordinates from world to screen + * @param {number|PIXI.Point} x + * @param {number} [y] + * @returns {PIXI.Point} */ }, { @@ -80919,21 +80951,21 @@ var Viewport = function (_PIXI$Container) { } } - /** - * screen width in world coordinates - * @type {number} - * @readonly + /** + * screen width in world coordinates + * @type {number} + * @readonly */ }, { key: 'moveCenter', - /** - * move center of viewport to point - * @param {(number|PIXI.PointLike)} x or point - * @param {number} [y] - * @return {Viewport} this + /** + * move center of viewport to point + * @param {(number|PIXI.PointLike)} x or point + * @param {number} [y] + * @return {Viewport} this */ value: function moveCenter() /*x, y | PIXI.Point*/{ var x = void 0, @@ -80950,20 +80982,20 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * top-left corner - * @type {PIXI.PointLike} + /** + * top-left corner + * @type {PIXI.PointLike} */ }, { key: 'moveCorner', - /** - * move viewport's top-left corner; also clamps and resets decelerate and bounce (as needed) - * @param {number|PIXI.Point} x|point - * @param {number} y - * @return {Viewport} this + /** + * move viewport's top-left corner; also clamps and resets decelerate and bounce (as needed) + * @param {number|PIXI.Point} x|point + * @param {number} y + * @return {Viewport} this */ value: function moveCorner() /*x, y | point*/{ if (arguments.length === 1) { @@ -80975,11 +81007,11 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * change zoom so the width fits in the viewport - * @param {number} [width=this._worldWidth] in world coordinates - * @param {boolean} [center] maintain the same center - * @return {Viewport} this + /** + * change zoom so the width fits in the viewport + * @param {number} [width=this._worldWidth] in world coordinates + * @param {boolean} [center] maintain the same center + * @return {Viewport} this */ }, { @@ -80998,11 +81030,11 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * change zoom so the height fits in the viewport - * @param {number} [height=this._worldHeight] in world coordinates - * @param {boolean} [center] maintain the same center of the screen after zoom - * @return {Viewport} this + /** + * change zoom so the height fits in the viewport + * @param {number} [height=this._worldHeight] in world coordinates + * @param {boolean} [center] maintain the same center of the screen after zoom + * @return {Viewport} this */ }, { @@ -81021,10 +81053,10 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * change zoom so it fits the entire world in the viewport - * @param {boolean} [center] maintain the same center of the screen after zoom - * @return {Viewport} this + /** + * change zoom so it fits the entire world in the viewport + * @param {boolean} [center] maintain the same center of the screen after zoom + * @return {Viewport} this */ }, { @@ -81047,12 +81079,12 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * change zoom so it fits the size or the entire world in the viewport - * @param {boolean} [center] maintain the same center of the screen after zoom - * @param {number} [width] desired width - * @param {number} [height] desired height - * @return {Viewport} this + /** + * change zoom so it fits the size or the entire world in the viewport + * @param {boolean} [center] maintain the same center of the screen after zoom + * @param {number} [width] desired width + * @param {number} [height] desired height + * @return {Viewport} this */ }, { @@ -81077,11 +81109,11 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * zoom viewport by a certain percent (in both x and y direction) - * @param {number} percent change (e.g., 0.25 would increase a starting scale of 1.0 to 1.25) - * @param {boolean} [center] maintain the same center of the screen after zoom - * @return {Viewport} the viewport + /** + * zoom viewport by a certain percent (in both x and y direction) + * @param {number} percent change (e.g., 0.25 would increase a starting scale of 1.0 to 1.25) + * @param {boolean} [center] maintain the same center of the screen after zoom + * @return {Viewport} the viewport */ }, { @@ -81099,11 +81131,11 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * zoom viewport by increasing/decreasing width by a certain number of pixels - * @param {number} change in pixels - * @param {boolean} [center] maintain the same center of the screen after zoom - * @return {Viewport} the viewport + /** + * zoom viewport by increasing/decreasing width by a certain number of pixels + * @param {number} change in pixels + * @param {boolean} [center] maintain the same center of the screen after zoom + * @return {Viewport} the viewport */ }, { @@ -81113,17 +81145,17 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * @param {object} [options] - * @param {number} [options.width] the desired width to snap (to maintain aspect ratio, choose only width or height) - * @param {number} [options.height] the desired height to snap (to maintain aspect ratio, choose only width or height) - * @param {number} [options.time=1000] - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of the viewport - * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport - * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete - * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input - * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired zoom + /** + * @param {object} [options] + * @param {number} [options.width] the desired width to snap (to maintain aspect ratio, choose only width or height) + * @param {number} [options.height] the desired height to snap (to maintain aspect ratio, choose only width or height) + * @param {number} [options.time=1000] + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of the viewport + * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport + * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete + * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input + * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired zoom */ }, { @@ -81134,20 +81166,20 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * @private - * @typedef OutOfBounds - * @type {object} - * @property {boolean} left - * @property {boolean} right - * @property {boolean} top - * @property {boolean} bottom + /** + * @private + * @typedef OutOfBounds + * @type {object} + * @property {boolean} left + * @property {boolean} right + * @property {boolean} top + * @property {boolean} bottom */ - /** - * is container out of world bounds - * @return {OutOfBounds} - * @private + /** + * is container out of world bounds + * @return {OutOfBounds} + * @private */ }, { @@ -81165,28 +81197,28 @@ var Viewport = function (_PIXI$Container) { return result; } - /** - * world coordinates of the right edge of the screen - * @type {number} + /** + * world coordinates of the right edge of the screen + * @type {number} */ }, { key: 'countDownPointers', - /** - * count of mouse/touch pointers that are down on the viewport - * @private - * @return {number} + /** + * count of mouse/touch pointers that are down on the viewport + * @private + * @return {number} */ value: function countDownPointers() { return (this.leftDown ? 1 : 0) + this.touches.length; } - /** - * array of touch pointers that are down on the viewport - * @private - * @return {PIXI.InteractionTrackingData[]} + /** + * array of touch pointers that are down on the viewport + * @private + * @return {PIXI.InteractionTrackingData[]} */ }, { @@ -81203,10 +81235,10 @@ var Viewport = function (_PIXI$Container) { return results; } - /** - * array of pointers that are down on the viewport - * @private - * @return {PIXI.InteractionTrackingData[]} + /** + * array of pointers that are down on the viewport + * @private + * @return {PIXI.InteractionTrackingData[]} */ }, { @@ -81220,9 +81252,9 @@ var Viewport = function (_PIXI$Container) { return results; } - /** - * clamps and resets bounce and decelerate (as needed) after manually moving viewport - * @private + /** + * clamps and resets bounce and decelerate (as needed) after manually moving viewport + * @private */ }, { @@ -81249,9 +81281,9 @@ var Viewport = function (_PIXI$Container) { // PLUGINS - /** - * removes installed plugin - * @param {string} type of plugin (e.g., 'drag', 'pinch') + /** + * removes installed plugin + * @param {string} type of plugin (e.g., 'drag', 'pinch') */ }, { @@ -81264,9 +81296,9 @@ var Viewport = function (_PIXI$Container) { } } - /** - * pause plugin - * @param {string} type of plugin (e.g., 'drag', 'pinch') + /** + * pause plugin + * @param {string} type of plugin (e.g., 'drag', 'pinch') */ }, { @@ -81277,9 +81309,9 @@ var Viewport = function (_PIXI$Container) { } } - /** - * resume plugin - * @param {string} type of plugin (e.g., 'drag', 'pinch') + /** + * resume plugin + * @param {string} type of plugin (e.g., 'drag', 'pinch') */ }, { @@ -81290,9 +81322,9 @@ var Viewport = function (_PIXI$Container) { } } - /** - * sort plugins for updates - * @private + /** + * sort plugins for updates + * @private */ }, { @@ -81327,14 +81359,14 @@ var Viewport = function (_PIXI$Container) { } } - /** - * enable one-finger touch to drag - * @param {object} [options] - * @param {string} [options.direction=all] direction to drag (all, x, or y) - * @param {boolean} [options.wheel=true] use wheel to scroll in y direction (unless wheel plugin is active) - * @param {number} [options.wheelScroll=10] number of pixels to scroll with each wheel spin - * @param {boolean} [options.reverse] reverse the direction of the wheel scroll - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + /** + * enable one-finger touch to drag + * @param {object} [options] + * @param {string} [options.direction=all] direction to drag (all, x, or y) + * @param {boolean} [options.wheel=true] use wheel to scroll in y direction (unless wheel plugin is active) + * @param {number} [options.wheelScroll=10] number of pixels to scroll with each wheel spin + * @param {boolean} [options.reverse] reverse the direction of the wheel scroll + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen */ }, { @@ -81345,19 +81377,19 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * clamp to world boundaries or other provided boundaries - * NOTES: - * clamp is disabled if called with no options; use { direction: 'all' } for all edge clamping - * screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly - * @param {object} [options] - * @param {(number|boolean)} [options.left] clamp left; true=0 - * @param {(number|boolean)} [options.right] clamp right; true=viewport.worldWidth - * @param {(number|boolean)} [options.top] clamp top; true=0 - * @param {(number|boolean)} [options.bottom] clamp bottom; true=viewport.worldHeight - * @param {string} [options.direction] (all, x, or y) using clamps of [0, viewport.worldWidth/viewport.worldHeight]; replaces left/right/top/bottom if set - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen - * @return {Viewport} this + /** + * clamp to world boundaries or other provided boundaries + * NOTES: + * clamp is disabled if called with no options; use { direction: 'all' } for all edge clamping + * screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly + * @param {object} [options] + * @param {(number|boolean)} [options.left] clamp left; true=0 + * @param {(number|boolean)} [options.right] clamp right; true=viewport.worldWidth + * @param {(number|boolean)} [options.top] clamp top; true=0 + * @param {(number|boolean)} [options.bottom] clamp bottom; true=viewport.worldHeight + * @param {string} [options.direction] (all, x, or y) using clamps of [0, viewport.worldWidth/viewport.worldHeight]; replaces left/right/top/bottom if set + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + * @return {Viewport} this */ }, { @@ -81368,13 +81400,13 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * decelerate after a move - * @param {object} [options] - * @param {number} [options.friction=0.95] percent to decelerate after movement - * @param {number} [options.bounce=0.8] percent to decelerate when past boundaries (only applicable when viewport.bounce() is active) - * @param {number} [options.minSpeed=0.01] minimum velocity before stopping/reversing acceleration - * @return {Viewport} this + /** + * decelerate after a move + * @param {object} [options] + * @param {number} [options.friction=0.95] percent to decelerate after movement + * @param {number} [options.bounce=0.8] percent to decelerate when past boundaries (only applicable when viewport.bounce() is active) + * @param {number} [options.minSpeed=0.01] minimum velocity before stopping/reversing acceleration + * @return {Viewport} this */ }, { @@ -81385,16 +81417,16 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * bounce on borders - * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly - * @param {object} [options] - * @param {string} [options.sides=all] all, horizontal, vertical, or combination of top, bottom, right, left (e.g., 'top-bottom-right') - * @param {number} [options.friction=0.5] friction to apply to decelerate if active - * @param {number} [options.time=150] time in ms to finish bounce - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen - * @return {Viewport} this + /** + * bounce on borders + * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly + * @param {object} [options] + * @param {string} [options.sides=all] all, horizontal, vertical, or combination of top, bottom, right, left (e.g., 'top-bottom-right') + * @param {number} [options.friction=0.5] friction to apply to decelerate if active + * @param {number} [options.time=150] time in ms to finish bounce + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + * @return {Viewport} this */ }, { @@ -81405,13 +81437,13 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * enable pinch to zoom and two-finger touch to drag - * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly - * @param {number} [options.percent=1.0] percent to modify pinch speed - * @param {boolean} [options.noDrag] disable two-finger dragging - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of two fingers - * @return {Viewport} this + /** + * enable pinch to zoom and two-finger touch to drag + * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly + * @param {number} [options.percent=1.0] percent to modify pinch speed + * @param {boolean} [options.noDrag] disable two-finger dragging + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of two fingers + * @return {Viewport} this */ }, { @@ -81422,20 +81454,20 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * snap to a point - * @param {number} x - * @param {number} y - * @param {object} [options] - * @param {boolean} [options.topLeft] snap to the top-left of viewport instead of center - * @param {number} [options.friction=0.8] friction/frame to apply if decelerate is active - * @param {number} [options.time=1000] - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport - * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete - * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input - * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired location - * @return {Viewport} this + /** + * snap to a point + * @param {number} x + * @param {number} y + * @param {object} [options] + * @param {boolean} [options.topLeft] snap to the top-left of viewport instead of center + * @param {number} [options.friction=0.8] friction/frame to apply if decelerate is active + * @param {number} [options.time=1000] + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport + * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete + * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input + * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired location + * @return {Viewport} this */ }, { @@ -81446,13 +81478,13 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * follow a target - * @param {PIXI.DisplayObject} target to follow (object must include {x: x-coordinate, y: y-coordinate}) - * @param {object} [options] - * @param {number} [options.speed=0] to follow in pixels/frame (0=teleport to location) - * @param {number} [options.radius] radius (in world coordinates) of center circle where movement is allowed without moving the viewport - * @return {Viewport} this + /** + * follow a target + * @param {PIXI.DisplayObject} target to follow (object must include {x: x-coordinate, y: y-coordinate}) + * @param {object} [options] + * @param {number} [options.speed=0] to follow in pixels/frame (0=teleport to location) + * @param {number} [options.radius] radius (in world coordinates) of center circle where movement is allowed without moving the viewport + * @return {Viewport} this */ }, { @@ -81463,13 +81495,13 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * zoom using mouse wheel - * @param {object} [options] - * @param {number} [options.percent=0.1] percent to scroll with each spin - * @param {boolean} [options.reverse] reverse the direction of the scroll - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of current mouse position - * @return {Viewport} this + /** + * zoom using mouse wheel + * @param {object} [options] + * @param {number} [options.percent=0.1] percent to scroll with each spin + * @param {boolean} [options.reverse] reverse the direction of the scroll + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of current mouse position + * @return {Viewport} this */ }, { @@ -81480,15 +81512,15 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * enable clamping of zoom to constraints - * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly - * @param {object} [options] - * @param {number} [options.minWidth] minimum width - * @param {number} [options.minHeight] minimum height - * @param {number} [options.maxWidth] maximum width - * @param {number} [options.maxHeight] maximum height - * @return {Viewport} this + /** + * enable clamping of zoom to constraints + * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly + * @param {object} [options] + * @param {number} [options.minWidth] minimum width + * @param {number} [options.minHeight] minimum height + * @param {number} [options.maxWidth] maximum width + * @param {number} [options.maxHeight] maximum height + * @return {Viewport} this */ }, { @@ -81499,19 +81531,19 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * Scroll viewport when mouse hovers near one of the edges or radius-distance from center of screen. - * @param {object} [options] - * @param {number} [options.radius] distance from center of screen in screen pixels - * @param {number} [options.distance] distance from all sides in screen pixels - * @param {number} [options.top] alternatively, set top distance (leave unset for no top scroll) - * @param {number} [options.bottom] alternatively, set bottom distance (leave unset for no top scroll) - * @param {number} [options.left] alternatively, set left distance (leave unset for no top scroll) - * @param {number} [options.right] alternatively, set right distance (leave unset for no top scroll) - * @param {number} [options.speed=8] speed in pixels/frame to scroll viewport - * @param {boolean} [options.reverse] reverse direction of scroll - * @param {boolean} [options.noDecelerate] don't use decelerate plugin even if it's installed - * @param {boolean} [options.linear] if using radius, use linear movement (+/- 1, +/- 1) instead of angled movement (Math.cos(angle from center), Math.sin(angle from center)) + /** + * Scroll viewport when mouse hovers near one of the edges or radius-distance from center of screen. + * @param {object} [options] + * @param {number} [options.radius] distance from center of screen in screen pixels + * @param {number} [options.distance] distance from all sides in screen pixels + * @param {number} [options.top] alternatively, set top distance (leave unset for no top scroll) + * @param {number} [options.bottom] alternatively, set bottom distance (leave unset for no top scroll) + * @param {number} [options.left] alternatively, set left distance (leave unset for no top scroll) + * @param {number} [options.right] alternatively, set right distance (leave unset for no top scroll) + * @param {number} [options.speed=8] speed in pixels/frame to scroll viewport + * @param {boolean} [options.reverse] reverse direction of scroll + * @param {boolean} [options.noDecelerate] don't use decelerate plugin even if it's installed + * @param {boolean} [options.linear] if using radius, use linear movement (+/- 1, +/- 1) instead of angled movement (Math.cos(angle from center), Math.sin(angle from center)) */ }, { @@ -81522,10 +81554,10 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * pause viewport (including animation updates such as decelerate) - * NOTE: when setting pause=true, all touches and mouse actions are cleared (i.e., if mousedown was active, it becomes inactive for purposes of the viewport) - * @type {boolean} + /** + * pause viewport (including animation updates such as decelerate) + * NOTE: when setting pause=true, all touches and mouse actions are cleared (i.e., if mousedown was active, it becomes inactive for purposes of the viewport) + * @type {boolean} */ }, { @@ -81537,9 +81569,9 @@ var Viewport = function (_PIXI$Container) { this._screenWidth = value; } - /** - * screen height in screen pixels - * @type {number} + /** + * screen height in screen pixels + * @type {number} */ }, { @@ -81551,9 +81583,9 @@ var Viewport = function (_PIXI$Container) { this._screenHeight = value; } - /** - * world width in pixels - * @type {number} + /** + * world width in pixels + * @type {number} */ }, { @@ -81570,9 +81602,9 @@ var Viewport = function (_PIXI$Container) { this.resizePlugins(); } - /** - * world height in pixels - * @type {number} + /** + * world height in pixels + * @type {number} */ }, { @@ -81594,10 +81626,10 @@ var Viewport = function (_PIXI$Container) { return this._screenWidth / this.scale.x; } - /** - * screen height in world coordinates - * @type {number} - * @readonly + /** + * screen height in world coordinates + * @type {number} + * @readonly */ }, { @@ -81606,10 +81638,10 @@ var Viewport = function (_PIXI$Container) { return this._screenHeight / this.scale.y; } - /** - * world width in screen coordinates - * @type {number} - * @readonly + /** + * world width in screen coordinates + * @type {number} + * @readonly */ }, { @@ -81618,10 +81650,10 @@ var Viewport = function (_PIXI$Container) { return this._worldWidth * this.scale.x; } - /** - * world height in screen coordinates - * @type {number} - * @readonly + /** + * world height in screen coordinates + * @type {number} + * @readonly */ }, { @@ -81630,9 +81662,9 @@ var Viewport = function (_PIXI$Container) { return this._worldHeight * this.scale.y; } - /** - * get center of screen in world coordinates - * @type {PIXI.PointLike} + /** + * get center of screen in world coordinates + * @type {PIXI.PointLike} */ }, { @@ -81661,9 +81693,9 @@ var Viewport = function (_PIXI$Container) { this._reset(); } - /** - * world coordinates of the left edge of the screen - * @type {number} + /** + * world coordinates of the left edge of the screen + * @type {number} */ }, { @@ -81676,9 +81708,9 @@ var Viewport = function (_PIXI$Container) { this._reset(); } - /** - * world coordinates of the top edge of the screen - * @type {number} + /** + * world coordinates of the top edge of the screen + * @type {number} */ }, { @@ -81691,9 +81723,9 @@ var Viewport = function (_PIXI$Container) { this._reset(); } - /** - * world coordinates of the bottom edge of the screen - * @type {number} + /** + * world coordinates of the bottom edge of the screen + * @type {number} */ }, { @@ -81705,9 +81737,9 @@ var Viewport = function (_PIXI$Container) { this.y = -value * this.scale.y + this.screenHeight; this._reset(); } - /** - * determines whether the viewport is dirty (i.e., needs to be renderered to the screen because of a change) - * @type {boolean} + /** + * determines whether the viewport is dirty (i.e., needs to be renderered to the screen because of a change) + * @type {boolean} */ }, { @@ -81719,10 +81751,10 @@ var Viewport = function (_PIXI$Container) { this._dirty = value; } - /** - * permanently changes the Viewport's hitArea - *

NOTE: normally the hitArea = PIXI.Rectangle(Viewport.left, Viewport.top, Viewport.worldScreenWidth, Viewport.worldScreenHeight)

- * @type {(PIXI.Rectangle|PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.RoundedRectangle)} + /** + * permanently changes the Viewport's hitArea + *

NOTE: normally the hitArea = PIXI.Rectangle(Viewport.left, Viewport.top, Viewport.worldScreenWidth, Viewport.worldScreenHeight)

+ * @type {(PIXI.Rectangle|PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.RoundedRectangle)} */ }, { @@ -81756,136 +81788,136 @@ var Viewport = function (_PIXI$Container) { return Viewport; }(PIXI.Container); -/** - * fires after a mouse or touch click - * @event Viewport#clicked - * @type {object} - * @property {PIXI.PointLike} screen - * @property {PIXI.PointLike} world - * @property {Viewport} viewport +/** + * fires after a mouse or touch click + * @event Viewport#clicked + * @type {object} + * @property {PIXI.PointLike} screen + * @property {PIXI.PointLike} world + * @property {Viewport} viewport */ -/** - * fires when a drag starts - * @event Viewport#drag-start - * @type {object} - * @property {PIXI.PointLike} screen - * @property {PIXI.PointLike} world - * @property {Viewport} viewport +/** + * fires when a drag starts + * @event Viewport#drag-start + * @type {object} + * @property {PIXI.PointLike} screen + * @property {PIXI.PointLike} world + * @property {Viewport} viewport */ -/** - * fires when a drag ends - * @event Viewport#drag-end - * @type {object} - * @property {PIXI.PointLike} screen - * @property {PIXI.PointLike} world - * @property {Viewport} viewport +/** + * fires when a drag ends + * @event Viewport#drag-end + * @type {object} + * @property {PIXI.PointLike} screen + * @property {PIXI.PointLike} world + * @property {Viewport} viewport */ -/** - * fires when a pinch starts - * @event Viewport#pinch-start - * @type {Viewport} +/** + * fires when a pinch starts + * @event Viewport#pinch-start + * @type {Viewport} */ -/** - * fires when a pinch end - * @event Viewport#pinch-end - * @type {Viewport} +/** + * fires when a pinch end + * @event Viewport#pinch-end + * @type {Viewport} */ -/** - * fires when a snap starts - * @event Viewport#snap-start - * @type {Viewport} +/** + * fires when a snap starts + * @event Viewport#snap-start + * @type {Viewport} */ -/** - * fires when a snap ends - * @event Viewport#snap-end - * @type {Viewport} +/** + * fires when a snap ends + * @event Viewport#snap-end + * @type {Viewport} */ -/** - * fires when a snap-zoom starts - * @event Viewport#snap-zoom-start - * @type {Viewport} +/** + * fires when a snap-zoom starts + * @event Viewport#snap-zoom-start + * @type {Viewport} */ -/** - * fires when a snap-zoom ends - * @event Viewport#snap-zoom-end - * @type {Viewport} +/** + * fires when a snap-zoom ends + * @event Viewport#snap-zoom-end + * @type {Viewport} */ -/** - * fires when a bounce starts in the x direction - * @event Viewport#bounce-x-start - * @type {Viewport} +/** + * fires when a bounce starts in the x direction + * @event Viewport#bounce-x-start + * @type {Viewport} */ -/** - * fires when a bounce ends in the x direction - * @event Viewport#bounce-x-end - * @type {Viewport} +/** + * fires when a bounce ends in the x direction + * @event Viewport#bounce-x-end + * @type {Viewport} */ -/** - * fires when a bounce starts in the y direction - * @event Viewport#bounce-y-start - * @type {Viewport} +/** + * fires when a bounce starts in the y direction + * @event Viewport#bounce-y-start + * @type {Viewport} */ -/** - * fires when a bounce ends in the y direction - * @event Viewport#bounce-y-end - * @type {Viewport} +/** + * fires when a bounce ends in the y direction + * @event Viewport#bounce-y-end + * @type {Viewport} */ -/** - * fires when for a mouse wheel event - * @event Viewport#wheel - * @type {object} - * @property {object} wheel - * @property {number} wheel.dx - * @property {number} wheel.dy - * @property {number} wheel.dz - * @property {Viewport} viewport +/** + * fires when for a mouse wheel event + * @event Viewport#wheel + * @type {object} + * @property {object} wheel + * @property {number} wheel.dx + * @property {number} wheel.dy + * @property {number} wheel.dz + * @property {Viewport} viewport */ -/** - * fires when a wheel-scroll occurs - * @event Viewport#wheel-scroll - * @type {Viewport} +/** + * fires when a wheel-scroll occurs + * @event Viewport#wheel-scroll + * @type {Viewport} */ -/** - * fires when a mouse-edge starts to scroll - * @event Viewport#mouse-edge-start - * @type {Viewport} +/** + * fires when a mouse-edge starts to scroll + * @event Viewport#mouse-edge-start + * @type {Viewport} */ -/** - * fires when the mouse-edge scrolling ends - * @event Viewport#mouse-edge-end - * @type {Viewport} +/** + * fires when the mouse-edge scrolling ends + * @event Viewport#mouse-edge-end + * @type {Viewport} */ -/** - * fires when viewport moves through UI interaction, deceleration, or follow - * @event Viewport#moved - * @type {object} - * @property {Viewport} viewport - * @property {string} type (drag, snap, pinch, follow, bounce-x, bounce-y, clamp-x, clamp-y, decelerate, mouse-edges, wheel) +/** + * fires when viewport moves through UI interaction, deceleration, or follow + * @event Viewport#moved + * @type {object} + * @property {Viewport} viewport + * @property {string} type (drag, snap, pinch, follow, bounce-x, bounce-y, clamp-x, clamp-y, decelerate, mouse-edges, wheel) */ -/** - * fires when viewport moves through UI interaction, deceleration, or follow - * @event Viewport#zoomed - * @type {object} - * @property {Viewport} viewport - * @property {string} type (drag-zoom, pinch, wheel, clamp-zoom) +/** + * fires when viewport moves through UI interaction, deceleration, or follow + * @event Viewport#zoomed + * @type {object} + * @property {Viewport} viewport + * @property {string} type (drag-zoom, pinch, wheel, clamp-zoom) */ PIXI.extras.Viewport = Viewport; @@ -81908,15 +81940,15 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Wheel, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {number} [options.percent=0.1] percent to scroll with each spin - * @param {boolean} [options.reverse] reverse the direction of the scroll - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of current mouse position - * - * @event wheel({wheel: {dx, dy, dz}, event, viewport}) + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {number} [options.percent=0.1] percent to scroll with each spin + * @param {boolean} [options.reverse] reverse the direction of the scroll + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of current mouse position + * + * @event wheel({wheel: {dx, dy, dz}, event, viewport}) */ function Wheel(parent, options) { _classCallCheck(this, Wheel); diff --git a/dist/iwmlib.3rdparty.min.js b/dist/iwmlib.3rdparty.min.js index 51e6acb..87b51a0 100644 --- a/dist/iwmlib.3rdparty.min.js +++ b/dist/iwmlib.3rdparty.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.OptimalSelect=e():t.OptimalSelect=e()}(this,function(){return function(r){var i={};function n(t){if(i[t])return i[t].exports;var e=i[t]={i:t,l:!1,exports:{}};return r[t].call(e.exports,e,e.exports,n),e.l=!0,e.exports}return n.m=r,n.c=i,n.i=function(t){return t},n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=6)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.convertNodeList=function(t){for(var e=t.length,r=new Array(e),i=0;i@~]/g,"\\$&").replace(/\n/g,"A")}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCommonAncestor=function(t){var e=(1 /g,">").split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);if(i.length<2)return f("",t,"",e);var n=[i.pop()];for(;1/g,"> ").trim()};var i,n=r(3),h=(i=n)&&i.__esModule?i:{default:i},c=r(0);function f(r,i,n,o){if(r.length&&(r+=" "),n.length&&(n=" "+n),/\[*\]/.test(i)){var t=i.replace(/=.*$/,"]"),a=""+r+t+n;if(g(document.querySelectorAll(a),o))i=t;else for(var s=document.querySelectorAll(""+r+t),e=function(){var e=s[l];if(o.some(function(t){return e.contains(t)})){var t=e.tagName.toLowerCase();return a=""+r+t+n,g(document.querySelectorAll(a),o)&&(i=t),"break"}},l=0,u=s.length;l/.test(i)){var h=i.replace(/>/,"");a=""+r+h+n;g(document.querySelectorAll(a),o)&&(i=h)}if(/:nth-child/.test(i)){var c=i.replace(/nth-child/g,"nth-of-type");a=""+r+c+n;g(document.querySelectorAll(a),o)&&(i=c)}if(/\.\S+\.\S+/.test(i)){for(var f=i.trim().split(".").slice(1).map(function(t){return"."+t}).sort(function(t,e){return t.length-e.length});f.length;){var p=i.replace(f.shift(),"").trim();if(!(a=(""+r+p+n).trim()).length||">"===a.charAt(0)||">"===a.charAt(a.length-1))break;g(document.querySelectorAll(a),o)&&(i=p)}if((f=i&&i.match(/\./g))&&2/.test(s):u=function(e){return function(t){return t(e.parent)&&e.parent}};break;case/^\./.test(s):var r=s.substr(1).split(".");l=function(t){var e=t.attribs.class;return e&&r.every(function(t){return-1)(\S)/g,"$1 $2").trim()),e=i.shift(),n=i.length;return e(this).filter(function(t){for(var e=0;e\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",r=o.console&&(o.console.warn||o.console.log);return r&&r.call(o.console,n,e),i.apply(this,arguments)}}a="function"!=typeof Object.assign?function(t){if(t===c||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),r=1;re[r]}):i.sort()),i}function E(t,e){for(var r,i,n=e[0].toUpperCase()+e.slice(1),o=0;of(u.y)?u.x:u.y,e.scale=a?function(t,e){return it(e[0],e[1],J)/it(t[0],t[1],J)}(a.pointers,i):1,e.rotation=a?function(t,e){return nt(e[1],e[0],J)+nt(t[1],t[0],J)}(a.pointers,i):0,e.maxPointers=r.prevInput?e.pointers.length>r.prevInput.maxPointers?e.pointers.length:r.prevInput.maxPointers:e.pointers.length,function(t,e){var r,i,n,o,a=t.lastInterval||e,s=e.timeStamp-a.timeStamp;if(e.eventType!=B&&(jf(h.y)?h.x:h.y,o=rt(l,u),t.lastInterval=e}else r=a.velocity,i=a.velocityX,n=a.velocityY,o=a.direction;e.velocity=r,e.velocityX=i,e.velocityY=n,e.direction=o}(r,e);var h=t.element;T(e.srcEvent.target,h)&&(h=e.srcEvent.target);e.target=h}(t,r),t.emit("hammer.input",r),t.recognize(r),t.session.prevInput=r}function $(t){for(var e=[],r=0;r=f(e)?t<0?X:H:e<0?q:W}function it(t,e,r){r||(r=Z);var i=e[r[0]]-t[r[0]],n=e[r[1]]-t[r[1]];return Math.sqrt(i*i+n*n)}function nt(t,e,r){r||(r=Z);var i=e[r[0]]-t[r[0]],n=e[r[1]]-t[r[1]];return 180*Math.atan2(n,i)/Math.PI}K.prototype={handler:function(){},init:function(){this.evEl&&x(this.element,this.evEl,this.domHandler),this.evTarget&&x(this.target,this.evTarget,this.domHandler),this.evWin&&x(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&w(this.element,this.evEl,this.domHandler),this.evTarget&&w(this.target,this.evTarget,this.domHandler),this.evWin&&w(O(this.element),this.evWin,this.domHandler)}};var ot={mousedown:L,mousemove:2,mouseup:N},at="mousedown",st="mousemove mouseup";function lt(){this.evEl=at,this.evWin=st,this.pressed=!1,K.apply(this,arguments)}v(lt,K,{handler:function(t){var e=ot[t.type];e&L&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=N),this.pressed&&(e&N&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:F,srcEvent:t}))}});var ut={pointerdown:L,pointermove:2,pointerup:N,pointercancel:B,pointerout:B},ht={2:R,3:"pen",4:F,5:"kinect"},ct="pointerdown",ft="pointermove pointerup pointercancel";function pt(){this.evEl=ct,this.evWin=ft,K.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ct="MSPointerDown",ft="MSPointerMove MSPointerUp MSPointerCancel"),v(pt,K,{handler:function(t){var e=this.store,r=!1,i=t.type.toLowerCase().replace("ms",""),n=ut[i],o=ht[t.pointerType]||t.pointerType,a=o==R,s=P(e,t.pointerId,"pointerId");n&L&&(0===t.button||a)?s<0&&(e.push(t),s=e.length-1):n&(N|B)&&(r=!0),s<0||(e[s]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),r&&e.splice(s,1))}});var dt={touchstart:L,touchmove:2,touchend:N,touchcancel:B};function mt(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,K.apply(this,arguments)}v(mt,K,{handler:function(t){var e=dt[t.type];if(e===L&&(this.started=!0),this.started){var r=function(t,e){var r=C(t.touches),i=C(t.changedTouches);e&(N|B)&&(r=A(r.concat(i),"identifier",!0));return[r,i]}.call(this,t,e);e&(N|B)&&r[0].length-r[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:r[0],changedPointers:r[1],pointerType:R,srcEvent:t})}}});var gt={touchstart:L,touchmove:2,touchend:N,touchcancel:B},vt="touchstart touchmove touchend touchcancel";function _t(){this.evTarget=vt,this.targetIds={},K.apply(this,arguments)}v(_t,K,{handler:function(t){var e=gt[t.type],r=function(t,e){var r=C(t.touches),i=this.targetIds;if(e&(2|L)&&1===r.length)return i[r[0].identifier]=!0,[r,r];var n,o,a=C(t.changedTouches),s=[],l=this.target;if(o=r.filter(function(t){return T(t.target,l)}),e===L)for(n=0;ne.threshold&&n&e.direction},attrTest:function(t){return Ft.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=zt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),v(Lt,Ft,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Pt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),v(Nt,Mt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(t){var e=this.options,r=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!r||t.eventType&(N|B)&&!n)this.reset();else if(t.eventType&L)this.reset(),this._timer=u(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&N)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&N?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=p(),this.manager.emit(this.options.event,this._input)))}}),v(Bt,Ft,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Pt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),v(Ut,Ft,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:G|V,pointers:1},getTouchAction:function(){return jt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,r=this.options.direction;return r&(G|V)?e=t.overallVelocity:r&G?e=t.overallVelocityX:r&V&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&r&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&f(e)>this.options.velocity&&t.eventType&N},emit:function(t){var e=zt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),v(Xt,Mt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[St]},process:function(t){var e=this.options,r=t.pointers.length===e.pointers,i=t.distance80*r){i=o=t[0],n=a=t[1];for(var d=r;do.x?n.x>a.x?n.x:a.x:o.x>a.x?o.x:a.x,h=n.y>o.y?n.y>a.y?n.y:a.y:o.y>a.y?o.y:a.y,c=E(s,l,e,r,i),f=E(u,h,e,r,i),p=t.prevZ,d=t.nextZ;p&&p.z>=c&&d&&d.z<=f;){if(p!==t.prev&&p!==t.next&&O(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&0<=M(p.prev,p,p.next))return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&O(n.x,n.y,o.x,o.y,a.x,a.y,d.x,d.y)&&0<=M(d.prev,d,d.next))return!1;d=d.nextZ}for(;p&&p.z>=c;){if(p!==t.prev&&p!==t.next&&O(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&0<=M(p.prev,p,p.next))return!1;p=p.prevZ}for(;d&&d.z<=f;){if(d!==t.prev&&d!==t.next&&O(n.x,n.y,o.x,o.y,a.x,a.y,d.x,d.y)&&0<=M(d.prev,d,d.next))return!1;d=d.nextZ}return!0}function k(t,e,r){var i=t;do{var n=i.prev,o=i.next.next;!z(n,o)&&R(n,i,i.next,o)&&L(n,o)&&L(o,n)&&(e.push(n.i/r),e.push(i.i/r),e.push(o.i/r),U(i),U(i.next),i=t=o),i=i.next}while(i!==t);return b(i)}function S(t,e,r,i,n,o){var a,s,l=t;do{for(var u=l.next.next;u!==l.prev;){if(l.i!==u.i&&(s=u,(a=l).next.i!==s.i&&a.prev.i!==s.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&R(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(a,s)&&(L(a,s)&&L(s,a)&&function(t,e){var r=t,i=!1,n=(t.x+e.x)/2,o=(t.y+e.y)/2;for(;r.y>o!=r.next.y>o&&r.next.y!==r.y&&n<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next,r!==t;);return i}(a,s)&&(M(a.prev,a,s.prev)||M(a,s.prev,s))||z(a,s)&&0=i.next.y&&i.next.y!==i.y){var s=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&a=i.x&&i.x>=h&&n!==i.x&&O(or.x||i.x===r.x&&(d=i,M((p=r).prev,p,d.prev)<0&&M(d.next,p,p.next)<0)))&&(r=i,f=l)),i=i.next,i!==u;);var p,d;return r}(t,e)){var r=N(e,t);b(r,r.next)}}function E(t,e,r,i,n){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*n)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*n)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function I(t){for(var e=t,r=t;(e.x=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function j(t){return 0= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=_-y,k=Math.floor,S=String.fromCharCode;function P(t){throw RangeError(c[t])}function p(t,e){for(var r=t.length,i=[];r--;)i[r]=e(t[r]);return i}function d(t,e){var r=t.split("@"),i="";return 1>>10&1023|55296),t=56320|1023&t),e+=S(t)}).join("")}function E(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function I(t,e,r){var i=0;for(t=r?k(t/s):t>>1,t+=k(t/e);f*b>>1k((v-d)/a))&&P("overflow"),d+=l*a,!(l<(u=s<=g?y:g+b<=s?b:s-g));s+=_)a>k(v/(h=_-u))&&P("overflow"),a*=h;g=I(d-o,e=f.length+1,0==o),k(d/e)>v-m&&P("overflow"),m+=k(d/e),d%=e,f.splice(d++,0,m)}return A(f)}function g(t){var e,r,i,n,o,a,s,l,u,h,c,f,p,d,m,g=[];for(f=(t=C(t)).length,e=w,o=x,a=r=0;ak((v-r)/(p=i+1))&&P("overflow"),r+=(s-e)*p,e=s,a=0;av&&P("overflow"),c==e){for(l=r,u=_;!(l<(h=u<=o?y:o+b<=u?b:u-o));u+=_)m=l-h,d=_-h,g.push(S(E(h+m%d,0))),l=k(m/d);g.push(S(E(l,0))),o=I(r,p,i==n),r=0,++i}++r,++e}return g.join("")}if(n={version:"1.3.2",ucs2:{decode:C,encode:A},decode:m,encode:g,toASCII:function(t){return d(t,function(t){return u.test(t)?"xn--"+g(t):t})},toUnicode:function(t){return d(t,function(t){return l.test(t)?m(t.slice(4).toLowerCase()):t})}},e&&r)if(O.exports==e)r.exports=n;else for(o in n)n.hasOwnProperty(o)&&(e[o]=n[o]);else t.punycode=n}(D)}),W={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}};W.isString,W.isObject,W.isNull,W.isNullOrUndefined;var G=function(t,e,r,i){e=e||"&",r=r||"=";var n={};if("string"!=typeof t||0===t.length)return n;var o=/\+/g;t=t.split(e);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var s,l,u=t.length;0",'"',"`"," ","\r","\n","\t"]),at=["'"].concat(ot),st=["%","/","?",";","#"].concat(at),lt=["/","?","#"],ut=/^[+a-z0-9A-Z_-]{0,63}$/,ht=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,ct={javascript:!0,"javascript:":!0},ft={javascript:!0,"javascript:":!0},pt={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function dt(t,e,r){if(t&&W.isObject(t)&&t instanceof et)return t;var i=new et;return i.parse(t,e,r),i}et.prototype.parse=function(t,e,r){if(!W.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),n=-1!==i&&i>16&255)/255,e[1]=(t>>8&255)/255,e[2]=(255&t)/255,e}function zt(t){return t=t.toString(16),"#"+(t="000000".substr(0,6-t.length)+t)}function Rt(t){return"string"==typeof t&&"#"===t[0]&&(t=t.substr(1)),parseInt(t,16)}var Ft=function(){for(var t=[],e=[],r=0;r<32;r++)e[t[r]=r]=r;t[_t.NORMAL_NPM]=_t.NORMAL,t[_t.ADD_NPM]=_t.ADD,t[_t.SCREEN_NPM]=_t.SCREEN,e[_t.NORMAL]=_t.NORMAL_NPM,e[_t.ADD]=_t.ADD_NPM,e[_t.SCREEN]=_t.SCREEN_NPM;var i=[];return i.push(e),i.push(t),i}();function jt(t,e){return Ft[e?1:0][t]}function Lt(t,e,r,i){return r=r||new Float32Array(4),i||void 0===i?(r[0]=t[0]*e,r[1]=t[1]*e,r[2]=t[2]*e):(r[0]=t[0],r[1]=t[1],r[2]=t[2]),r[3]=e,r}function Nt(t,e){if(1===e)return(255*e<<24)+t;if(0===e)return 0;var r=t>>16&255,i=t>>8&255,n=255&t;return(255*e<<24)+((r=r*e+.5|0)<<16)+((i=i*e+.5|0)<<8)+(n=n*e+.5|0)}function Bt(t,e,r,i){return(r=r||new Float32Array(4))[0]=(t>>16&255)/255,r[1]=(t>>8&255)/255,r[2]=(255&t)/255,(i||void 0===i)&&(r[0]*=e,r[1]*=e,r[2]*=e),r[3]=e,r}function Ut(t,e){void 0===e&&(e=null);var r=6*t;if((e=e||new Uint16Array(r)).length!==r)throw new Error("Out buffer length is incorrect, got "+e.length+" and expected "+r);for(var i=0,n=0;i>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)+1}function Vt(t){return!(t&t-1||!t)}function Yt(t){var e=(65535>>=e))<<3;return e|=r,e|=r=(15<(t>>>=r))<<2,(e|=r=(3<(t>>>=r))<<1)|(t>>>=r)>>1}var Zt={},Jt=Object.create(null),Kt=Object.create(null);function Qt(t){var e,r,i,n=t.width,o=t.height,a=t.getContext("2d"),s=a.getImageData(0,0,n,o).data,l=s.length,u={top:null,left:null,right:null,bottom:null},h=null;for(e=0;e=this.x&&t=this.y&&e=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){if(e>=this.y+this.radius&&e<=this.y+this.height-this.radius||t>=this.x+this.radius&&t<=this.x+this.width-this.radius)return!0;var r=t-(this.x+this.radius),i=e-(this.y+this.radius),n=this.radius*this.radius;if(r*r+i*i<=n)return!0;if((r=t-(this.x+this.width-this.radius))*r+i*i<=n)return!0;if(r*r+(i=e-(this.y+this.height-this.radius))*i<=n)return!0;if((r=t-(this.x+this.radius))*r+i*i<=n)return!0}return!1},P.SORTABLE_CHILDREN=!1;var ze=function(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null};ze.prototype.isEmpty=function(){return this.minX>this.maxX||this.minY>this.maxY},ze.prototype.clear=function(){this.updateID++,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0},ze.prototype.getRectangle=function(t){return this.minX>this.maxX||this.minY>this.maxY?Ce.EMPTY:((t=t||new Ce(0,0,1,1)).x=this.minX,t.y=this.minY,t.width=this.maxX-this.minX,t.height=this.maxY-this.minY,t)},ze.prototype.addPoint=function(t){this.minX=Math.min(this.minX,t.x),this.maxX=Math.max(this.maxX,t.x),this.minY=Math.min(this.minY,t.y),this.maxY=Math.max(this.maxY,t.y)},ze.prototype.addQuad=function(t){var e=this.minX,r=this.minY,i=this.maxX,n=this.maxY,o=t[0],a=t[1];e=oi?t.maxX:i,this.maxY=t.maxY>n?t.maxY:n},ze.prototype.addBoundsMask=function(t,e){var r=t.minX>e.minX?t.minX:e.minX,i=t.minY>e.minY?t.minY:e.minY,n=t.maxXe.x?t.minX:e.x,i=t.minY>e.y?t.minY:e.y,n=t.maxXthis.children.length)throw new Error(t+"addChildAt: The index "+e+" supplied is out of bounds "+this.children.length);return t.parent&&t.parent.removeChild(t),(t.parent=this).sortDirty=!0,t.transform._parentID=-1,this.children.splice(e,0,t),this._boundsID++,this.onChildrenChange(e),t.emit("added",this),this.emit("childAdded",t,this,e),t},t.prototype.swapChildren=function(t,e){if(t!==e){var r=this.getChildIndex(t),i=this.getChildIndex(e);this.children[r]=e,this.children[i]=t,this.onChildrenChange(r=this.children.length)throw new Error("The index "+e+" supplied is out of bounds "+this.children.length);var r=this.getChildIndex(t);Xt(this.children,r,1),this.children.splice(e,0,t),this.onChildrenChange(e)},t.prototype.getChildAt=function(t){if(t<0||t>=this.children.length)throw new Error("getChildAt: Index ("+t+") does not exist.");return this.children[t]},t.prototype.removeChild=function(t){var e=arguments,r=arguments.length;if(1this.renderer.width&&(t.width=this.renderer.width-t.x),t.y+t.height>this.renderer.height&&(t.height=this.renderer.height-t.y)},Ne.prototype.addChild=function(t){var e=this.pool.pop();e||((e=document.createElement("button")).style.width="100px",e.style.height="100px",e.style.backgroundColor=this.debug?"rgba(255,0,0,0.5)":"transparent",e.style.position="absolute",e.style.zIndex=2,e.style.borderStyle="none",-1e.priority){t.connect(r);break}e=(r=e).next}t.previous||t.connect(r)}else t.connect(r);return this._startIfPossible(),this},We.prototype.remove=function(t,e){for(var r=this._head.next;r;)r=r.match(t,e)?r.destroy():r.next;return this._head.next||this._cancelIfNeeded(),this},We.prototype.start=function(){this.started||(this.started=!0,this._requestIfNeeded())},We.prototype.stop=function(){this.started&&(this.started=!1,this._cancelIfNeeded())},We.prototype.destroy=function(){if(!this._protected){this.stop();for(var t=this._head.next;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}},We.prototype.update=function(t){var e;if(void 0===t&&(t=performance.now()),t>this.lastTime){if((e=this.elapsedMS=t-this.lastTime)>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){var r=t-this._lastFrame|0;if(r]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;var lr=function(h){function r(t,e){if(e=e||{},!(t instanceof HTMLVideoElement)){var r=document.createElement("video");r.setAttribute("preload","auto"),r.setAttribute("webkit-playsinline",""),r.setAttribute("playsinline",""),"string"==typeof t&&(t=[t]),h.crossOrigin(r,t[0].src||t[0],e.crossorigin);for(var i=0;ithis.baseTexture.width,a=r+n>this.baseTexture.height;if(o||a){var s=o&&a?"and":"or",l="X: "+e+" + "+i+" = "+(e+i)+" > "+this.baseTexture.width,u="Y: "+r+" + "+n+" = "+(r+n)+" > "+this.baseTexture.height;throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: "+l+" "+s+" "+u)}this.valid=i&&n&&this.baseTexture.valid,this.trim||this.rotate||(this.orig=t),this.valid&&this.updateUvs()},t.rotate.get=function(){return this._rotate},t.rotate.set=function(t){this._rotate=t,this.valid&&this.updateUvs()},t.width.get=function(){return this.orig.width},t.height.get=function(){return this.orig.height},Object.defineProperties(s.prototype,t),s}(m);function yr(t){t.destroy=function(){},t.on=function(){},t.once=function(){},t.emit=function(){}}_r.EMPTY=new _r(new ir),yr(_r.EMPTY),yr(_r.EMPTY.baseTexture),_r.WHITE=function(){var t=document.createElement("canvas");t.width=16,t.height=16;var e=t.getContext("2d");return e.fillStyle="white",e.fillRect(0,0,16,16),new _r(new ir(new or(t)))}(),yr(_r.WHITE),yr(_r.WHITE.baseTexture);var br=function(s){function e(t,e){var r=null;if(!(t instanceof mr)){var i=arguments[1],n=arguments[2],o=arguments[3],a=arguments[4];console.warn("Please use RenderTexture.create("+i+", "+n+") instead of the ctor directly."),r=arguments[0],e=null,t=new mr({width:i,height:n,scaleMode:o,resolution:a})}s.call(this,t,e),this.legacyRenderer=r,this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}return s&&(e.__proto__=s),((e.prototype=Object.create(s&&s.prototype)).constructor=e).prototype.resize=function(t,e,r){void 0===r&&(r=!0),t=Math.ceil(t),e=Math.ceil(e),this.valid=0=gt.WEBGL2&&(r=t.getContext("webgl2",e)),r)this.webGLVersion=2;else if(this.webGLVersion=1,!(r=t.getContext("webgl",e)||t.getContext("experimental-webgl",e)))throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=r,this.getExtensions(),r},t.prototype.getExtensions=function(){var t=this.gl;1===this.webGLVersion?Object.assign(this.extensions,{drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBKIT_WEBGL_depth_texture"),loseContext:t.getExtension("WEBGL_lose_context"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear")}):2===this.webGLVersion&&Object.assign(this.extensions,{anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),colorBufferFloat:t.getExtension("EXT_color_buffer_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear")})},t.prototype.handleContextLost=function(t){t.preventDefault()},t.prototype.handleContextRestored=function(){this.renderer.runners.contextChange.run(this.gl)},t.prototype.destroy=function(){var t=this.renderer.view;t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()},t.prototype.postrender=function(){this.gl.flush()},t.prototype.validateContext=function(t){t.getContextAttributes().stencil||console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly")},Object.defineProperties(t.prototype,r),t}(cr),Ur=function(e){function t(t){e.call(this,t),this.managedFramebuffers=[],this.unknownFramebuffer=new pr(10,10)}e&&(t.__proto__=e);var r={size:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.contextChange=function(){var t=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Ce,this.hasMRT=!0,this.writeDepthTexture=!0,this.disposeAll(!0),1===this.renderer.context.webGLVersion){var e=this.renderer.context.extensions.drawBuffers,r=this.renderer.context.extensions.depthTexture;P.PREFER_ENV===gt.WEBGL_LEGACY&&(r=e=null),e?t.drawBuffers=function(t){return e.drawBuffersWEBGL(t)}:(this.hasMRT=!1,t.drawBuffers=function(){}),r||(this.writeDepthTexture=!1)}},t.prototype.bind=function(t,e){var r=this.gl;if(t){var i=t.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(t);this.current!==t&&(this.current=t,r.bindFramebuffer(r.FRAMEBUFFER,i.framebuffer)),i.dirtyId!==t.dirtyId&&(i.dirtyId=t.dirtyId,i.dirtyFormat!==t.dirtyFormat?(i.dirtyFormat=t.dirtyFormat,this.updateFramebuffer(t)):i.dirtySize!==t.dirtySize&&(i.dirtySize=t.dirtySize,this.resizeFramebuffer(t)));for(var n=0;n=i.data.byteLength)e.bufferSubData(o,0,i.data);else{var a=i.static?e.STATIC_DRAW:e.DYNAMIC_DRAW;n.byteLength=i.data.byteLength,e.bufferData(o,i.data,a)}}}},t.prototype.checkCompatibility=function(t,e){var r=t.attributes,i=e.attributeData;for(var n in i)if(!r[n])throw new Error('shader and geometry incompatible, geometry missing the "'+n+'" attribute')},t.prototype.getSignature=function(t,e){var r=t.attributes,i=e.attributeData,n=["g",t.id];for(var o in r)i[o]&&n.push(o);return n.join("-")},t.prototype.initGeometryVao=function(t,e){this.checkCompatibility(t,e);var r=this.gl,i=this.CONTEXT_UID,n=this.getSignature(t,e),o=t.glVertexArrayObjects[this.CONTEXT_UID],a=o[n];if(a)return o[e.id]=a;var s=t.buffers,l=t.attributes,u={},h={};for(var c in s)u[c]=0,h[c]=0;for(var f in l)!l[f].size&&e.attributeData[f]?l[f].size=e.attributeData[f].size:l[f].size||console.warn("PIXI Geometry attribute '"+f+"' size cannot be determined (likely the bound shader does not have the attribute)"),u[l[f].buffer]+=l[f].size*Hr[l[f].type];for(var p in l){var d=l[p],m=d.size;void 0===d.stride&&(u[d.buffer]===m*Hr[d.type]?d.stride=0:d.stride=u[d.buffer]),void 0===d.start&&(d.start=h[d.buffer],h[d.buffer]+=m*Hr[d.type])}a=r.createVertexArray(),r.bindVertexArray(a);for(var g=0;g=gt.WEBGL2&&(t=e.getContext("webgl2",{})),t||((t=e.getContext("webgl",{})||e.getContext("experimental-webgl",{}))?t.getExtension("WEBGL_draw_buffers"):t=null),Kr=t}return Kr}function $r(t,e,r){if("precision"===t.substring(0,9))return r!==Ct.HIGH&&"precision highp"===t.substring(0,15)?t.replace("precision highp","precision mediump"):t;var i=e;return e===Ct.HIGH&&r!==Ct.HIGH&&(i=Ct.MEDIUM),"precision "+i+" float;\n"+t}var ti={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};var ei=null,ri={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray"};function ii(t,e){if(!ei){var r=Object.keys(ri);ei={};for(var i=0;ie.name?1:-1});for(var h=0;h>=1,r++;this.stateId=t.data}for(var i=0;ithis.checkCountMax&&(this.checkCount=0,this.run()))},t.prototype.run=function(){for(var t=this.renderer.texture,e=t.managedTextures,r=!1,i=0;ithis.maxIdle&&(t.destroyTexture(n,!0),r=!(e[i]=null))}if(r){for(var o=0,a=0;athis.size&&this.flush(),this._vertexCount+=t.vertexData.length/2,this._indexCount+=t.indices.length,this._bufferedElements[this._bufferSize++]=t)},t.prototype.flush=function(){if(0!==this._vertexCount){var t,e,r=this.getAttributeBuffer(this._vertexCount),i=this.getIndexBuffer(this._indexCount),n=this.renderer.gl,o=this._bufferedElements,a=this._drawCalls,s=this.MAX_TEXTURES,l=this._packedGeometries,u=this.vertexSize,h=this.renderer.textureGC.count,c=0,f=0,p=0,d=a[0],m=0,g=-1;d.textureCount=0,d.start=0,d.blend=g;var v,_=++ir._globalBatch;for(v=0;vthis.maxSegments&&(r=this.maxSegments),r}},dn=function(){this.reset()};dn.prototype.clone=function(){var t=new dn;return t.color=this.color,t.alpha=this.alpha,t.texture=this.texture,t.matrix=this.matrix,t.visible=this.visible,t},dn.prototype.reset=function(){this.color=16777215,this.alpha=1,this.texture=_r.WHITE,this.matrix=null,this.visible=!1},dn.prototype.destroy=function(){this.texture=null,this.matrix=null};var mn=function(t,e,r,i){void 0===e&&(e=null),void 0===r&&(r=null),void 0===i&&(i=null),this.shape=t,this.lineStyle=r,this.fillStyle=e,this.matrix=i,this.type=t.type,this.points=[],this.holes=[]};mn.prototype.clone=function(){return new mn(this.shape,this.fillStyle,this.lineStyle,this.matrix)},mn.prototype.destroy=function(){this.shape=null,this.holes.length=0,this.holes=null,this.points.length=0,this.points=null,this.lineStyle=null,this.fillStyle=null};var gn={build:function(t){var e,r,i=t.shape,n=t.points,o=i.x,a=i.y;if(n.length=0,r=t.type===de.CIRC?(e=i.radius,i.radius):(e=i.width,i.height),0!==e&&0!==r){var s=Math.floor(30*Math.sqrt(i.radius))||Math.floor(15*Math.sqrt(i.width+i.height));s/=2.3;for(var l=2*Math.PI/s,u=0;u>16)+(65280&e)+((255&e)<<16),r);0>16&255)/255*n,o.tint[1]=(i>>8&255)/255*n,o.tint[2]=(255&i)/255*n,o.tint[3]=n,t.shader.bind(e),t.geometry.bind(r,e),t.state.set(this.state);for(var s=0,l=a.length;s>16)+(65280&n)+((255&n)<<16)}}},r.prototype.calculateVertices=function(){if(this._transformID!==this.transform._worldID){this._transformID=this.transform._worldID;for(var t=this.transform.worldTransform,e=t.a,r=t.b,i=t.c,n=t.d,o=t.tx,a=t.ty,s=this.geometry.points,l=this.vertexData,u=0,h=0;h=i&&Fn.x=n&&Fn.y>16)+(65280&t)+((255&t)<<16)},t.texture.get=function(){return this._texture},t.texture.set=function(t){this._texture!==t&&(this._texture=t||_r.EMPTY,this._cachedTint=16777215,this._textureID=-1,this._textureTrimmedID=-1,t&&(t.baseTexture.valid?this._onTextureUpdate():t.once("update",this._onTextureUpdate,this)))},Object.defineProperties(i.prototype,t),i}(je),Nn={LINEAR_VERTICAL:0,LINEAR_HORIZONTAL:1},Bn={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:Nn.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100,leading:0},Un=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],Xn=function(t){this.styleID=0,this.reset(),Gn(this,t,t)},Hn={align:{configurable:!0},breakWords:{configurable:!0},dropShadow:{configurable:!0},dropShadowAlpha:{configurable:!0},dropShadowAngle:{configurable:!0},dropShadowBlur:{configurable:!0},dropShadowColor:{configurable:!0},dropShadowDistance:{configurable:!0},fill:{configurable:!0},fillGradientType:{configurable:!0},fillGradientStops:{configurable:!0},fontFamily:{configurable:!0},fontSize:{configurable:!0},fontStyle:{configurable:!0},fontVariant:{configurable:!0},fontWeight:{configurable:!0},letterSpacing:{configurable:!0},lineHeight:{configurable:!0},leading:{configurable:!0},lineJoin:{configurable:!0},miterLimit:{configurable:!0},padding:{configurable:!0},stroke:{configurable:!0},strokeThickness:{configurable:!0},textBaseline:{configurable:!0},trim:{configurable:!0},whiteSpace:{configurable:!0},wordWrap:{configurable:!0},wordWrapWidth:{configurable:!0}};function qn(t){return"number"==typeof t?zt(t):("string"==typeof t&&0===t.indexOf("0x")&&(t=t.replace("0x","#")),t)}function Wn(t){if(Array.isArray(t)){for(var e=0;e>2,n[1]=(3&i[0])<<4|i[1]>>4,n[2]=(15&i[1])<<2|i[2]>>6,n[3]=63&i[2],r-(t.length-1)){case 2:n[3]=64,n[2]=64;break;case 1:n[3]=64}for(var a=0;a=a.length&&a.push(this._generateOneMoreBuffer(t));var d=a[f];d.uploadDynamic(e,c,p);var m=t._bufferUpdateIDs[f]||0;(h=h||d._updateID=i&&Yo.x=n&&Yo.ys&&(Xt(i,1+f-++d,1+g-f),g=f,f=-1,n.push(p),h=Math.max(h,p),c++,r.x=0,r.y+=t.lineHeight,l=null))}else n.push(u),h=Math.max(h,u),++c,++d,r.x=0,r.y+=t.lineHeight,l=null}var b=o.charAt(o.length-1);"\r"!==b&&"\n"!==b&&(/(?:\s)/.test(b)&&(u=p),n.push(u),h=Math.max(h,u));for(var x=[],w=0;w<=c;w++){var T=0;"right"===this._font.align?T=h-n[w]:"center"===this._font.align&&(T=(h-n[w])/2),x.push(T)}for(var k=i.length,S=this.tint,P=0;P 0.0) {\n c.rgb /= c.a;\n }\n\n vec4 result;\n\n result.r = (m[0] * c.r);\n result.r += (m[1] * c.g);\n result.r += (m[2] * c.b);\n result.r += (m[3] * c.a);\n result.r += m[4];\n\n result.g = (m[5] * c.r);\n result.g += (m[6] * c.g);\n result.g += (m[7] * c.b);\n result.g += (m[8] * c.a);\n result.g += m[9];\n\n result.b = (m[10] * c.r);\n result.b += (m[11] * c.g);\n result.b += (m[12] * c.b);\n result.b += (m[13] * c.a);\n result.b += m[14];\n\n result.a = (m[15] * c.r);\n result.a += (m[16] * c.g);\n result.a += (m[17] * c.b);\n result.a += (m[18] * c.a);\n result.a += m[19];\n\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n gl_FragColor = vec4(rgb, result.a);\n}\n",t),this.alpha=1}e&&(t.__proto__=e);var r={matrix:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype._loadMatrix=function(t,e){void 0===e&&(e=!1);var r=t;e&&(this._multiply(r,this.uniforms.m,t),r=this._colorMatrix(r)),this.uniforms.m=r},t.prototype._multiply=function(t,e,r){return t[0]=e[0]*r[0]+e[1]*r[5]+e[2]*r[10]+e[3]*r[15],t[1]=e[0]*r[1]+e[1]*r[6]+e[2]*r[11]+e[3]*r[16],t[2]=e[0]*r[2]+e[1]*r[7]+e[2]*r[12]+e[3]*r[17],t[3]=e[0]*r[3]+e[1]*r[8]+e[2]*r[13]+e[3]*r[18],t[4]=e[0]*r[4]+e[1]*r[9]+e[2]*r[14]+e[3]*r[19]+e[4],t[5]=e[5]*r[0]+e[6]*r[5]+e[7]*r[10]+e[8]*r[15],t[6]=e[5]*r[1]+e[6]*r[6]+e[7]*r[11]+e[8]*r[16],t[7]=e[5]*r[2]+e[6]*r[7]+e[7]*r[12]+e[8]*r[17],t[8]=e[5]*r[3]+e[6]*r[8]+e[7]*r[13]+e[8]*r[18],t[9]=e[5]*r[4]+e[6]*r[9]+e[7]*r[14]+e[8]*r[19]+e[9],t[10]=e[10]*r[0]+e[11]*r[5]+e[12]*r[10]+e[13]*r[15],t[11]=e[10]*r[1]+e[11]*r[6]+e[12]*r[11]+e[13]*r[16],t[12]=e[10]*r[2]+e[11]*r[7]+e[12]*r[12]+e[13]*r[17],t[13]=e[10]*r[3]+e[11]*r[8]+e[12]*r[13]+e[13]*r[18],t[14]=e[10]*r[4]+e[11]*r[9]+e[12]*r[14]+e[13]*r[19]+e[14],t[15]=e[15]*r[0]+e[16]*r[5]+e[17]*r[10]+e[18]*r[15],t[16]=e[15]*r[1]+e[16]*r[6]+e[17]*r[11]+e[18]*r[16],t[17]=e[15]*r[2]+e[16]*r[7]+e[17]*r[12]+e[18]*r[17],t[18]=e[15]*r[3]+e[16]*r[8]+e[17]*r[13]+e[18]*r[18],t[19]=e[15]*r[4]+e[16]*r[9]+e[17]*r[14]+e[18]*r[19]+e[19],t},t.prototype._colorMatrix=function(t){var e=new Float32Array(t);return e[4]/=255,e[9]/=255,e[14]/=255,e[19]/=255,e},t.prototype.brightness=function(t,e){var r=[t,0,0,0,0,0,t,0,0,0,0,0,t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.greyscale=function(t,e){var r=[t,t,t,0,0,t,t,t,0,0,t,t,t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.blackAndWhite=function(t){this._loadMatrix([.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0],t)},t.prototype.hue=function(t,e){t=(t||0)/180*Math.PI;var r=Math.cos(t),i=Math.sin(t),n=(0,Math.sqrt)(1/3),o=[r+1/3*(1-r),1/3*(1-r)-n*i,1/3*(1-r)+n*i,0,0,1/3*(1-r)+n*i,r+1/3*(1-r),1/3*(1-r)-n*i,0,0,1/3*(1-r)-n*i,1/3*(1-r)+n*i,r+1/3*(1-r),0,0,0,0,0,1,0];this._loadMatrix(o,e)},t.prototype.contrast=function(t,e){var r=(t||0)+1,i=-.5*(r-1),n=[r,0,0,0,i,0,r,0,0,i,0,0,r,0,i,0,0,0,1,0];this._loadMatrix(n,e)},t.prototype.saturate=function(t,e){void 0===t&&(t=0);var r=2*t/3+1,i=-.5*(r-1),n=[r,i,i,0,0,i,r,i,0,0,i,i,r,0,0,0,0,0,1,0];this._loadMatrix(n,e)},t.prototype.desaturate=function(){this.saturate(-1)},t.prototype.negative=function(t){this._loadMatrix([-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0],t)},t.prototype.sepia=function(t){this._loadMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0],t)},t.prototype.technicolor=function(t){this._loadMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0],t)},t.prototype.polaroid=function(t){this._loadMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],t)},t.prototype.toBGR=function(t){this._loadMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0],t)},t.prototype.kodachrome=function(t){this._loadMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0],t)},t.prototype.browni=function(t){this._loadMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0],t)},t.prototype.vintage=function(t){this._loadMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0],t)},t.prototype.colorTone=function(t,e,r,i,n){var o=((r=r||16770432)>>16&255)/255,a=(r>>8&255)/255,s=(255&r)/255,l=((i=i||3375104)>>16&255)/255,u=(i>>8&255)/255,h=(255&i)/255,c=[.3,.59,.11,0,0,o,a,s,t=t||.2,0,l,u,h,e=e||.15,0,o-l,a-u,s-h,0,0];this._loadMatrix(c,n)},t.prototype.night=function(t,e){var r=[-2*(t=t||.1),-t,0,0,0,-t,0,t,0,0,0,t,2*t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.predator=function(t,e){var r=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.lsd=function(t){this._loadMatrix([2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0],t)},t.prototype.reset=function(){this._loadMatrix([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],!1)},r.matrix.get=function(){return this.uniforms.m},r.matrix.set=function(t){this.uniforms.m=t},r.alpha.get=function(){return this.uniforms.uAlpha},r.alpha.set=function(t){this.uniforms.uAlpha=t},Object.defineProperties(t.prototype,r),t}(_i);sa.prototype.grayscale=sa.prototype.greyscale;var la=function(i){function t(t,e){var r=new me;t.renderable=!1,i.call(this,"attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\n}\n","varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n vec4 map = texture2D(mapSampler, vFilterCoord);\n\n map -= 0.5;\n map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n",{mapSampler:t._texture,filterMatrix:r,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=t,this.maskMatrix=r,null==e&&(e=20),this.scale=new le(e,e)}i&&(t.__proto__=i);var e={map:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.filterMatrix=t.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;var n=this.maskSprite.transform.worldTransform,o=Math.sqrt(n.a*n.a+n.b*n.b),a=Math.sqrt(n.c*n.c+n.d*n.d);0!==o&&0!==a&&(this.uniforms.rotation[0]=n.a/o,this.uniforms.rotation[1]=n.b/o,this.uniforms.rotation[2]=n.c/a,this.uniforms.rotation[3]=n.d/a),t.applyFilter(this,e,r,i)},e.map.get=function(){return this.uniforms.mapSampler},e.map.set=function(t){this.uniforms.mapSampler=t},Object.defineProperties(t.prototype,e),t}(_i),ua=function(t){function e(){t.call(this,"\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputPixel;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n gl_Position = filterVertexPosition();\n\n vFragCoord = aVertexPosition * outputFrame.zw;\n\n texcoords(vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n",'varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputPixel;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it\'s\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\nvoid main() {\n\n vec4 color;\n\n color = fxaa(uSampler, vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n gl_FragColor = color;\n}\n')}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e}(_i),ha=function(r){function t(t,e){void 0===t&&(t=.5),void 0===e&&(e=Math.random()),r.call(this,Ui,"precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * uSeed);\n float diff = (randomValue - 0.5) * uNoise;\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n // Premultiply alpha again.\n color.rgb *= color.a;\n\n gl_FragColor = color;\n}\n",{uNoise:0,uSeed:0}),this.noise=t,this.seed=e}r&&(t.__proto__=r),(t.prototype=Object.create(r&&r.prototype)).constructor=t;var e={noise:{configurable:!0},seed:{configurable:!0}};return e.noise.get=function(){return this.uniforms.uNoise},e.noise.set=function(t){this.uniforms.uNoise=t},e.seed.get=function(){return this.uniforms.uSeed},e.seed.set=function(t){this.uniforms.uSeed=t},Object.defineProperties(t.prototype,e),t}(_i),ca=new me;Re.prototype._cacheAsBitmap=!1,Re.prototype._cacheData=!1;var fa=function(){this.textureCacheId=null,this.originalRender=null,this.originalRenderCanvas=null,this.originalCalculateBounds=null,this.originalGetLocalBounds=null,this.originalUpdateTransform=null,this.originalHitTest=null,this.originalDestroy=null,this.originalMask=null,this.originalFilterArea=null,this.sprite=null};Object.defineProperties(Re.prototype,{cacheAsBitmap:{get:function(){return this._cacheAsBitmap},set:function(t){var e;this._cacheAsBitmap!==t&&((this._cacheAsBitmap=t)?(this._cacheData||(this._cacheData=new fa),(e=this._cacheData).originalRender=this.render,e.originalRenderCanvas=this.renderCanvas,e.originalUpdateTransform=this.updateTransform,e.originalCalculateBounds=this.calculateBounds,e.originalGetLocalBounds=this.getLocalBounds,e.originalDestroy=this.destroy,e.originalContainsPoint=this.containsPoint,e.originalMask=this._mask,e.originalFilterArea=this.filterArea,this.render=this._renderCached,this.renderCanvas=this._renderCachedCanvas,this.destroy=this._cacheAsBitmapDestroy):((e=this._cacheData).sprite&&this._destroyCachedDisplayObject(),this.render=e.originalRender,this.renderCanvas=e.originalRenderCanvas,this.calculateBounds=e.originalCalculateBounds,this.getLocalBounds=e.originalGetLocalBounds,this.destroy=e.originalDestroy,this.updateTransform=e.originalUpdateTransform,this.containsPoint=e.originalContainsPoint,this._mask=e.originalMask,this.filterArea=e.originalFilterArea))}}}),Re.prototype._renderCached=function(t){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObject(t),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._render(t))},Re.prototype._initCachedDisplayObject=function(t){if(!this._cacheData||!this._cacheData.sprite){var e=this.alpha;this.alpha=1,t.batch.flush();var r=this.getLocalBounds().clone();if(this.filters){var i=this.filters[0].padding;r.pad(i)}r.ceil(P.RESOLUTION);var n=t.renderTexture.current,o=t.renderTexture.sourceFrame,a=t.projection.transform,s=br.create(r.width,r.height),l="cacheAsBitmap_"+qt();this._cacheData.textureCacheId=l,ir.addToCache(s.baseTexture,l),_r.addToCache(s,l);var u=ca;u.tx=-r.x,u.ty=-r.y,this.transform.worldTransform.identity(),this.render=this._cacheData.originalRender,t.render(this,s,!0,u,!0),t.projection.transform=a,t.renderTexture.bind(n,o),this.render=this._renderCached,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null;var h=new Ln(s);h.transform.worldTransform=this.transform.worldTransform,h.anchor.x=-r.x/r.width,h.anchor.y=-r.y/r.height,h.alpha=e,h._bounds=this._bounds,this._cacheData.sprite=h,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=t._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=h.containsPoint.bind(h)}},Re.prototype._renderCachedCanvas=function(t){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObjectCanvas(t),this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._renderCanvas(t))},Re.prototype._initCachedDisplayObjectCanvas=function(t){if(!this._cacheData||!this._cacheData.sprite){var e=this.getLocalBounds(),r=this.alpha;this.alpha=1;var i=t.context;e.ceil(P.RESOLUTION);var n=br.create(e.width,e.height),o="cacheAsBitmap_"+qt();this._cacheData.textureCacheId=o,ir.addToCache(n.baseTexture,o),_r.addToCache(n,o);var a=ca;this.transform.localTransform.copyTo(a),a.invert(),a.tx-=e.x,a.ty-=e.y,this.renderCanvas=this._cacheData.originalRenderCanvas,t.render(this,n,!0,a,!1),t.context=i,this.renderCanvas=this._renderCachedCanvas,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null;var s=new Ln(n);s.transform.worldTransform=this.transform.worldTransform,s.anchor.x=-e.x/e.width,s.anchor.y=-e.y/e.height,s.alpha=r,s._bounds=this._bounds,this._cacheData.sprite=s,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=t._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=s.containsPoint.bind(s)}},Re.prototype._calculateCachedBounds=function(){this._bounds.clear(),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite._calculateBounds(),this._lastBoundsID=this._boundsID},Re.prototype._getCachedLocalBounds=function(){return this._cacheData.sprite.getLocalBounds()},Re.prototype._destroyCachedDisplayObject=function(){this._cacheData.sprite._texture.destroy(!0),this._cacheData.sprite=null,ir.removeFromCache(this._cacheData.textureCacheId),_r.removeFromCache(this._cacheData.textureCacheId),this._cacheData.textureCacheId=null},Re.prototype._cacheAsBitmapDestroy=function(t){this.cacheAsBitmap=!1,this.destroy(t)},Re.prototype.name=null,je.prototype.getChildByName=function(t){for(var e=0;e>16)+(65280&t)+((255&t)<<16),this._colorDirty=!0)},e.tint.get=function(){return this._tint},t.prototype.update=function(){if(this._colorDirty){this._colorDirty=!1;var t=this.texture.baseTexture;Bt(this._tint,this._alpha,this.uniforms.uColor,t.premultiplyAlpha)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)},Object.defineProperties(t.prototype,e),t}(di),ya=function(a){function t(t,e,r){a.call(this);var i=new kr(t),n=new kr(e,!0),o=new kr(r,!0,!0);this.addAttribute("aVertexPosition",i,2,!1,wt.FLOAT).addAttribute("aTextureCoord",n,2,!1,wt.FLOAT).addIndex(o),this._updateId=-1}a&&(t.__proto__=a),(t.prototype=Object.create(a&&a.prototype)).constructor=t;var e={vertexDirtyId:{configurable:!0}};return e.vertexDirtyId.get=function(){return this.buffers[0]._updateID},Object.defineProperties(t.prototype,e),t}(Ir),ba=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=100),void 0===r&&(r=10),void 0===i&&(i=10),n.call(this),this.segWidth=r,this.segHeight=i,this.width=t,this.height=e,this.build()}return n&&(t.__proto__=n),((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.build=function(){for(var t=this.segWidth*this.segHeight,e=[],r=[],i=[],n=this.segWidth-1,o=this.segHeight-1,a=this.width/n,s=this.height/o,l=0;le?1:this._height/e;t[9]=t[11]=t[13]=t[15]=this._topHeight*r,t[17]=t[19]=t[21]=t[23]=this._height-this._bottomHeight*r,t[25]=t[27]=t[29]=t[31]=this._height},t.prototype.updateVerticalVertices=function(){var t=this.vertices,e=this._leftWidth+this._rightWidth,r=this._width>e?1:this._width/e;t[2]=t[10]=t[18]=t[26]=this._leftWidth*r,t[4]=t[12]=t[20]=t[28]=this._width-this._rightWidth*r,t[6]=t[14]=t[22]=t[30]=this._width},e.width.get=function(){return this._width},e.width.set=function(t){this._width=t,this._refresh()},e.height.get=function(){return this._height},e.height.set=function(t){this._height=t,this._refresh()},e.leftWidth.get=function(){return this._leftWidth},e.leftWidth.set=function(t){this._leftWidth=t,this._refresh()},e.rightWidth.get=function(){return this._rightWidth},e.rightWidth.set=function(t){this._rightWidth=t,this._refresh()},e.topHeight.get=function(){return this._topHeight},e.topHeight.set=function(t){this._topHeight=t,this._refresh()},e.bottomHeight.get=function(){return this._bottomHeight},e.bottomHeight.set=function(t){this._bottomHeight=t,this._refresh()},t.prototype._refresh=function(){var t=this.texture,e=this.geometry.buffers[1].data;this._origWidth=t.orig.width,this._origHeight=t.orig.height;var r=1/this._origWidth,i=1/this._origHeight;e[0]=e[8]=e[16]=e[24]=0,e[1]=e[3]=e[5]=e[7]=0,e[6]=e[14]=e[22]=e[30]=1,e[25]=e[27]=e[29]=e[31]=1,e[2]=e[10]=e[18]=e[26]=r*this._leftWidth,e[4]=e[12]=e[20]=e[28]=1-r*this._rightWidth,e[9]=e[11]=e[13]=e[15]=i*this._topHeight,e[17]=e[19]=e[21]=e[23]=1-i*this._bottomHeight,this.updateHorizontalVertices(),this.updateVerticalVertices(),this.geometry.buffers[0].update(),this.geometry.buffers[1].update()},Object.defineProperties(t.prototype,e),t}(Ta),Pa=function(r){function i(t,e){r.call(this,t[0]instanceof _r?t[0]:t[0].texture),this._textures=null,this._durations=null,this.textures=t,this._autoUpdate=!1!==e,this.animationSpeed=1,this.loop=!0,this.updateAnchor=!1,this.onComplete=null,this.onFrameChange=null,this.onLoop=null,this._currentTime=0,this.playing=!1}r&&(i.__proto__=r);var t={totalFrames:{configurable:!0},textures:{configurable:!0},currentFrame:{configurable:!0}};return((i.prototype=Object.create(r&&r.prototype)).constructor=i).prototype.stop=function(){this.playing&&(this.playing=!1,this._autoUpdate&&We.shared.remove(this.update,this))},i.prototype.play=function(){this.playing||(this.playing=!0,this._autoUpdate&&We.shared.add(this.update,this,He.HIGH))},i.prototype.gotoAndStop=function(t){this.stop();var e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()},i.prototype.gotoAndPlay=function(t){var e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture(),this.play()},i.prototype.update=function(t){var e=this.animationSpeed*t,r=this.currentFrame;if(null!==this._durations){var i=this._currentTime%1*this._durations[this.currentFrame];for(i+=e/60*1e3;i<0;)this._currentTime--,i+=this._durations[this.currentFrame];var n=Math.sign(this.animationSpeed*t);for(this._currentTime=Math.floor(this._currentTime);i>=this._durations[this.currentFrame];)i-=this._durations[this.currentFrame]*n,this._currentTime+=n;this._currentTime+=i/this._durations[this.currentFrame]}else this._currentTime+=e;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):r!==this.currentFrame&&(this.loop&&this.onLoop&&(0r&&this.onLoop()),this.updateTexture())},i.prototype.updateTexture=function(){this._texture=this._textures[this.currentFrame],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame)},i.prototype.destroy=function(t){this.stop(),r.prototype.destroy.call(this,t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null},i.fromFrames=function(t){for(var e=[],r=0;r 0) var gc = undefined");else{if(!ba&&!ca)throw"Unknown runtime environment. Where are we?";e.read=function(t){var e=new XMLHttpRequest;return e.open("GET",t,!1),e.send(null),e.responseText},"undefined"!=typeof arguments&&(e.arguments=arguments),"undefined"!=typeof console?(e.print||(e.print=function(t){console.log(t)}),e.printErr||(e.printErr=function(t){console.log(t)})):e.print||(e.print=function(){}),ca&&(e.load=importScripts),void 0===e.setWindowTitle&&(e.setWindowTitle=function(t){document.title=t})}function ha(t){eval.call(null,t)}for(k in!e.load&&e.read&&(e.load=function(t){ha(e.read(t))}),e.print||(e.print=function(){}),e.printErr||(e.printErr=e.print),e.arguments||(e.arguments=[]),e.thisProgram||(e.thisProgram="./this.program"),e.print=e.print,e.W=e.printErr,e.preRun=[],e.postRun=[],aa)aa.hasOwnProperty(k)&&(e[k]=aa[k]);var n={rb:function(t){ka=t},fb:function(){return ka},ua:function(){return m},ba:function(t){m=t},Ka:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:return"*"===t[t.length-1]?n.J:"i"===t[0]?(assert(0==(t=parseInt(t.substr(1)))%8),t/8):0}},eb:function(t){return Math.max(n.Ka(t),n.J)},ud:16,Qd:function(t,e){return"double"===e||"i64"===e?7&t&&(assert(4==(7&t)),t+=4):assert(0==(3&t)),t},Ed:function(t,e,r){return r||"i64"!=t&&"double"!=t?t?Math.min(e||(t?n.eb(t):0),n.J):Math.min(e,8):8},L:function(t,r,i){return i&&i.length?(i.splice||(i=Array.prototype.slice.call(i)),i.splice(0,0,r),e["dynCall_"+t].apply(null,i)):e["dynCall_"+t].call(null,r)},Z:[],Xa:function(t){for(var e=0;e>>0)+4294967296*+(e>>>0):+(t>>>0)+4294967296*+(0|e)},Ua:8,J:4,vd:0};e.Runtime=n,n.addFunction=n.Xa,n.removeFunction=n.nb;var na=!1,oa,pa,ka,ra,sa;function assert(t,e){t||x("Assertion failed: "+e)}function qa(a){var b=e["_"+a];if(!b)try{b=eval("_"+a)}catch(t){}return assert(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)"),b}function wa(t,e,r){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":y[t>>0]=e;break;case"i16":z[t>>1]=e;break;case"i32":C[t>>2]=e;break;case"i64":pa=[e>>>0,(oa=e,1<=+xa(oa)?0>>0:~~+Aa((oa-+(~~oa>>>0))/4294967296)>>>0:0)],C[t>>2]=pa[0],C[t+4>>2]=pa[1];break;case"float":Ba[t>>2]=e;break;case"double":Ca[t>>3]=e;break;default:x("invalid type for setValue: "+r)}}function Da(t,e){switch("*"===(e=e||"i8").charAt(e.length-1)&&(e="i32"),e){case"i1":case"i8":return y[t>>0];case"i16":return z[t>>1];case"i32":case"i64":return C[t>>2];case"float":return Ba[t>>2];case"double":return Ca[t>>3];default:x("invalid type for setValue: "+e)}return null}function D(t,e,r,i){var o,a;a="number"==typeof t?(o=!0,t):(o=!1,t.length);var s,l,u="string"==typeof e?e:null;if(r=4==r?i:[Ea,n.aa,n.Ra,n.R][void 0===r?2:r](Math.max(a,u?1:e.length)),o){for(assert(0==(3&(i=r))),t=r+(-4&a);i>2]=0;for(t=r+a;i>0]=0;return r}if("i8"===u)return t.subarray||t.slice?E.set(t,r):E.set(new Uint8Array(t),r),r;for(i=0;i>0],0!=i||r)&&(o++,!r||o!=r););if(r||(r=o),i="",n<128){for(;0>10,56320|1023&r)))):s+=String.fromCharCode(r)}}function Ka(t,e,r,i){if(!(0>6}else{if(a<=65535){if(i<=r+2)break;e[r++]=224|a>>12}else{if(a<=2097151){if(i<=r+3)break;e[r++]=240|a>>18}else{if(a<=67108863){if(i<=r+4)break;e[r++]=248|a>>24}else{if(i<=r+5)break;e[r++]=252|a>>30,e[r++]=128|a>>24&63}e[r++]=128|a>>18&63}e[r++]=128|a>>12&63}e[r++]=128|a>>6&63}e[r++]=128|63&a}}return e[r]=0,r-n}function La(t){for(var e=0,r=0;r"):o=n;t:for(;c>0];if(!r)return e;e+=String.fromCharCode(r)}},e.stringToAscii=function(t,e){return Ia(t,e,!1)},e.UTF8ArrayToString=Ja,e.UTF8ToString=function(t){return Ja(E,t)},e.stringToUTF8Array=Ka,e.stringToUTF8=function(t,e,r){return Ka(t,E,e,r)},e.lengthBytesUTF8=La,e.UTF16ToString=function(t){for(var e=0,r="";;){var i=z[t+2*e>>1];if(0==i)return r;++e,r+=String.fromCharCode(i)}},e.stringToUTF16=function(t,e,r){if(void 0===r&&(r=2147483647),r<2)return 0;var i=e;r=(r-=2)<2*t.length?r/2:t.length;for(var n=0;n>1]=t.charCodeAt(n),e+=2;return z[e>>1]=0,e-i},e.lengthBytesUTF16=function(t){return 2*t.length},e.UTF32ToString=function(t){for(var e=0,r="";;){var i=C[t+4*e>>2];if(0==i)return r;++e,65536<=i?(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|1023&i)):r+=String.fromCharCode(i)}},e.stringToUTF32=function(t,e,r){if(void 0===r&&(r=2147483647),r<4)return 0;var i=e;r=i+r-4;for(var n=0;n>2]=o,r<(e+=4)+4)break}return C[e>>2]=0,e-i},e.lengthBytesUTF32=function(t){for(var e=0,r=0;r>0]=t[r],r+=1}function ta(t,e){for(var r=0;r>0]=t[r]}function Ia(t,e,r){for(var i=0;i>0]=t.charCodeAt(i);r||(y[e>>0]=0)}e.addOnPreRun=fb,e.addOnInit=function(t){cb.unshift(t)},e.addOnPreMain=function(t){db.unshift(t)},e.addOnExit=function(t){H.unshift(t)},e.addOnPostRun=gb,e.intArrayFromString=hb,e.intArrayToString=function(t){for(var e=[],r=0;r>>16)*i+r*(e>>>16)<<16)|0}),Math.Jd=Math.imul,Math.clz32||(Math.clz32=function(t){t>>>=0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.Ad=Math.clz32;var xa=Math.abs,Aa=Math.ceil,za=Math.floor,ya=Math.min,I=0,ib=null,jb=null;function kb(){I++,e.monitorRunDependencies&&e.monitorRunDependencies(I)}function lb(){if(I--,e.monitorRunDependencies&&e.monitorRunDependencies(I),0==I&&(null!==ib&&(clearInterval(ib),ib=null),jb)){var t=jb;jb=null,t()}}e.addRunDependency=kb,e.removeRunDependency=lb,e.preloadedImages={},e.preloadedAudios={},Ta=8,la=Ta+5888,cb.push(),D([124,0,0,0,98,7,0,0,124,0,0,0,111,7,0,0,164,0,0,0,124,7,0,0,16,0,0,0,0,0,0,0,164,0,0,0,157,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,227,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,191,7,0,0,56,0,0,0,0,0,0,0,164,0,0,0,5,8,0,0,40,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,114,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,0,0,236,1,0,0,236,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,231,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,40,37,117,41,58,32,65,115,115,101,114,116,105,111,110,32,102,97,105,108,117,114,101,58,32,34,37,115,34,10,0,109,95,115,105,122,101,32,60,61,32,109,95,99,97,112,97,99,105,116,121,0,46,47,99,114,110,95,100,101,99,111,109,112,46,104,0,109,105,110,95,110,101,119,95,99,97,112,97,99,105,116,121,32,60,32,40,48,120,55,70,70,70,48,48,48,48,85,32,47,32,101,108,101,109,101,110,116,95,115,105,122,101,41,0,110,101,119,95,99,97,112,97,99,105,116,121,32,38,38,32,40,110,101,119,95,99,97,112,97,99,105,116,121,32,62,32,109,95,99,97,112,97,99,105,116,121,41,0,110,117,109,95,99,111,100,101,115,91,99,93,0,115,111,114,116,101,100,95,112,111,115,32,60,32,116,111,116,97,108,95,117,115,101,100,95,115,121,109,115,0,112,67,111,100,101,115,105,122,101,115,91,115,121,109,95,105,110,100,101,120,93,32,61,61,32,99,111,100,101,115,105,122,101,0,116,32,60,32,40,49,85,32,60,60,32,116,97,98,108,101,95,98,105,116,115,41,0,109,95,108,111,111,107,117,112,91,116,93,32,61,61,32,99,85,73,78,84,51,50,95,77,65,88,0,99,114,110,100,95,109,97,108,108,111,99,58,32,115,105,122,101,32,116,111,111,32,98,105,103,0,99,114,110,100,95,109,97,108,108,111,99,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,40,40,117,105,110,116,51,50,41,112,95,110,101,119,32,38,32,40,67,82,78,68,95,77,73,78,95,65,76,76,79,67,95,65,76,73,71,78,77,69,78,84,32,45,32,49,41,41,32,61,61,32,48,0,99,114,110,100,95,114,101,97,108,108,111,99,58,32,98,97,100,32,112,116,114,0,99,114,110,100,95,102,114,101,101,58,32,98,97,100,32,112,116,114,0,102,97,108,115,101,0,40,116,111,116,97,108,95,115,121,109,115,32,62,61,32,49,41,32,38,38,32,40,116,111,116,97,108,95,115,121,109,115,32,60,61,32,112,114,101,102,105,120,95,99,111,100,105,110,103,58,58,99,77,97,120,83,117,112,112,111,114,116,101,100,83,121,109,115,41,0,17,18,19,20,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,16,48,0,110,117,109,95,98,105,116,115,32,60,61,32,51,50,85,0,109,95,98,105,116,95,99,111,117,110,116,32,60,61,32,99,66,105,116,66,117,102,83,105,122,101,0,116,32,33,61,32,99,85,73,78,84,51,50,95,77,65,88,0,109,111,100,101,108,46,109,95,99,111,100,101,95,115,105,122,101,115,91,115,121,109,93,32,61,61,32,108,101,110,0,0,2,3,1,0,2,3,4,5,6,7,1,40,108,101,110,32,62,61,32,49,41,32,38,38,32,40,108,101,110,32,60,61,32,99,77,97,120,69,120,112,101,99,116,101,100,67,111,100,101,83,105,122,101,41,0,105,32,60,32,109,95,115,105,122,101,0,110,101,120,116,95,108,101,118,101,108,95,111,102,115,32,62,32,99,117,114,95,108,101,118,101,108,95,111,102,115,0,1,2,2,3,3,3,3,4,0,0,0,0,0,0,1,1,0,1,0,1,0,0,1,2,1,2,0,0,0,1,0,2,1,0,2,0,0,1,2,3,110,117,109,32,38,38,32,40,110,117,109,32,61,61,32,126,110,117,109,95,99,104,101,99,107,41,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",4,n.Ua);var mb=n.ja(D(12,"i8",2),8);function ob(t){return e.___errno_location&&(C[e.___errno_location()>>2]=t),t}assert(0==mb%8),e._i64Subtract=nb;var J={I:1,F:2,ed:3,bc:4,H:5,Aa:6,vb:7,zc:8,ea:9,Jb:10,va:11,qd:11,Ta:12,da:13,Vb:14,Lc:15,fa:16,wa:17,rd:18,ha:19,ya:20,P:21,q:22,uc:23,Sa:24,Q:25,nd:26,Wb:27,Hc:28,ia:29,bd:30,nc:31,Vc:32,Sb:33,Zc:34,Dc:42,Zb:43,Kb:44,ec:45,fc:46,gc:47,mc:48,od:49,xc:50,dc:51,Pb:35,Ac:37,Bb:52,Eb:53,sd:54,vc:55,Fb:56,Gb:57,Qb:35,Hb:59,Jc:60,yc:61,kd:62,Ic:63,Ec:64,Fc:65,ad:66,Bc:67,yb:68,gd:69,Lb:70,Wc:71,pc:72,Tb:73,Db:74,Qc:76,Cb:77,$c:78,hc:79,ic:80,lc:81,kc:82,jc:83,Kc:38,za:39,qc:36,ga:40,Rc:95,Uc:96,Ob:104,wc:105,zb:97,Yc:91,Oc:88,Gc:92,cd:108,Nb:111,wb:98,Mb:103,tc:101,rc:100,ld:110,Xb:112,Yb:113,ac:115,Ab:114,Rb:89,oc:90,Xc:93,dd:94,xb:99,sc:102,cc:106,Mc:107,md:109,pd:87,Ub:122,hd:116,Pc:95,Cc:123,$b:84,Sc:75,Ib:125,Nc:131,Tc:130,jd:86};function pb(t,e){H.push(function(){n.L("vi",t,[e])}),pb.level=H.length}function tb(){return!!tb.p}e._memset=qb,e._bitshift64Lshr=rb,e._bitshift64Shl=sb;var ub=[],vb={};function wb(t,e){wb.p||(wb.p={}),t in wb.p||(n.L("v",e),wb.p[t]=1)}var xb={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function yb(t,e){for(var r=0,i=t.length-1;0<=i;i--){var n=t[i];"."===n?t.splice(i,1):".."===n?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function zb(t){var e="/"===t.charAt(0),r="/"===t.substr(-1);return(t=yb(t.split("/").filter(function(t){return!!t}),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t}function Ab(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1);return t=e[0],e=e[1],t||e?(e&&(e=e.substr(0,e.length-1)),t+e):"."}function Bb(t){if("/"===t)return"/";var e=t.lastIndexOf("/");return-1===e?t:t.substr(e+1)}function Cb(){return zb(Array.prototype.slice.call(arguments,0).join("/"))}function K(t,e){return zb(t+"/"+e)}function Db(){for(var t="",e=!1,r=arguments.length-1;-1<=r&&!e;r--){if("string"!=typeof(e=0<=r?arguments[r]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!e)return"";t=e+"/"+t,e="/"===e.charAt(0)}return(e?"/":"")+(t=yb(t.split("/").filter(function(t){return!!t}),!e).join("/"))||"."}var Eb=[];function Fb(t,e){Eb[t]={input:[],output:[],N:e},Gb(t,Hb)}var Hb={open:function(t){var e=Eb[t.g.rdev];if(!e)throw new L(J.ha);t.tty=e,t.seekable=!1},close:function(t){t.tty.N.flush(t.tty)},flush:function(t){t.tty.N.flush(t.tty)},read:function(t,e,r,i){if(!t.tty||!t.tty.N.La)throw new L(J.Aa);for(var n=0,o=0;ot.e.length&&(t.e=M.cb(t),t.o=t.e.length),!t.e||t.e.subarray){var r=t.e?t.e.buffer.byteLength:0;e<=r||(e=Math.max(e,r*(r<1048576?2:1.125)|0),0!=r&&(e=Math.max(e,256)),r=t.e,t.e=new Uint8Array(e),0e)t.e.length=e;else for(;t.e.length=t.g.o)return 0;if(assert(0<=(t=Math.min(t.g.o-n,i))),8>1)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return e.mode},B:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.A.pa.root),e.reverse(),Cb.apply(null,e)},Ha:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},$a:function(t){if((t&=-32769)in P.Ha)return P.Ha[t];throw new L(J.q)},k:{D:function(t){var e;t=P.B(t);try{e=fs.lstatSync(t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return P.$&&!e.K&&(e.K=4096),P.$&&!e.blocks&&(e.blocks=(e.size+e.K-1)/e.K|0),{dev:e.dev,ino:e.ino,mode:e.mode,nlink:e.nlink,uid:e.uid,gid:e.gid,rdev:e.rdev,size:e.size,atime:e.atime,mtime:e.mtime,ctime:e.ctime,K:e.K,blocks:e.blocks}},u:function(t,e){var r=P.B(t);try{void 0!==e.mode&&(fs.chmodSync(r,e.mode),t.mode=e.mode),void 0!==e.size&&fs.truncateSync(r,e.size)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},lookup:function(t,e){var r=K(P.B(t),e);r=P.Ja(r);return P.createNode(t,e,r)},T:function(t,e,r,i){t=P.createNode(t,e,r,i),e=P.B(t);try{N(t.mode)?fs.mkdirSync(e,t.mode):fs.writeFileSync(e,"",{mode:t.mode})}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return t},rename:function(t,e,r){t=P.B(t),e=K(P.B(e),r);try{fs.renameSync(t,e)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},unlink:function(t,e){var r=K(P.B(t),e);try{fs.unlinkSync(r)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},rmdir:function(t,e){var r=K(P.B(t),e);try{fs.rmdirSync(r)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},readdir:function(t){t=P.B(t);try{return fs.readdirSync(t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},symlink:function(t,e,r){t=K(P.B(t),e);try{fs.symlinkSync(r,t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},readlink:function(t){var e=P.B(t);try{return e=fs.readlinkSync(e),e=Ob.relative(Ob.resolve(t.A.pa.root),e)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}}},n:{open:function(t){var e=P.B(t.g);try{32768==(61440&t.g.mode)&&(t.V=fs.openSync(e,P.$a(t.flags)))}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},close:function(t){try{32768==(61440&t.g.mode)&&t.V&&fs.closeSync(t.V)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},read:function(t,e,r,i,n){if(0===i)return 0;var o,a=new Buffer(i);try{o=fs.readSync(t.V,a,0,i,n)}catch(t){throw new L(J[t.code])}if(0>>0)%Q.length}function Xb(t){var e=Wb(t.parent.id,t.name);t.M=Q[e],Q[e]=t}function Nb(t,e){var r;if(r=(r=Yb(t,"x"))?r:t.k.lookup?0:J.da)throw new L(r,t);for(r=Q[Wb(t.id,e)];r;r=r.M){var i=r.name;if(r.parent.id===t.id&&i===e)return r}return t.k.lookup(t,e)}function Lb(t,e,r,i){return Zb||((Zb=function(t,e,r,i){t||(t=this),this.parent=t,this.A=t.A,this.U=null,this.id=Sb++,this.name=e,this.mode=r,this.k={},this.n={},this.rdev=i}).prototype={},Object.defineProperties(Zb.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(t){t?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(t){t?this.mode|=146:this.mode&=-147}},kb:{get:function(){return N(this.mode)}},jb:{get:function(){return 8192==(61440&this.mode)}}})),Xb(t=new Zb(t,e,r,i)),t}function N(t){return 16384==(61440&t)}var $b={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Yb(t,e){return Tb?0:(-1===e.indexOf("r")||292&t.mode)&&(-1===e.indexOf("w")||146&t.mode)&&(-1===e.indexOf("x")||73&t.mode)?0:J.da}function ac(t,e){try{return Nb(t,e),J.wa}catch(t){}return Yb(t,"wx")}function bc(){for(var t=0;t<=4096;t++)if(!Rb[t])return t;throw new L(J.Sa)}function cc(t){dc||((dc=function(){}).prototype={},Object.defineProperties(dc.prototype,{object:{get:function(){return this.g},set:function(t){this.g=t}},Ld:{get:function(){return 1!=(2097155&this.flags)}},Md:{get:function(){return 0!=(2097155&this.flags)}},Kd:{get:function(){return 1024&this.flags}}}));var e,r=new dc;for(e in t)r[e]=t[e];return t=r,r=bc(),t.fd=r,Rb[r]=t}var Kb={open:function(t){t.n=Qb[t.g.rdev].n,t.n.open&&t.n.open(t)},G:function(){throw new L(J.ia)}},qc;function Gb(t,e){Qb[t]={n:e}}function ec(t,e){var r,i="/"===e,n=!e;if(i&&Pb)throw new L(J.fa);if(!i&&!n){if(e=(r=S(e,{Ia:!1})).path,(r=r.g).U)throw new L(J.fa);if(!N(r.mode))throw new L(J.ya)}n={type:t,pa:{},Oa:e,lb:[]};var o=t.A(n);(o.A=n).root=o,i?Pb=o:r&&(r.U=n,r.A&&r.A.lb.push(n))}function fc(t,e,r){var i=S(t,{parent:!0}).g;if(!(t=Bb(t))||"."===t||".."===t)throw new L(J.q);var n=ac(i,t);if(n)throw new L(n);if(!i.k.T)throw new L(J.I);return i.k.T(i,t,e,r)}function gc(t,e){return e=4095&(void 0!==e?e:438),fc(t,e|=32768,0)}function V(t,e){return e=1023&(void 0!==e?e:511),fc(t,e|=16384,0)}function hc(t,e,r){return void 0===r&&(r=e,e=438),fc(t,8192|e,r)}function ic(t,e){if(!Db(t))throw new L(J.F);var r=S(e,{parent:!0}).g;if(!r)throw new L(J.F);var i=Bb(e),n=ac(r,i);if(n)throw new L(n);if(!r.k.symlink)throw new L(J.I);return r.k.symlink(r,i,t)}function Vb(t){if(!(t=S(t).g))throw new L(J.F);if(!t.k.readlink)throw new L(J.q);return Db(T(t.parent),t.k.readlink(t))}function jc(t,e){var r;if(!(r="string"==typeof t?S(t,{la:!0}).g:t).k.u)throw new L(J.I);r.k.u(r,{mode:4095&e|-4096&r.mode,timestamp:Date.now()})}function kc(r,t){var i,n,o;if(""===r)throw new L(J.F);if("string"==typeof t){if(void 0===(n=$b[t]))throw Error("Unknown file open mode: "+t)}else n=t;if(i=64&(t=n)?4095&(void 0===i?438:i)|32768:0,"object"==typeof r)o=r;else{r=zb(r);try{o=S(r,{la:!(131072&t)}).g}catch(t){}}if(n=!1,64&t)if(o){if(128&t)throw new L(J.wa)}else o=fc(r,i,0),n=!0;if(!o)throw new L(J.F);if(8192==(61440&o.mode)&&(t&=-513),65536&t&&!N(o.mode))throw new L(J.ya);if(!n&&(i=o?40960==(61440&o.mode)?J.ga:N(o.mode)&&(0!=(2097155&t)||512&t)?J.P:(i=["r","w","rw"][3&t],512&t&&(i+="w"),Yb(o,i)):J.F))throw new L(i);if(512&t){var a;if(!(a="string"==typeof(i=o)?S(i,{la:!0}).g:i).k.u)throw new L(J.I);if(N(a.mode))throw new L(J.P);if(32768!=(61440&a.mode))throw new L(J.q);if(i=Yb(a,"w"))throw new L(i);a.k.u(a,{size:0,timestamp:Date.now()})}t&=-641,(o=cc({g:o,path:T(o),flags:t,seekable:!0,position:0,n:o.n,tb:[],error:!1})).n.open&&o.n.open(o),!e.logReadFiles||1&t||(lc||(lc={}),r in lc||(lc[r]=1,e.printErr("read file: "+r)));try{R.onOpenFile&&(a=0,1!=(2097155&t)&&(a|=1),0!=(2097155&t)&&(a|=2),R.onOpenFile(r,a))}catch(t){console.log("FS.trackingDelegate['onOpenFile']('"+r+"', flags) threw an exception: "+t.message)}return o}function mc(t){t.na&&(t.na=null);try{t.n.close&&t.n.close(t)}catch(t){throw t}finally{Rb[t.fd]=null}}function nc(t,e,r){if(!t.seekable||!t.n.G)throw new L(J.ia);t.position=t.n.G(t,e,r),t.tb=[]}function oc(t,e,r,i,n,o){if(i<0||n<0)throw new L(J.q);if(0==(2097155&t.flags))throw new L(J.ea);if(N(t.g.mode))throw new L(J.P);if(!t.n.write)throw new L(J.q);1024&t.flags&&nc(t,0,2);var a=!0;if(void 0===n)n=t.position,a=!1;else if(!t.seekable)throw new L(J.ia);e=t.n.write(t,e,r,i,n,o),a||(t.position+=e);try{t.path&&R.onWriteToFile&&R.onWriteToFile(t.path)}catch(t){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+t.message)}return e}function pc(){L||((L=function(t,e){this.g=e,this.qb=function(t){for(var e in this.S=t,J)if(J[e]===t){this.code=e;break}},this.qb(t),this.message=xb[t]}).prototype=Error(),L.prototype.constructor=L,[J.F].forEach(function(t){Mb[t]=new L(t),Mb[t].stack=""}))}function rc(t,e){var r=0;return t&&(r|=365),e&&(r|=146),r}function sc(t,e,r,i){return gc(t=K("string"==typeof t?t:T(t),e),rc(r,i))}function tc(t,e,r,i,n,o){if(n=gc(t=e?K("string"==typeof t?t:T(t),e):t,i=rc(i,n)),r){if("string"==typeof r){t=Array(r.length),e=0;for(var a=r.length;e>2]}function xc(){var t;if(t=X(),!(t=Rb[t]))throw new L(J.ea);return t}var yc={};function Ga(t){Ga.p||(r=Qa(r),Ga.p=!0,assert(n.R),Ga.bb=n.R,n.R=function(){x("cannot dynamically allocate, sbrk now has control")});var e=r;return 0==t||Ga.bb(t)?e:4294967295}e._i64Add=zc;var Ac=1;function Cc(t,e){if(Dc=t,Ec=e,!Fc)return 1;if(0==t)Y=function(){setTimeout(Gc,e)},Hc="timeout";else if(1==t)Y=function(){Ic(Gc)},Hc="rAF";else if(2==t){if(!window.setImmediate){var r=[];window.addEventListener("message",function(t){t.source===window&&"__emcc"===t.data&&(t.stopPropagation(),r.shift()())},!0),window.setImmediate=function(t){r.push(t),window.postMessage("__emcc","*")}}Y=function(){window.setImmediate(Gc)},Hc="immediate"}return 0}function Jc(a,t,r,s,i){e.noExitRuntime=!0,assert(!Fc,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Fc=a,Kc=s;var l=Lc;if(Gc=function(){if(!na)if(0>r-6&63;r=r-6,t=t+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[n]}2==r?(t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(3&e)<<4],t+="=="):4==r&&(t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(15&e)<<2],t+="="),u.src="data:audio/x-"+a.substr(-3)+";base64,"+t,s(u)}},u.src=n,ad(function(){s(u)})}});var r=e.canvas;r&&(r.sa=r.requestPointerLock||r.mozRequestPointerLock||r.webkitRequestPointerLock||r.msRequestPointerLock||function(){},r.Fa=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},r.Fa=r.Fa.bind(document),document.addEventListener("pointerlockchange",t,!1),document.addEventListener("mozpointerlockchange",t,!1),document.addEventListener("webkitpointerlockchange",t,!1),document.addEventListener("mspointerlockchange",t,!1),e.elementPointerLock&&r.addEventListener("click",function(t){!Tc&&r.sa&&(r.sa(),t.preventDefault())},!1))}}function bd(t,r,i,n){if(r&&e.ka&&t==e.canvas)return e.ka;var o,a;if(r){if(a={antialias:!1,alpha:!1},n)for(var s in n)a[s]=n[s];(a=GL.createContext(t,a))&&(o=GL.getContext(a).td),t.style.backgroundColor="black"}else o=t.getContext("2d");return o?(i&&(r||assert("undefined"==typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),e.ka=o,r&&GL.Od(a),e.Td=r,Uc.forEach(function(t){t()}),Vc()),o):null}var cd=!1,dd=void 0,ed=void 0;function fd(t,r,i){function n(){Sc=!1;var t=o.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===t?(o.Da=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){},o.Da=o.Da.bind(document),dd&&o.sa(),Sc=!0,ed&&gd()):(t.parentNode.insertBefore(o,t),t.parentNode.removeChild(t),ed&&hd()),e.onFullScreen&&e.onFullScreen(Sc),id(o)}void 0===(dd=t)&&(dd=!0),void 0===(ed=r)&&(ed=!1),void 0===(jd=i)&&(jd=null);var o=e.canvas;cd||(cd=!0,document.addEventListener("fullscreenchange",n,!1),document.addEventListener("mozfullscreenchange",n,!1),document.addEventListener("webkitfullscreenchange",n,!1),document.addEventListener("MSFullscreenChange",n,!1));var a=document.createElement("div");o.parentNode.insertBefore(a,o),a.appendChild(o),a.p=a.requestFullScreen||a.mozRequestFullScreen||a.msRequestFullscreen||(a.webkitRequestFullScreen?function(){a.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),i?a.p({Ud:i}):a.p()}var kd=0;function ld(t){var e=Date.now();if(0===kd)kd=e+1e3/60;else for(;kd<=e+2;)kd+=1e3/60;e=Math.max(kd-e,0),setTimeout(t,e)}function Ic(t){"undefined"==typeof window?ld(t):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||ld),window.requestAnimationFrame(t))}function ad(t){e.noExitRuntime=!0,setTimeout(function(){na||t()},1e4)}function $c(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]}function md(t,e,r){var i=new XMLHttpRequest;i.open("GET",t,!0),i.responseType="arraybuffer",i.onload=function(){200==i.status||0==i.status&&i.response?e(i.response):r()},i.onerror=r,i.send(null)}function nd(e,r,t){md(e,function(t){assert(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),lb()},function(){if(!t)throw'Loading data file "'+e+'" failed.';t()}),kb()}var od=[],Wc,Xc,Yc,Zc,jd;function pd(){var r=e.canvas;od.forEach(function(t){t(r.width,r.height)})}function gd(){if("undefined"!=typeof SDL){var t=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=8388608|t}pd()}function hd(){if("undefined"!=typeof SDL){var t=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=-8388609&t}pd()}function id(t,r,i){r&&i?(t.ub=r,t.hb=i):(r=t.ub,i=t.hb);var n=r,o=i;if(e.forcedAspectRatio&&0this.length-1||t<0)){var e=t%this.chunkSize;return this.gb(t/this.chunkSize|0)[e]}},a.prototype.pb=function(t){this.gb=t},a.prototype.Ca=function(){var t=new XMLHttpRequest;if(t.open("HEAD",l,!1),t.send(null),!(200<=t.status&&t.status<300||304===t.status))throw Error("Couldn't load "+l+". Status: "+t.status);var e,o=Number(t.getResponseHeader("Content-length")),a=1048576;(e=t.getResponseHeader("Accept-Ranges"))&&"bytes"===e||(a=o);var s=this;s.pb(function(t){var e=t*a,r=(t+1)*a-1;r=Math.min(r,o-1);if(void 0===s.Y[t]){var i=s.Y;if(r=(t=t.g.e).length)return 0;if(assert(0<=(i=Math.min(t.length-n,i))),t.slice)for(var o=0;o>2]=0;case 21520:return r.tty?-J.q:-J.Q;case 21531:if(n=X(),!r.n.ib)throw new L(J.Q);return r.n.ib(r,i,n);default:x("bad ioctl syscall "+i)}}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},___syscall6:function(t,e){wc=e;try{return mc(xc()),0}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},_emscripten_set_main_loop_timing:Cc,__ZSt18uncaught_exceptionv:tb,___setErrNo:ob,_sbrk:Ga,___cxa_begin_catch:function(t){var e;tb.p--,ub.push(t);t:{if(t&&!vb[t])for(e in vb)if(vb[e].wd===t)break t;e=t}return e&&vb[e].Sd++,t},_emscripten_memcpy_big:function(t,e,r){return E.set(E.subarray(e,e+r),t),t},_sysconf:function(t){switch(t){case 30:return 4096;case 85:return F/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return ob(J.q),-1},_pthread_getspecific:function(t){return yc[t]||0},_pthread_self:function(){return 0},_pthread_once:wb,_pthread_key_create:function(t){return 0==t?J.q:(C[t>>2]=Ac,yc[Ac]=0,Ac++,0)},___unlock:function(){},_emscripten_set_main_loop:Jc,_pthread_setspecific:function(t,e){return t in yc?(yc[t]=e,0):J.q},___lock:function(){},_abort:function(){e.abort()},_pthread_cleanup_push:pb,_time:function(t){var e=Date.now()/1e3|0;return t&&(C[t>>2]=e),e},___syscall140:function(t,e){wc=e;try{var r=xc(),i=X(),n=X(),o=X(),a=X();return assert(0===i),nc(r,n,a),C[o>>2]=r.position,r.na&&0===n&&0===a&&(r.na=null),0}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},___syscall146:function(t,e){wc=e;try{var r,i=xc(),n=X();t:{for(var o=X(),a=0,s=0;s>2],C[n+(8*s+4)>>2],void 0);if(l<0){r=-1;break t}a+=l}r=a}return r}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},STACKTOP:m,STACK_MAX:Va,tempDoublePtr:mb,ABORT:na,cttz_i8:qd};var Z=function(t,e,r){"use asm";var i=t.Int8Array;var n=t.Int16Array;var o=t.Int32Array;var a=t.Uint8Array;var s=t.Uint16Array;var l=t.Uint32Array;var u=t.Float32Array;var h=t.Float64Array;var pt=new i(r);var $=new n(r);var dt=new o(r);var mt=new a(r);var gt=new s(r);var c=new l(r);var f=new u(r);var tt=new h(r);var p=t.byteLength;var vt=e.STACKTOP|0;var d=e.STACK_MAX|0;var et=e.tempDoublePtr|0;var m=e.ABORT|0;var g=e.cttz_i8|0;var v=0;var _=0;var y=0;var b=0;var x=t.NaN,w=t.Infinity;var T=0,k=0,S=0,P=0,C=0.0,A=0,E=0,I=0,O=0.0;var rt=0;var M=0;var D=0;var z=0;var R=0;var F=0;var j=0;var L=0;var N=0;var B=0;var U=t.Math.floor;var X=t.Math.abs;var H=t.Math.sqrt;var q=t.Math.pow;var W=t.Math.cos;var G=t.Math.sin;var V=t.Math.tan;var Y=t.Math.acos;var Z=t.Math.asin;var J=t.Math.atan;var K=t.Math.atan2;var Q=t.Math.exp;var it=t.Math.log;var nt=t.Math.ceil;var _t=t.Math.imul;var ot=t.Math.min;var at=t.Math.clz32;var st=e.abort;var lt=e.assert;var ut=e.invoke_iiii;var ht=e.invoke_viiiii;var ct=e.invoke_vi;var ft=e.invoke_ii;var yt=e.invoke_viii;var bt=e.invoke_v;var xt=e.invoke_viiiiii;var wt=e.invoke_iiiiii;var Tt=e.invoke_viiii;var kt=e._pthread_cleanup_pop;var St=e.___syscall54;var Pt=e.___syscall6;var Ct=e._emscripten_set_main_loop_timing;var At=e.__ZSt18uncaught_exceptionv;var Et=e.___setErrNo;var It=e._sbrk;var Ot=e.___cxa_begin_catch;var Mt=e._emscripten_memcpy_big;var Dt=e._sysconf;var zt=e._pthread_getspecific;var Rt=e._pthread_self;var Ft=e._pthread_once;var jt=e._pthread_key_create;var Lt=e.___unlock;var Nt=e._emscripten_set_main_loop;var Bt=e._pthread_setspecific;var Ut=e.___lock;var Xt=e._abort;var Ht=e._pthread_cleanup_push;var qt=e._time;var Wt=e.___syscall140;var Gt=e.___syscall146;var Vt=0.0;function Yt(t){if(p(t)&16777215||p(t)<=16777215||p(t)>2147483648)return false;pt=new i(t);$=new n(t);dt=new o(t);mt=new a(t);gt=new s(t);c=new l(t);f=new u(t);tt=new h(t);r=t;return true}function Zt(t){t=t|0;var e=0;e=vt;vt=vt+t|0;vt=vt+15&-16;return e|0}function Jt(){return vt|0}function Kt(t){t=t|0;vt=t}function Qt(t,e){t=t|0;e=e|0;vt=t;d=e}function $t(t,e){t=t|0;e=e|0;if(!v){v=t;_=e}}function te(t){t=t|0;pt[et>>0]=pt[t>>0];pt[et+1>>0]=pt[t+1>>0];pt[et+2>>0]=pt[t+2>>0];pt[et+3>>0]=pt[t+3>>0]}function ee(t){t=t|0;pt[et>>0]=pt[t>>0];pt[et+1>>0]=pt[t+1>>0];pt[et+2>>0]=pt[t+2>>0];pt[et+3>>0]=pt[t+3>>0];pt[et+4>>0]=pt[t+4>>0];pt[et+5>>0]=pt[t+5>>0];pt[et+6>>0]=pt[t+6>>0];pt[et+7>>0]=pt[t+7>>0]}function re(t){t=t|0;rt=t}function ie(){return rt|0}function ne(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;m=vt;vt=vt+608|0;f=m+88|0;c=m+72|0;l=m+64|0;s=m+48|0;a=m+24|0;o=m;h=m+96|0;p=m+92|0;u=t+4|0;d=t+8|0;if((dt[u>>2]|0)>>>0>(dt[d>>2]|0)>>>0){dt[o>>2]=1154;dt[o+4>>2]=2120;dt[o+8>>2]=1133;br(h,1100,o)|0;yr(h,m+16|0)|0}if((2147418112/(i>>>0)|0)>>>0<=e>>>0){dt[a>>2]=1154;dt[a+4>>2]=2121;dt[a+8>>2]=1169;br(h,1100,a)|0;yr(h,m+40|0)|0}a=dt[d>>2]|0;if(a>>>0>=e>>>0){d=1;vt=m;return d|0}do{if(r){if(e){o=e+-1|0;if(!(o&e)){o=11;break}else e=o}else e=-1;e=e>>>16|e;e=e>>>8|e;e=e>>>4|e;e=e>>>2|e;e=(e>>>1|e)+1|0;o=10}else o=10}while(0);if((o|0)==10)if(!e){e=0;o=12}else o=11;if((o|0)==11)if(e>>>0<=a>>>0)o=12;if((o|0)==12){dt[s>>2]=1154;dt[s+4>>2]=2130;dt[s+8>>2]=1217;br(h,1100,s)|0;yr(h,l)|0}r=_t(e,i)|0;do{if(!n){o=oe(dt[t>>2]|0,r,p,1)|0;if(!o){d=0;vt=m;return d|0}else{dt[t>>2]=o;break}}else{a=ae(r,p)|0;if(!a){d=0;vt=m;return d|0}Ii[n&0](a,dt[t>>2]|0,dt[u>>2]|0);o=dt[t>>2]|0;do{if(o)if(!(o&7)){Di[dt[104>>2]&1](o,0,0,1,dt[27]|0)|0;break}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(h,1100,c)|0;yr(h,f)|0;break}}while(0);dt[t>>2]=a}}while(0);o=dt[p>>2]|0;if(o>>>0>r>>>0)e=(o>>>0)/(i>>>0)|0;dt[d>>2]=e;d=1;vt=m;return d|0}function oe(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;u=vt;vt=vt+592|0;l=u+48|0;o=u+24|0;n=u;s=u+72|0;a=u+68|0;if(t&7){dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1494;br(s,1100,n)|0;yr(s,u+16|0)|0;l=0;vt=u;return l|0}if(e>>>0>2147418112){dt[o>>2]=1154;dt[o+4>>2]=2499;dt[o+8>>2]=1387;br(s,1100,o)|0;yr(s,u+40|0)|0;l=0;vt=u;return l|0}dt[a>>2]=e;i=Di[dt[104>>2]&1](t,e,a,i,dt[27]|0)|0;if(r)dt[r>>2]=dt[a>>2];if(!(i&7)){l=i;vt=u;return l|0}dt[l>>2]=1154;dt[l+4>>2]=2551;dt[l+8>>2]=1440;br(s,1100,l)|0;yr(s,u+64|0)|0;l=i;vt=u;return l|0}function ae(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0;l=vt;vt=vt+592|0;a=l+48|0;s=l+24|0;r=l;o=l+72|0;n=l+68|0;i=t+3&-4;i=(i|0)!=0?i:4;if(i>>>0>2147418112){dt[r>>2]=1154;dt[r+4>>2]=2499;dt[r+8>>2]=1387;br(o,1100,r)|0;yr(o,l+16|0)|0;s=0;vt=l;return s|0}dt[n>>2]=i;r=Di[dt[104>>2]&1](0,i,n,1,dt[27]|0)|0;t=dt[n>>2]|0;if(e)dt[e>>2]=t;if((r|0)==0|t>>>0>>0){dt[s>>2]=1154;dt[s+4>>2]=2499;dt[s+8>>2]=1413;br(o,1100,s)|0;yr(o,l+40|0)|0;s=0;vt=l;return s|0}if(!(r&7)){s=r;vt=l;return s|0}dt[a>>2]=1154;dt[a+4>>2]=2526;dt[a+8>>2]=1440;br(o,1100,a)|0;yr(o,l+64|0)|0;s=r;vt=l;return s|0}function se(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0;L=vt;vt=vt+960|0;R=L+232|0;z=L+216|0;D=L+208|0;M=L+192|0;O=L+184|0;I=L+168|0;E=L+160|0;A=L+144|0;S=L+136|0;k=L+120|0;T=L+112|0;w=L+96|0;y=L+88|0;_=L+72|0;v=L+64|0;g=L+48|0;c=L+40|0;p=L+24|0;f=L+16|0;h=L;C=L+440|0;F=L+376|0;j=L+304|0;m=L+236|0;if((e|0)==0|i>>>0>11){t=0;vt=L;return t|0}dt[t>>2]=e;n=j;o=n+68|0;do{dt[n>>2]=0;n=n+4|0}while((n|0)<(o|0));o=0;do{n=pt[r+o>>0]|0;if(n<<24>>24){P=j+((n&255)<<2)|0;dt[P>>2]=(dt[P>>2]|0)+1}o=o+1|0}while((o|0)!=(e|0));o=0;u=1;a=0;s=-1;l=0;while(1){n=dt[j+(u<<2)>>2]|0;if(!n)dt[t+28+(u+-1<<2)>>2]=0;else{P=u+-1|0;dt[F+(P<<2)>>2]=o;o=n+o|0;x=16-u|0;dt[t+28+(P<<2)>>2]=(o+-1<>2]=l;dt[m+(u<<2)>>2]=l;a=a>>>0>u>>>0?a:u;s=s>>>0>>0?s:u;l=n+l|0}u=u+1|0;if((u|0)==17){P=a;break}else o=o<<1}dt[t+4>>2]=l;o=t+172|0;do{if(l>>>0>(dt[o>>2]|0)>>>0){dt[o>>2]=l;if(l){n=l+-1|0;if(n&l)d=14}else{n=-1;d=14}if((d|0)==14){x=n>>>16|n;x=x>>>8|x;x=x>>>4|x;x=x>>>2|x;x=(x>>>1|x)+1|0;dt[o>>2]=x>>>0>e>>>0?e:x}a=t+176|0;n=dt[a>>2]|0;do{if(n){x=dt[n+-4>>2]|0;n=n+-8|0;if(!((x|0)!=0?(x|0)==(~dt[n>>2]|0):0)){dt[h>>2]=1154;dt[h+4>>2]=644;dt[h+8>>2]=1863;br(C,1100,h)|0;yr(C,f)|0}if(!(n&7)){Di[dt[104>>2]&1](n,0,0,1,dt[27]|0)|0;break}else{dt[p>>2]=1154;dt[p+4>>2]=2499;dt[p+8>>2]=1516;br(C,1100,p)|0;yr(C,c)|0;break}}}while(0);o=dt[o>>2]|0;o=(o|0)!=0?o:1;n=ae((o<<1)+8|0,0)|0;if(!n){dt[a>>2]=0;n=0;break}else{dt[n+4>>2]=o;dt[n>>2]=~o;dt[a>>2]=n+8;d=25;break}}else d=25}while(0);t:do{if((d|0)==25){x=t+24|0;pt[x>>0]=s;pt[t+25>>0]=P;o=t+176|0;a=0;do{b=pt[r+a>>0]|0;n=b&255;if(b<<24>>24){if(!(dt[j+(n<<2)>>2]|0)){dt[g>>2]=1154;dt[g+4>>2]=2273;dt[g+8>>2]=1261;br(C,1100,g)|0;yr(C,v)|0}b=m+(n<<2)|0;n=dt[b>>2]|0;dt[b>>2]=n+1;if(n>>>0>=l>>>0){dt[_>>2]=1154;dt[_+4>>2]=2277;dt[_+8>>2]=1274;br(C,1100,_)|0;yr(C,y)|0}$[(dt[o>>2]|0)+(n<<1)>>1]=a}a=a+1|0}while((a|0)!=(e|0));n=pt[x>>0]|0;y=(n&255)>>>0>>0?i:0;b=t+8|0;dt[b>>2]=y;_=(y|0)!=0;if(_){v=1<>>0>(dt[n>>2]|0)>>>0){dt[n>>2]=v;a=t+168|0;n=dt[a>>2]|0;do{if(n){g=dt[n+-4>>2]|0;n=n+-8|0;if(!((g|0)!=0?(g|0)==(~dt[n>>2]|0):0)){dt[w>>2]=1154;dt[w+4>>2]=644;dt[w+8>>2]=1863;br(C,1100,w)|0;yr(C,T)|0}if(!(n&7)){Di[dt[104>>2]&1](n,0,0,1,dt[27]|0)|0;break}else{dt[k>>2]=1154;dt[k+4>>2]=2499;dt[k+8>>2]=1516;br(C,1100,k)|0;yr(C,S)|0;break}}}while(0);n=v<<2;o=ae(n+8|0,0)|0;if(!o){dt[a>>2]=0;n=0;break t}else{S=o+8|0;dt[o+4>>2]=v;dt[o>>2]=~v;dt[a>>2]=S;o=S;break}}else{o=t+168|0;n=v<<2;a=o;o=dt[o>>2]|0}}while(0);Yr(o|0,-1,n|0)|0;d=t+176|0;g=1;do{if(dt[j+(g<<2)>>2]|0){e=y-g|0;m=1<>2]|0;if(o>>>0>=16){dt[A>>2]=1154;dt[A+4>>2]=1953;dt[A+8>>2]=1737;br(C,1100,A)|0;yr(C,E)|0}n=dt[t+28+(o<<2)>>2]|0;if(!n)p=-1;else p=(n+-1|0)>>>(16-g|0);if(s>>>0<=p>>>0){c=(dt[t+96+(o<<2)>>2]|0)-s|0;f=g<<16;do{n=gt[(dt[d>>2]|0)+(c+s<<1)>>1]|0;if((mt[r+n>>0]|0|0)!=(g|0)){dt[I>>2]=1154;dt[I+4>>2]=2319;dt[I+8>>2]=1303;br(C,1100,I)|0;yr(C,O)|0}h=s<>>0>=v>>>0){dt[M>>2]=1154;dt[M+4>>2]=2325;dt[M+8>>2]=1337;br(C,1100,M)|0;yr(C,D)|0}n=dt[a>>2]|0;if((dt[n+(l<<2)>>2]|0)!=-1){dt[z>>2]=1154;dt[z+4>>2]=2327;dt[z+8>>2]=1360;br(C,1100,z)|0;yr(C,R)|0;n=dt[a>>2]|0}dt[n+(l<<2)>>2]=o;u=u+1|0}while(u>>>0>>0);s=s+1|0}while(s>>>0<=p>>>0)}}g=g+1|0}while(y>>>0>=g>>>0);n=pt[x>>0]|0}o=t+96|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F>>2]|0);o=t+100|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+4>>2]|0);o=t+104|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+8>>2]|0);o=t+108|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+12>>2]|0);o=t+112|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+16>>2]|0);o=t+116|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+20>>2]|0);o=t+120|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+24>>2]|0);o=t+124|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+28>>2]|0);o=t+128|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+32>>2]|0);o=t+132|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+36>>2]|0);o=t+136|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+40>>2]|0);o=t+140|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+44>>2]|0);o=t+144|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+48>>2]|0);o=t+148|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+52>>2]|0);o=t+152|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+56>>2]|0);o=t+156|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+60>>2]|0);o=t+16|0;dt[o>>2]=0;a=t+20|0;dt[a>>2]=n&255;e:do{if(_){while(1){if(!i)break e;n=i+-1|0;if(!(dt[j+(i<<2)>>2]|0))i=n;else break}dt[o>>2]=dt[t+28+(n<<2)>>2];n=y+1|0;dt[a>>2]=n;if(n>>>0<=P>>>0){while(1){if(dt[j+(n<<2)>>2]|0)break;n=n+1|0;if(n>>>0>P>>>0)break e}dt[a>>2]=n}}}while(0);dt[t+92>>2]=-1;dt[t+160>>2]=1048575;dt[t+12>>2]=32-(dt[b>>2]|0);n=1}}while(0);t=n;vt=L;return t|0}function le(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0;if(!t){n=Br(e)|0;if(!r){r=n;return r|0}if(!n)o=0;else o=Hr(n)|0;dt[r>>2]=o;r=n;return r|0}if(!e){Ur(t);if(!r){r=0;return r|0}dt[r>>2]=0;r=0;return r|0}n=Xr(t,e)|0;o=(n|0)!=0;if(o|i^1)o=o?n:t;else{n=Xr(t,e)|0;o=(n|0)==0?t:n}if(!r){r=n;return r|0}e=Hr(o)|0;dt[r>>2]=e;r=n;return r|0}function ue(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if(!((t|0)!=0&e>>>0>73&(r|0)!=0)){r=0;return r|0}if((dt[r>>2]|0)!=40|e>>>0<74){r=0;return r|0}if(((mt[t>>0]|0)<<8|(mt[t+1>>0]|0)|0)!=18552){r=0;return r|0}if(((mt[t+2>>0]|0)<<8|(mt[t+3>>0]|0))>>>0<74){r=0;return r|0}if(((mt[t+7>>0]|0)<<16|(mt[t+6>>0]|0)<<24|(mt[t+8>>0]|0)<<8|(mt[t+9>>0]|0))>>>0>e>>>0){r=0;return r|0}dt[r+4>>2]=(mt[t+12>>0]|0)<<8|(mt[t+13>>0]|0);dt[r+8>>2]=(mt[t+14>>0]|0)<<8|(mt[t+15>>0]|0);dt[r+12>>2]=mt[t+16>>0];dt[r+16>>2]=mt[t+17>>0];e=t+18|0;i=r+32|0;dt[i>>2]=mt[e>>0];dt[i+4>>2]=0;e=pt[e>>0]|0;dt[r+20>>2]=e<<24>>24==0|e<<24>>24==9?8:16;dt[r+24>>2]=(mt[t+26>>0]|0)<<16|(mt[t+25>>0]|0)<<24|(mt[t+27>>0]|0)<<8|(mt[t+28>>0]|0);dt[r+28>>2]=(mt[t+30>>0]|0)<<16|(mt[t+29>>0]|0)<<24|(mt[t+31>>0]|0)<<8|(mt[t+32>>0]|0);r=1;return r|0}function he(t){t=t|0;Ot(t|0)|0;Ue()}function ce(t){t=t|0;var e=0,r=0,i=0,n=0,o=0;o=vt;vt=vt+544|0;n=o;i=o+24|0;e=dt[t+20>>2]|0;if(e)fe(e);e=t+4|0;r=dt[e>>2]|0;if(!r){n=t+16|0;pt[n>>0]=0;vt=o;return}if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1516;br(i,1100,n)|0;yr(i,o+16|0)|0}dt[e>>2]=0;dt[t+8>>2]=0;dt[t+12>>2]=0;n=t+16|0;pt[n>>0]=0;vt=o;return}function fe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;p=vt;vt=vt+640|0;f=p+112|0;c=p+96|0;h=p+88|0;u=p+72|0;l=p+64|0;s=p+48|0;i=p+40|0;o=p+24|0;n=p+16|0;r=p;a=p+120|0;if(!t){vt=p;return}e=dt[t+168>>2]|0;do{if(e){d=dt[e+-4>>2]|0;e=e+-8|0;if(!((d|0)!=0?(d|0)==(~dt[e>>2]|0):0)){dt[r>>2]=1154;dt[r+4>>2]=644;dt[r+8>>2]=1863;br(a,1100,r)|0;yr(a,n)|0}if(!(e&7)){Di[dt[104>>2]&1](e,0,0,1,dt[27]|0)|0;break}else{dt[o>>2]=1154;dt[o+4>>2]=2499;dt[o+8>>2]=1516;br(a,1100,o)|0;yr(a,i)|0;break}}}while(0);e=dt[t+176>>2]|0;do{if(e){d=dt[e+-4>>2]|0;e=e+-8|0;if(!((d|0)!=0?(d|0)==(~dt[e>>2]|0):0)){dt[s>>2]=1154;dt[s+4>>2]=644;dt[s+8>>2]=1863;br(a,1100,s)|0;yr(a,l)|0}if(!(e&7)){Di[dt[104>>2]&1](e,0,0,1,dt[27]|0)|0;break}else{dt[u>>2]=1154;dt[u+4>>2]=2499;dt[u+8>>2]=1516;br(a,1100,u)|0;yr(a,h)|0;break}}}while(0);if(!(t&7)){Di[dt[104>>2]&1](t,0,0,1,dt[27]|0)|0;vt=p;return}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(a,1100,c)|0;yr(a,f)|0;vt=p;return}}function pe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+560|0;a=h+40|0;s=h+24|0;e=h;o=h+48|0;n=t+8|0;r=dt[n>>2]|0;if((r+-1|0)>>>0>=8192){dt[e>>2]=1154;dt[e+4>>2]=2997;dt[e+8>>2]=1541;br(o,1100,e)|0;yr(o,h+16|0)|0}dt[t>>2]=r;i=t+20|0;e=dt[i>>2]|0;if(!e){e=ae(180,0)|0;if(!e)e=0;else{u=e+164|0;dt[u>>2]=0;dt[u+4>>2]=0;dt[u+8>>2]=0;dt[u+12>>2]=0}dt[i>>2]=e;u=e;l=dt[t>>2]|0}else{u=e;l=r}if(!(dt[n>>2]|0)){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(o,1100,s)|0;yr(o,a)|0;o=dt[t>>2]|0}else o=l;n=dt[t+4>>2]|0;if(o>>>0>16){r=o;e=0}else{t=0;u=se(u,l,n,t)|0;vt=h;return u|0}while(1){i=e+1|0;if(r>>>0>3){r=r>>>1;e=i}else{r=i;break}}t=e+2+((r|0)!=32&1<>>0>>0&1)|0;t=t>>>0<11?t&255:11;u=se(u,l,n,t)|0;vt=h;return u|0}function de(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0;R=vt;vt=vt+800|0;I=R+256|0;E=R+240|0;A=R+232|0;C=R+216|0;P=R+208|0;S=R+192|0;k=R+184|0;T=R+168|0;w=R+160|0;x=R+144|0;b=R+136|0;y=R+120|0;_=R+112|0;v=R+96|0;g=R+88|0;m=R+72|0;c=R+64|0;h=R+48|0;s=R+40|0;l=R+24|0;o=R+16|0;n=R;D=R+288|0;z=R+264|0;O=me(t,14)|0;if(!O){dt[e>>2]=0;r=e+4|0;i=dt[r>>2]|0;if(i){if(!(i&7))Di[dt[104>>2]&1](i,0,0,1,dt[27]|0)|0;else{dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1516;br(D,1100,n)|0;yr(D,o)|0}dt[r>>2]=0;dt[e+8>>2]=0;dt[e+12>>2]=0}pt[e+16>>0]=0;r=e+20|0;i=dt[r>>2]|0;if(!i){e=1;vt=R;return e|0}fe(i);dt[r>>2]=0;e=1;vt=R;return e|0}p=e+4|0;d=e+8|0;r=dt[d>>2]|0;if((r|0)!=(O|0)){if(r>>>0<=O>>>0){do{if((dt[e+12>>2]|0)>>>0>>0){if(ne(p,O,(r+1|0)==(O|0),1,0)|0){r=dt[d>>2]|0;break}pt[e+16>>0]=1;e=0;vt=R;return e|0}}while(0);Yr((dt[p>>2]|0)+r|0,0,O-r|0)|0}dt[d>>2]=O}Yr(dt[p>>2]|0,0,O|0)|0;f=t+20|0;r=dt[f>>2]|0;if((r|0)<5){o=t+4|0;a=t+8|0;n=t+16|0;do{i=dt[o>>2]|0;if((i|0)==(dt[a>>2]|0))i=0;else{dt[o>>2]=i+1;i=mt[i>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[l>>2]=1154;dt[l+4>>2]=3199;dt[l+8>>2]=1650;br(D,1100,l)|0;yr(D,s)|0;r=dt[f>>2]|0}i=i<<32-r|dt[n>>2];dt[n>>2]=i}while((r|0)<5)}else{i=t+16|0;n=i;i=dt[i>>2]|0}u=i>>>27;dt[n>>2]=i<<5;dt[f>>2]=r+-5;if((u+-1|0)>>>0>20){e=0;vt=R;return e|0}dt[z+20>>2]=0;dt[z>>2]=0;dt[z+4>>2]=0;dt[z+8>>2]=0;dt[z+12>>2]=0;pt[z+16>>0]=0;r=z+4|0;i=z+8|0;t:do{if(ne(r,21,0,1,0)|0){s=dt[i>>2]|0;l=dt[r>>2]|0;Yr(l+s|0,0,21-s|0)|0;dt[i>>2]=21;if(u){n=t+4|0;o=t+8|0;a=t+16|0;s=0;do{r=dt[f>>2]|0;if((r|0)<3)do{i=dt[n>>2]|0;if((i|0)==(dt[o>>2]|0))i=0;else{dt[n>>2]=i+1;i=mt[i>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[h>>2]=1154;dt[h+4>>2]=3199;dt[h+8>>2]=1650;br(D,1100,h)|0;yr(D,c)|0;r=dt[f>>2]|0}i=i<<32-r|dt[a>>2];dt[a>>2]=i}while((r|0)<3);else i=dt[a>>2]|0;dt[a>>2]=i<<3;dt[f>>2]=r+-3;pt[l+(mt[1611+s>>0]|0)>>0]=i>>>29;s=s+1|0}while((s|0)!=(u|0))}if(pe(z)|0){s=t+4|0;l=t+8|0;u=t+16|0;i=0;e:while(1){a=O-i|0;r=ge(t,z)|0;r:do{if(r>>>0<17){if((dt[d>>2]|0)>>>0<=i>>>0){dt[m>>2]=1154;dt[m+4>>2]=903;dt[m+8>>2]=1781;br(D,1100,m)|0;yr(D,g)|0}pt[(dt[p>>2]|0)+i>>0]=r;r=i+1|0}else switch(r|0){case 17:{r=dt[f>>2]|0;if((r|0)<3)do{n=dt[s>>2]|0;if((n|0)==(dt[l>>2]|0))n=0;else{dt[s>>2]=n+1;n=mt[n>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[v>>2]=1154;dt[v+4>>2]=3199;dt[v+8>>2]=1650;br(D,1100,v)|0;yr(D,_)|0;r=dt[f>>2]|0}n=n<<32-r|dt[u>>2];dt[u>>2]=n}while((r|0)<3);else n=dt[u>>2]|0;dt[u>>2]=n<<3;dt[f>>2]=r+-3;r=(n>>>29)+3|0;if(r>>>0>a>>>0){r=0;break t}r=r+i|0;break r}case 18:{r=dt[f>>2]|0;if((r|0)<7)do{n=dt[s>>2]|0;if((n|0)==(dt[l>>2]|0))n=0;else{dt[s>>2]=n+1;n=mt[n>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[y>>2]=1154;dt[y+4>>2]=3199;dt[y+8>>2]=1650;br(D,1100,y)|0;yr(D,b)|0;r=dt[f>>2]|0}n=n<<32-r|dt[u>>2];dt[u>>2]=n}while((r|0)<7);else n=dt[u>>2]|0;dt[u>>2]=n<<7;dt[f>>2]=r+-7;r=(n>>>25)+11|0;if(r>>>0>a>>>0){r=0;break t}r=r+i|0;break r}default:{if((r+-19|0)>>>0>=2){M=90;break e}o=dt[f>>2]|0;if((r|0)==19){if((o|0)<2){n=o;while(1){r=dt[s>>2]|0;if((r|0)==(dt[l>>2]|0))o=0;else{dt[s>>2]=r+1;o=mt[r>>0]|0}r=n+8|0;dt[f>>2]=r;if((r|0)>=33){dt[x>>2]=1154;dt[x+4>>2]=3199;dt[x+8>>2]=1650;br(D,1100,x)|0;yr(D,w)|0;r=dt[f>>2]|0}n=o<<32-r|dt[u>>2];dt[u>>2]=n;if((r|0)<2)n=r;else break}}else{n=dt[u>>2]|0;r=o}dt[u>>2]=n<<2;dt[f>>2]=r+-2;o=(n>>>30)+3|0}else{if((o|0)<6){n=o;while(1){r=dt[s>>2]|0;if((r|0)==(dt[l>>2]|0))o=0;else{dt[s>>2]=r+1;o=mt[r>>0]|0}r=n+8|0;dt[f>>2]=r;if((r|0)>=33){dt[T>>2]=1154;dt[T+4>>2]=3199;dt[T+8>>2]=1650;br(D,1100,T)|0;yr(D,k)|0;r=dt[f>>2]|0}n=o<<32-r|dt[u>>2];dt[u>>2]=n;if((r|0)<6)n=r;else break}}else{n=dt[u>>2]|0;r=o}dt[u>>2]=n<<6;dt[f>>2]=r+-6;o=(n>>>26)+7|0}if((i|0)==0|o>>>0>a>>>0){r=0;break t}r=i+-1|0;if((dt[d>>2]|0)>>>0<=r>>>0){dt[S>>2]=1154;dt[S+4>>2]=903;dt[S+8>>2]=1781;br(D,1100,S)|0;yr(D,P)|0}n=pt[(dt[p>>2]|0)+r>>0]|0;if(!(n<<24>>24)){r=0;break t}r=o+i|0;if(i>>>0>=r>>>0){r=i;break r}do{if((dt[d>>2]|0)>>>0<=i>>>0){dt[C>>2]=1154;dt[C+4>>2]=903;dt[C+8>>2]=1781;br(D,1100,C)|0;yr(D,A)|0}pt[(dt[p>>2]|0)+i>>0]=n;i=i+1|0}while((i|0)!=(r|0))}}}while(0);if(O>>>0>r>>>0)i=r;else break}if((M|0)==90){dt[E>>2]=1154;dt[E+4>>2]=3140;dt[E+8>>2]=1632;br(D,1100,E)|0;yr(D,I)|0;r=0;break}if((O|0)==(r|0))r=pe(e)|0;else r=0}else r=0}else{pt[z+16>>0]=1;r=0}}while(0);ce(z);e=r;vt=R;return e|0}function me(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+544|0;s=h+16|0;a=h;o=h+24|0;if(!e){u=0;vt=h;return u|0}if(e>>>0<=16){u=ve(t,e)|0;vt=h;return u|0}l=ve(t,e+-16|0)|0;u=t+20|0;e=dt[u>>2]|0;if((e|0)<16){i=t+4|0;n=t+8|0;r=t+16|0;do{t=dt[i>>2]|0;if((t|0)==(dt[n>>2]|0))t=0;else{dt[i>>2]=t+1;t=mt[t>>0]|0}e=e+8|0;dt[u>>2]=e;if((e|0)>=33){dt[a>>2]=1154;dt[a+4>>2]=3199;dt[a+8>>2]=1650;br(o,1100,a)|0;yr(o,s)|0;e=dt[u>>2]|0}t=t<<32-e|dt[r>>2];dt[r>>2]=t}while((e|0)<16)}else{t=t+16|0;r=t;t=dt[t>>2]|0}dt[r>>2]=t<<16;dt[u>>2]=e+-16;u=t>>>16|l<<16;vt=h;return u|0}function ge(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0;y=vt;vt=vt+608|0;m=y+88|0;d=y+72|0;f=y+64|0;c=y+48|0;h=y+40|0;p=y+24|0;u=y+16|0;l=y;v=y+96|0;g=dt[e+20>>2]|0;_=t+20|0;s=dt[_>>2]|0;do{if((s|0)<24){a=t+4|0;i=dt[a>>2]|0;n=dt[t+8>>2]|0;r=i>>>0>>0;if((s|0)>=16){if(r){dt[a>>2]=i+1;r=mt[i>>0]|0}else r=0;dt[_>>2]=s+8;a=t+16|0;o=r<<24-s|dt[a>>2];dt[a>>2]=o;break}if(r){o=(mt[i>>0]|0)<<8;r=i+1|0}else{o=0;r=i}if(r>>>0>>0){i=mt[r>>0]|0;r=r+1|0}else i=0;dt[a>>2]=r;dt[_>>2]=s+16;a=t+16|0;o=(i|o)<<16-s|dt[a>>2];dt[a>>2]=o}else{o=t+16|0;a=o;o=dt[o>>2]|0}}while(0);n=(o>>>16)+1|0;do{if(n>>>0<=(dt[g+16>>2]|0)>>>0){i=dt[(dt[g+168>>2]|0)+(o>>>(32-(dt[g+8>>2]|0)|0)<<2)>>2]|0;if((i|0)==-1){dt[l>>2]=1154;dt[l+4>>2]=3244;dt[l+8>>2]=1677;br(v,1100,l)|0;yr(v,u)|0}r=i&65535;i=i>>>16;if((dt[e+8>>2]|0)>>>0<=r>>>0){dt[p>>2]=1154;dt[p+4>>2]=902;dt[p+8>>2]=1781;br(v,1100,p)|0;yr(v,h)|0}if((mt[(dt[e+4>>2]|0)+r>>0]|0|0)!=(i|0)){dt[c>>2]=1154;dt[c+4>>2]=3248;dt[c+8>>2]=1694;br(v,1100,c)|0;yr(v,f)|0}}else{i=dt[g+20>>2]|0;while(1){r=i+-1|0;if(n>>>0>(dt[g+28+(r<<2)>>2]|0)>>>0)i=i+1|0;else break}r=(o>>>(32-i|0))+(dt[g+96+(r<<2)>>2]|0)|0;if(r>>>0<(dt[e>>2]|0)>>>0){r=gt[(dt[g+176>>2]|0)+(r<<1)>>1]|0;break}dt[d>>2]=1154;dt[d+4>>2]=3266;dt[d+8>>2]=1632;br(v,1100,d)|0;yr(v,m)|0;_=0;vt=y;return _|0}}while(0);dt[a>>2]=dt[a>>2]<>2]=(dt[_>>2]|0)-i;_=r;vt=y;return _|0}function ve(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+560|0;s=h+40|0;l=h+24|0;r=h;a=h+48|0;if(e>>>0>=33){dt[r>>2]=1154;dt[r+4>>2]=3190;dt[r+8>>2]=1634;br(a,1100,r)|0;yr(a,h+16|0)|0}u=t+20|0;r=dt[u>>2]|0;if((r|0)>=(e|0)){o=t+16|0;a=o;o=dt[o>>2]|0;s=r;l=32-e|0;l=o>>>l;o=o<>2]=o;e=s-e|0;dt[u>>2]=e;vt=h;return l|0}n=t+4|0;o=t+8|0;i=t+16|0;do{t=dt[n>>2]|0;if((t|0)==(dt[o>>2]|0))t=0;else{dt[n>>2]=t+1;t=mt[t>>0]|0}r=r+8|0;dt[u>>2]=r;if((r|0)>=33){dt[l>>2]=1154;dt[l+4>>2]=3199;dt[l+8>>2]=1650;br(a,1100,l)|0;yr(a,s)|0;r=dt[u>>2]|0}t=t<<32-r|dt[i>>2];dt[i>>2]=t}while((r|0)<(e|0));l=32-e|0;l=t>>>l;s=t<>2]=s;e=r-e|0;dt[u>>2]=e;vt=h;return l|0}function _e(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0;d=vt;vt=vt+544|0;f=d+16|0;c=d;h=d+24|0;if((t|0)==0|e>>>0<62){p=0;vt=d;return p|0}u=ae(300,0)|0;if(!u){p=0;vt=d;return p|0}dt[u>>2]=519686845;r=u+4|0;dt[r>>2]=0;i=u+8|0;dt[i>>2]=0;l=u+88|0;n=u+136|0;o=u+160|0;a=l;s=a+44|0;do{dt[a>>2]=0;a=a+4|0}while((a|0)<(s|0));pt[l+44>>0]=0;m=u+184|0;a=u+208|0;s=u+232|0;g=u+252|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;g=u+268|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;g=u+284|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;dt[n>>2]=0;dt[n+4>>2]=0;dt[n+8>>2]=0;dt[n+12>>2]=0;dt[n+16>>2]=0;pt[n+20>>0]=0;dt[o>>2]=0;dt[o+4>>2]=0;dt[o+8>>2]=0;dt[o+12>>2]=0;dt[o+16>>2]=0;pt[o+20>>0]=0;dt[m>>2]=0;dt[m+4>>2]=0;dt[m+8>>2]=0;dt[m+12>>2]=0;dt[m+16>>2]=0;pt[m+20>>0]=0;dt[a>>2]=0;dt[a+4>>2]=0;dt[a+8>>2]=0;dt[a+12>>2]=0;dt[a+16>>2]=0;pt[a+20>>0]=0;dt[s>>2]=0;dt[s+4>>2]=0;dt[s+8>>2]=0;dt[s+12>>2]=0;pt[s+16>>0]=0;do{if(((e>>>0>=74?((mt[t>>0]|0)<<8|(mt[t+1>>0]|0)|0)==18552:0)?((mt[t+2>>0]|0)<<8|(mt[t+3>>0]|0))>>>0>=74:0)?((mt[t+7>>0]|0)<<16|(mt[t+6>>0]|0)<<24|(mt[t+8>>0]|0)<<8|(mt[t+9>>0]|0))>>>0<=e>>>0:0){dt[l>>2]=t;dt[r>>2]=t;dt[i>>2]=e;if(Ce(u)|0){r=dt[l>>2]|0;if((mt[r+39>>0]|0)<<8|(mt[r+40>>0]|0)){if(!(Ae(u)|0))break;if(!(Ee(u)|0))break;r=dt[l>>2]|0}if(!((mt[r+55>>0]|0)<<8|(mt[r+56>>0]|0))){g=u;vt=d;return g|0}if(Ie(u)|0?Oe(u)|0:0){g=u;vt=d;return g|0}}}else p=7}while(0);if((p|0)==7)dt[l>>2]=0;Fe(u);if(!(u&7)){Di[dt[104>>2]&1](u,0,0,1,dt[27]|0)|0;g=0;vt=d;return g|0}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(h,1100,c)|0;yr(h,f)|0;g=0;vt=d;return g|0}return 0}function ye(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+544|0;u=h;l=h+24|0;o=dt[t+88>>2]|0;s=(mt[o+70+(n<<2)+1>>0]|0)<<16|(mt[o+70+(n<<2)>>0]|0)<<24|(mt[o+70+(n<<2)+2>>0]|0)<<8|(mt[o+70+(n<<2)+3>>0]|0);a=n+1|0;if(a>>>0<(mt[o+16>>0]|0)>>>0)o=(mt[o+70+(a<<2)+1>>0]|0)<<16|(mt[o+70+(a<<2)>>0]|0)<<24|(mt[o+70+(a<<2)+2>>0]|0)<<8|(mt[o+70+(a<<2)+3>>0]|0);else o=dt[t+8>>2]|0;if(o>>>0>s>>>0){l=t+4|0;l=dt[l>>2]|0;l=l+s|0;u=o-s|0;u=be(t,l,u,e,r,i,n)|0;vt=h;return u|0}dt[u>>2]=1154;dt[u+4>>2]=3704;dt[u+8>>2]=1792;br(l,1100,u)|0;yr(l,h+16|0)|0;l=t+4|0;l=dt[l>>2]|0;l=l+s|0;u=o-s|0;u=be(t,l,u,e,r,i,n)|0;vt=h;return u|0}function be(t,e,r,i,n,o,a){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;var s=0,l=0,u=0,h=0;h=dt[t+88>>2]|0;l=((mt[h+12>>0]|0)<<8|(mt[h+13>>0]|0))>>>a;u=((mt[h+14>>0]|0)<<8|(mt[h+15>>0]|0))>>>a;l=l>>>0>1?(l+3|0)>>>2:1;u=u>>>0>1?(u+3|0)>>>2:1;h=h+18|0;a=pt[h>>0]|0;a=_t(a<<24>>24==0|a<<24>>24==9?8:16,l)|0;if(o)if((o&3|0)==0&a>>>0<=o>>>0)a=o;else{t=0;return t|0}if((_t(a,u)|0)>>>0>n>>>0){t=0;return t|0}o=(l+1|0)>>>1;s=(u+1|0)>>>1;if(!r){t=0;return t|0}dt[t+92>>2]=e;dt[t+96>>2]=e;dt[t+104>>2]=r;dt[t+100>>2]=e+r;dt[t+108>>2]=0;dt[t+112>>2]=0;switch(mt[h>>0]|0|0){case 0:{Me(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 4:case 6:case 5:case 3:case 2:{De(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 9:{ze(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 8:case 7:{Re(t,i,n,a,l,u,o,s)|0;t=1;return t|0}default:{t=0;return t|0}}return 0}function xe(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+4>>2]|0}function we(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+8>>2]|0}function Te(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+12>>2]|0}function ke(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+32>>2]|0}function Se(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0;l=vt;vt=vt+576|0;a=l+56|0;o=l+40|0;n=l+64|0;u=l;dt[u>>2]=40;ue(t,e,u)|0;i=(((dt[u+4>>2]|0)>>>r)+3|0)>>>2;e=(((dt[u+8>>2]|0)>>>r)+3|0)>>>2;r=u+32|0;t=dt[r+4>>2]|0;do{switch(dt[r>>2]|0){case 0:{if(!t)t=8;else s=13;break}case 1:{if(!t)s=12;else s=13;break}case 2:{if(!t)s=12;else s=13;break}case 3:{if(!t)s=12;else s=13;break}case 4:{if(!t)s=12;else s=13;break}case 5:{if(!t)s=12;else s=13;break}case 6:{if(!t)s=12;else s=13;break}case 7:{if(!t)s=12;else s=13;break}case 8:{if(!t)s=12;else s=13;break}case 9:{if(!t)t=8;else s=13;break}default:s=13}}while(0);if((s|0)==12)t=16;else if((s|0)==13){dt[o>>2]=1154;dt[o+4>>2]=2663;dt[o+8>>2]=1535;br(n,1100,o)|0;yr(n,a)|0;t=0}u=_t(_t(e,i)|0,t)|0;vt=l;return u|0}function Pe(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;d=vt;vt=vt+608|0;f=d+80|0;p=d+64|0;s=d+56|0;a=d+40|0;h=d+88|0;m=d;c=d+84|0;dt[m>>2]=40;ue(t,e,m)|0;l=(((dt[m+4>>2]|0)>>>n)+3|0)>>>2;m=m+32|0;o=dt[m+4>>2]|0;do{switch(dt[m>>2]|0){case 0:{if(!o)o=8;else u=13;break}case 1:{if(!o)u=12;else u=13;break}case 2:{if(!o)u=12;else u=13;break}case 3:{if(!o)u=12;else u=13;break}case 4:{if(!o)u=12;else u=13;break}case 5:{if(!o)u=12;else u=13;break}case 6:{if(!o)u=12;else u=13;break}case 7:{if(!o)u=12;else u=13;break}case 8:{if(!o)u=12;else u=13;break}case 9:{if(!o)o=8;else u=13;break}default:u=13}}while(0);if((u|0)==12)o=16;else if((u|0)==13){dt[a>>2]=1154;dt[a+4>>2]=2663;dt[a+8>>2]=1535;br(h,1100,a)|0;yr(h,s)|0;o=0}s=_t(o,l)|0;a=_e(t,e)|0;dt[c>>2]=r;o=(a|0)==0;if(!(n>>>0>15|(i>>>0<8|o))?(dt[a>>2]|0)==519686845:0)ye(a,c,i,s,n)|0;if(o){vt=d;return}if((dt[a>>2]|0)!=519686845){vt=d;return}Fe(a);if(!(a&7)){Di[dt[104>>2]&1](a,0,0,1,dt[27]|0)|0;vt=d;return}else{dt[p>>2]=1154;dt[p+4>>2]=2499;dt[p+8>>2]=1516;br(h,1100,p)|0;yr(h,f)|0;vt=d;return}}function Ce(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0;a=t+92|0;i=dt[t+4>>2]|0;o=t+88|0;n=dt[o>>2]|0;e=(mt[n+68>>0]|0)<<8|(mt[n+67>>0]|0)<<16|(mt[n+69>>0]|0);r=i+e|0;n=(mt[n+65>>0]|0)<<8|(mt[n+66>>0]|0);if(!n){t=0;return t|0}dt[a>>2]=r;dt[t+96>>2]=r;dt[t+104>>2]=n;dt[t+100>>2]=i+(n+e);dt[t+108>>2]=0;dt[t+112>>2]=0;if(!(de(a,t+116|0)|0)){t=0;return t|0}e=dt[o>>2]|0;do{if(!((mt[e+39>>0]|0)<<8|(mt[e+40>>0]|0))){if(!((mt[e+55>>0]|0)<<8|(mt[e+56>>0]|0))){t=0;return t|0}}else{if(!(de(a,t+140|0)|0)){t=0;return t|0}if(de(a,t+188|0)|0){e=dt[o>>2]|0;break}else{t=0;return t|0}}}while(0);if((mt[e+55>>0]|0)<<8|(mt[e+56>>0]|0)){if(!(de(a,t+164|0)|0)){t=0;return t|0}if(!(de(a,t+212|0)|0)){t=0;return t|0}}t=1;return t|0}function Ae(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;d=vt;vt=vt+592|0;l=d+16|0;s=d;a=d+72|0;p=d+24|0;i=t+88|0;e=dt[i>>2]|0;f=(mt[e+39>>0]|0)<<8|(mt[e+40>>0]|0);h=t+236|0;o=t+240|0;r=dt[o>>2]|0;if((r|0)!=(f|0)){if(r>>>0<=f>>>0){do{if((dt[t+244>>2]|0)>>>0>>0){if(ne(h,f,(r+1|0)==(f|0),4,0)|0){e=dt[o>>2]|0;break}pt[t+248>>0]=1;p=0;vt=d;return p|0}else e=r}while(0);Yr((dt[h>>2]|0)+(e<<2)|0,0,f-e<<2|0)|0;e=dt[i>>2]|0}dt[o>>2]=f}u=t+92|0;r=dt[t+4>>2]|0;i=(mt[e+34>>0]|0)<<8|(mt[e+33>>0]|0)<<16|(mt[e+35>>0]|0);n=r+i|0;e=(mt[e+37>>0]|0)<<8|(mt[e+36>>0]|0)<<16|(mt[e+38>>0]|0);if(!e){p=0;vt=d;return p|0}dt[u>>2]=n;dt[t+96>>2]=n;dt[t+104>>2]=e;dt[t+100>>2]=r+(e+i);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[p+20>>2]=0;dt[p>>2]=0;dt[p+4>>2]=0;dt[p+8>>2]=0;dt[p+12>>2]=0;pt[p+16>>0]=0;t=p+24|0;dt[p+44>>2]=0;dt[t>>2]=0;dt[t+4>>2]=0;dt[t+8>>2]=0;dt[t+12>>2]=0;pt[t+16>>0]=0;if(de(u,p)|0?(c=p+24|0,de(u,c)|0):0){if(!(dt[o>>2]|0)){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(a,1100,s)|0;yr(a,l)|0}if(!f)e=1;else{i=0;n=0;o=0;e=0;a=0;t=0;s=0;r=dt[h>>2]|0;while(1){i=(ge(u,p)|0)+i&31;n=(ge(u,c)|0)+n&63;o=(ge(u,p)|0)+o&31;e=(ge(u,p)|0)+e|0;a=(ge(u,c)|0)+a&63;t=(ge(u,p)|0)+t&31;dt[r>>2]=n<<5|i<<11|o|e<<27|a<<21|t<<16;s=s+1|0;if((s|0)==(f|0)){e=1;break}else{e=e&31;r=r+4|0}}}}else e=0;ce(p+24|0);ce(p);p=e;vt=d;return p|0}function Ee(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0;S=vt;vt=vt+1024|0;s=S+16|0;a=S;o=S+504|0;k=S+480|0;w=S+284|0;T=S+88|0;x=S+24|0;n=dt[t+88>>2]|0;b=(mt[n+47>>0]|0)<<8|(mt[n+48>>0]|0);y=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+42>>0]|0)<<8|(mt[n+41>>0]|0)<<16|(mt[n+43>>0]|0);i=e+r|0;n=(mt[n+45>>0]|0)<<8|(mt[n+44>>0]|0)<<16|(mt[n+46>>0]|0);if(!n){k=0;vt=S;return k|0}dt[y>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[k+20>>2]=0;dt[k>>2]=0;dt[k+4>>2]=0;dt[k+8>>2]=0;dt[k+12>>2]=0;pt[k+16>>0]=0;if(de(y,k)|0){r=0;i=-3;n=-3;while(1){dt[w+(r<<2)>>2]=i;dt[T+(r<<2)>>2]=n;e=(i|0)>2;r=r+1|0;if((r|0)==49)break;else{i=e?-3:i+1|0;n=(e&1)+n|0}}e=x;r=e+64|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(r|0));_=t+252|0;r=t+256|0;e=dt[r>>2]|0;t:do{if((e|0)==(b|0))l=13;else{if(e>>>0<=b>>>0){do{if((dt[t+260>>2]|0)>>>0>>0)if(ne(_,b,(e+1|0)==(b|0),4,0)|0){e=dt[r>>2]|0;break}else{pt[t+264>>0]=1;e=0;break t}}while(0);Yr((dt[_>>2]|0)+(e<<2)|0,0,b-e<<2|0)|0}dt[r>>2]=b;l=13}}while(0);do{if((l|0)==13){if(!b){dt[a>>2]=1154;dt[a+4>>2]=903;dt[a+8>>2]=1781;br(o,1100,a)|0;yr(o,s)|0;e=1;break}i=x+4|0;n=x+8|0;t=x+12|0;o=x+16|0;a=x+20|0;s=x+24|0;l=x+28|0;u=x+32|0;h=x+36|0;c=x+40|0;f=x+44|0;p=x+48|0;d=x+52|0;m=x+56|0;g=x+60|0;v=0;r=dt[_>>2]|0;while(1){e=0;do{P=ge(y,k)|0;_=e<<1;C=x+(_<<2)|0;dt[C>>2]=(dt[C>>2]|0)+(dt[w+(P<<2)>>2]|0)&3;_=x+((_|1)<<2)|0;dt[_>>2]=(dt[_>>2]|0)+(dt[T+(P<<2)>>2]|0)&3;e=e+1|0}while((e|0)!=8);dt[r>>2]=(mt[1725+(dt[i>>2]|0)>>0]|0)<<2|(mt[1725+(dt[x>>2]|0)>>0]|0)|(mt[1725+(dt[n>>2]|0)>>0]|0)<<4|(mt[1725+(dt[t>>2]|0)>>0]|0)<<6|(mt[1725+(dt[o>>2]|0)>>0]|0)<<8|(mt[1725+(dt[a>>2]|0)>>0]|0)<<10|(mt[1725+(dt[s>>2]|0)>>0]|0)<<12|(mt[1725+(dt[l>>2]|0)>>0]|0)<<14|(mt[1725+(dt[u>>2]|0)>>0]|0)<<16|(mt[1725+(dt[h>>2]|0)>>0]|0)<<18|(mt[1725+(dt[c>>2]|0)>>0]|0)<<20|(mt[1725+(dt[f>>2]|0)>>0]|0)<<22|(mt[1725+(dt[p>>2]|0)>>0]|0)<<24|(mt[1725+(dt[d>>2]|0)>>0]|0)<<26|(mt[1725+(dt[m>>2]|0)>>0]|0)<<28|(mt[1725+(dt[g>>2]|0)>>0]|0)<<30;v=v+1|0;if((v|0)==(b|0)){e=1;break}else r=r+4|0}}}while(0)}else e=0;ce(k);C=e;vt=S;return C|0}function Ie(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0;f=vt;vt=vt+560|0;l=f+16|0;s=f;a=f+48|0;c=f+24|0;n=dt[t+88>>2]|0;h=(mt[n+55>>0]|0)<<8|(mt[n+56>>0]|0);u=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+50>>0]|0)<<8|(mt[n+49>>0]|0)<<16|(mt[n+51>>0]|0);i=e+r|0;n=(mt[n+53>>0]|0)<<8|(mt[n+52>>0]|0)<<16|(mt[n+54>>0]|0);if(!n){c=0;vt=f;return c|0}dt[u>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[c+20>>2]=0;dt[c>>2]=0;dt[c+4>>2]=0;dt[c+8>>2]=0;dt[c+12>>2]=0;pt[c+16>>0]=0;t:do{if(de(u,c)|0){o=t+268|0;r=t+272|0;e=dt[r>>2]|0;if((e|0)!=(h|0)){if(e>>>0<=h>>>0){do{if((dt[t+276>>2]|0)>>>0>>0)if(ne(o,h,(e+1|0)==(h|0),2,0)|0){e=dt[r>>2]|0;break}else{pt[t+280>>0]=1;e=0;break t}}while(0);Yr((dt[o>>2]|0)+(e<<1)|0,0,h-e<<1|0)|0}dt[r>>2]=h}if(!h){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(a,1100,s)|0;yr(a,l)|0;e=1;break}r=0;i=0;n=0;e=dt[o>>2]|0;while(1){l=ge(u,c)|0;r=l+r&255;i=(ge(u,c)|0)+i&255;$[e>>1]=i<<8|r;n=n+1|0;if((n|0)==(h|0)){e=1;break}else e=e+2|0}}else e=0}while(0);ce(c);c=e;vt=f;return c|0}function Oe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0;S=vt;vt=vt+2432|0;s=S+16|0;a=S;o=S+1912|0;k=S+1888|0;w=S+988|0;T=S+88|0;x=S+24|0;n=dt[t+88>>2]|0;b=(mt[n+63>>0]|0)<<8|(mt[n+64>>0]|0);y=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+58>>0]|0)<<8|(mt[n+57>>0]|0)<<16|(mt[n+59>>0]|0);i=e+r|0;n=(mt[n+61>>0]|0)<<8|(mt[n+60>>0]|0)<<16|(mt[n+62>>0]|0);if(!n){k=0;vt=S;return k|0}dt[y>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[k+20>>2]=0;dt[k>>2]=0;dt[k+4>>2]=0;dt[k+8>>2]=0;dt[k+12>>2]=0;pt[k+16>>0]=0;if(de(y,k)|0){r=0;i=-7;n=-7;while(1){dt[w+(r<<2)>>2]=i;dt[T+(r<<2)>>2]=n;e=(i|0)>6;r=r+1|0;if((r|0)==225)break;else{i=e?-7:i+1|0;n=(e&1)+n|0}}e=x;r=e+64|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(r|0));_=t+284|0;r=b*3|0;i=t+288|0;e=dt[i>>2]|0;t:do{if((e|0)==(r|0))l=13;else{if(e>>>0<=r>>>0){do{if((dt[t+292>>2]|0)>>>0>>0)if(ne(_,r,(e+1|0)==(r|0),2,0)|0){e=dt[i>>2]|0;break}else{pt[t+296>>0]=1;e=0;break t}}while(0);Yr((dt[_>>2]|0)+(e<<1)|0,0,r-e<<1|0)|0}dt[i>>2]=r;l=13}}while(0);do{if((l|0)==13){if(!b){dt[a>>2]=1154;dt[a+4>>2]=903;dt[a+8>>2]=1781;br(o,1100,a)|0;yr(o,s)|0;e=1;break}i=x+4|0;n=x+8|0;t=x+12|0;o=x+16|0;a=x+20|0;s=x+24|0;l=x+28|0;u=x+32|0;h=x+36|0;c=x+40|0;f=x+44|0;p=x+48|0;d=x+52|0;m=x+56|0;g=x+60|0;v=0;r=dt[_>>2]|0;while(1){e=0;do{P=ge(y,k)|0;_=e<<1;C=x+(_<<2)|0;dt[C>>2]=(dt[C>>2]|0)+(dt[w+(P<<2)>>2]|0)&7;_=x+((_|1)<<2)|0;dt[_>>2]=(dt[_>>2]|0)+(dt[T+(P<<2)>>2]|0)&7;e=e+1|0}while((e|0)!=8);P=mt[1729+(dt[a>>2]|0)>>0]|0;$[r>>1]=(mt[1729+(dt[i>>2]|0)>>0]|0)<<3|(mt[1729+(dt[x>>2]|0)>>0]|0)|(mt[1729+(dt[n>>2]|0)>>0]|0)<<6|(mt[1729+(dt[t>>2]|0)>>0]|0)<<9|(mt[1729+(dt[o>>2]|0)>>0]|0)<<12|P<<15;C=mt[1729+(dt[c>>2]|0)>>0]|0;$[r+2>>1]=(mt[1729+(dt[s>>2]|0)>>0]|0)<<2|P>>>1|(mt[1729+(dt[l>>2]|0)>>0]|0)<<5|(mt[1729+(dt[u>>2]|0)>>0]|0)<<8|(mt[1729+(dt[h>>2]|0)>>0]|0)<<11|C<<14;$[r+4>>1]=(mt[1729+(dt[f>>2]|0)>>0]|0)<<1|C>>>2|(mt[1729+(dt[p>>2]|0)>>0]|0)<<4|(mt[1729+(dt[d>>2]|0)>>0]|0)<<7|(mt[1729+(dt[m>>2]|0)>>0]|0)<<10|(mt[1729+(dt[g>>2]|0)>>0]|0)<<13;v=v+1|0;if((v|0)==(b|0)){e=1;break}else r=r+6|0}}}while(0)}else e=0;ce(k);C=e;vt=S;return C|0}function Me(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0,st=0,lt=0,ut=0,ht=0,ct=0,ft=0;ht=vt;vt=vt+720|0;ut=ht+184|0;st=ht+168|0;at=ht+160|0;ot=ht+144|0;nt=ht+136|0;it=ht+120|0;rt=ht+112|0;tt=ht+96|0;$=ht+88|0;Q=ht+72|0;K=ht+64|0;J=ht+48|0;Z=ht+40|0;lt=ht+24|0;et=ht+16|0;Y=ht;G=ht+208|0;V=ht+192|0;N=t+240|0;B=dt[N>>2]|0;H=t+256|0;q=dt[H>>2]|0;r=pt[(dt[t+88>>2]|0)+17>>0]|0;W=i>>>2;if(!(r<<24>>24)){vt=ht;return 1}U=(s|0)==0;X=s+-1|0;M=(o&1|0)!=0;D=i<<1;z=t+92|0;R=t+116|0;F=t+140|0;j=t+236|0;L=a+-1|0;O=(n&1|0)!=0;I=t+188|0;S=t+252|0;P=W+1|0;C=W+2|0;A=W+3|0;E=L<<4;T=r&255;r=0;o=0;n=1;k=0;do{if(!U){x=dt[e+(k<<2)>>2]|0;w=0;while(1){_=w&1;l=(_|0)==0;v=(_<<5^32)+-16|0;_=(_<<1^2)+-1|0;b=l?a:-1;u=l?0:L;t=(w|0)==(X|0);y=M&t;if((u|0)!=(b|0)){g=M&t^1;m=l?x:x+E|0;while(1){if((n|0)==1)n=ge(z,R)|0|512;d=n&7;n=n>>>3;l=mt[1823+d>>0]|0;t=0;do{f=(ge(z,F)|0)+o|0;p=f-B|0;o=p>>31;o=o&f|p&~o;if((dt[N>>2]|0)>>>0<=o>>>0){dt[Y>>2]=1154;dt[Y+4>>2]=903;dt[Y+8>>2]=1781;br(G,1100,Y)|0;yr(G,et)|0}dt[V+(t<<2)>>2]=dt[(dt[j>>2]|0)+(o<<2)>>2];t=t+1|0}while(t>>>0>>0);p=O&(u|0)==(L|0);if(y|p){f=0;do{h=_t(f,i)|0;t=m+h|0;l=(f|0)==0|g;c=f<<1;ft=(ge(z,I)|0)+r|0;ct=ft-q|0;r=ct>>31;r=r&ft|ct&~r;do{if(p){if(!l){ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;break}dt[t>>2]=dt[V+((mt[1831+(d<<2)+c>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(G,1100,ot)|0;yr(G,at)|0}dt[m+(h+4)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r}else{if(!l){ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;break}dt[t>>2]=dt[V+((mt[1831+(d<<2)+c>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[it>>2]=1154;dt[it+4>>2]=903;dt[it+8>>2]=1781;br(G,1100,it)|0;yr(G,nt)|0}dt[m+(h+4)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;dt[m+(h+8)>>2]=dt[V+((mt[(c|1)+(1831+(d<<2))>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[st>>2]=1154;dt[st+4>>2]=903;dt[st+8>>2]=1781;br(G,1100,st)|0;yr(G,ut)|0}dt[m+(h+12)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2]}}while(0);f=f+1|0}while((f|0)!=2)}else{dt[m>>2]=dt[V+((mt[1831+(d<<2)>>0]|0)<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[lt>>2]=1154;dt[lt+4>>2]=903;dt[lt+8>>2]=1781;br(G,1100,lt)|0;yr(G,Z)|0}dt[m+4>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+8>>2]=dt[V+((mt[1831+(d<<2)+1>>0]|0)<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[J>>2]=1154;dt[J+4>>2]=903;dt[J+8>>2]=1781;br(G,1100,J)|0;yr(G,K)|0}dt[m+12>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+(W<<2)>>2]=dt[V+((mt[1831+(d<<2)+2>>0]|0)<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[Q>>2]=1154;dt[Q+4>>2]=903;dt[Q+8>>2]=1781;br(G,1100,Q)|0;yr(G,$)|0}dt[m+(P<<2)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+(C<<2)>>2]=dt[V+((mt[1831+(d<<2)+3>>0]|0)<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[tt>>2]=1154;dt[tt+4>>2]=903;dt[tt+8>>2]=1781;br(G,1100,tt)|0;yr(G,rt)|0}dt[m+(A<<2)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2]}u=u+_|0;if((u|0)==(b|0))break;else m=m+v|0}}w=w+1|0;if((w|0)==(s|0))break;else x=x+D|0}}k=k+1|0}while((k|0)!=(T|0));vt=ht;return 1}function De(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0,st=0,lt=0,ut=0,ht=0,ct=0,ft=0;ct=vt;vt=vt+640|0;lt=ct+88|0;st=ct+72|0;at=ct+64|0;ot=ct+48|0;nt=ct+40|0;ht=ct+24|0;ut=ct+16|0;it=ct;et=ct+128|0;rt=ct+112|0;tt=ct+96|0;N=t+240|0;B=dt[N>>2]|0;H=t+256|0;K=dt[H>>2]|0;Q=t+272|0;$=dt[Q>>2]|0;r=dt[t+88>>2]|0;U=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=ct;return 1}X=(s|0)==0;q=s+-1|0;W=i<<1;G=t+92|0;V=t+116|0;Y=a+-1|0;Z=t+212|0;J=t+188|0;L=(n&1|0)==0;j=(o&1|0)==0;O=t+288|0;M=t+284|0;D=t+252|0;z=t+140|0;R=t+236|0;F=t+164|0;E=t+268|0;I=Y<<5;C=r&255;r=0;n=0;o=0;t=0;l=1;A=0;do{if(!X){S=dt[e+(A<<2)>>2]|0;P=0;while(1){T=P&1;u=(T|0)==0;w=(T<<6^64)+-32|0;T=(T<<1^2)+-1|0;k=u?a:-1;h=u?0:Y;if((h|0)!=(k|0)){x=j|(P|0)!=(q|0);b=u?S:S+I|0;while(1){if((l|0)==1)l=ge(G,V)|0|512;y=l&7;l=l>>>3;c=mt[1823+y>>0]|0;u=0;do{v=(ge(G,F)|0)+n|0;_=v-$|0;n=_>>31;n=n&v|_&~n;if((dt[Q>>2]|0)>>>0<=n>>>0){dt[it>>2]=1154;dt[it+4>>2]=903;dt[it+8>>2]=1781;br(et,1100,it)|0;yr(et,ut)|0}dt[tt+(u<<2)>>2]=gt[(dt[E>>2]|0)+(n<<1)>>1];u=u+1|0}while(u>>>0>>0);u=0;do{v=(ge(G,z)|0)+t|0;_=v-B|0;t=_>>31;t=t&v|_&~t;if((dt[N>>2]|0)>>>0<=t>>>0){dt[ht>>2]=1154;dt[ht+4>>2]=903;dt[ht+8>>2]=1781;br(et,1100,ht)|0;yr(et,nt)|0}dt[rt+(u<<2)>>2]=dt[(dt[R>>2]|0)+(t<<2)>>2];u=u+1|0}while(u>>>0>>0);_=L|(h|0)!=(Y|0);g=0;v=b;while(1){m=x|(g|0)==0;d=g<<1;f=0;p=v;while(1){c=(ge(G,Z)|0)+r|0;u=c-U|0;r=u>>31;r=r&c|u&~r;u=(ge(G,J)|0)+o|0;c=u-K|0;o=c>>31;o=o&u|c&~o;if((_|(f|0)==0)&m){u=mt[f+d+(1831+(y<<2))>>0]|0;c=r*3|0;if((dt[O>>2]|0)>>>0<=c>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(et,1100,ot)|0;yr(et,at)|0}ft=dt[M>>2]|0;dt[p>>2]=(gt[ft+(c<<1)>>1]|0)<<16|dt[tt+(u<<2)>>2];dt[p+4>>2]=(gt[ft+(c+2<<1)>>1]|0)<<16|(gt[ft+(c+1<<1)>>1]|0);dt[p+8>>2]=dt[rt+(u<<2)>>2];if((dt[H>>2]|0)>>>0<=o>>>0){dt[st>>2]=1154;dt[st+4>>2]=903;dt[st+8>>2]=1781;br(et,1100,st)|0;yr(et,lt)|0}dt[p+12>>2]=dt[(dt[D>>2]|0)+(o<<2)>>2]}f=f+1|0;if((f|0)==2)break;else p=p+16|0}g=g+1|0;if((g|0)==2)break;else v=v+i|0}h=h+T|0;if((h|0)==(k|0))break;else b=b+w|0}}P=P+1|0;if((P|0)==(s|0))break;else S=S+W|0}}A=A+1|0}while((A|0)!=(C|0));vt=ct;return 1}function ze(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0;K=vt;vt=vt+608|0;Y=K+64|0;V=K+48|0;G=K+40|0;J=K+24|0;Z=K+16|0;W=K;q=K+88|0;H=K+72|0;D=t+272|0;z=dt[D>>2]|0;r=dt[t+88>>2]|0;R=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=K;return 1}F=(s|0)==0;j=s+-1|0;L=i<<1;N=t+92|0;B=t+116|0;U=a+-1|0;X=t+212|0;M=(o&1|0)==0;E=t+288|0;I=t+284|0;O=t+164|0;C=t+268|0;A=U<<4;P=r&255;S=(n&1|0)!=0;r=0;o=0;t=1;k=0;do{if(!F){w=dt[e+(k<<2)>>2]|0;T=0;while(1){b=T&1;n=(b|0)==0;y=(b<<5^32)+-16|0;b=(b<<1^2)+-1|0;x=n?a:-1;l=n?0:U;if((l|0)!=(x|0)){_=M|(T|0)!=(j|0);v=n?w:w+A|0;while(1){if((t|0)==1)t=ge(N,B)|0|512;g=t&7;t=t>>>3;u=mt[1823+g>>0]|0;n=0;do{d=(ge(N,O)|0)+o|0;m=d-z|0;o=m>>31;o=o&d|m&~o;if((dt[D>>2]|0)>>>0<=o>>>0){dt[W>>2]=1154;dt[W+4>>2]=903;dt[W+8>>2]=1781;br(q,1100,W)|0;yr(q,Z)|0}dt[H+(n<<2)>>2]=gt[(dt[C>>2]|0)+(o<<1)>>1];n=n+1|0}while(n>>>0>>0);m=(l|0)==(U|0)&S;p=0;d=v;while(1){f=_|(p|0)==0;c=p<<1;n=(ge(N,X)|0)+r|0;h=n-R|0;u=h>>31;u=u&n|h&~u;if(f){r=mt[1831+(g<<2)+c>>0]|0;n=u*3|0;if((dt[E>>2]|0)>>>0<=n>>>0){dt[J>>2]=1154;dt[J+4>>2]=903;dt[J+8>>2]=1781;br(q,1100,J)|0;yr(q,G)|0}h=dt[I>>2]|0;dt[d>>2]=(gt[h+(n<<1)>>1]|0)<<16|dt[H+(r<<2)>>2];dt[d+4>>2]=(gt[h+(n+2<<1)>>1]|0)<<16|(gt[h+(n+1<<1)>>1]|0)}h=d+8|0;n=(ge(N,X)|0)+u|0;u=n-R|0;r=u>>31;r=r&n|u&~r;if(!(m|f^1)){n=mt[(c|1)+(1831+(g<<2))>>0]|0;u=r*3|0;if((dt[E>>2]|0)>>>0<=u>>>0){dt[V>>2]=1154;dt[V+4>>2]=903;dt[V+8>>2]=1781;br(q,1100,V)|0;yr(q,Y)|0}f=dt[I>>2]|0;dt[h>>2]=(gt[f+(u<<1)>>1]|0)<<16|dt[H+(n<<2)>>2];dt[d+12>>2]=(gt[f+(u+2<<1)>>1]|0)<<16|(gt[f+(u+1<<1)>>1]|0)}p=p+1|0;if((p|0)==2)break;else d=d+i|0}l=l+b|0;if((l|0)==(x|0))break;else v=v+y|0}}T=T+1|0;if((T|0)==(s|0))break;else w=w+L|0}}k=k+1|0}while((k|0)!=(P|0));vt=K;return 1}function Re(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0;at=vt;vt=vt+640|0;it=at+88|0;rt=at+72|0;et=at+64|0;tt=at+48|0;$=at+40|0;ot=at+24|0;nt=at+16|0;Q=at;K=at+128|0;Z=at+112|0;J=at+96|0;N=t+272|0;B=dt[N>>2]|0;r=dt[t+88>>2]|0;U=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=at;return 1}X=(s|0)==0;H=s+-1|0;q=i<<1;W=t+92|0;G=t+116|0;V=a+-1|0;Y=t+212|0;L=(n&1|0)==0;j=(o&1|0)==0;z=t+288|0;R=t+284|0;F=t+164|0;M=t+268|0;D=V<<5;I=r&255;r=0;n=0;o=0;t=0;l=1;O=0;do{if(!X){A=dt[e+(O<<2)>>2]|0;E=0;while(1){P=E&1;u=(P|0)==0;S=(P<<6^64)+-32|0;P=(P<<1^2)+-1|0;C=u?a:-1;h=u?0:V;if((h|0)!=(C|0)){k=j|(E|0)!=(H|0);T=u?A:A+D|0;while(1){if((l|0)==1)l=ge(W,G)|0|512;w=l&7;l=l>>>3;c=mt[1823+w>>0]|0;u=0;do{b=(ge(W,F)|0)+t|0;x=b-B|0;t=x>>31;t=t&b|x&~t;if((dt[N>>2]|0)>>>0<=t>>>0){dt[Q>>2]=1154;dt[Q+4>>2]=903;dt[Q+8>>2]=1781;br(K,1100,Q)|0;yr(K,nt)|0}dt[Z+(u<<2)>>2]=gt[(dt[M>>2]|0)+(t<<1)>>1];u=u+1|0}while(u>>>0>>0);u=0;do{b=(ge(W,F)|0)+n|0;x=b-B|0;n=x>>31;n=n&b|x&~n;if((dt[N>>2]|0)>>>0<=n>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(K,1100,ot)|0;yr(K,$)|0}dt[J+(u<<2)>>2]=gt[(dt[M>>2]|0)+(n<<1)>>1];u=u+1|0}while(u>>>0>>0);x=L|(h|0)!=(V|0);y=0;b=T;while(1){_=k|(y|0)==0;v=y<<1;m=0;g=b;while(1){d=(ge(W,Y)|0)+o|0;p=d-U|0;o=p>>31;o=o&d|p&~o;p=(ge(W,Y)|0)+r|0;d=p-U|0;r=d>>31;r=r&p|d&~r;if((x|(m|0)==0)&_){p=mt[m+v+(1831+(w<<2))>>0]|0;d=o*3|0;u=dt[z>>2]|0;if(u>>>0<=d>>>0){dt[tt>>2]=1154;dt[tt+4>>2]=903;dt[tt+8>>2]=1781;br(K,1100,tt)|0;yr(K,et)|0;u=dt[z>>2]|0}c=dt[R>>2]|0;f=r*3|0;if(u>>>0>f>>>0)u=c;else{dt[rt>>2]=1154;dt[rt+4>>2]=903;dt[rt+8>>2]=1781;br(K,1100,rt)|0;yr(K,it)|0;u=dt[R>>2]|0}dt[g>>2]=(gt[c+(d<<1)>>1]|0)<<16|dt[Z+(p<<2)>>2];dt[g+4>>2]=(gt[c+(d+2<<1)>>1]|0)<<16|(gt[c+(d+1<<1)>>1]|0);dt[g+8>>2]=(gt[u+(f<<1)>>1]|0)<<16|dt[J+(p<<2)>>2];dt[g+12>>2]=(gt[u+(f+2<<1)>>1]|0)<<16|(gt[u+(f+1<<1)>>1]|0)}m=m+1|0;if((m|0)==2)break;else g=g+16|0}y=y+1|0;if((y|0)==2)break;else b=b+i|0}h=h+P|0;if((h|0)==(C|0))break;else T=T+S|0}}E=E+1|0;if((E|0)==(s|0))break;else A=A+q|0}}O=O+1|0}while((O|0)!=(I|0));vt=at;return 1}function Fe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0;f=vt;vt=vt+608|0;c=f+88|0;h=f+72|0;l=f+64|0;s=f+48|0;o=f+40|0;a=f+24|0;n=f+16|0;i=f;u=f+96|0;dt[t>>2]=0;e=t+284|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[i>>2]=1154;dt[i+4>>2]=2499;dt[i+8>>2]=1516;br(u,1100,i)|0;yr(u,n)|0}dt[e>>2]=0;dt[t+288>>2]=0;dt[t+292>>2]=0}pt[t+296>>0]=0;e=t+268|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[a>>2]=1154;dt[a+4>>2]=2499;dt[a+8>>2]=1516;br(u,1100,a)|0;yr(u,o)|0}dt[e>>2]=0;dt[t+272>>2]=0;dt[t+276>>2]=0}pt[t+280>>0]=0;e=t+252|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[s>>2]=1154;dt[s+4>>2]=2499;dt[s+8>>2]=1516;br(u,1100,s)|0;yr(u,l)|0}dt[e>>2]=0;dt[t+256>>2]=0;dt[t+260>>2]=0}pt[t+264>>0]=0;e=t+236|0;r=dt[e>>2]|0;if(!r){c=t+248|0;pt[c>>0]=0;c=t+212|0;ce(c);c=t+188|0;ce(c);c=t+164|0;ce(c);c=t+140|0;ce(c);c=t+116|0;ce(c);vt=f;return}if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[h>>2]=1154;dt[h+4>>2]=2499;dt[h+8>>2]=1516;br(u,1100,h)|0;yr(u,c)|0}dt[e>>2]=0;dt[t+240>>2]=0;dt[t+244>>2]=0;c=t+248|0;pt[c>>0]=0;c=t+212|0;ce(c);c=t+188|0;ce(c);c=t+164|0;ce(c);c=t+140|0;ce(c);c=t+116|0;ce(c);vt=f;return}function je(t,e){t=t|0;e=e|0;var r=0;r=vt;vt=vt+16|0;dt[r>>2]=e;e=dt[63]|0;xr(e,t,r)|0;vr(10,e)|0;Xt()}function Le(){var t=0,e=0;t=vt;vt=vt+16|0;if(!(Ft(200,2)|0)){e=zt(dt[49]|0)|0;vt=t;return e|0}else je(2090,t);return 0}function Ne(t){t=t|0;Ur(t);return}function Be(t){t=t|0;var e=0;e=vt;vt=vt+16|0;Oi[t&3]();je(2139,e)}function Ue(){var t=0,e=0;t=Le()|0;if(((t|0)!=0?(e=dt[t>>2]|0,(e|0)!=0):0)?(t=e+48|0,(dt[t>>2]&-256|0)==1126902528?(dt[t+4>>2]|0)==1129074247:0):0)Be(dt[e+12>>2]|0);e=dt[28]|0;dt[28]=e+0;Be(e)}function Xe(t){t=t|0;return}function He(t){t=t|0;return}function qe(t){t=t|0;return}function We(t){t=t|0;return}function Ge(t){t=t|0;Ne(t);return}function Ve(t){t=t|0;Ne(t);return}function Ye(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;a=vt;vt=vt+64|0;o=a;if((t|0)!=(e|0))if((e|0)!=0?(n=Qe(e,24,40,0)|0,(n|0)!=0):0){e=o;i=e+56|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(i|0));dt[o>>2]=n;dt[o+8>>2]=t;dt[o+12>>2]=-1;dt[o+48>>2]=1;zi[dt[(dt[n>>2]|0)+28>>2]&3](n,o,dt[r>>2]|0,1);if((dt[o+24>>2]|0)==1){dt[r>>2]=dt[o+16>>2];e=1}else e=0}else e=0;else e=1;vt=a;return e|0}function Ze(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0;t=e+16|0;n=dt[t>>2]|0;do{if(n){if((n|0)!=(r|0)){i=e+36|0;dt[i>>2]=(dt[i>>2]|0)+1;dt[e+24>>2]=2;pt[e+54>>0]=1;break}t=e+24|0;if((dt[t>>2]|0)==2)dt[t>>2]=i}else{dt[t>>2]=r;dt[e+24>>2]=i;dt[e+36>>2]=1}}while(0);return}function Je(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;if((t|0)==(dt[e+8>>2]|0))Ze(0,e,r,i);return}function Ke(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;if((t|0)==(dt[e+8>>2]|0))Ze(0,e,r,i);else{t=dt[t+8>>2]|0;zi[dt[(dt[t>>2]|0)+28>>2]&3](t,e,r,i)}return}function Qe(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0;p=vt;vt=vt+64|0;f=p;c=dt[t>>2]|0;h=t+(dt[c+-8>>2]|0)|0;c=dt[c+-4>>2]|0;dt[f>>2]=r;dt[f+4>>2]=t;dt[f+8>>2]=e;dt[f+12>>2]=i;i=f+16|0;t=f+20|0;e=f+24|0;n=f+28|0;o=f+32|0;a=f+40|0;s=(c|0)==(r|0);l=i;u=l+36|0;do{dt[l>>2]=0;l=l+4|0}while((l|0)<(u|0));$[i+36>>1]=0;pt[i+38>>0]=0;t:do{if(s){dt[f+48>>2]=1;Mi[dt[(dt[r>>2]|0)+20>>2]&3](r,f,h,h,1,0);i=(dt[e>>2]|0)==1?h:0}else{Ci[dt[(dt[c>>2]|0)+24>>2]&3](c,f,h,1,0);switch(dt[f+36>>2]|0){case 0:{i=(dt[a>>2]|0)==1&(dt[n>>2]|0)==1&(dt[o>>2]|0)==1?dt[t>>2]|0:0;break t}case 1:break;default:{i=0;break t}}if((dt[e>>2]|0)!=1?!((dt[a>>2]|0)==0&(dt[n>>2]|0)==1&(dt[o>>2]|0)==1):0){i=0;break}i=dt[i>>2]|0}}while(0);vt=p;return i|0}function $e(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;pt[e+53>>0]=1;do{if((dt[e+4>>2]|0)==(i|0)){pt[e+52>>0]=1;i=e+16|0;t=dt[i>>2]|0;if(!t){dt[i>>2]=r;dt[e+24>>2]=n;dt[e+36>>2]=1;if(!((n|0)==1?(dt[e+48>>2]|0)==1:0))break;pt[e+54>>0]=1;break}if((t|0)!=(r|0)){n=e+36|0;dt[n>>2]=(dt[n>>2]|0)+1;pt[e+54>>0]=1;break}t=e+24|0;i=dt[t>>2]|0;if((i|0)==2){dt[t>>2]=n;i=n}if((i|0)==1?(dt[e+48>>2]|0)==1:0)pt[e+54>>0]=1}}while(0);return}function tr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0;t:do{if((t|0)==(dt[e+8>>2]|0)){if((dt[e+4>>2]|0)==(r|0)?(o=e+28|0,(dt[o>>2]|0)!=1):0)dt[o>>2]=i}else{if((t|0)!=(dt[e>>2]|0)){s=dt[t+8>>2]|0;Ci[dt[(dt[s>>2]|0)+24>>2]&3](s,e,r,i,n);break}if((dt[e+16>>2]|0)!=(r|0)?(a=e+20|0,(dt[a>>2]|0)!=(r|0)):0){dt[e+32>>2]=i;i=e+44|0;if((dt[i>>2]|0)==4)break;o=e+52|0;pt[o>>0]=0;l=e+53|0;pt[l>>0]=0;t=dt[t+8>>2]|0;Mi[dt[(dt[t>>2]|0)+20>>2]&3](t,e,r,r,1,n);if(pt[l>>0]|0){if(!(pt[o>>0]|0)){o=1;s=13}}else{o=0;s=13}do{if((s|0)==13){dt[a>>2]=r;l=e+40|0;dt[l>>2]=(dt[l>>2]|0)+1;if((dt[e+36>>2]|0)==1?(dt[e+24>>2]|0)==2:0){pt[e+54>>0]=1;if(o)break}else s=16;if((s|0)==16?o:0)break;dt[i>>2]=4;break t}}while(0);dt[i>>2]=3;break}if((i|0)==1)dt[e+32>>2]=1}}while(0);return}function er(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0;do{if((t|0)==(dt[e+8>>2]|0)){if((dt[e+4>>2]|0)==(r|0)?(a=e+28|0,(dt[a>>2]|0)!=1):0)dt[a>>2]=i}else if((t|0)==(dt[e>>2]|0)){if((dt[e+16>>2]|0)!=(r|0)?(o=e+20|0,(dt[o>>2]|0)!=(r|0)):0){dt[e+32>>2]=i;dt[o>>2]=r;n=e+40|0;dt[n>>2]=(dt[n>>2]|0)+1;if((dt[e+36>>2]|0)==1?(dt[e+24>>2]|0)==2:0)pt[e+54>>0]=1;dt[e+44>>2]=4;break}if((i|0)==1)dt[e+32>>2]=1}}while(0);return}function rr(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;if((t|0)==(dt[e+8>>2]|0))$e(0,e,r,i,n);else{t=dt[t+8>>2]|0;Mi[dt[(dt[t>>2]|0)+20>>2]&3](t,e,r,i,n,o)}return}function ir(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;if((t|0)==(dt[e+8>>2]|0))$e(0,e,r,i,n);return}function nr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;n=vt;vt=vt+16|0;i=n;dt[i>>2]=dt[r>>2];t=Pi[dt[(dt[t>>2]|0)+16>>2]&7](t,e,i)|0;if(t)dt[r>>2]=dt[i>>2];vt=n;return t&1|0}function or(t){t=t|0;if(!t)t=0;else t=(Qe(t,24,72,0)|0)!=0;return t&1|0}function ar(){var t=0,e=0,r=0,i=0,n=0,o=0,a=0,s=0;n=vt;vt=vt+48|0;a=n+32|0;r=n+24|0;s=n+16|0;o=n;n=n+36|0;t=Le()|0;if((t|0)!=0?(i=dt[t>>2]|0,(i|0)!=0):0){t=i+48|0;e=dt[t>>2]|0;t=dt[t+4>>2]|0;if(!((e&-256|0)==1126902528&(t|0)==1129074247)){dt[r>>2]=dt[51];je(2368,r)}if((e|0)==1126902529&(t|0)==1129074247)t=dt[i+44>>2]|0;else t=i+80|0;dt[n>>2]=t;i=dt[i>>2]|0;t=dt[i+4>>2]|0;if(Pi[dt[(dt[8>>2]|0)+16>>2]&7](8,i,n)|0){s=dt[n>>2]|0;n=dt[51]|0;s=Ei[dt[(dt[s>>2]|0)+8>>2]&1](s)|0;dt[o>>2]=n;dt[o+4>>2]=t;dt[o+8>>2]=s;je(2282,o)}else{dt[s>>2]=dt[51];dt[s+4>>2]=t;je(2327,s)}}je(2406,a)}function sr(){var t=0;t=vt;vt=vt+16|0;if(!(jt(196,6)|0)){vt=t;return}else je(2179,t)}function lr(t){t=t|0;var e=0;e=vt;vt=vt+16|0;Ur(t);if(!(Bt(dt[49]|0,0)|0)){vt=e;return}else je(2229,e)}function ur(t){t=t|0;var e=0,r=0;e=0;while(1){if((mt[2427+e>>0]|0)==(t|0)){r=2;break}e=e+1|0;if((e|0)==87){e=87;t=2515;r=5;break}}if((r|0)==2)if(!e)t=2515;else{t=2515;r=5}if((r|0)==5)while(1){r=t;while(1){t=r+1|0;if(!(pt[r>>0]|0))break;else r=t}e=e+-1|0;if(!e)break;else r=5}return t|0}function hr(){var t=0;if(!(dt[52]|0))t=264;else{t=(Rt()|0)+60|0;t=dt[t>>2]|0}return t|0}function cr(t){t=t|0;var e=0;if(t>>>0>4294963200){e=hr()|0;dt[e>>2]=0-t;t=-1}return t|0}function fr(t,e){t=+t;e=e|0;var r=0,i=0,n=0;tt[et>>3]=t;r=dt[et>>2]|0;i=dt[et+4>>2]|0;n=Zr(r|0,i|0,52)|0;n=n&2047;switch(n|0){case 0:{if(t!=0.0){t=+fr(t*18446744073709552.0e3,e);r=(dt[e>>2]|0)+-64|0}else r=0;dt[e>>2]=r;break}case 2047:break;default:{dt[e>>2]=n+-1022;dt[et>>2]=r;dt[et+4>>2]=i&-2146435073|1071644672;t=+tt[et>>3]}}return+t}function pr(t,e){t=+t;e=e|0;return+ +fr(t,e)}function dr(t,e,r){t=t|0;e=e|0;r=r|0;do{if(t){if(e>>>0<128){pt[t>>0]=e;t=1;break}if(e>>>0<2048){pt[t>>0]=e>>>6|192;pt[t+1>>0]=e&63|128;t=2;break}if(e>>>0<55296|(e&-8192|0)==57344){pt[t>>0]=e>>>12|224;pt[t+1>>0]=e>>>6&63|128;pt[t+2>>0]=e&63|128;t=3;break}if((e+-65536|0)>>>0<1048576){pt[t>>0]=e>>>18|240;pt[t+1>>0]=e>>>12&63|128;pt[t+2>>0]=e>>>6&63|128;pt[t+3>>0]=e&63|128;t=4;break}else{t=hr()|0;dt[t>>2]=84;t=-1;break}}else t=1}while(0);return t|0}function mr(t,e){t=t|0;e=e|0;if(!t)t=0;else t=dr(t,e,0)|0;return t|0}function gr(t){t=t|0;var e=0,r=0;do{if(t){if((dt[t+76>>2]|0)<=-1){e=Dr(t)|0;break}r=(kr(t)|0)==0;e=Dr(t)|0;if(!r)Sr(t)}else{if(!(dt[65]|0))e=0;else e=gr(dt[65]|0)|0;Ut(236);t=dt[58]|0;if(t)do{if((dt[t+76>>2]|0)>-1)r=kr(t)|0;else r=0;if((dt[t+20>>2]|0)>>>0>(dt[t+28>>2]|0)>>>0)e=Dr(t)|0|e;if(r)Sr(t);t=dt[t+56>>2]|0}while((t|0)!=0);Lt(236)}}while(0);return e|0}function vr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0;if((dt[e+76>>2]|0)>=0?(kr(e)|0)!=0:0){if((pt[e+75>>0]|0)!=(t|0)?(i=e+20|0,n=dt[i>>2]|0,n>>>0<(dt[e+16>>2]|0)>>>0):0){dt[i>>2]=n+1;pt[n>>0]=t;r=t&255}else r=Pr(e,t)|0;Sr(e)}else a=3;do{if((a|0)==3){if((pt[e+75>>0]|0)!=(t|0)?(o=e+20|0,r=dt[o>>2]|0,r>>>0<(dt[e+16>>2]|0)>>>0):0){dt[o>>2]=r+1;pt[r>>0]=t;r=t&255;break}r=Pr(e,t)|0}}while(0);return r|0}function _r(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;i=r+16|0;n=dt[i>>2]|0;if(!n)if(!(Or(r)|0)){n=dt[i>>2]|0;o=4}else i=0;else o=4;t:do{if((o|0)==4){a=r+20|0;o=dt[a>>2]|0;if((n-o|0)>>>0>>0){i=Pi[dt[r+36>>2]&7](r,t,e)|0;break}e:do{if((pt[r+75>>0]|0)>-1){i=e;while(1){if(!i){n=o;i=0;break e}n=i+-1|0;if((pt[t+n>>0]|0)==10)break;else i=n}if((Pi[dt[r+36>>2]&7](r,t,i)|0)>>>0>>0)break t;e=e-i|0;t=t+i|0;n=dt[a>>2]|0}else{n=o;i=0}}while(0);Qr(n|0,t|0,e|0)|0;dt[a>>2]=(dt[a>>2]|0)+e;i=i+e|0}}while(0);return i|0}function yr(t,e){t=t|0;e=e|0;var r=0,i=0;r=vt;vt=vt+16|0;i=r;dt[i>>2]=e;e=xr(dt[64]|0,t,i)|0;vt=r;return e|0}function br(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;i=vt;vt=vt+16|0;n=i;dt[n>>2]=r;r=Tr(t,e,n)|0;vt=i;return r|0}function xr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;m=vt;vt=vt+224|0;c=m+120|0;d=m+80|0;p=m;f=m+136|0;i=d;n=i+40|0;do{dt[i>>2]=0;i=i+4|0}while((i|0)<(n|0));dt[c>>2]=dt[r>>2];if((zr(0,e,c,p,d)|0)<0)r=-1;else{if((dt[t+76>>2]|0)>-1)u=kr(t)|0;else u=0;r=dt[t>>2]|0;h=r&32;if((pt[t+74>>0]|0)<1)dt[t>>2]=r&-33;r=t+48|0;if(!(dt[r>>2]|0)){n=t+44|0;o=dt[n>>2]|0;dt[n>>2]=f;a=t+28|0;dt[a>>2]=f;s=t+20|0;dt[s>>2]=f;dt[r>>2]=80;l=t+16|0;dt[l>>2]=f+80;i=zr(t,e,c,p,d)|0;if(o){Pi[dt[t+36>>2]&7](t,0,0)|0;i=(dt[s>>2]|0)==0?-1:i;dt[n>>2]=o;dt[r>>2]=0;dt[l>>2]=0;dt[a>>2]=0;dt[s>>2]=0}}else i=zr(t,e,c,p,d)|0;r=dt[t>>2]|0;dt[t>>2]=r|h;if(u)Sr(t);r=(r&32|0)==0?i:-1}vt=m;return r|0}function wr(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+128|0;n=h+112|0;u=h;o=u;a=268;s=o+112|0;do{dt[o>>2]=dt[a>>2];o=o+4|0;a=a+4|0}while((o|0)<(s|0));if((e+-1|0)>>>0>2147483646)if(!e){e=1;l=4}else{e=hr()|0;dt[e>>2]=75;e=-1}else{n=t;l=4}if((l|0)==4){l=-2-n|0;l=e>>>0>l>>>0?l:e;dt[u+48>>2]=l;t=u+20|0;dt[t>>2]=n;dt[u+44>>2]=n;e=n+l|0;n=u+16|0;dt[n>>2]=e;dt[u+28>>2]=e;e=xr(u,r,i)|0;if(l){r=dt[t>>2]|0;pt[r+(((r|0)==(dt[n>>2]|0))<<31>>31)>>0]=0}}vt=h;return e|0}function Tr(t,e,r){t=t|0;e=e|0;r=r|0;return wr(t,2147483647,e,r)|0}function kr(t){t=t|0;return 0}function Sr(t){t=t|0;return}function Pr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0;l=vt;vt=vt+16|0;s=l;a=e&255;pt[s>>0]=a;i=t+16|0;n=dt[i>>2]|0;if(!n)if(!(Or(t)|0)){n=dt[i>>2]|0;o=4}else r=-1;else o=4;do{if((o|0)==4){i=t+20|0;o=dt[i>>2]|0;if(o>>>0>>0?(r=e&255,(r|0)!=(pt[t+75>>0]|0)):0){dt[i>>2]=o+1;pt[o>>0]=a;break}if((Pi[dt[t+36>>2]&7](t,s,1)|0)==1)r=mt[s>>0]|0;else r=-1}}while(0);vt=l;return r|0}function Cr(t){t=t|0;var e=0,r=0;e=vt;vt=vt+16|0;r=e;dt[r>>2]=dt[t+60>>2];t=cr(Pt(6,r|0)|0)|0;vt=e;return t|0}function Ar(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0;n=vt;vt=vt+32|0;o=n;i=n+20|0;dt[o>>2]=dt[t+60>>2];dt[o+4>>2]=0;dt[o+8>>2]=e;dt[o+12>>2]=i;dt[o+16>>2]=r;if((cr(Wt(140,o|0)|0)|0)<0){dt[i>>2]=-1;t=-1}else t=dt[i>>2]|0;vt=n;return t|0}function Er(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;d=vt;vt=vt+48|0;c=d+16|0;h=d;i=d+32|0;f=t+28|0;n=dt[f>>2]|0;dt[i>>2]=n;p=t+20|0;n=(dt[p>>2]|0)-n|0;dt[i+4>>2]=n;dt[i+8>>2]=e;dt[i+12>>2]=r;l=t+60|0;u=t+44|0;e=2;n=n+r|0;while(1){if(!(dt[52]|0)){dt[c>>2]=dt[l>>2];dt[c+4>>2]=i;dt[c+8>>2]=e;a=cr(Gt(146,c|0)|0)|0}else{Ht(7,t|0);dt[h>>2]=dt[l>>2];dt[h+4>>2]=i;dt[h+8>>2]=e;a=cr(Gt(146,h|0)|0)|0;kt(0)}if((n|0)==(a|0)){n=6;break}if((a|0)<0){n=8;break}n=n-a|0;o=dt[i+4>>2]|0;if(a>>>0<=o>>>0)if((e|0)==2){dt[f>>2]=(dt[f>>2]|0)+a;s=o;e=2}else s=o;else{s=dt[u>>2]|0;dt[f>>2]=s;dt[p>>2]=s;s=dt[i+12>>2]|0;a=a-o|0;i=i+8|0;e=e+-1|0}dt[i>>2]=(dt[i>>2]|0)+a;dt[i+4>>2]=s-a}if((n|0)==6){c=dt[u>>2]|0;dt[t+16>>2]=c+(dt[t+48>>2]|0);t=c;dt[f>>2]=t;dt[p>>2]=t}else if((n|0)==8){dt[t+16>>2]=0;dt[f>>2]=0;dt[p>>2]=0;dt[t>>2]=dt[t>>2]|32;if((e|0)==2)r=0;else r=r-(dt[i+4>>2]|0)|0}vt=d;return r|0}function Ir(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;n=vt;vt=vt+80|0;i=n;dt[t+36>>2]=3;if((dt[t>>2]&64|0)==0?(dt[i>>2]=dt[t+60>>2],dt[i+4>>2]=21505,dt[i+8>>2]=n+12,(St(54,i|0)|0)!=0):0)pt[t+75>>0]=-1;i=Er(t,e,r)|0;vt=n;return i|0}function Or(t){t=t|0;var e=0,r=0;e=t+74|0;r=pt[e>>0]|0;pt[e>>0]=r+255|r;e=dt[t>>2]|0;if(!(e&8)){dt[t+8>>2]=0;dt[t+4>>2]=0;e=dt[t+44>>2]|0;dt[t+28>>2]=e;dt[t+20>>2]=e;dt[t+16>>2]=e+(dt[t+48>>2]|0);e=0}else{dt[t>>2]=e|32;e=-1}return e|0}function Mr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;o=e&255;i=(r|0)!=0;t:do{if(i&(t&3|0)!=0){n=e&255;while(1){if((pt[t>>0]|0)==n<<24>>24){a=6;break t}t=t+1|0;r=r+-1|0;i=(r|0)!=0;if(!(i&(t&3|0)!=0)){a=5;break}}}else a=5}while(0);if((a|0)==5)if(i)a=6;else r=0;t:do{if((a|0)==6){n=e&255;if((pt[t>>0]|0)!=n<<24>>24){i=_t(o,16843009)|0;e:do{if(r>>>0>3)while(1){o=dt[t>>2]^i;if((o&-2139062144^-2139062144)&o+-16843009)break;t=t+4|0;r=r+-4|0;if(r>>>0<=3){a=11;break e}}else a=11}while(0);if((a|0)==11)if(!r){r=0;break}while(1){if((pt[t>>0]|0)==n<<24>>24)break t;t=t+1|0;r=r+-1|0;if(!r){r=0;break}}}}}while(0);return((r|0)!=0?t:0)|0}function Dr(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0;e=t+20|0;o=t+28|0;if((dt[e>>2]|0)>>>0>(dt[o>>2]|0)>>>0?(Pi[dt[t+36>>2]&7](t,0,0)|0,(dt[e>>2]|0)==0):0)e=-1;else{a=t+4|0;r=dt[a>>2]|0;i=t+8|0;n=dt[i>>2]|0;if(r>>>0>>0)Pi[dt[t+40>>2]&7](t,r-n|0,1)|0;dt[t+16>>2]=0;dt[o>>2]=0;dt[e>>2]=0;dt[i>>2]=0;dt[a>>2]=0;e=0}return e|0}function zr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0.0,h=0,c=0,f=0,p=0,d=0.0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0;Q=vt;vt=vt+624|0;V=Q+24|0;Z=Q+16|0;Y=Q+588|0;X=Q+576|0;G=Q;N=Q+536|0;K=Q+8|0;J=Q+528|0;I=(t|0)!=0;O=N+40|0;L=O;N=N+39|0;B=K+4|0;U=X+12|0;X=X+11|0;H=Y;q=U;W=q-H|0;M=-2-H|0;D=q+2|0;z=V+288|0;R=Y+9|0;F=R;j=Y+8|0;o=0;m=e;a=0;e=0;t:while(1){do{if((o|0)>-1)if((a|0)>(2147483647-o|0)){o=hr()|0;dt[o>>2]=75;o=-1;break}else{o=a+o|0;break}}while(0);a=pt[m>>0]|0;if(!(a<<24>>24)){E=245;break}else s=m;e:while(1){switch(a<<24>>24){case 37:{a=s;E=9;break e}case 0:{a=s;break e}default:{}}A=s+1|0;a=pt[A>>0]|0;s=A}e:do{if((E|0)==9)while(1){E=0;if((pt[a+1>>0]|0)!=37)break e;s=s+1|0;a=a+2|0;if((pt[a>>0]|0)==37)E=9;else break}}while(0);v=s-m|0;if(I?(dt[t>>2]&32|0)==0:0)_r(m,v,t)|0;if((s|0)!=(m|0)){m=a;a=v;continue}h=a+1|0;s=pt[h>>0]|0;l=(s<<24>>24)+-48|0;if(l>>>0<10){A=(pt[a+2>>0]|0)==36;h=A?a+3|0:h;s=pt[h>>0]|0;p=A?l:-1;e=A?1:e}else p=-1;a=s<<24>>24;e:do{if((a&-32|0)==32){l=0;while(1){if(!(1<>24)+-32|l;h=h+1|0;s=pt[h>>0]|0;a=s<<24>>24;if((a&-32|0)!=32){c=l;a=h;break}}}else{c=0;a=h}}while(0);do{if(s<<24>>24==42){l=a+1|0;s=(pt[l>>0]|0)+-48|0;if(s>>>0<10?(pt[a+2>>0]|0)==36:0){dt[n+(s<<2)>>2]=10;e=1;a=a+3|0;s=dt[i+((pt[l>>0]|0)+-48<<3)>>2]|0}else{if(e){o=-1;break t}if(!I){g=c;a=l;e=0;A=0;break}e=(dt[r>>2]|0)+(4-1)&~(4-1);s=dt[e>>2]|0;dt[r>>2]=e+4;e=0;a=l}if((s|0)<0){g=c|8192;A=0-s|0}else{g=c;A=s}}else{l=(s<<24>>24)+-48|0;if(l>>>0<10){s=0;do{s=(s*10|0)+l|0;a=a+1|0;l=(pt[a>>0]|0)+-48|0}while(l>>>0<10);if((s|0)<0){o=-1;break t}else{g=c;A=s}}else{g=c;A=0}}}while(0);e:do{if((pt[a>>0]|0)==46){l=a+1|0;s=pt[l>>0]|0;if(s<<24>>24!=42){h=(s<<24>>24)+-48|0;if(h>>>0<10){a=l;s=0}else{a=l;h=0;break}while(1){s=(s*10|0)+h|0;a=a+1|0;h=(pt[a>>0]|0)+-48|0;if(h>>>0>=10){h=s;break e}}}l=a+2|0;s=(pt[l>>0]|0)+-48|0;if(s>>>0<10?(pt[a+3>>0]|0)==36:0){dt[n+(s<<2)>>2]=10;a=a+4|0;h=dt[i+((pt[l>>0]|0)+-48<<3)>>2]|0;break}if(e){o=-1;break t}if(I){a=(dt[r>>2]|0)+(4-1)&~(4-1);h=dt[a>>2]|0;dt[r>>2]=a+4;a=l}else{a=l;h=0}}else h=-1}while(0);f=0;while(1){s=(pt[a>>0]|0)+-65|0;if(s>>>0>57){o=-1;break t}l=a+1|0;s=pt[5359+(f*58|0)+s>>0]|0;c=s&255;if((c+-1|0)>>>0<8){a=l;f=c}else{C=l;break}}if(!(s<<24>>24)){o=-1;break}l=(p|0)>-1;do{if(s<<24>>24==19)if(l){o=-1;break t}else E=52;else{if(l){dt[n+(p<<2)>>2]=c;S=i+(p<<3)|0;P=dt[S+4>>2]|0;E=G;dt[E>>2]=dt[S>>2];dt[E+4>>2]=P;E=52;break}if(!I){o=0;break t}jr(G,c,r)}}while(0);if((E|0)==52?(E=0,!I):0){m=C;a=v;continue}p=pt[a>>0]|0;p=(f|0)!=0&(p&15|0)==3?p&-33:p;l=g&-65537;P=(g&8192|0)==0?g:l;e:do{switch(p|0){case 110:switch(f|0){case 0:{dt[dt[G>>2]>>2]=o;m=C;a=v;continue t}case 1:{dt[dt[G>>2]>>2]=o;m=C;a=v;continue t}case 2:{m=dt[G>>2]|0;dt[m>>2]=o;dt[m+4>>2]=((o|0)<0)<<31>>31;m=C;a=v;continue t}case 3:{$[dt[G>>2]>>1]=o;m=C;a=v;continue t}case 4:{pt[dt[G>>2]>>0]=o;m=C;a=v;continue t}case 6:{dt[dt[G>>2]>>2]=o;m=C;a=v;continue t}case 7:{m=dt[G>>2]|0;dt[m>>2]=o;dt[m+4>>2]=((o|0)<0)<<31>>31;m=C;a=v;continue t}default:{m=C;a=v;continue t}}case 112:{f=P|8;h=h>>>0>8?h:8;p=120;E=64;break}case 88:case 120:{f=P;E=64;break}case 111:{l=G;s=dt[l>>2]|0;l=dt[l+4>>2]|0;if((s|0)==0&(l|0)==0)a=O;else{a=O;do{a=a+-1|0;pt[a>>0]=s&7|48;s=Zr(s|0,l|0,3)|0;l=rt}while(!((s|0)==0&(l|0)==0))}if(!(P&8)){s=P;f=0;c=5839;E=77}else{f=L-a+1|0;s=P;h=(h|0)<(f|0)?f:h;f=0;c=5839;E=77}break}case 105:case 100:{s=G;a=dt[s>>2]|0;s=dt[s+4>>2]|0;if((s|0)<0){a=Vr(0,0,a|0,s|0)|0;s=rt;l=G;dt[l>>2]=a;dt[l+4>>2]=s;l=1;c=5839;E=76;break e}if(!(P&2048)){c=P&1;l=c;c=(c|0)==0?5839:5841;E=76}else{l=1;c=5840;E=76}break}case 117:{s=G;a=dt[s>>2]|0;s=dt[s+4>>2]|0;l=0;c=5839;E=76;break}case 99:{pt[N>>0]=dt[G>>2];m=N;s=1;f=0;p=5839;a=O;break}case 109:{a=hr()|0;a=ur(dt[a>>2]|0)|0;E=82;break}case 115:{a=dt[G>>2]|0;a=(a|0)!=0?a:5849;E=82;break}case 67:{dt[K>>2]=dt[G>>2];dt[B>>2]=0;dt[G>>2]=K;h=-1;E=86;break}case 83:{if(!h){Nr(t,32,A,0,P);a=0;E=98}else E=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{u=+tt[G>>3];dt[Z>>2]=0;tt[et>>3]=u;if((dt[et+4>>2]|0)>=0)if(!(P&2048)){S=P&1;k=S;S=(S|0)==0?5857:5862}else{k=1;S=5859}else{u=-u;k=1;S=5856}tt[et>>3]=u;T=dt[et+4>>2]&2146435072;do{if(T>>>0<2146435072|(T|0)==2146435072&0<0){d=+pr(u,Z)*2.0;s=d!=0.0;if(s)dt[Z>>2]=(dt[Z>>2]|0)+-1;x=p|32;if((x|0)==97){m=p&32;v=(m|0)==0?S:S+9|0;g=k|2;a=12-h|0;do{if(!(h>>>0>11|(a|0)==0)){u=8.0;do{a=a+-1|0;u=u*16.0}while((a|0)!=0);if((pt[v>>0]|0)==45){u=-(u+(-d-u));break}else{u=d+u-u;break}}else u=d}while(0);s=dt[Z>>2]|0;a=(s|0)<0?0-s|0:s;a=Lr(a,((a|0)<0)<<31>>31,U)|0;if((a|0)==(U|0)){pt[X>>0]=48;a=X}pt[a+-1>>0]=(s>>31&2)+43;f=a+-2|0;pt[f>>0]=p+15;c=(h|0)<1;l=(P&8|0)==0;s=Y;while(1){S=~~u;a=s+1|0;pt[s>>0]=mt[5823+S>>0]|m;u=(u-+(S|0))*16.0;do{if((a-H|0)==1){if(l&(c&u==0.0))break;pt[a>>0]=46;a=s+2|0}}while(0);if(!(u!=0.0))break;else s=a}h=(h|0)!=0&(M+a|0)<(h|0)?D+h-f|0:W-f+a|0;l=h+g|0;Nr(t,32,A,l,P);if(!(dt[t>>2]&32))_r(v,g,t)|0;Nr(t,48,A,l,P^65536);a=a-H|0;if(!(dt[t>>2]&32))_r(Y,a,t)|0;s=q-f|0;Nr(t,48,h-(a+s)|0,0,0);if(!(dt[t>>2]&32))_r(f,s,t)|0;Nr(t,32,A,l,P^8192);a=(l|0)<(A|0)?A:l;break}a=(h|0)<0?6:h;if(s){s=(dt[Z>>2]|0)+-28|0;dt[Z>>2]=s;u=d*268435456.0}else{u=d;s=dt[Z>>2]|0}T=(s|0)<0?V:z;w=T;s=T;do{b=~~u>>>0;dt[s>>2]=b;s=s+4|0;u=(u-+(b>>>0))*1.0e9}while(u!=0.0);l=s;s=dt[Z>>2]|0;if((s|0)>0){c=T;while(1){f=(s|0)>29?29:s;h=l+-4|0;do{if(h>>>0>>0)h=c;else{s=0;do{b=Jr(dt[h>>2]|0,0,f|0)|0;b=Kr(b|0,rt|0,s|0,0)|0;s=rt;y=ai(b|0,s|0,1e9,0)|0;dt[h>>2]=y;s=oi(b|0,s|0,1e9,0)|0;h=h+-4|0}while(h>>>0>=c>>>0);if(!s){h=c;break}h=c+-4|0;dt[h>>2]=s}}while(0);while(1){if(l>>>0<=h>>>0)break;s=l+-4|0;if(!(dt[s>>2]|0))l=s;else break}s=(dt[Z>>2]|0)-f|0;dt[Z>>2]=s;if((s|0)>0)c=h;else break}}else h=T;if((s|0)<0){v=((a+25|0)/9|0)+1|0;_=(x|0)==102;m=h;while(1){g=0-s|0;g=(g|0)>9?9:g;do{if(m>>>0>>0){s=(1<>>g;h=0;f=m;do{b=dt[f>>2]|0;dt[f>>2]=(b>>>g)+h;h=_t(b&s,c)|0;f=f+4|0}while(f>>>0>>0);s=(dt[m>>2]|0)==0?m+4|0:m;if(!h){h=s;break}dt[l>>2]=h;h=s;l=l+4|0}else h=(dt[m>>2]|0)==0?m+4|0:m}while(0);s=_?T:h;l=(l-s>>2|0)>(v|0)?s+(v<<2)|0:l;s=(dt[Z>>2]|0)+g|0;dt[Z>>2]=s;if((s|0)>=0){m=h;break}else m=h}}else m=h;do{if(m>>>0>>0){s=(w-m>>2)*9|0;c=dt[m>>2]|0;if(c>>>0<10)break;else h=10;do{h=h*10|0;s=s+1|0}while(c>>>0>=h>>>0)}else s=0}while(0);y=(x|0)==103;b=(a|0)!=0;h=a-((x|0)!=102?s:0)+((b&y)<<31>>31)|0;if((h|0)<(((l-w>>2)*9|0)+-9|0)){f=h+9216|0;_=(f|0)/9|0;h=T+(_+-1023<<2)|0;f=((f|0)%9|0)+1|0;if((f|0)<9){c=10;do{c=c*10|0;f=f+1|0}while((f|0)!=9)}else c=10;g=dt[h>>2]|0;v=(g>>>0)%(c>>>0)|0;if((v|0)==0?(T+(_+-1022<<2)|0)==(l|0):0)c=m;else E=163;do{if((E|0)==163){E=0;d=(((g>>>0)/(c>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;f=(c|0)/2|0;do{if(v>>>0>>0)u=.5;else{if((v|0)==(f|0)?(T+(_+-1022<<2)|0)==(l|0):0){u=1.0;break}u=1.5}}while(0);do{if(k){if((pt[S>>0]|0)!=45)break;d=-d;u=-u}}while(0);f=g-v|0;dt[h>>2]=f;if(!(d+u!=d)){c=m;break}x=f+c|0;dt[h>>2]=x;if(x>>>0>999999999){s=m;while(1){c=h+-4|0;dt[h>>2]=0;if(c>>>0>>0){s=s+-4|0;dt[s>>2]=0}x=(dt[c>>2]|0)+1|0;dt[c>>2]=x;if(x>>>0>999999999)h=c;else{m=s;h=c;break}}}s=(w-m>>2)*9|0;f=dt[m>>2]|0;if(f>>>0<10){c=m;break}else c=10;do{c=c*10|0;s=s+1|0}while(f>>>0>=c>>>0);c=m}}while(0);x=h+4|0;m=c;l=l>>>0>x>>>0?x:l}v=0-s|0;while(1){if(l>>>0<=m>>>0){_=0;x=l;break}h=l+-4|0;if(!(dt[h>>2]|0))l=h;else{_=1;x=l;break}}do{if(y){a=(b&1^1)+a|0;if((a|0)>(s|0)&(s|0)>-5){p=p+-1|0;a=a+-1-s|0}else{p=p+-2|0;a=a+-1|0}l=P&8;if(l)break;do{if(_){l=dt[x+-4>>2]|0;if(!l){h=9;break}if(!((l>>>0)%10|0)){c=10;h=0}else{h=0;break}do{c=c*10|0;h=h+1|0}while(((l>>>0)%(c>>>0)|0|0)==0)}else h=9}while(0);l=((x-w>>2)*9|0)+-9|0;if((p|32|0)==102){l=l-h|0;l=(l|0)<0?0:l;a=(a|0)<(l|0)?a:l;l=0;break}else{l=l+s-h|0;l=(l|0)<0?0:l;a=(a|0)<(l|0)?a:l;l=0;break}}else l=P&8}while(0);g=a|l;c=(g|0)!=0&1;f=(p|32|0)==102;if(f){s=(s|0)>0?s:0;p=0}else{h=(s|0)<0?v:s;h=Lr(h,((h|0)<0)<<31>>31,U)|0;if((q-h|0)<2)do{h=h+-1|0;pt[h>>0]=48}while((q-h|0)<2);pt[h+-1>>0]=(s>>31&2)+43;w=h+-2|0;pt[w>>0]=p;s=q-w|0;p=w}v=k+1+a+c+s|0;Nr(t,32,A,v,P);if(!(dt[t>>2]&32))_r(S,k,t)|0;Nr(t,48,A,v,P^65536);do{if(f){h=m>>>0>T>>>0?T:m;s=h;do{l=Lr(dt[s>>2]|0,0,R)|0;do{if((s|0)==(h|0)){if((l|0)!=(R|0))break;pt[j>>0]=48;l=j}else{if(l>>>0<=Y>>>0)break;do{l=l+-1|0;pt[l>>0]=48}while(l>>>0>Y>>>0)}}while(0);if(!(dt[t>>2]&32))_r(l,F-l|0,t)|0;s=s+4|0}while(s>>>0<=T>>>0);do{if(g){if(dt[t>>2]&32)break;_r(5891,1,t)|0}}while(0);if((a|0)>0&s>>>0>>0){l=s;while(1){s=Lr(dt[l>>2]|0,0,R)|0;if(s>>>0>Y>>>0)do{s=s+-1|0;pt[s>>0]=48}while(s>>>0>Y>>>0);if(!(dt[t>>2]&32))_r(s,(a|0)>9?9:a,t)|0;l=l+4|0;s=a+-9|0;if(!((a|0)>9&l>>>0>>0)){a=s;break}else a=s}}Nr(t,48,a+9|0,9,0)}else{f=_?x:m+4|0;if((a|0)>-1){c=(l|0)==0;h=m;do{s=Lr(dt[h>>2]|0,0,R)|0;if((s|0)==(R|0)){pt[j>>0]=48;s=j}do{if((h|0)==(m|0)){l=s+1|0;if(!(dt[t>>2]&32))_r(s,1,t)|0;if(c&(a|0)<1){s=l;break}if(dt[t>>2]&32){s=l;break}_r(5891,1,t)|0;s=l}else{if(s>>>0<=Y>>>0)break;do{s=s+-1|0;pt[s>>0]=48}while(s>>>0>Y>>>0)}}while(0);l=F-s|0;if(!(dt[t>>2]&32))_r(s,(a|0)>(l|0)?l:a,t)|0;a=a-l|0;h=h+4|0}while(h>>>0>>0&(a|0)>-1)}Nr(t,48,a+18|0,18,0);if(dt[t>>2]&32)break;_r(p,q-p|0,t)|0}}while(0);Nr(t,32,A,v,P^8192);a=(v|0)<(A|0)?A:v}else{f=(p&32|0)!=0;c=u!=u|0.0!=0.0;s=c?0:k;h=s+3|0;Nr(t,32,A,h,l);a=dt[t>>2]|0;if(!(a&32)){_r(S,s,t)|0;a=dt[t>>2]|0}if(!(a&32))_r(c?f?5883:5887:f?5875:5879,3,t)|0;Nr(t,32,A,h,P^8192);a=(h|0)<(A|0)?A:h}}while(0);m=C;continue t}default:{l=P;s=h;f=0;p=5839;a=O}}}while(0);e:do{if((E|0)==64){l=G;s=dt[l>>2]|0;l=dt[l+4>>2]|0;c=p&32;if(!((s|0)==0&(l|0)==0)){a=O;do{a=a+-1|0;pt[a>>0]=mt[5823+(s&15)>>0]|c;s=Zr(s|0,l|0,4)|0;l=rt}while(!((s|0)==0&(l|0)==0));E=G;if((f&8|0)==0|(dt[E>>2]|0)==0&(dt[E+4>>2]|0)==0){s=f;f=0;c=5839;E=77}else{s=f;f=2;c=5839+(p>>4)|0;E=77}}else{a=O;s=f;f=0;c=5839;E=77}}else if((E|0)==76){a=Lr(a,s,O)|0;s=P;f=l;E=77}else if((E|0)==82){E=0;P=Mr(a,0,h)|0;S=(P|0)==0;m=a;s=S?h:P-a|0;f=0;p=5839;a=S?a+h|0:P}else if((E|0)==86){E=0;s=0;a=0;c=dt[G>>2]|0;while(1){l=dt[c>>2]|0;if(!l)break;a=mr(J,l)|0;if((a|0)<0|a>>>0>(h-s|0)>>>0)break;s=a+s|0;if(h>>>0>s>>>0)c=c+4|0;else break}if((a|0)<0){o=-1;break t}Nr(t,32,A,s,P);if(!s){a=0;E=98}else{l=0;h=dt[G>>2]|0;while(1){a=dt[h>>2]|0;if(!a){a=s;E=98;break e}a=mr(J,a)|0;l=a+l|0;if((l|0)>(s|0)){a=s;E=98;break e}if(!(dt[t>>2]&32))_r(J,a,t)|0;if(l>>>0>=s>>>0){a=s;E=98;break}else h=h+4|0}}}}while(0);if((E|0)==98){E=0;Nr(t,32,A,a,P^8192);m=C;a=(A|0)>(a|0)?A:a;continue}if((E|0)==77){E=0;l=(h|0)>-1?s&-65537:s;s=G;s=(dt[s>>2]|0)!=0|(dt[s+4>>2]|0)!=0;if((h|0)!=0|s){s=(s&1^1)+(L-a)|0;m=a;s=(h|0)>(s|0)?h:s;p=c;a=O}else{m=O;s=0;p=c;a=O}}c=a-m|0;s=(s|0)<(c|0)?c:s;h=f+s|0;a=(A|0)<(h|0)?h:A;Nr(t,32,a,h,l);if(!(dt[t>>2]&32))_r(p,f,t)|0;Nr(t,48,a,h,l^65536);Nr(t,48,s,c,0);if(!(dt[t>>2]&32))_r(m,c,t)|0;Nr(t,32,a,h,l^8192);m=C}t:do{if((E|0)==245)if(!t)if(e){o=1;while(1){e=dt[n+(o<<2)>>2]|0;if(!e)break;jr(i+(o<<3)|0,e,r);o=o+1|0;if((o|0)>=10){o=1;break t}}if((o|0)<10)while(1){if(dt[n+(o<<2)>>2]|0){o=-1;break t}o=o+1|0;if((o|0)>=10){o=1;break}}else o=1}else o=0}while(0);vt=Q;return o|0}function Rr(t){t=t|0;if(!(dt[t+68>>2]|0))Sr(t);return}function Fr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;i=t+20|0;n=dt[i>>2]|0;t=(dt[t+16>>2]|0)-n|0;t=t>>>0>r>>>0?r:t;Qr(n|0,e|0,t|0)|0;dt[i>>2]=(dt[i>>2]|0)+t;return r|0}function jr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0.0;t:do{if(e>>>0<=20)do{switch(e|0){case 9:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;dt[t>>2]=e;break t}case 10:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;i=t;dt[i>>2]=e;dt[i+4>>2]=((e|0)<0)<<31>>31;break t}case 11:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;i=t;dt[i>>2]=e;dt[i+4>>2]=0;break t}case 12:{i=(dt[r>>2]|0)+(8-1)&~(8-1);e=i;n=dt[e>>2]|0;e=dt[e+4>>2]|0;dt[r>>2]=i+8;i=t;dt[i>>2]=n;dt[i+4>>2]=e;break t}case 13:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;i=(i&65535)<<16>>16;n=t;dt[n>>2]=i;dt[n+4>>2]=((i|0)<0)<<31>>31;break t}case 14:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;n=t;dt[n>>2]=i&65535;dt[n+4>>2]=0;break t}case 15:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;i=(i&255)<<24>>24;n=t;dt[n>>2]=i;dt[n+4>>2]=((i|0)<0)<<31>>31;break t}case 16:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;n=t;dt[n>>2]=i&255;dt[n+4>>2]=0;break t}case 17:{n=(dt[r>>2]|0)+(8-1)&~(8-1);o=+tt[n>>3];dt[r>>2]=n+8;tt[t>>3]=o;break t}case 18:{n=(dt[r>>2]|0)+(8-1)&~(8-1);o=+tt[n>>3];dt[r>>2]=n+8;tt[t>>3]=o;break t}default:break t}}while(0)}while(0);return}function Lr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if(e>>>0>0|(e|0)==0&t>>>0>4294967295)while(1){i=ai(t|0,e|0,10,0)|0;r=r+-1|0;pt[r>>0]=i|48;i=oi(t|0,e|0,10,0)|0;if(e>>>0>9|(e|0)==9&t>>>0>4294967295){t=i;e=rt}else{t=i;break}}if(t)while(1){r=r+-1|0;pt[r>>0]=(t>>>0)%10|0|48;if(t>>>0<10)break;else t=(t>>>0)/10|0}return r|0}function Nr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0;s=vt;vt=vt+256|0;a=s;do{if((r|0)>(i|0)&(n&73728|0)==0){n=r-i|0;Yr(a|0,e|0,(n>>>0>256?256:n)|0)|0;e=dt[t>>2]|0;o=(e&32|0)==0;if(n>>>0>255){i=r-i|0;do{if(o){_r(a,256,t)|0;e=dt[t>>2]|0}n=n+-256|0;o=(e&32|0)==0}while(n>>>0>255);if(o)n=i&255;else break}else if(!o)break;_r(a,n,t)|0}}while(0);vt=s;return}function Br(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0;do{if(t>>>0<245){p=t>>>0<11?16:t+11&-8;t=p>>>3;s=dt[151]|0;r=s>>>t;if(r&3){t=(r&1^1)+t|0;i=t<<1;r=644+(i<<2)|0;i=644+(i+2<<2)|0;n=dt[i>>2]|0;o=n+8|0;a=dt[o>>2]|0;do{if((r|0)!=(a|0)){if(a>>>0<(dt[155]|0)>>>0)Xt();e=a+12|0;if((dt[e>>2]|0)==(n|0)){dt[e>>2]=r;dt[i>>2]=a;break}else Xt()}else dt[151]=s&~(1<>2]=j|3;j=n+(j|4)|0;dt[j>>2]=dt[j>>2]|1;j=o;return j|0}a=dt[153]|0;if(p>>>0>a>>>0){if(r){i=2<>>12&16;i=i>>>l;n=i>>>5&8;i=i>>>n;o=i>>>2&4;i=i>>>o;r=i>>>1&2;i=i>>>r;t=i>>>1&1;t=(n|l|o|r|t)+(i>>>t)|0;i=t<<1;r=644+(i<<2)|0;i=644+(i+2<<2)|0;o=dt[i>>2]|0;l=o+8|0;n=dt[l>>2]|0;do{if((r|0)!=(n|0)){if(n>>>0<(dt[155]|0)>>>0)Xt();e=n+12|0;if((dt[e>>2]|0)==(o|0)){dt[e>>2]=r;dt[i>>2]=n;u=dt[153]|0;break}else Xt()}else{dt[151]=s&~(1<>2]=p|3;s=o+p|0;dt[o+(p|4)>>2]=a|1;dt[o+j>>2]=a;if(u){n=dt[156]|0;r=u>>>3;e=r<<1;i=644+(e<<2)|0;t=dt[151]|0;r=1<>2]|0;if(e>>>0<(dt[155]|0)>>>0)Xt();else{h=t;c=e}}else{dt[151]=t|r;h=644+(e+2<<2)|0;c=i}dt[h>>2]=n;dt[c+12>>2]=n;dt[n+8>>2]=c;dt[n+12>>2]=i}dt[153]=a;dt[156]=s;j=l;return j|0}t=dt[152]|0;if(t){r=(t&0-t)+-1|0;F=r>>>12&16;r=r>>>F;R=r>>>5&8;r=r>>>R;j=r>>>2&4;r=r>>>j;t=r>>>1&2;r=r>>>t;i=r>>>1&1;i=dt[908+((R|F|j|t|i)+(r>>>i)<<2)>>2]|0;r=(dt[i+4>>2]&-8)-p|0;t=i;while(1){e=dt[t+16>>2]|0;if(!e){e=dt[t+20>>2]|0;if(!e){l=r;break}}t=(dt[e+4>>2]&-8)-p|0;j=t>>>0>>0;r=j?t:r;t=e;i=j?e:i}o=dt[155]|0;if(i>>>0>>0)Xt();s=i+p|0;if(i>>>0>=s>>>0)Xt();a=dt[i+24>>2]|0;r=dt[i+12>>2]|0;do{if((r|0)==(i|0)){t=i+20|0;e=dt[t>>2]|0;if(!e){t=i+16|0;e=dt[t>>2]|0;if(!e){f=0;break}}while(1){r=e+20|0;n=dt[r>>2]|0;if(n){e=n;t=r;continue}r=e+16|0;n=dt[r>>2]|0;if(!n)break;else{e=n;t=r}}if(t>>>0>>0)Xt();else{dt[t>>2]=0;f=e;break}}else{n=dt[i+8>>2]|0;if(n>>>0>>0)Xt();e=n+12|0;if((dt[e>>2]|0)!=(i|0))Xt();t=r+8|0;if((dt[t>>2]|0)==(i|0)){dt[e>>2]=r;dt[t>>2]=n;f=r;break}else Xt()}}while(0);do{if(a){e=dt[i+28>>2]|0;t=908+(e<<2)|0;if((i|0)==(dt[t>>2]|0)){dt[t>>2]=f;if(!f){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(i|0))dt[e>>2]=f;else dt[a+20>>2]=f;if(!f)break}t=dt[155]|0;if(f>>>0>>0)Xt();dt[f+24>>2]=a;e=dt[i+16>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[f+16>>2]=e;dt[e+24>>2]=f;break}}while(0);e=dt[i+20>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[f+20>>2]=e;dt[e+24>>2]=f;break}}}while(0);if(l>>>0<16){j=l+p|0;dt[i+4>>2]=j|3;j=i+(j+4)|0;dt[j>>2]=dt[j>>2]|1}else{dt[i+4>>2]=p|3;dt[i+(p|4)>>2]=l|1;dt[i+(l+p)>>2]=l;e=dt[153]|0;if(e){o=dt[156]|0;r=e>>>3;e=r<<1;n=644+(e<<2)|0;t=dt[151]|0;r=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{d=e;m=t}}else{dt[151]=t|r;d=644+(e+2<<2)|0;m=n}dt[d>>2]=o;dt[m+12>>2]=o;dt[o+8>>2]=m;dt[o+12>>2]=n}dt[153]=l;dt[156]=s}j=i+8|0;return j|0}else m=p}else m=p}else if(t>>>0<=4294967231){t=t+11|0;c=t&-8;h=dt[152]|0;if(h){r=0-c|0;t=t>>>8;if(t)if(c>>>0>16777215)u=31;else{m=(t+1048320|0)>>>16&8;b=t<>>16&4;b=b<>>16&2;u=14-(d|m|u)+(b<>>15)|0;u=c>>>(u+7|0)&1|u<<1}else u=0;t=dt[908+(u<<2)>>2]|0;t:do{if(!t){n=0;t=0;b=86}else{a=r;n=0;s=c<<((u|0)==31?0:25-(u>>>1)|0);l=t;t=0;while(1){o=dt[l+4>>2]&-8;r=o-c|0;if(r>>>0
>>0)if((o|0)==(c|0)){o=l;t=l;b=90;break t}else t=l;else r=a;b=dt[l+20>>2]|0;l=dt[l+16+(s>>>31<<2)>>2]|0;n=(b|0)==0|(b|0)==(l|0)?n:b;if(!l){b=86;break}else{a=r;s=s<<1}}}}while(0);if((b|0)==86){if((n|0)==0&(t|0)==0){t=2<>>12&16;t=t>>>f;h=t>>>5&8;t=t>>>h;d=t>>>2&4;t=t>>>d;m=t>>>1&2;t=t>>>m;n=t>>>1&1;n=dt[908+((h|f|d|m|n)+(t>>>n)<<2)>>2]|0;t=0}if(!n){s=r;l=t}else{o=n;b=90}}if((b|0)==90)while(1){b=0;m=(dt[o+4>>2]&-8)-c|0;n=m>>>0>>0;r=n?m:r;t=n?o:t;n=dt[o+16>>2]|0;if(n){o=n;b=90;continue}o=dt[o+20>>2]|0;if(!o){s=r;l=t;break}else b=90}if((l|0)!=0?s>>>0<((dt[153]|0)-c|0)>>>0:0){n=dt[155]|0;if(l>>>0>>0)Xt();a=l+c|0;if(l>>>0>=a>>>0)Xt();o=dt[l+24>>2]|0;r=dt[l+12>>2]|0;do{if((r|0)==(l|0)){t=l+20|0;e=dt[t>>2]|0;if(!e){t=l+16|0;e=dt[t>>2]|0;if(!e){p=0;break}}while(1){r=e+20|0;i=dt[r>>2]|0;if(i){e=i;t=r;continue}r=e+16|0;i=dt[r>>2]|0;if(!i)break;else{e=i;t=r}}if(t>>>0>>0)Xt();else{dt[t>>2]=0;p=e;break}}else{i=dt[l+8>>2]|0;if(i>>>0>>0)Xt();e=i+12|0;if((dt[e>>2]|0)!=(l|0))Xt();t=r+8|0;if((dt[t>>2]|0)==(l|0)){dt[e>>2]=r;dt[t>>2]=i;p=r;break}else Xt()}}while(0);do{if(o){e=dt[l+28>>2]|0;t=908+(e<<2)|0;if((l|0)==(dt[t>>2]|0)){dt[t>>2]=p;if(!p){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=o+16|0;if((dt[e>>2]|0)==(l|0))dt[e>>2]=p;else dt[o+20>>2]=p;if(!p)break}t=dt[155]|0;if(p>>>0>>0)Xt();dt[p+24>>2]=o;e=dt[l+16>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[p+16>>2]=e;dt[e+24>>2]=p;break}}while(0);e=dt[l+20>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[p+20>>2]=e;dt[e+24>>2]=p;break}}}while(0);t:do{if(s>>>0>=16){dt[l+4>>2]=c|3;dt[l+(c|4)>>2]=s|1;dt[l+(s+c)>>2]=s;e=s>>>3;if(s>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{v=e;_=t}}else{dt[151]=r|e;v=644+(t+2<<2)|0;_=i}dt[v>>2]=a;dt[_+12>>2]=a;dt[l+(c+8)>>2]=_;dt[l+(c+12)>>2]=i;break}e=s>>>8;if(e)if(s>>>0>16777215)i=31;else{F=(e+1048320|0)>>>16&8;j=e<>>16&4;j=j<>>16&2;i=14-(R|F|i)+(j<>>15)|0;i=s>>>(i+7|0)&1|i<<1}else i=0;e=908+(i<<2)|0;dt[l+(c+28)>>2]=i;dt[l+(c+20)>>2]=0;dt[l+(c+16)>>2]=0;t=dt[152]|0;r=1<>2]=a;dt[l+(c+24)>>2]=e;dt[l+(c+12)>>2]=a;dt[l+(c+8)>>2]=a;break}e=dt[e>>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(s|0)){i=s<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(s|0)){T=r;break e}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=a;dt[l+(c+24)>>2]=e;dt[l+(c+12)>>2]=a;dt[l+(c+8)>>2]=a;break t}}else T=e}while(0);e=T+8|0;t=dt[e>>2]|0;j=dt[155]|0;if(t>>>0>=j>>>0&T>>>0>=j>>>0){dt[t+12>>2]=a;dt[e>>2]=a;dt[l+(c+8)>>2]=t;dt[l+(c+12)>>2]=T;dt[l+(c+24)>>2]=0;break}else Xt()}else{j=s+c|0;dt[l+4>>2]=j|3;j=l+(j+4)|0;dt[j>>2]=dt[j>>2]|1}}while(0);j=l+8|0;return j|0}else m=c}else m=c}else m=-1}while(0);r=dt[153]|0;if(r>>>0>=m>>>0){e=r-m|0;t=dt[156]|0;if(e>>>0>15){dt[156]=t+m;dt[153]=e;dt[t+(m+4)>>2]=e|1;dt[t+r>>2]=e;dt[t+4>>2]=m|3}else{dt[153]=0;dt[156]=0;dt[t+4>>2]=r|3;j=t+(r+4)|0;dt[j>>2]=dt[j>>2]|1}j=t+8|0;return j|0}t=dt[154]|0;if(t>>>0>m>>>0){F=t-m|0;dt[154]=F;j=dt[157]|0;dt[157]=j+m;dt[j+(m+4)>>2]=F|1;dt[j+4>>2]=m|3;j=j+8|0;return j|0}do{if(!(dt[269]|0)){t=Dt(30)|0;if(!(t+-1&t)){dt[271]=t;dt[270]=t;dt[272]=-1;dt[273]=-1;dt[274]=0;dt[262]=0;T=(qt(0)|0)&-16^1431655768;dt[269]=T;break}else Xt()}}while(0);l=m+48|0;s=dt[271]|0;u=m+47|0;a=s+u|0;s=0-s|0;h=a&s;if(h>>>0<=m>>>0){j=0;return j|0}t=dt[261]|0;if((t|0)!=0?(_=dt[259]|0,T=_+h|0,T>>>0<=_>>>0|T>>>0>t>>>0):0){j=0;return j|0}t:do{if(!(dt[262]&4)){t=dt[157]|0;e:do{if(t){n=1052;while(1){r=dt[n>>2]|0;if(r>>>0<=t>>>0?(g=n+4|0,(r+(dt[g>>2]|0)|0)>>>0>t>>>0):0){o=n;t=g;break}n=dt[n+8>>2]|0;if(!n){b=174;break e}}r=a-(dt[154]|0)&s;if(r>>>0<2147483647){n=It(r|0)|0;T=(n|0)==((dt[o>>2]|0)+(dt[t>>2]|0)|0);t=T?r:0;if(T){if((n|0)!=(-1|0)){x=n;d=t;b=194;break t}}else b=184}else t=0}else b=174}while(0);do{if((b|0)==174){o=It(0)|0;if((o|0)!=(-1|0)){t=o;r=dt[270]|0;n=r+-1|0;if(!(n&t))r=h;else r=h-t+(n+t&0-r)|0;t=dt[259]|0;n=t+r|0;if(r>>>0>m>>>0&r>>>0<2147483647){T=dt[261]|0;if((T|0)!=0?n>>>0<=t>>>0|n>>>0>T>>>0:0){t=0;break}n=It(r|0)|0;T=(n|0)==(o|0);t=T?r:0;if(T){x=o;d=t;b=194;break t}else b=184}else t=0}else t=0}}while(0);e:do{if((b|0)==184){o=0-r|0;do{if(l>>>0>r>>>0&(r>>>0<2147483647&(n|0)!=(-1|0))?(y=dt[271]|0,y=u-r+y&0-y,y>>>0<2147483647):0)if((It(y|0)|0)==(-1|0)){It(o|0)|0;break e}else{r=y+r|0;break}}while(0);if((n|0)!=(-1|0)){x=n;d=r;b=194;break t}}}while(0);dt[262]=dt[262]|4;b=191}else{t=0;b=191}}while(0);if((((b|0)==191?h>>>0<2147483647:0)?(x=It(h|0)|0,w=It(0)|0,x>>>0>>0&((x|0)!=(-1|0)&(w|0)!=(-1|0))):0)?(k=w-x|0,S=k>>>0>(m+40|0)>>>0,S):0){d=S?k:t;b=194}if((b|0)==194){t=(dt[259]|0)+d|0;dt[259]=t;if(t>>>0>(dt[260]|0)>>>0)dt[260]=t;a=dt[157]|0;t:do{if(a){o=1052;do{t=dt[o>>2]|0;r=o+4|0;n=dt[r>>2]|0;if((x|0)==(t+n|0)){P=t;C=r;A=n;E=o;b=204;break}o=dt[o+8>>2]|0}while((o|0)!=0);if(((b|0)==204?(dt[E+12>>2]&8|0)==0:0)?a>>>0>>0&a>>>0>=P>>>0:0){dt[C>>2]=A+d;j=(dt[154]|0)+d|0;F=a+8|0;F=(F&7|0)==0?0:0-F&7;R=j-F|0;dt[157]=a+F;dt[154]=R;dt[a+(F+4)>>2]=R|1;dt[a+(j+4)>>2]=40;dt[158]=dt[273];break}t=dt[155]|0;if(x>>>0>>0){dt[155]=x;t=x}r=x+d|0;o=1052;while(1){if((dt[o>>2]|0)==(r|0)){n=o;r=o;b=212;break}o=dt[o+8>>2]|0;if(!o){r=1052;break}}if((b|0)==212)if(!(dt[r+12>>2]&8)){dt[n>>2]=x;f=r+4|0;dt[f>>2]=(dt[f>>2]|0)+d;f=x+8|0;f=(f&7|0)==0?0:0-f&7;u=x+(d+8)|0;u=(u&7|0)==0?0:0-u&7;e=x+(u+d)|0;c=f+m|0;p=x+c|0;h=e-(x+f)-m|0;dt[x+(f+4)>>2]=m|3;e:do{if((e|0)!=(a|0)){if((e|0)==(dt[156]|0)){j=(dt[153]|0)+h|0;dt[153]=j;dt[156]=p;dt[x+(c+4)>>2]=j|1;dt[x+(j+c)>>2]=j;break}s=d+4|0;r=dt[x+(s+u)>>2]|0;if((r&3|0)==1){l=r&-8;o=r>>>3;r:do{if(r>>>0>=256){a=dt[x+((u|24)+d)>>2]|0;i=dt[x+(d+12+u)>>2]|0;do{if((i|0)==(e|0)){n=u|16;i=x+(s+n)|0;r=dt[i>>2]|0;if(!r){i=x+(n+d)|0;r=dt[i>>2]|0;if(!r){z=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;z=r;break}}else{n=dt[x+((u|8)+d)>>2]|0;if(n>>>0>>0)Xt();t=n+12|0;if((dt[t>>2]|0)!=(e|0))Xt();r=i+8|0;if((dt[r>>2]|0)==(e|0)){dt[t>>2]=i;dt[r>>2]=n;z=i;break}else Xt()}}while(0);if(!a)break;t=dt[x+(d+28+u)>>2]|0;r=908+(t<<2)|0;do{if((e|0)!=(dt[r>>2]|0)){if(a>>>0<(dt[155]|0)>>>0)Xt();t=a+16|0;if((dt[t>>2]|0)==(e|0))dt[t>>2]=z;else dt[a+20>>2]=z;if(!z)break r}else{dt[r>>2]=z;if(z)break;dt[152]=dt[152]&~(1<>>0>>0)Xt();dt[z+24>>2]=a;e=u|16;t=dt[x+(e+d)>>2]|0;do{if(t)if(t>>>0>>0)Xt();else{dt[z+16>>2]=t;dt[t+24>>2]=z;break}}while(0);e=dt[x+(s+e)>>2]|0;if(!e)break;if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[z+20>>2]=e;dt[e+24>>2]=z;break}}else{i=dt[x+((u|8)+d)>>2]|0;n=dt[x+(d+12+u)>>2]|0;r=644+(o<<1<<2)|0;do{if((i|0)!=(r|0)){if(i>>>0>>0)Xt();if((dt[i+12>>2]|0)==(e|0))break;Xt()}}while(0);if((n|0)==(i|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();t=n+8|0;if((dt[t>>2]|0)==(e|0)){I=t;break}Xt()}}while(0);dt[i+12>>2]=n;dt[I>>2]=i}}while(0);e=x+((l|u)+d)|0;n=l+h|0}else n=h;e=e+4|0;dt[e>>2]=dt[e>>2]&-2;dt[x+(c+4)>>2]=n|1;dt[x+(n+c)>>2]=n;e=n>>>3;if(n>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0>=(dt[155]|0)>>>0){R=e;F=t;break}Xt()}}while(0);dt[R>>2]=p;dt[F+12>>2]=p;dt[x+(c+8)>>2]=F;dt[x+(c+12)>>2]=i;break}e=n>>>8;do{if(!e)i=0;else{if(n>>>0>16777215){i=31;break}R=(e+1048320|0)>>>16&8;F=e<>>16&4;F=F<>>16&2;i=14-(z|R|i)+(F<>>15)|0;i=n>>>(i+7|0)&1|i<<1}}while(0);e=908+(i<<2)|0;dt[x+(c+28)>>2]=i;dt[x+(c+20)>>2]=0;dt[x+(c+16)>>2]=0;t=dt[152]|0;r=1<>2]=p;dt[x+(c+24)>>2]=e;dt[x+(c+12)>>2]=p;dt[x+(c+8)>>2]=p;break}e=dt[e>>2]|0;r:do{if((dt[e+4>>2]&-8|0)!=(n|0)){i=n<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(n|0)){j=r;break r}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=p;dt[x+(c+24)>>2]=e;dt[x+(c+12)>>2]=p;dt[x+(c+8)>>2]=p;break e}}else j=e}while(0);e=j+8|0;t=dt[e>>2]|0;F=dt[155]|0;if(t>>>0>=F>>>0&j>>>0>=F>>>0){dt[t+12>>2]=p;dt[e>>2]=p;dt[x+(c+8)>>2]=t;dt[x+(c+12)>>2]=j;dt[x+(c+24)>>2]=0;break}else Xt()}else{j=(dt[154]|0)+h|0;dt[154]=j;dt[157]=p;dt[x+(c+4)>>2]=j|1}}while(0);j=x+(f|8)|0;return j|0}else r=1052;while(1){t=dt[r>>2]|0;if(t>>>0<=a>>>0?(e=dt[r+4>>2]|0,i=t+e|0,i>>>0>a>>>0):0)break;r=dt[r+8>>2]|0}n=t+(e+-39)|0;t=t+(e+-47+((n&7|0)==0?0:0-n&7))|0;n=a+16|0;t=t>>>0>>0?a:t;e=t+8|0;r=x+8|0;r=(r&7|0)==0?0:0-r&7;j=d+-40-r|0;dt[157]=x+r;dt[154]=j;dt[x+(r+4)>>2]=j|1;dt[x+(d+-36)>>2]=40;dt[158]=dt[273];r=t+4|0;dt[r>>2]=27;dt[e>>2]=dt[263];dt[e+4>>2]=dt[264];dt[e+8>>2]=dt[265];dt[e+12>>2]=dt[266];dt[263]=x;dt[264]=d;dt[266]=0;dt[265]=e;e=t+28|0;dt[e>>2]=7;if((t+32|0)>>>0>>0)do{j=e;e=e+4|0;dt[e>>2]=7}while((j+8|0)>>>0>>0);if((t|0)!=(a|0)){o=t-a|0;dt[r>>2]=dt[r>>2]&-2;dt[a+4>>2]=o|1;dt[t>>2]=o;e=o>>>3;if(o>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{O=e;M=t}}else{dt[151]=r|e;O=644+(t+2<<2)|0;M=i}dt[O>>2]=a;dt[M+12>>2]=a;dt[a+8>>2]=M;dt[a+12>>2]=i;break}e=o>>>8;if(e)if(o>>>0>16777215)i=31;else{F=(e+1048320|0)>>>16&8;j=e<>>16&4;j=j<>>16&2;i=14-(R|F|i)+(j<>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;r=908+(i<<2)|0;dt[a+28>>2]=i;dt[a+20>>2]=0;dt[n>>2]=0;e=dt[152]|0;t=1<>2]=a;dt[a+24>>2]=r;dt[a+12>>2]=a;dt[a+8>>2]=a;break}e=dt[r>>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(o|0)){i=o<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(o|0)){D=r;break e}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=a;dt[a+24>>2]=e;dt[a+12>>2]=a;dt[a+8>>2]=a;break t}}else D=e}while(0);e=D+8|0;t=dt[e>>2]|0;j=dt[155]|0;if(t>>>0>=j>>>0&D>>>0>=j>>>0){dt[t+12>>2]=a;dt[e>>2]=a;dt[a+8>>2]=t;dt[a+12>>2]=D;dt[a+24>>2]=0;break}else Xt()}}else{j=dt[155]|0;if((j|0)==0|x>>>0>>0)dt[155]=x;dt[263]=x;dt[264]=d;dt[266]=0;dt[160]=dt[269];dt[159]=-1;e=0;do{j=e<<1;F=644+(j<<2)|0;dt[644+(j+3<<2)>>2]=F;dt[644+(j+2<<2)>>2]=F;e=e+1|0}while((e|0)!=32);j=x+8|0;j=(j&7|0)==0?0:0-j&7;F=d+-40-j|0;dt[157]=x+j;dt[154]=F;dt[x+(j+4)>>2]=F|1;dt[x+(d+-36)>>2]=40;dt[158]=dt[273]}}while(0);e=dt[154]|0;if(e>>>0>m>>>0){F=e-m|0;dt[154]=F;j=dt[157]|0;dt[157]=j+m;dt[j+(m+4)>>2]=F|1;dt[j+4>>2]=m|3;j=j+8|0;return j|0}}j=hr()|0;dt[j>>2]=12;j=0;return j|0}function Ur(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0;if(!t)return;e=t+-8|0;s=dt[155]|0;if(e>>>0>>0)Xt();r=dt[t+-4>>2]|0;i=r&3;if((i|0)==1)Xt();p=r&-8;m=t+(p+-8)|0;do{if(!(r&1)){e=dt[e>>2]|0;if(!i)return;l=-8-e|0;h=t+l|0;c=e+p|0;if(h>>>0>>0)Xt();if((h|0)==(dt[156]|0)){e=t+(p+-4)|0;r=dt[e>>2]|0;if((r&3|0)!=3){y=h;o=c;break}dt[153]=c;dt[e>>2]=r&-2;dt[t+(l+4)>>2]=c|1;dt[m>>2]=c;return}n=e>>>3;if(e>>>0<256){i=dt[t+(l+8)>>2]|0;r=dt[t+(l+12)>>2]|0;e=644+(n<<1<<2)|0;if((i|0)!=(e|0)){if(i>>>0>>0)Xt();if((dt[i+12>>2]|0)!=(h|0))Xt()}if((r|0)==(i|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();e=r+8|0;if((dt[e>>2]|0)==(h|0))a=e;else Xt()}else a=r+8|0;dt[i+12>>2]=r;dt[a>>2]=i;y=h;o=c;break}a=dt[t+(l+24)>>2]|0;i=dt[t+(l+12)>>2]|0;do{if((i|0)==(h|0)){r=t+(l+20)|0;e=dt[r>>2]|0;if(!e){r=t+(l+16)|0;e=dt[r>>2]|0;if(!e){u=0;break}}while(1){i=e+20|0;n=dt[i>>2]|0;if(n){e=n;r=i;continue}i=e+16|0;n=dt[i>>2]|0;if(!n)break;else{e=n;r=i}}if(r>>>0>>0)Xt();else{dt[r>>2]=0;u=e;break}}else{n=dt[t+(l+8)>>2]|0;if(n>>>0>>0)Xt();e=n+12|0;if((dt[e>>2]|0)!=(h|0))Xt();r=i+8|0;if((dt[r>>2]|0)==(h|0)){dt[e>>2]=i;dt[r>>2]=n;u=i;break}else Xt()}}while(0);if(a){e=dt[t+(l+28)>>2]|0;r=908+(e<<2)|0;if((h|0)==(dt[r>>2]|0)){dt[r>>2]=u;if(!u){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(h|0))dt[e>>2]=u;else dt[a+20>>2]=u;if(!u){y=h;o=c;break}}r=dt[155]|0;if(u>>>0>>0)Xt();dt[u+24>>2]=a;e=dt[t+(l+16)>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[u+16>>2]=e;dt[e+24>>2]=u;break}}while(0);e=dt[t+(l+20)>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[u+20>>2]=e;dt[e+24>>2]=u;y=h;o=c;break}else{y=h;o=c}}else{y=h;o=c}}else{y=e;o=p}}while(0);if(y>>>0>=m>>>0)Xt();e=t+(p+-4)|0;r=dt[e>>2]|0;if(!(r&1))Xt();if(!(r&2)){if((m|0)==(dt[157]|0)){_=(dt[154]|0)+o|0;dt[154]=_;dt[157]=y;dt[y+4>>2]=_|1;if((y|0)!=(dt[156]|0))return;dt[156]=0;dt[153]=0;return}if((m|0)==(dt[156]|0)){_=(dt[153]|0)+o|0;dt[153]=_;dt[156]=y;dt[y+4>>2]=_|1;dt[y+_>>2]=_;return}o=(r&-8)+o|0;n=r>>>3;do{if(r>>>0>=256){a=dt[t+(p+16)>>2]|0;e=dt[t+(p|4)>>2]|0;do{if((e|0)==(m|0)){r=t+(p+12)|0;e=dt[r>>2]|0;if(!e){r=t+(p+8)|0;e=dt[r>>2]|0;if(!e){d=0;break}}while(1){i=e+20|0;n=dt[i>>2]|0;if(n){e=n;r=i;continue}i=e+16|0;n=dt[i>>2]|0;if(!n)break;else{e=n;r=i}}if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[r>>2]=0;d=e;break}}else{r=dt[t+p>>2]|0;if(r>>>0<(dt[155]|0)>>>0)Xt();i=r+12|0;if((dt[i>>2]|0)!=(m|0))Xt();n=e+8|0;if((dt[n>>2]|0)==(m|0)){dt[i>>2]=e;dt[n>>2]=r;d=e;break}else Xt()}}while(0);if(a){e=dt[t+(p+20)>>2]|0;r=908+(e<<2)|0;if((m|0)==(dt[r>>2]|0)){dt[r>>2]=d;if(!d){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(m|0))dt[e>>2]=d;else dt[a+20>>2]=d;if(!d)break}r=dt[155]|0;if(d>>>0>>0)Xt();dt[d+24>>2]=a;e=dt[t+(p+8)>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[d+16>>2]=e;dt[e+24>>2]=d;break}}while(0);e=dt[t+(p+12)>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[d+20>>2]=e;dt[e+24>>2]=d;break}}}else{i=dt[t+p>>2]|0;r=dt[t+(p|4)>>2]|0;e=644+(n<<1<<2)|0;if((i|0)!=(e|0)){if(i>>>0<(dt[155]|0)>>>0)Xt();if((dt[i+12>>2]|0)!=(m|0))Xt()}if((r|0)==(i|0)){dt[151]=dt[151]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=r+8|0;if((dt[e>>2]|0)==(m|0))f=e;else Xt()}else f=r+8|0;dt[i+12>>2]=r;dt[f>>2]=i}}while(0);dt[y+4>>2]=o|1;dt[y+o>>2]=o;if((y|0)==(dt[156]|0)){dt[153]=o;return}}else{dt[e>>2]=r&-2;dt[y+4>>2]=o|1;dt[y+o>>2]=o}e=o>>>3;if(o>>>0<256){r=e<<1;n=644+(r<<2)|0;i=dt[151]|0;e=1<>2]|0;if(r>>>0<(dt[155]|0)>>>0)Xt();else{g=e;v=r}}else{dt[151]=i|e;g=644+(r+2<<2)|0;v=n}dt[g>>2]=y;dt[v+12>>2]=y;dt[y+8>>2]=v;dt[y+12>>2]=n;return}e=o>>>8;if(e)if(o>>>0>16777215)n=31;else{g=(e+1048320|0)>>>16&8;v=e<>>16&4;v=v<>>16&2;n=14-(m|g|n)+(v<>>15)|0;n=o>>>(n+7|0)&1|n<<1}else n=0;e=908+(n<<2)|0;dt[y+28>>2]=n;dt[y+20>>2]=0;dt[y+16>>2]=0;r=dt[152]|0;i=1<>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(o|0)){n=o<<((n|0)==31?0:25-(n>>>1)|0);while(1){r=e+16+(n>>>31<<2)|0;i=dt[r>>2]|0;if(!i)break;if((dt[i+4>>2]&-8|0)==(o|0)){_=i;break e}else{n=n<<1;e=i}}if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[r>>2]=y;dt[y+24>>2]=e;dt[y+12>>2]=y;dt[y+8>>2]=y;break t}}else _=e}while(0);e=_+8|0;r=dt[e>>2]|0;v=dt[155]|0;if(r>>>0>=v>>>0&_>>>0>=v>>>0){dt[r+12>>2]=y;dt[e>>2]=y;dt[y+8>>2]=r;dt[y+12>>2]=_;dt[y+24>>2]=0;break}else Xt()}else{dt[152]=r|i;dt[e>>2]=y;dt[y+24>>2]=e;dt[y+12>>2]=y;dt[y+8>>2]=y}}while(0);y=(dt[159]|0)+-1|0;dt[159]=y;if(!y)e=1060;else return;while(1){e=dt[e>>2]|0;if(!e)break;else e=e+8|0}dt[159]=-1;return}function Xr(t,e){t=t|0;e=e|0;var r=0,i=0;if(!t){t=Br(e)|0;return t|0}if(e>>>0>4294967231){t=hr()|0;dt[t>>2]=12;t=0;return t|0}r=qr(t+-8|0,e>>>0<11?16:e+11&-8)|0;if(r){t=r+8|0;return t|0}r=Br(e)|0;if(!r){t=0;return t|0}i=dt[t+-4>>2]|0;i=(i&-8)-((i&3|0)==0?8:4)|0;Qr(r|0,t|0,(i>>>0>>0?i:e)|0)|0;Ur(t);t=r;return t|0}function Hr(t){t=t|0;var e=0;if(!t){e=0;return e|0}t=dt[t+-4>>2]|0;e=t&3;if((e|0)==1){e=0;return e|0}e=(t&-8)-((e|0)==0?8:4)|0;return e|0}function qr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;p=t+4|0;d=dt[p>>2]|0;l=d&-8;h=t+l|0;s=dt[155]|0;r=d&3;if(!((r|0)!=1&t>>>0>=s>>>0&t>>>0>>0))Xt();i=t+(l|4)|0;n=dt[i>>2]|0;if(!(n&1))Xt();if(!r){if(e>>>0<256){t=0;return t|0}if(l>>>0>=(e+4|0)>>>0?(l-e|0)>>>0<=dt[271]<<1>>>0:0)return t|0;t=0;return t|0}if(l>>>0>=e>>>0){r=l-e|0;if(r>>>0<=15)return t|0;dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=r|3;dt[i>>2]=dt[i>>2]|1;Wr(t+e|0,r);return t|0}if((h|0)==(dt[157]|0)){r=(dt[154]|0)+l|0;if(r>>>0<=e>>>0){t=0;return t|0}f=r-e|0;dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=f|1;dt[157]=t+e;dt[154]=f;return t|0}if((h|0)==(dt[156]|0)){i=(dt[153]|0)+l|0;if(i>>>0>>0){t=0;return t|0}r=i-e|0;if(r>>>0>15){dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=r|1;dt[t+i>>2]=r;i=t+(i+4)|0;dt[i>>2]=dt[i>>2]&-2;i=t+e|0}else{dt[p>>2]=d&1|i|2;i=t+(i+4)|0;dt[i>>2]=dt[i>>2]|1;i=0;r=0}dt[153]=r;dt[156]=i;return t|0}if(n&2){t=0;return t|0}c=(n&-8)+l|0;if(c>>>0>>0){t=0;return t|0}f=c-e|0;o=n>>>3;do{if(n>>>0>=256){a=dt[t+(l+24)>>2]|0;o=dt[t+(l+12)>>2]|0;do{if((o|0)==(h|0)){i=t+(l+20)|0;r=dt[i>>2]|0;if(!r){i=t+(l+16)|0;r=dt[i>>2]|0;if(!r){u=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;u=r;break}}else{n=dt[t+(l+8)>>2]|0;if(n>>>0>>0)Xt();r=n+12|0;if((dt[r>>2]|0)!=(h|0))Xt();i=o+8|0;if((dt[i>>2]|0)==(h|0)){dt[r>>2]=o;dt[i>>2]=n;u=o;break}else Xt()}}while(0);if(a){r=dt[t+(l+28)>>2]|0;i=908+(r<<2)|0;if((h|0)==(dt[i>>2]|0)){dt[i>>2]=u;if(!u){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=a+16|0;if((dt[r>>2]|0)==(h|0))dt[r>>2]=u;else dt[a+20>>2]=u;if(!u)break}i=dt[155]|0;if(u>>>0>>0)Xt();dt[u+24>>2]=a;r=dt[t+(l+16)>>2]|0;do{if(r)if(r>>>0>>0)Xt();else{dt[u+16>>2]=r;dt[r+24>>2]=u;break}}while(0);r=dt[t+(l+20)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[u+20>>2]=r;dt[r+24>>2]=u;break}}}else{n=dt[t+(l+8)>>2]|0;i=dt[t+(l+12)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(h|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(h|0))a=r;else Xt()}else a=i+8|0;dt[n+12>>2]=i;dt[a>>2]=n}}while(0);if(f>>>0<16){dt[p>>2]=c|d&1|2;e=t+(c|4)|0;dt[e>>2]=dt[e>>2]|1;return t|0}else{dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=f|3;d=t+(c|4)|0;dt[d>>2]=dt[d>>2]|1;Wr(t+e|0,f);return t|0}return 0}function Wr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0;m=t+e|0;r=dt[t+4>>2]|0;do{if(!(r&1)){u=dt[t>>2]|0;if(!(r&3))return;f=t+(0-u)|0;c=u+e|0;l=dt[155]|0;if(f>>>0>>0)Xt();if((f|0)==(dt[156]|0)){i=t+(e+4)|0;r=dt[i>>2]|0;if((r&3|0)!=3){_=f;a=c;break}dt[153]=c;dt[i>>2]=r&-2;dt[t+(4-u)>>2]=c|1;dt[m>>2]=c;return}o=u>>>3;if(u>>>0<256){n=dt[t+(8-u)>>2]|0;i=dt[t+(12-u)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(f|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(f|0))s=r;else Xt()}else s=i+8|0;dt[n+12>>2]=i;dt[s>>2]=n;_=f;a=c;break}s=dt[t+(24-u)>>2]|0;n=dt[t+(12-u)>>2]|0;do{if((n|0)==(f|0)){n=16-u|0;i=t+(n+4)|0;r=dt[i>>2]|0;if(!r){i=t+n|0;r=dt[i>>2]|0;if(!r){h=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;h=r;break}}else{o=dt[t+(8-u)>>2]|0;if(o>>>0>>0)Xt();r=o+12|0;if((dt[r>>2]|0)!=(f|0))Xt();i=n+8|0;if((dt[i>>2]|0)==(f|0)){dt[r>>2]=n;dt[i>>2]=o;h=n;break}else Xt()}}while(0);if(s){r=dt[t+(28-u)>>2]|0;i=908+(r<<2)|0;if((f|0)==(dt[i>>2]|0)){dt[i>>2]=h;if(!h){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=s+16|0;if((dt[r>>2]|0)==(f|0))dt[r>>2]=h;else dt[s+20>>2]=h;if(!h){_=f;a=c;break}}n=dt[155]|0;if(h>>>0>>0)Xt();dt[h+24>>2]=s;r=16-u|0;i=dt[t+r>>2]|0;do{if(i)if(i>>>0>>0)Xt();else{dt[h+16>>2]=i;dt[i+24>>2]=h;break}}while(0);r=dt[t+(r+4)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[h+20>>2]=r;dt[r+24>>2]=h;_=f;a=c;break}else{_=f;a=c}}else{_=f;a=c}}else{_=t;a=e}}while(0);l=dt[155]|0;if(m>>>0>>0)Xt();r=t+(e+4)|0;i=dt[r>>2]|0;if(!(i&2)){if((m|0)==(dt[157]|0)){v=(dt[154]|0)+a|0;dt[154]=v;dt[157]=_;dt[_+4>>2]=v|1;if((_|0)!=(dt[156]|0))return;dt[156]=0;dt[153]=0;return}if((m|0)==(dt[156]|0)){v=(dt[153]|0)+a|0;dt[153]=v;dt[156]=_;dt[_+4>>2]=v|1;dt[_+v>>2]=v;return}a=(i&-8)+a|0;o=i>>>3;do{if(i>>>0>=256){s=dt[t+(e+24)>>2]|0;n=dt[t+(e+12)>>2]|0;do{if((n|0)==(m|0)){i=t+(e+20)|0;r=dt[i>>2]|0;if(!r){i=t+(e+16)|0;r=dt[i>>2]|0;if(!r){d=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;d=r;break}}else{o=dt[t+(e+8)>>2]|0;if(o>>>0>>0)Xt();r=o+12|0;if((dt[r>>2]|0)!=(m|0))Xt();i=n+8|0;if((dt[i>>2]|0)==(m|0)){dt[r>>2]=n;dt[i>>2]=o;d=n;break}else Xt()}}while(0);if(s){r=dt[t+(e+28)>>2]|0;i=908+(r<<2)|0;if((m|0)==(dt[i>>2]|0)){dt[i>>2]=d;if(!d){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=s+16|0;if((dt[r>>2]|0)==(m|0))dt[r>>2]=d;else dt[s+20>>2]=d;if(!d)break}i=dt[155]|0;if(d>>>0>>0)Xt();dt[d+24>>2]=s;r=dt[t+(e+16)>>2]|0;do{if(r)if(r>>>0>>0)Xt();else{dt[d+16>>2]=r;dt[r+24>>2]=d;break}}while(0);r=dt[t+(e+20)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[d+20>>2]=r;dt[r+24>>2]=d;break}}}else{n=dt[t+(e+8)>>2]|0;i=dt[t+(e+12)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(m|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(m|0))p=r;else Xt()}else p=i+8|0;dt[n+12>>2]=i;dt[p>>2]=n}}while(0);dt[_+4>>2]=a|1;dt[_+a>>2]=a;if((_|0)==(dt[156]|0)){dt[153]=a;return}}else{dt[r>>2]=i&-2;dt[_+4>>2]=a|1;dt[_+a>>2]=a}r=a>>>3;if(a>>>0<256){i=r<<1;o=644+(i<<2)|0;n=dt[151]|0;r=1<>2]|0;if(i>>>0<(dt[155]|0)>>>0)Xt();else{g=r;v=i}}else{dt[151]=n|r;g=644+(i+2<<2)|0;v=o}dt[g>>2]=_;dt[v+12>>2]=_;dt[_+8>>2]=v;dt[_+12>>2]=o;return}r=a>>>8;if(r)if(a>>>0>16777215)o=31;else{g=(r+1048320|0)>>>16&8;v=r<>>16&4;v=v<>>16&2;o=14-(m|g|o)+(v<>>15)|0;o=a>>>(o+7|0)&1|o<<1}else o=0;r=908+(o<<2)|0;dt[_+28>>2]=o;dt[_+20>>2]=0;dt[_+16>>2]=0;i=dt[152]|0;n=1<>2]=_;dt[_+24>>2]=r;dt[_+12>>2]=_;dt[_+8>>2]=_;return}r=dt[r>>2]|0;t:do{if((dt[r+4>>2]&-8|0)!=(a|0)){o=a<<((o|0)==31?0:25-(o>>>1)|0);while(1){i=r+16+(o>>>31<<2)|0;n=dt[i>>2]|0;if(!n)break;if((dt[n+4>>2]&-8|0)==(a|0)){r=n;break t}else{o=o<<1;r=n}}if(i>>>0<(dt[155]|0)>>>0)Xt();dt[i>>2]=_;dt[_+24>>2]=r;dt[_+12>>2]=_;dt[_+8>>2]=_;return}}while(0);i=r+8|0;n=dt[i>>2]|0;v=dt[155]|0;if(!(n>>>0>=v>>>0&r>>>0>=v>>>0))Xt();dt[n+12>>2]=_;dt[i>>2]=_;dt[_+8>>2]=n;dt[_+12>>2]=r;dt[_+24>>2]=0;return}function Gr(){}function Vr(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;i=e-i-(r>>>0>t>>>0|0)>>>0;return(rt=i,t-r>>>0|0)|0}function Yr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;i=t+r|0;if((r|0)>=20){e=e&255;o=t&3;a=e|e<<8|e<<16|e<<24;n=i&~3;if(o){o=t+4-o|0;while((t|0)<(o|0)){pt[t>>0]=e;t=t+1|0}}while((t|0)<(n|0)){dt[t>>2]=a;t=t+4|0}}while((t|0)<(i|0)){pt[t>>0]=e;t=t+1|0}return t-r|0}function Zr(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e>>>r;return t>>>r|(e&(1<>>r-32|0}function Jr(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e<>>32-r;return t<>>0;return(rt=e+i+(r>>>0>>0|0)>>>0,r|0)|0}function Qr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if((r|0)>=4096)return Mt(t|0,e|0,r|0)|0;i=t|0;if((t&3)==(e&3)){while(t&3){if(!r)return i|0;pt[t>>0]=pt[e>>0]|0;t=t+1|0;e=e+1|0;r=r-1|0}while((r|0)>=4){dt[t>>2]=dt[e>>2];t=t+4|0;e=e+4|0;r=r-4|0}}while((r|0)>0){pt[t>>0]=pt[e>>0]|0;t=t+1|0;e=e+1|0;r=r-1|0}return i|0}function $r(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e>>r;return t>>>r|(e&(1<>r-32|0}function ti(t){t=t|0;var e=0;e=pt[g+(t&255)>>0]|0;if((e|0)<8)return e|0;e=pt[g+(t>>8&255)>>0]|0;if((e|0)<8)return e+8|0;e=pt[g+(t>>16&255)>>0]|0;if((e|0)<8)return e+16|0;return(pt[g+(t>>>24)>>0]|0)+24|0}function ei(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0;o=t&65535;n=e&65535;r=_t(n,o)|0;i=t>>>16;t=(r>>>16)+(_t(n,i)|0)|0;n=e>>>16;e=_t(n,o)|0;return(rt=(t>>>16)+(_t(n,i)|0)+(((t&65535)+e|0)>>>16)|0,t+e<<16|r&65535|0)|0}function ri(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;u=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;o=i>>31|((i|0)<0?-1:0)<<1;n=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;s=Vr(u^t,l^e,u,l)|0;a=rt;t=o^u;e=n^l;return Vr((si(s,a,Vr(o^r,n^i,o,n)|0,rt,0)|0)^t,rt^e,t,e)|0}function ii(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;n=vt;vt=vt+16|0;s=n|0;a=e>>31|((e|0)<0?-1:0)<<1;o=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;u=i>>31|((i|0)<0?-1:0)<<1;l=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;t=Vr(a^t,o^e,a,o)|0;e=rt;si(t,e,Vr(u^r,l^i,u,l)|0,rt,s)|0;i=Vr(dt[s>>2]^a,dt[s+4>>2]^o,a,o)|0;r=rt;vt=n;return(rt=r,i)|0}function ni(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0;n=t;o=r;r=ei(n,o)|0;t=rt;return(rt=(_t(e,o)|0)+(_t(i,n)|0)+t|t&0,r|0|0)|0}function oi(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;return si(t,e,r,i,0)|0}function ai(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0;o=vt;vt=vt+16|0;n=o|0;si(t,e,r,i,n)|0;vt=o;return(rt=dt[n+4>>2]|0,dt[n>>2]|0)|0}function si(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;h=t;l=e;u=l;a=r;f=i;s=f;if(!u){o=(n|0)!=0;if(!s){if(o){dt[n>>2]=(h>>>0)%(a>>>0);dt[n+4>>2]=0}f=0;n=(h>>>0)/(a>>>0)>>>0;return(rt=f,n)|0}else{if(!o){f=0;n=0;return(rt=f,n)|0}dt[n>>2]=t|0;dt[n+4>>2]=e&0;f=0;n=0;return(rt=f,n)|0}}o=(s|0)==0;do{if(a){if(!o){o=(at(s|0)|0)-(at(u|0)|0)|0;if(o>>>0<=31){c=o+1|0;s=31-o|0;e=o-31>>31;a=c;t=h>>>(c>>>0)&e|u<>>(c>>>0)&e;o=0;s=h<>2]=t|0;dt[n+4>>2]=l|e&0;f=0;n=0;return(rt=f,n)|0}o=a-1|0;if(o&a){s=(at(a|0)|0)+33-(at(u|0)|0)|0;d=64-s|0;c=32-s|0;l=c>>31;p=s-32|0;e=p>>31;a=s;t=c-1>>31&u>>>(p>>>0)|(u<>>(s>>>0))&e;e=e&u>>>(s>>>0);o=h<>>(p>>>0))&l|h<>31;break}if(n){dt[n>>2]=o&h;dt[n+4>>2]=0}if((a|0)==1){p=l|e&0;d=t|0|0;return(rt=p,d)|0}else{d=ti(a|0)|0;p=u>>>(d>>>0)|0;d=u<<32-d|h>>>(d>>>0)|0;return(rt=p,d)|0}}else{if(o){if(n){dt[n>>2]=(u>>>0)%(a>>>0);dt[n+4>>2]=0}p=0;d=(u>>>0)/(a>>>0)>>>0;return(rt=p,d)|0}if(!h){if(n){dt[n>>2]=0;dt[n+4>>2]=(u>>>0)%(s>>>0)}p=0;d=(u>>>0)/(s>>>0)>>>0;return(rt=p,d)|0}o=s-1|0;if(!(o&s)){if(n){dt[n>>2]=t|0;dt[n+4>>2]=o&u|e&0}p=0;d=u>>>((ti(s|0)|0)>>>0);return(rt=p,d)|0}o=(at(s|0)|0)-(at(u|0)|0)|0;if(o>>>0<=30){e=o+1|0;s=31-o|0;a=e;t=u<>>(e>>>0);e=u>>>(e>>>0);o=0;s=h<>2]=t|0;dt[n+4>>2]=l|e&0;p=0;d=0;return(rt=p,d)|0}}while(0);if(!a){u=s;l=0;s=0}else{c=r|0|0;h=f|i&0;u=Kr(c|0,h|0,-1,-1)|0;r=rt;l=s;s=0;do{i=l;l=o>>>31|l<<1;o=s|o<<1;i=t<<1|i>>>31|0;f=t>>>31|e<<1|0;Vr(u,r,i,f)|0;d=rt;p=d>>31|((d|0)<0?-1:0)<<1;s=p&1;t=Vr(i,f,p&c,(((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1)&h)|0;e=rt;a=a-1|0}while((a|0)!=0);u=l;l=0}a=0;if(n){dt[n>>2]=t;dt[n+4>>2]=e}p=(o|0)>>>31|(u|a)<<1|(a<<1|o>>>31)&0|l;d=(o<<1|0>>>31)&-2|s;return(rt=p,d)|0}function li(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;return Pi[t&7](e|0,r|0,i|0)|0}function ui(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;Ci[t&3](e|0,r|0,i|0,n|0,o|0)}function hi(t,e){t=t|0;e=e|0;Ai[t&7](e|0)}function ci(t,e){t=t|0;e=e|0;return Ei[t&1](e|0)|0}function fi(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;Ii[t&0](e|0,r|0,i|0)}function pi(t){t=t|0;Oi[t&3]()}function di(t,e,r,i,n,o,a){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;Mi[t&3](e|0,r|0,i|0,n|0,o|0,a|0)}function mi(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;return Di[t&1](e|0,r|0,i|0,n|0,o|0)|0}function gi(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;zi[t&3](e|0,r|0,i|0,n|0)}function vi(t,e,r){t=t|0;e=e|0;r=r|0;st(0);return 0}function _i(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;st(1)}function yi(t){t=t|0;st(2)}function bi(t){t=t|0;st(3);return 0}function xi(t,e,r){t=t|0;e=e|0;r=r|0;st(4)}function wi(){st(5)}function Ti(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;st(6)}function ki(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;st(7);return 0}function Si(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;st(8)}var Pi=[vi,Ye,Fr,Er,Ar,Ir,vi,vi];var Ci=[_i,er,tr,_i];var Ai=[yi,He,Ge,qe,We,Ve,lr,Rr];var Ei=[bi,Cr];var Ii=[xi];var Oi=[wi,ar,sr,wi];var Mi=[Ti,ir,rr,Ti];var Di=[ki,le];var zi=[Si,Je,Ke,Si];return{___cxa_can_catch:nr,_crn_get_levels:Te,_crn_get_uncompressed_size:Se,_crn_decompress:Pe,_i64Add:Kr,_crn_get_width:xe,___cxa_is_pointer_type:or,_i64Subtract:Vr,_memset:Yr,_malloc:Br,_free:Ur,_memcpy:Qr,_bitshift64Lshr:Zr,_fflush:gr,_bitshift64Shl:Jr,_crn_get_height:we,___errno_location:hr,_crn_get_dxt_format:ke,runPostSets:Gr,_emscripten_replace_memory:Yt,stackAlloc:Zt,stackSave:Jt,stackRestore:Kt,establishStackSpace:Qt,setThrew:$t,setTempRet0:re,getTempRet0:ie,dynCall_iiii:li,dynCall_viiiii:ui,dynCall_vi:hi,dynCall_ii:ci,dynCall_viii:fi,dynCall_v:pi,dynCall_viiiiii:di,dynCall_iiiiii:mi,dynCall_viiii:gi}}(e.Ya,e.Za,buffer);e.___cxa_can_catch=Z.___cxa_can_catch,e._crn_get_levels=Z._crn_get_levels,e.runPostSets=Z.runPostSets,e._crn_get_uncompressed_size=Z._crn_get_uncompressed_size,e._crn_decompress=Z._crn_decompress;var zc=e._i64Add=Z._i64Add;e._crn_get_height=Z._crn_get_height,e.___cxa_is_pointer_type=Z.___cxa_is_pointer_type;var nb=e._i64Subtract=Z._i64Subtract,qb=e._memset=Z._memset,Ea=e._malloc=Z._malloc,Bc=e._memcpy=Z._memcpy,Xa=e._emscripten_replace_memory=Z._emscripten_replace_memory;e._crn_get_dxt_format=Z._crn_get_dxt_format;var rb=e._bitshift64Lshr=Z._bitshift64Lshr,Na=e._free=Z._free;e._fflush=Z._fflush,e._crn_get_width=Z._crn_get_width,e.___errno_location=Z.___errno_location;var sb=e._bitshift64Shl=Z._bitshift64Shl;function ia(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}e.dynCall_iiii=Z.dynCall_iiii,e.dynCall_viiiii=Z.dynCall_viiiii,e.dynCall_vi=Z.dynCall_vi,e.dynCall_ii=Z.dynCall_ii,e.dynCall_viii=Z.dynCall_viii,e.dynCall_v=Z.dynCall_v,e.dynCall_viiiiii=Z.dynCall_viiiiii,e.dynCall_iiiiii=Z.dynCall_iiiiii,e.dynCall_viiii=Z.dynCall_viiii,n.aa=Z.stackAlloc,n.ua=Z.stackSave,n.ba=Z.stackRestore,n.Cd=Z.establishStackSpace,n.rb=Z.setTempRet0,n.fb=Z.getTempRet0,ia.prototype=Error(),ia.prototype.constructor=ia;var rd=null,jb=function t(){e.calledRun||td(),e.calledRun||(jb=t)};function td(t){function r(){if(!e.calledRun&&(e.calledRun=!0,!na)){if(Ha||(Ha=!0,ab(cb)),ab(db),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e._main&&vd&&e.callMain(t),e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)gb(e.postRun.shift());ab(eb)}}if(t=t||e.arguments,null===rd&&(rd=Date.now()),!(0>8&255,t>>16&255,t>>24&255)}!function(s){s.loadFromArrayBuffer=function(t,e,r){return new i(e).loadFromArrayBuffer(t,r)};var i=function(l){function t(t,e,r,i,n,o,a){var s=l.call(this)||this;return s.complete=!1,s.isCompressedImage=!0,s.preserveSource=!0,s.onload=null,s.baseTexture=null,s.init(t,e,r,i,n,o,a),s}return __extends(t,l),t.prototype.init=function(t,e,r,i,n,o,a){void 0===i&&(i=-1),void 0===n&&(n=-1),this.src=t,this.resize(i,n),this._width=i,this._height=n,this.data=e,this.type=r,this.levels=o,this.internalFormat=a;var s=this.complete;return this.complete=!!e,!s&&this.complete&&this.onload&&this.onload({target:this}),this.update(),this},t.prototype.dispose=function(){this.data=null},t.prototype.bind=function(t){t.premultiplyAlpha=!1,l.prototype.bind.call(this,t)},t.prototype.upload=function(t,e,r){var i=t.state.gl;if(r.compressed=!1,t.texture.initCompressed(),null===this.data)throw"Trying to create a second (or more) webgl texture from the same CompressedImage : "+this.src;for(var n=this.levels,o=this.width,a=this.height,s=0,l=0;l>=1)<1&&(o=1),(a>>=1)<1&&(a=1),s+=u}return this._internalLoader.free(),this.preserveSource||(this.data=null),!0},t.prototype.style=function(t,e,r){var i=t.state.gl,n=this.levels;return e.scaleMode===PIXI.SCALE_MODES.LINEAR?1>2)*(e+3>>2)*8;case 33778:case 33779:case 35987:case 34798:return(t+3>>2)*(e+3>>2)*16;default:return 0}},h.type="DDS",h}(t.AbstractInternalLoader);t.DDSLoader=l}(pixi_compressed_textures||(pixi_compressed_textures={})),function(h){var t,c=((t={})[0]=35841,t[1]=35843,t[2]=35840,t[3]=35842,t[6]=36196,t[7]=33776,t[9]=33778,t[5]=33779,t),e=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.load=function(t){if(!h.DDSLoader.test(t))throw"Invalid magic number in PVR header";var e=new Int32Array(t,0,13),r=e[2],i=c[r]||-1,n=e[7],o=e[6],a=e[11],s=e[12]+52,l=new Uint8Array(t,s),u=this._image;return this._format=i,u.init(u.src,l,"PVR",n,o,a,i),u},t.test=function(t){return 55727696===new Int32Array(t,0,1)[0]},t.prototype.levelBufferSize=function(t,e,r){switch(void 0===r&&(r=0),this._format){case 33776:case 36196:return(t+3>>2)*(e+3>>2)*8;case 33778:case 33779:return(t+3>>2)*(e+3>>2)*16;case 35840:case 35842:return Math.floor((Math.max(t,8)*Math.max(e,8)*4+7)/8);case 35841:case 35843:return Math.floor((Math.max(t,16)*Math.max(e,8)*2+7)/8);default:return 0}},t.type="PVR",t}(h.AbstractInternalLoader);h.PVRTCLoader=e}(pixi_compressed_textures||(pixi_compressed_textures={}));var __awaiter=this&&this.__awaiter||function(t,a,s,l){return new(s||(s=Promise))(function(e,r){function i(t){try{o(l.next(t))}catch(t){r(t)}}function n(t){try{o(l.throw(t))}catch(t){r(t)}}function o(t){t.done?e(t.value):function(e){return e instanceof s?e:new s(function(t){t(e)})}(t.value).then(i,n)}o((l=l.apply(t,a||[])).next())})},__generator=this&&this.__generator||function(r,i){var n,o,a,t,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return t={next:e(0),throw:e(1),return:e(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function(e){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(a=2&e[0]?o.return:e[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,e[1])).done)return a;switch(o=0,a&&(e=[2&e[0],a.value]),e[0]){case 0:case 1:a=e;break;case 4:return s.label++,{value:e[1],done:!1};case 5:s.label++,o=e[1],e=[0];continue;case 7:e=s.ops.pop(),s.trys.pop();continue;default:if(!(a=0<(a=s.trys).length&&a[a.length-1])&&(6===e[0]||2===e[0])){s=0;continue}if(3===e[0]&&(!a||e[1]>a[0]&&e[1] 0.0) {\n c.rgb /= c.a;\n\n vec3 rgb = pow(c.rgb, vec3(1. / gamma));\n rgb = mix(vec3(.5), mix(vec3(dot(vec3(.2125, .7154, .0721), rgb)), rgb, saturation), contrast);\n rgb.r *= red;\n rgb.g *= green;\n rgb.b *= blue;\n c.rgb = rgb * brightness;\n\n c.rgb *= c.a;\n }\n\n gl_FragColor = c * alpha;\n}\n"),Object.assign(this,{gamma:1,saturation:1,contrast:1,brightness:1,red:1,green:1,blue:1,alpha:1},t)}return e&&(t.__proto__=e),((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.gamma=Math.max(this.gamma,1e-4),this.uniforms.saturation=this.saturation,this.uniforms.contrast=this.contrast,this.uniforms.brightness=this.brightness,this.uniforms.red=this.red,this.uniforms.green=this.green,this.uniforms.blue=this.blue,this.uniforms.alpha=this.alpha,t.applyFilter(this,e,r,i)},t}(n.Filter),d=function(i){function t(t,e,r){void 0===t&&(t=4),void 0===e&&(e=3),void 0===r&&(r=!1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}",r?"\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\nuniform vec4 filterClamp;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample top right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}\n":"\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample top right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}"),this.uniforms.uOffset=new Float32Array(2),this._pixelSize=new f.Point,this.pixelSize=1,this._clamp=r,this._kernels=null,Array.isArray(t)?this.kernels=t:(this._blur=t,this.quality=e)}i&&(t.__proto__=i);var e={kernels:{configurable:!0},clamp:{configurable:!0},pixelSize:{configurable:!0},quality:{configurable:!0},blur:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n,o=this.pixelSize.x/e._frame.width,a=this.pixelSize.y/e._frame.height;if(1===this._quality||0===this._blur)n=this._kernels[0]+.5,this.uniforms.uOffset[0]=n*o,this.uniforms.uOffset[1]=n*a,t.applyFilter(this,e,r,i);else{for(var s,l=t.getFilterTexture(),u=e,h=l,c=this._quality-1,f=0;f threshold) {\n gl_FragColor = color;\n } else {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n"),this.threshold=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={threshold:{configurable:!0}};return r.threshold.get=function(){return this.uniforms.threshold},r.threshold.set=function(t){this.uniforms.threshold=t},Object.defineProperties(t.prototype,r),t}(n.Filter),i=function(a){function t(t){a.call(this,c,"uniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D bloomTexture;\nuniform float bloomScale;\nuniform float brightness;\n\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord);\n color.rgb *= brightness;\n vec4 bloomColor = vec4(texture2D(bloomTexture, vTextureCoord).rgb, 0.0);\n bloomColor.rgb *= bloomScale;\n gl_FragColor = color + bloomColor;\n}\n"),"number"==typeof t&&(t={threshold:t}),t=Object.assign({threshold:.5,bloomScale:1,brightness:1,kernels:null,blur:8,quality:4,pixelSize:1,resolution:p.settings.RESOLUTION},t),this.bloomScale=t.bloomScale,this.brightness=t.brightness;var e=t.kernels,r=t.blur,i=t.quality,n=t.pixelSize,o=t.resolution;this._extractFilter=new m(t.threshold),this._extractFilter.resolution=o,this._blurFilter=e?new d(e):new d(r,i),this.pixelSize=n,this.resolution=o}a&&(t.__proto__=a);var e={resolution:{configurable:!0},threshold:{configurable:!0},kernels:{configurable:!0},blur:{configurable:!0},quality:{configurable:!0},pixelSize:{configurable:!0}};return((t.prototype=Object.create(a&&a.prototype)).constructor=t).prototype.apply=function(t,e,r,i,n){var o=t.getFilterTexture();this._extractFilter.apply(t,e,o,!0,n);var a=t.getFilterTexture();this._blurFilter.apply(t,o,a,!0,n),this.uniforms.bloomScale=this.bloomScale,this.uniforms.brightness=this.brightness,this.uniforms.bloomTexture=a,t.applyFilter(this,e,r,i),t.returnFilterTexture(a),t.returnFilterTexture(o)},e.resolution.get=function(){return this._resolution},e.resolution.set=function(t){this._resolution=t,this._extractFilter&&(this._extractFilter.resolution=t),this._blurFilter&&(this._blurFilter.resolution=t)},e.threshold.get=function(){return this._extractFilter.threshold},e.threshold.set=function(t){this._extractFilter.threshold=t},e.kernels.get=function(){return this._blurFilter.kernels},e.kernels.set=function(t){this._blurFilter.kernels=t},e.blur.get=function(){return this._blurFilter.blur},e.blur.set=function(t){this._blurFilter.blur=t},e.quality.get=function(){return this._blurFilter.quality},e.quality.set=function(t){this._blurFilter.quality=t},e.pixelSize.get=function(){return this._blurFilter.pixelSize},e.pixelSize.set=function(t){this._blurFilter.pixelSize=t},Object.defineProperties(t.prototype,e),t}(n.Filter),o=function(e){function t(t){void 0===t&&(t=8),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform float pixelSize;\nuniform sampler2D uSampler;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n return floor( coord / size ) * size;\n}\n\nvec2 getMod(vec2 coord, vec2 size)\n{\n return mod( coord , size) / size;\n}\n\nfloat character(float n, vec2 p)\n{\n p = floor(p*vec2(4.0, -4.0) + 2.5);\n\n if (clamp(p.x, 0.0, 4.0) == p.x)\n {\n if (clamp(p.y, 0.0, 4.0) == p.y)\n {\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\n }\n }\n return 0.0;\n}\n\nvoid main()\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n // get the rounded color..\n vec2 pixCoord = pixelate(coord, vec2(pixelSize));\n pixCoord = unmapCoord(pixCoord);\n\n vec4 color = texture2D(uSampler, pixCoord);\n\n // determine the character to use\n float gray = (color.r + color.g + color.b) / 3.0;\n\n float n = 65536.0; // .\n if (gray > 0.2) n = 65600.0; // :\n if (gray > 0.3) n = 332772.0; // *\n if (gray > 0.4) n = 15255086.0; // o\n if (gray > 0.5) n = 23385164.0; // &\n if (gray > 0.6) n = 15252014.0; // 8\n if (gray > 0.7) n = 13199452.0; // @\n if (gray > 0.8) n = 11512810.0; // #\n\n // get the mod..\n vec2 modd = getMod(coord, vec2(pixelSize));\n\n gl_FragColor = color * character( n, vec2(-1.0) + modd * 2.0);\n\n}\n"),this.size=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={size:{configurable:!0}};return r.size.get=function(){return this.uniforms.pixelSize},r.size.set=function(t){this.uniforms.pixelSize=t},Object.defineProperties(t.prototype,r),t}(n.Filter),a=function(e){function t(t){void 0===t&&(t={}),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float transformX;\nuniform float transformY;\nuniform vec3 lightColor;\nuniform float lightAlpha;\nuniform vec3 shadowColor;\nuniform float shadowAlpha;\n\nvoid main(void) {\n vec2 transform = vec2(1.0 / filterArea) * vec2(transformX, transformY);\n vec4 color = texture2D(uSampler, vTextureCoord);\n float light = texture2D(uSampler, vTextureCoord - transform).a;\n float shadow = texture2D(uSampler, vTextureCoord + transform).a;\n\n color.rgb = mix(color.rgb, lightColor, clamp((color.a - light) * lightAlpha, 0.0, 1.0));\n color.rgb = mix(color.rgb, shadowColor, clamp((color.a - shadow) * shadowAlpha, 0.0, 1.0));\n gl_FragColor = vec4(color.rgb * color.a, color.a);\n}\n"),this.uniforms.lightColor=new Float32Array(3),this.uniforms.shadowColor=new Float32Array(3),t=Object.assign({rotation:45,thickness:2,lightColor:16777215,lightAlpha:.7,shadowColor:0,shadowAlpha:.7},t),this.rotation=t.rotation,this.thickness=t.thickness,this.lightColor=t.lightColor,this.lightAlpha=t.lightAlpha,this.shadowColor=t.shadowColor,this.shadowAlpha=t.shadowAlpha}e&&(t.__proto__=e);var r={rotation:{configurable:!0},thickness:{configurable:!0},lightColor:{configurable:!0},lightAlpha:{configurable:!0},shadowColor:{configurable:!0},shadowAlpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype._updateTransform=function(){this.uniforms.transformX=this._thickness*Math.cos(this._angle),this.uniforms.transformY=this._thickness*Math.sin(this._angle)},r.rotation.get=function(){return this._angle/f.DEG_TO_RAD},r.rotation.set=function(t){this._angle=t*f.DEG_TO_RAD,this._updateTransform()},r.thickness.get=function(){return this._thickness},r.thickness.set=function(t){this._thickness=t,this._updateTransform()},r.lightColor.get=function(){return l.rgb2hex(this.uniforms.lightColor)},r.lightColor.set=function(t){l.hex2rgb(t,this.uniforms.lightColor)},r.lightAlpha.get=function(){return this.uniforms.lightAlpha},r.lightAlpha.set=function(t){this.uniforms.lightAlpha=t},r.shadowColor.get=function(){return l.rgb2hex(this.uniforms.shadowColor)},r.shadowColor.set=function(t){l.hex2rgb(t,this.uniforms.shadowColor)},r.shadowAlpha.get=function(){return this.uniforms.shadowAlpha},r.shadowAlpha.set=function(t){this.uniforms.shadowAlpha=t},Object.defineProperties(t.prototype,r),t}(n.Filter),g=function(a){function t(t,e,r,i){var n,o;void 0===t&&(t=2),void 0===e&&(e=4),void 0===r&&(r=p.settings.RESOLUTION),void 0===i&&(i=5),a.call(this),"number"==typeof t?o=n=t:t instanceof f.Point?(n=t.x,o=t.y):Array.isArray(t)&&(n=t[0],o=t[1]),this.blurXFilter=new h.BlurFilterPass(!0,n,e,r,i),this.blurYFilter=new h.BlurFilterPass(!1,o,e,r,i),this.blurYFilter.blendMode=s.BLEND_MODES.SCREEN,this.defaultFilter=new u.AlphaFilter}a&&(t.__proto__=a);var e={blur:{configurable:!0},blurX:{configurable:!0},blurY:{configurable:!0}};return((t.prototype=Object.create(a&&a.prototype)).constructor=t).prototype.apply=function(t,e,r){var i=t.getFilterTexture(!0);this.defaultFilter.apply(t,e,r),this.blurXFilter.apply(t,e,i),this.blurYFilter.apply(t,i,r),t.returnFilterTexture(i)},e.blur.get=function(){return this.blurXFilter.blur},e.blur.set=function(t){this.blurXFilter.blur=this.blurYFilter.blur=t},e.blurX.get=function(){return this.blurXFilter.blur},e.blurX.set=function(t){this.blurXFilter.blur=t},e.blurY.get=function(){return this.blurYFilter.blur},e.blurY.set=function(t){this.blurYFilter.blur=t},Object.defineProperties(t.prototype,e),t}(n.Filter),v=function(i){function t(t,e,r){i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","uniform float radius;\nuniform float strength;\nuniform vec2 center;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nvoid main()\n{\n vec2 coord = vTextureCoord * filterArea.xy;\n coord -= center * dimensions.xy;\n float distance = length(coord);\n if (distance < radius) {\n float percent = distance / radius;\n if (strength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);\n }\n }\n coord += center * dimensions.xy;\n coord /= filterArea.xy;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n gl_FragColor = color;\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.center=t||[.5,.5],this.radius="number"==typeof e?e:100,this.strength="number"==typeof r?r:1}i&&(t.__proto__=i);var e={radius:{configurable:!0},strength:{configurable:!0},center:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,t.applyFilter(this,e,r,i)},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},e.strength.get=function(){return this.uniforms.strength},e.strength.set=function(t){this.uniforms.strength=t},e.center.get=function(){return this.uniforms.center},e.center.set=function(t){this.uniforms.center=t},Object.defineProperties(t.prototype,e),t}(n.Filter),_=function(i){function t(t,e,r){void 0===e&&(e=!1),void 0===r&&(r=1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform sampler2D colorMap;\nuniform float _mix;\nuniform float _size;\nuniform float _sliceSize;\nuniform float _slicePixelSize;\nuniform float _sliceInnerSize;\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord.xy);\n\n vec4 adjusted;\n if (color.a > 0.0) {\n color.rgb /= color.a;\n float innerWidth = _size - 1.0;\n float zSlice0 = min(floor(color.b * innerWidth), innerWidth);\n float zSlice1 = min(zSlice0 + 1.0, innerWidth);\n float xOffset = _slicePixelSize * 0.5 + color.r * _sliceInnerSize;\n float s0 = xOffset + (zSlice0 * _sliceSize);\n float s1 = xOffset + (zSlice1 * _sliceSize);\n float yOffset = _sliceSize * 0.5 + color.g * (1.0 - _sliceSize);\n vec4 slice0Color = texture2D(colorMap, vec2(s0,yOffset));\n vec4 slice1Color = texture2D(colorMap, vec2(s1,yOffset));\n float zOffset = fract(color.b * innerWidth);\n adjusted = mix(slice0Color, slice1Color, zOffset);\n\n color.rgb *= color.a;\n }\n gl_FragColor = vec4(mix(color, adjusted, _mix).rgb, color.a);\n\n}"),this._size=0,this._sliceSize=0,this._slicePixelSize=0,this._sliceInnerSize=0,this._scaleMode=null,this._nearest=!1,this.nearest=e,this.mix=r,this.colorMap=t}i&&(t.__proto__=i);var e={colorSize:{configurable:!0},colorMap:{configurable:!0},nearest:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms._mix=this.mix,t.applyFilter(this,e,r,i)},e.colorSize.get=function(){return this._size},e.colorMap.get=function(){return this._colorMap},e.colorMap.set=function(t){t instanceof n.Texture||(t=n.Texture.from(t)),t&&t.baseTexture&&(t.baseTexture.scaleMode=this._scaleMode,t.baseTexture.mipmap=!1,this._size=t.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms._size=this._size,this.uniforms._sliceSize=this._sliceSize,this.uniforms._slicePixelSize=this._slicePixelSize,this.uniforms._sliceInnerSize=this._sliceInnerSize,this.uniforms.colorMap=t),this._colorMap=t},e.nearest.get=function(){return this._nearest},e.nearest.set=function(t){this._nearest=t,this._scaleMode=t?s.SCALE_MODES.NEAREST:s.SCALE_MODES.LINEAR;var e=this._colorMap;e&&e.baseTexture&&(e.baseTexture._glTextures={},e.baseTexture.scaleMode=this._scaleMode,e.baseTexture.mipmap=!1,e._updateID++,e.baseTexture.emit("update",e.baseTexture))},t.prototype.updateColorMap=function(){var t=this._colorMap;t&&t.baseTexture&&(t._updateID++,t.baseTexture.emit("update",t.baseTexture),this.colorMap=t)},t.prototype.destroy=function(t){this._colorMap&&this._colorMap.destroy(t),i.prototype.destroy.call(this)},Object.defineProperties(t.prototype,e),t}(n.Filter),y=function(i){function t(t,e,r){void 0===t&&(t=16711680),void 0===e&&(e=0),void 0===r&&(r=.4),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec3 originalColor;\nuniform vec3 newColor;\nuniform float epsilon;\nvoid main(void) {\n vec4 currentColor = texture2D(uSampler, vTextureCoord);\n vec3 colorDiff = originalColor - (currentColor.rgb / max(currentColor.a, 0.0000000001));\n float colorDistance = length(colorDiff);\n float doReplace = step(colorDistance, epsilon);\n gl_FragColor = vec4(mix(currentColor.rgb, (newColor + colorDiff) * currentColor.a, doReplace), currentColor.a);\n}\n"),this.uniforms.originalColor=new Float32Array(3),this.uniforms.newColor=new Float32Array(3),this.originalColor=t,this.newColor=e,this.epsilon=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={originalColor:{configurable:!0},newColor:{configurable:!0},epsilon:{configurable:!0}};return e.originalColor.set=function(t){var e=this.uniforms.originalColor;"number"==typeof t?(l.hex2rgb(t,e),this._originalColor=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],this._originalColor=l.rgb2hex(e))},e.originalColor.get=function(){return this._originalColor},e.newColor.set=function(t){var e=this.uniforms.newColor;"number"==typeof t?(l.hex2rgb(t,e),this._newColor=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],this._newColor=l.rgb2hex(e))},e.newColor.get=function(){return this._newColor},e.epsilon.set=function(t){this.uniforms.epsilon=t},e.epsilon.get=function(){return this.uniforms.epsilon},Object.defineProperties(t.prototype,e),t}(n.Filter),b=function(i){function t(t,e,r){void 0===e&&(e=200),void 0===r&&(r=200),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying mediump vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec2 texelSize;\nuniform float matrix[9];\n\nvoid main(void)\n{\n vec4 c11 = texture2D(uSampler, vTextureCoord - texelSize); // top left\n vec4 c12 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y - texelSize.y)); // top center\n vec4 c13 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y - texelSize.y)); // top right\n\n vec4 c21 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y)); // mid left\n vec4 c22 = texture2D(uSampler, vTextureCoord); // mid center\n vec4 c23 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y)); // mid right\n\n vec4 c31 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y + texelSize.y)); // bottom left\n vec4 c32 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y + texelSize.y)); // bottom center\n vec4 c33 = texture2D(uSampler, vTextureCoord + texelSize); // bottom right\n\n gl_FragColor =\n c11 * matrix[0] + c12 * matrix[1] + c13 * matrix[2] +\n c21 * matrix[3] + c22 * matrix[4] + c23 * matrix[5] +\n c31 * matrix[6] + c32 * matrix[7] + c33 * matrix[8];\n\n gl_FragColor.a = c22.a;\n}\n"),this.uniforms.texelSize=new Float32Array(2),this.uniforms.matrix=new Float32Array(9),void 0!==t&&(this.matrix=t),this.width=e,this.height=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={matrix:{configurable:!0},width:{configurable:!0},height:{configurable:!0}};return e.matrix.get=function(){return this.uniforms.matrix},e.matrix.set=function(t){var r=this;t.forEach(function(t,e){return r.uniforms.matrix[e]=t})},e.width.get=function(){return 1/this.uniforms.texelSize[0]},e.width.set=function(t){this.uniforms.texelSize[0]=1/t},e.height.get=function(){return 1/this.uniforms.texelSize[1]},e.height.set=function(t){this.uniforms.texelSize[1]=1/t},Object.defineProperties(t.prototype,e),t}(n.Filter),x=function(t){function e(){t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);\n\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n\n if (lum < 1.00)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.75)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.50)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.3)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n}\n")}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e}(n.Filter),w=function(e){function t(t){e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec2 dimensions;\n\nconst float SQRT_2 = 1.414213;\n\nconst float light = 1.0;\n\nuniform float curvature;\nuniform float lineWidth;\nuniform float lineContrast;\nuniform bool verticalLine;\nuniform float noise;\nuniform float noiseSize;\n\nuniform float vignetting;\nuniform float vignettingAlpha;\nuniform float vignettingBlur;\n\nuniform float seed;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n vec2 dir = vec2(coord - vec2(0.5, 0.5));\n\n float _c = curvature > 0. ? curvature : 1.;\n float k = curvature > 0. ?(length(dir * dir) * 0.25 * _c * _c + 0.935 * _c) : 1.;\n vec2 uv = dir * k;\n\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 rgb = gl_FragColor.rgb;\n\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n rgb += _noise * noise;\n }\n\n if (lineWidth > 0.0) {\n float v = (verticalLine ? uv.x * dimensions.x : uv.y * dimensions.y) * min(1.0, 2.0 / lineWidth ) / _c;\n float j = 1. + cos(v * 1.2 - time) * 0.5 * lineContrast;\n rgb *= j;\n float segment = verticalLine ? mod((dir.x + .5) * dimensions.x, 4.) : mod((dir.y + .5) * dimensions.y, 4.);\n rgb *= 0.99 + ceil(segment) * 0.015;\n }\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n gl_FragColor.rgb = rgb;\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.time=0,this.seed=0,Object.assign(this,{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,seed:0,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0},t)}e&&(t.__proto__=e);var r={curvature:{configurable:!0},lineWidth:{configurable:!0},lineContrast:{configurable:!0},verticalLine:{configurable:!0},noise:{configurable:!0},noiseSize:{configurable:!0},vignetting:{configurable:!0},vignettingAlpha:{configurable:!0},vignettingBlur:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.seed=this.seed,this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},r.curvature.set=function(t){this.uniforms.curvature=t},r.curvature.get=function(){return this.uniforms.curvature},r.lineWidth.set=function(t){this.uniforms.lineWidth=t},r.lineWidth.get=function(){return this.uniforms.lineWidth},r.lineContrast.set=function(t){this.uniforms.lineContrast=t},r.lineContrast.get=function(){return this.uniforms.lineContrast},r.verticalLine.set=function(t){this.uniforms.verticalLine=t},r.verticalLine.get=function(){return this.uniforms.verticalLine},r.noise.set=function(t){this.uniforms.noise=t},r.noise.get=function(){return this.uniforms.noise},r.noiseSize.set=function(t){this.uniforms.noiseSize=t},r.noiseSize.get=function(){return this.uniforms.noiseSize},r.vignetting.set=function(t){this.uniforms.vignetting=t},r.vignetting.get=function(){return this.uniforms.vignetting},r.vignettingAlpha.set=function(t){this.uniforms.vignettingAlpha=t},r.vignettingAlpha.get=function(){return this.uniforms.vignettingAlpha},r.vignettingBlur.set=function(t){this.uniforms.vignettingBlur=t},r.vignettingBlur.get=function(){return this.uniforms.vignettingBlur},Object.defineProperties(t.prototype,r),t}(n.Filter),T=function(r){function t(t,e){void 0===t&&(t=1),void 0===e&&(e=5),r.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform vec4 filterArea;\nuniform sampler2D uSampler;\n\nuniform float angle;\nuniform float scale;\n\nfloat pattern()\n{\n float s = sin(angle), c = cos(angle);\n vec2 tex = vTextureCoord * filterArea.xy;\n vec2 point = vec2(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * scale;\n return (sin(point.x) * sin(point.y)) * 4.0;\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float average = (color.r + color.g + color.b) / 3.0;\n gl_FragColor = vec4(vec3(average * 10.0 - 5.0 + pattern()), color.a);\n}\n"),this.scale=t,this.angle=e}r&&(t.__proto__=r),(t.prototype=Object.create(r&&r.prototype)).constructor=t;var e={scale:{configurable:!0},angle:{configurable:!0}};return e.scale.get=function(){return this.uniforms.scale},e.scale.set=function(t){this.uniforms.scale=t},e.angle.get=function(){return this.uniforms.angle},e.angle.set=function(t){this.uniforms.angle=t},Object.defineProperties(t.prototype,e),t}(n.Filter),k=function(c){function t(t){t&&t.constructor!==Object&&(console.warn("DropShadowFilter now uses options instead of (rotation, distance, blur, color, alpha)"),t={rotation:t},void 0!==arguments[1]&&(t.distance=arguments[1]),void 0!==arguments[2]&&(t.blur=arguments[2]),void 0!==arguments[3]&&(t.color=arguments[3]),void 0!==arguments[4]&&(t.alpha=arguments[4])),t=Object.assign({rotation:45,distance:5,color:0,alpha:.5,shadowOnly:!1,kernels:null,blur:2,quality:3,pixelSize:1,resolution:p.settings.RESOLUTION},t),c.call(this);var e=t.kernels,r=t.blur,i=t.quality,n=t.pixelSize,o=t.resolution;this._tintFilter=new c("attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float alpha;\nuniform vec3 color;\n\nuniform vec2 shift;\nuniform vec4 inputSize;\n\nvoid main(void){\n vec4 sample = texture2D(uSampler, vTextureCoord - shift * inputSize.zw);\n\n // Un-premultiply alpha before applying the color\n if (sample.a > 0.0) {\n sample.rgb /= sample.a;\n }\n\n // Premultiply alpha again\n sample.rgb = color.rgb * sample.a;\n\n // alpha user alpha\n sample *= alpha;\n\n gl_FragColor = sample;\n}"),this._tintFilter.uniforms.color=new Float32Array(4),this._tintFilter.uniforms.shift=new f.Point,this._tintFilter.resolution=o,this._blurFilter=e?new d(e):new d(r,i),this.pixelSize=n,this.resolution=o;var a=t.shadowOnly,s=t.rotation,l=t.distance,u=t.alpha,h=t.color;this.shadowOnly=a,this.rotation=s,this.distance=l,this.alpha=u,this.color=h,this._updatePadding()}c&&(t.__proto__=c);var e={resolution:{configurable:!0},distance:{configurable:!0},rotation:{configurable:!0},alpha:{configurable:!0},color:{configurable:!0},kernels:{configurable:!0},blur:{configurable:!0},quality:{configurable:!0},pixelSize:{configurable:!0}};return((t.prototype=Object.create(c&&c.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n=t.getFilterTexture();this._tintFilter.apply(t,e,n,!0),this._blurFilter.apply(t,n,r,i),!0!==this.shadowOnly&&t.applyFilter(this,e,r,!1),t.returnFilterTexture(n)},t.prototype._updatePadding=function(){this.padding=this.distance+2*this.blur},t.prototype._updateShift=function(){this._tintFilter.uniforms.shift.set(this.distance*Math.cos(this.angle),this.distance*Math.sin(this.angle))},e.resolution.get=function(){return this._resolution},e.resolution.set=function(t){this._resolution=t,this._tintFilter&&(this._tintFilter.resolution=t),this._blurFilter&&(this._blurFilter.resolution=t)},e.distance.get=function(){return this._distance},e.distance.set=function(t){this._distance=t,this._updatePadding(),this._updateShift()},e.rotation.get=function(){return this.angle/f.DEG_TO_RAD},e.rotation.set=function(t){this.angle=t*f.DEG_TO_RAD,this._updateShift()},e.alpha.get=function(){return this._tintFilter.uniforms.alpha},e.alpha.set=function(t){this._tintFilter.uniforms.alpha=t},e.color.get=function(){return l.rgb2hex(this._tintFilter.uniforms.color)},e.color.set=function(t){l.hex2rgb(t,this._tintFilter.uniforms.color)},e.kernels.get=function(){return this._blurFilter.kernels},e.kernels.set=function(t){this._blurFilter.kernels=t},e.blur.get=function(){return this._blurFilter.blur},e.blur.set=function(t){this._blurFilter.blur=t,this._updatePadding()},e.quality.get=function(){return this._blurFilter.quality},e.quality.set=function(t){this._blurFilter.quality=t},e.pixelSize.get=function(){return this._blurFilter.pixelSize},e.pixelSize.set=function(t){this._blurFilter.pixelSize=t},Object.defineProperties(t.prototype,e),t}(n.Filter),S=function(e){function t(t){void 0===t&&(t=5),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float strength;\nuniform vec4 filterArea;\n\n\nvoid main(void)\n{\n\tvec2 onePixel = vec2(1.0 / filterArea);\n\n\tvec4 color;\n\n\tcolor.rgb = vec3(0.5);\n\n\tcolor -= texture2D(uSampler, vTextureCoord - onePixel) * strength;\n\tcolor += texture2D(uSampler, vTextureCoord + onePixel) * strength;\n\n\tcolor.rgb = vec3((color.r + color.g + color.b) / 3.0);\n\n\tfloat alpha = texture2D(uSampler, vTextureCoord).a;\n\n\tgl_FragColor = vec4(color.rgb * alpha, alpha);\n}\n"),this.strength=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={strength:{configurable:!0}};return r.strength.get=function(){return this.uniforms.strength},r.strength.set=function(t){this.uniforms.strength=t},Object.defineProperties(t.prototype,r),t}(n.Filter),P=function(e){function t(t){void 0===t&&(t={}),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","// precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\nuniform float aspect;\n\nuniform sampler2D displacementMap;\nuniform float offset;\nuniform float sinDir;\nuniform float cosDir;\nuniform int fillMode;\n\nuniform float seed;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nconst int TRANSPARENT = 0;\nconst int ORIGINAL = 1;\nconst int LOOP = 2;\nconst int CLAMP = 3;\nconst int MIRROR = 4;\n\nvoid main(void)\n{\n vec2 coord = (vTextureCoord * filterArea.xy) / dimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n return;\n }\n\n float cx = coord.x - 0.5;\n float cy = (coord.y - 0.5) * aspect;\n float ny = (-sinDir * cx + cosDir * cy) / aspect + 0.5;\n\n // displacementMap: repeat\n // ny = ny > 1.0 ? ny - 1.0 : (ny < 0.0 ? 1.0 + ny : ny);\n\n // displacementMap: mirror\n ny = ny > 1.0 ? 2.0 - ny : (ny < 0.0 ? -ny : ny);\n\n vec4 dc = texture2D(displacementMap, vec2(0.5, ny));\n\n float displacement = (dc.r - dc.g) * (offset / filterArea.x);\n\n coord = vTextureCoord + vec2(cosDir * displacement, sinDir * displacement * aspect);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, filterClamp.xy, filterClamp.zw);\n } else {\n if( coord.x > filterClamp.z ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x -= filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = filterClamp.z * 2.0 - coord.x;\n }\n } else if( coord.x < filterClamp.x ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x += filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x *= -filterClamp.z;\n }\n }\n\n if( coord.y > filterClamp.w ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y -= filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = filterClamp.w * 2.0 - coord.y;\n }\n } else if( coord.y < filterClamp.y ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y += filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y *= -filterClamp.w;\n }\n }\n }\n\n gl_FragColor.r = texture2D(uSampler, coord + red * (1.0 - seed * 0.4) / filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, coord + green * (1.0 - seed * 0.3) / filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, coord + blue * (1.0 - seed * 0.2) / filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, coord).a;\n}\n"),this.uniforms.dimensions=new Float32Array(2),t=Object.assign({slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:[0,0],green:[0,0],blue:[0,0],minSize:8,sampleSize:512},t),this.direction=t.direction,this.red=t.red,this.green=t.green,this.blue=t.blue,this.offset=t.offset,this.fillMode=t.fillMode,this.average=t.average,this.seed=t.seed,this.minSize=t.minSize,this.sampleSize=t.sampleSize,this._canvas=document.createElement("canvas"),this._canvas.width=4,this._canvas.height=this.sampleSize,this.texture=n.Texture.from(this._canvas,{scaleMode:s.SCALE_MODES.NEAREST}),this._slices=0,this.slices=t.slices}e&&(t.__proto__=e);var r={sizes:{configurable:!0},offsets:{configurable:!0},slices:{configurable:!0},direction:{configurable:!0},red:{configurable:!0},green:{configurable:!0},blue:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n=e.filterFrame.width,o=e.filterFrame.height;this.uniforms.dimensions[0]=n,this.uniforms.dimensions[1]=o,this.uniforms.aspect=o/n,this.uniforms.seed=this.seed,this.uniforms.offset=this.offset,this.uniforms.fillMode=this.fillMode,t.applyFilter(this,e,r,i)},t.prototype._randomizeSizes=function(){var t=this._sizes,e=this._slices-1,r=this.sampleSize,i=Math.min(this.minSize/r,.9/this._slices);if(this.average){for(var n=this._slices,o=1,a=0;a>0,i=t[e];t[e]=t[r],t[r]=i}},t.prototype._randomizeOffsets=function(){for(var t=0;t>0,e,1+a>>0),n+=a}r.baseTexture.update(),this.uniforms.displacementMap=r},r.sizes.set=function(t){for(var e=Math.min(this._slices,t.length),r=0;rthis._maxColors)throw"Length of replacements ("+i+") exceeds the maximum colors length ("+this._maxColors+")";e[3*i]=-1;for(var n=0;n 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n return vec3((dst.x <= 0.5) ? (2.0 * src.x * dst.x) : (1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)),\n (dst.y <= 0.5) ? (2.0 * src.y * dst.y) : (1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)),\n (dst.z <= 0.5) ? (2.0 * src.z * dst.z) : (1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)));\n}\n\n\nvoid main()\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 color = gl_FragColor.rgb;\n\n if (sepia > 0.0)\n {\n float gray = (color.x + color.y + color.z) / 3.0;\n vec3 grayscale = vec3(gray);\n\n color = Overlay(SEPIA_RGB, grayscale);\n\n color = grayscale + sepia * (color - grayscale);\n }\n\n vec2 coord = vTextureCoord * filterArea.xy / dimensions.xy;\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n vec2 dir = vec2(vec2(0.5, 0.5) - coord);\n dir.y *= dimensions.y / dimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n color.rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n if (scratchDensity > seed && scratch != 0.0)\n {\n float phase = seed * 256.0;\n float s = mod(floor(phase), 2.0);\n float dist = 1.0 / scratchDensity;\n float d = distance(coord, vec2(seed * dist, abs(s - seed * dist)));\n if (d < seed * 0.6 + 0.4)\n {\n highp float period = scratchDensity * 10.0;\n\n float xx = coord.x * period + phase;\n float aa = abs(mod(xx, 0.5) * 4.0);\n float bb = mod(floor(xx / 0.5), 2.0);\n float yy = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n float kk = 2.0 * period;\n float dw = scratchWidth / dimensions.x * (0.75 + seed);\n float dh = dw * kk;\n\n float tine = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n float _sign = sign(scratch);\n\n tine = s * tine / period + scratch + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color.rgb *= tine;\n }\n }\n }\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n // vec2 d = pixelCoord * noiseSize * vec2(1024.0 + seed * 512.0, 1024.0 - seed * 512.0);\n // float _noise = snoise(d) * 0.5;\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n color += _noise * noise;\n }\n\n gl_FragColor.rgb = color;\n}\n"),this.uniforms.dimensions=new Float32Array(2),"number"==typeof t?(this.seed=t,t=null):this.seed=e,Object.assign(this,{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3},t)}r&&(t.__proto__=r);var e={sepia:{configurable:!0},noise:{configurable:!0},noiseSize:{configurable:!0},scratch:{configurable:!0},scratchDensity:{configurable:!0},scratchWidth:{configurable:!0},vignetting:{configurable:!0},vignettingAlpha:{configurable:!0},vignettingBlur:{configurable:!0}};return((t.prototype=Object.create(r&&r.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.seed=this.seed,t.applyFilter(this,e,r,i)},e.sepia.set=function(t){this.uniforms.sepia=t},e.sepia.get=function(){return this.uniforms.sepia},e.noise.set=function(t){this.uniforms.noise=t},e.noise.get=function(){return this.uniforms.noise},e.noiseSize.set=function(t){this.uniforms.noiseSize=t},e.noiseSize.get=function(){return this.uniforms.noiseSize},e.scratch.set=function(t){this.uniforms.scratch=t},e.scratch.get=function(){return this.uniforms.scratch},e.scratchDensity.set=function(t){this.uniforms.scratchDensity=t},e.scratchDensity.get=function(){return this.uniforms.scratchDensity},e.scratchWidth.set=function(t){this.uniforms.scratchWidth=t},e.scratchWidth.get=function(){return this.uniforms.scratchWidth},e.vignetting.set=function(t){this.uniforms.vignetting=t},e.vignetting.get=function(){return this.uniforms.vignetting},e.vignettingAlpha.set=function(t){this.uniforms.vignettingAlpha=t},e.vignettingAlpha.get=function(){return this.uniforms.vignettingAlpha},e.vignettingBlur.set=function(t){this.uniforms.vignettingBlur=t},e.vignettingBlur.get=function(){return this.uniforms.vignettingBlur},Object.defineProperties(t.prototype,e),t}(n.Filter),M=function(o){function a(t,e,r){void 0===t&&(t=1),void 0===e&&(e=0),void 0===r&&(r=.1);var i=Math.max(r*a.MAX_SAMPLES,a.MIN_SAMPLES),n=(2*Math.PI/i).toFixed(7);o.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 thickness;\nuniform vec4 outlineColor;\nuniform vec4 filterClamp;\n\nconst float DOUBLE_PI = 3.14159265358979323846264 * 2.;\n\nvoid main(void) {\n vec4 ownColor = texture2D(uSampler, vTextureCoord);\n vec4 curColor;\n float maxAlpha = 0.;\n vec2 displaced;\n for (float angle = 0.; angle <= DOUBLE_PI; angle += ${angleStep}) {\n displaced.x = vTextureCoord.x + thickness.x * cos(angle);\n displaced.y = vTextureCoord.y + thickness.y * sin(angle);\n curColor = texture2D(uSampler, clamp(displaced, filterClamp.xy, filterClamp.zw));\n maxAlpha = max(maxAlpha, curColor.a);\n }\n float resultAlpha = max(maxAlpha, ownColor.a);\n gl_FragColor = vec4((ownColor.rgb + outlineColor.rgb * (1. - ownColor.a)) * resultAlpha, resultAlpha);\n}\n".replace(/\$\{angleStep\}/,n)),this.uniforms.thickness=new Float32Array([0,0]),this.thickness=t,this.uniforms.outlineColor=new Float32Array([0,0,0,1]),this.color=e,this.quality=r}o&&(a.__proto__=o);var t={color:{configurable:!0}};return((a.prototype=Object.create(o&&o.prototype)).constructor=a).prototype.apply=function(t,e,r,i){this.uniforms.thickness[0]=this.thickness/e._frame.width,this.uniforms.thickness[1]=this.thickness/e._frame.height,t.applyFilter(this,e,r,i)},t.color.get=function(){return l.rgb2hex(this.uniforms.outlineColor)},t.color.set=function(t){l.hex2rgb(t,this.uniforms.outlineColor)},Object.defineProperties(a.prototype,t),a}(n.Filter);M.MIN_SAMPLES=1,M.MAX_SAMPLES=100;var D=function(e){function t(t){void 0===t&&(t=10),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform vec2 size;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n\treturn floor( coord / size ) * size;\n}\n\nvoid main(void)\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = pixelate(coord, size);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord);\n}\n"),this.size=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={size:{configurable:!0}};return r.size.get=function(){return this.uniforms.size},r.size.set=function(t){"number"==typeof t&&(t=[t,t]),this.uniforms.size=t},Object.defineProperties(t.prototype,r),t}(n.Filter),z=function(n){function t(t,e,r,i){void 0===t&&(t=0),void 0===e&&(e=[0,0]),void 0===r&&(r=5),void 0===i&&(i=-1),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float uRadian;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform int uKernelSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\nvoid main(void)\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n gl_FragColor = color;\n return;\n }\n\n float aspect = filterArea.y / filterArea.x;\n vec2 center = uCenter.xy / filterArea.xy;\n float gradient = uRadius / filterArea.x * 0.3;\n float radius = uRadius / filterArea.x - gradient * 0.5;\n int k = uKernelSize - 1;\n\n vec2 coord = vTextureCoord;\n vec2 dir = vec2(center - coord);\n float dist = length(vec2(dir.x, dir.y * aspect));\n\n float radianStep = uRadian;\n if (radius >= 0.0 && dist > radius) {\n float delta = dist - radius;\n float gap = gradient;\n float scale = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n gl_FragColor = color;\n return;\n }\n radianStep *= scale;\n }\n radianStep /= float(k);\n\n float s = sin(radianStep);\n float c = cos(radianStep);\n mat2 rotationMatrix = mat2(vec2(c, -s), vec2(s, c));\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n\n vec4 sample = texture2D(uSampler, coord);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample;\n }\n\n gl_FragColor = color / float(uKernelSize);\n}\n"),this._angle=0,this.angle=t,this.center=e,this.kernelSize=r,this.radius=i}n&&(t.__proto__=n);var e={angle:{configurable:!0},center:{configurable:!0},radius:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.uKernelSize=0!==this._angle?this.kernelSize:0,t.applyFilter(this,e,r,i)},e.angle.set=function(t){this._angle=t,this.uniforms.uRadian=t*Math.PI/180},e.angle.get=function(){return this._angle},e.center.get=function(){return this.uniforms.uCenter},e.center.set=function(t){this.uniforms.uCenter=t},e.radius.get=function(){return this.uniforms.uRadius},e.radius.set=function(t){(t<0||t===1/0)&&(t=-1),this.uniforms.uRadius=t},Object.defineProperties(t.prototype,e),t}(n.Filter),R=function(e){function t(t){e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nuniform bool mirror;\nuniform float boundary;\nuniform vec2 amplitude;\nuniform vec2 waveLength;\nuniform vec2 alpha;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n if (coord.y < boundary) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n float k = (coord.y - boundary) / (1. - boundary + 0.0001);\n float areaY = boundary * dimensions.y / filterArea.y;\n float v = areaY + areaY - vTextureCoord.y;\n float y = mirror ? v : vTextureCoord.y;\n\n float _amplitude = ((amplitude.y - amplitude.x) * k + amplitude.x ) / filterArea.x;\n float _waveLength = ((waveLength.y - waveLength.x) * k + waveLength.x) / filterArea.y;\n float _alpha = (alpha.y - alpha.x) * k + alpha.x;\n\n float x = vTextureCoord.x + cos(v * 6.28 / _waveLength - time) * _amplitude;\n x = clamp(x, filterClamp.x, filterClamp.z);\n\n vec4 color = texture2D(uSampler, vec2(x, y));\n\n gl_FragColor = color * _alpha;\n}\n"),this.uniforms.amplitude=new Float32Array(2),this.uniforms.waveLength=new Float32Array(2),this.uniforms.alpha=new Float32Array(2),this.uniforms.dimensions=new Float32Array(2),Object.assign(this,{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0},t)}e&&(t.__proto__=e);var r={mirror:{configurable:!0},boundary:{configurable:!0},amplitude:{configurable:!0},waveLength:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},r.mirror.set=function(t){this.uniforms.mirror=t},r.mirror.get=function(){return this.uniforms.mirror},r.boundary.set=function(t){this.uniforms.boundary=t},r.boundary.get=function(){return this.uniforms.boundary},r.amplitude.set=function(t){this.uniforms.amplitude[0]=t[0],this.uniforms.amplitude[1]=t[1]},r.amplitude.get=function(){return this.uniforms.amplitude},r.waveLength.set=function(t){this.uniforms.waveLength[0]=t[0],this.uniforms.waveLength[1]=t[1]},r.waveLength.get=function(){return this.uniforms.waveLength},r.alpha.set=function(t){this.uniforms.alpha[0]=t[0],this.uniforms.alpha[1]=t[1]},r.alpha.get=function(){return this.uniforms.alpha},Object.defineProperties(t.prototype,r),t}(n.Filter),F=function(i){function t(t,e,r){void 0===t&&(t=[-10,0]),void 0===e&&(e=[0,10]),void 0===r&&(r=[0,0]),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nvoid main(void)\n{\n gl_FragColor.r = texture2D(uSampler, vTextureCoord + red/filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, vTextureCoord + green/filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, vTextureCoord + blue/filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, vTextureCoord).a;\n}\n"),this.red=t,this.green=e,this.blue=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={red:{configurable:!0},green:{configurable:!0},blue:{configurable:!0}};return e.red.get=function(){return this.uniforms.red},e.red.set=function(t){this.uniforms.red=t},e.green.get=function(){return this.uniforms.green},e.green.set=function(t){this.uniforms.green=t},e.blue.get=function(){return this.uniforms.blue},e.blue.set=function(t){this.uniforms.blue=t},Object.defineProperties(t.prototype,e),t}(n.Filter),j=function(i){function t(t,e,r){void 0===t&&(t=[0,0]),void 0===e&&(e={}),void 0===r&&(r=0),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\n\nuniform vec2 center;\n\nuniform float amplitude;\nuniform float wavelength;\n// uniform float power;\nuniform float brightness;\nuniform float speed;\nuniform float radius;\n\nuniform float time;\n\nconst float PI = 3.14159;\n\nvoid main()\n{\n float halfWavelength = wavelength * 0.5 / filterArea.x;\n float maxRadius = radius / filterArea.x;\n float currentRadius = time * speed / filterArea.x;\n\n float fade = 1.0;\n\n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n\n vec2 dir = vec2(vTextureCoord - center / filterArea.xy);\n dir.y *= filterArea.y / filterArea.x;\n float dist = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n vec2 diffUV = normalize(dir);\n\n float diff = (dist - currentRadius) / halfWavelength;\n\n float p = 1.0 - pow(abs(diff), 2.0);\n\n // float powDiff = diff * pow(p, 2.0) * ( amplitude * fade );\n float powDiff = 1.25 * sin(diff * PI) * p * ( amplitude * fade );\n\n vec2 offset = diffUV * powDiff / filterArea.xy;\n\n // Do clamp :\n vec2 coord = vTextureCoord + offset;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n // No clamp :\n // gl_FragColor = texture2D(uSampler, vTextureCoord + offset);\n\n color.rgb *= 1.0 + (brightness - 1.0) * p * fade;\n\n gl_FragColor = color;\n}\n"),this.center=t,Array.isArray(e)&&(console.warn("Deprecated Warning: ShockwaveFilter params Array has been changed to options Object."),e={}),e=Object.assign({amplitude:30,wavelength:160,brightness:1,speed:500,radius:-1},e),this.amplitude=e.amplitude,this.wavelength=e.wavelength,this.brightness=e.brightness,this.speed=e.speed,this.radius=e.radius,this.time=r}i&&(t.__proto__=i);var e={center:{configurable:!0},amplitude:{configurable:!0},wavelength:{configurable:!0},brightness:{configurable:!0},speed:{configurable:!0},radius:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},e.center.get=function(){return this.uniforms.center},e.center.set=function(t){this.uniforms.center=t},e.amplitude.get=function(){return this.uniforms.amplitude},e.amplitude.set=function(t){this.uniforms.amplitude=t},e.wavelength.get=function(){return this.uniforms.wavelength},e.wavelength.set=function(t){this.uniforms.wavelength=t},e.brightness.get=function(){return this.uniforms.brightness},e.brightness.set=function(t){this.uniforms.brightness=t},e.speed.get=function(){return this.uniforms.speed},e.speed.set=function(t){this.uniforms.speed=t},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},Object.defineProperties(t.prototype,e),t}(n.Filter),L=function(i){function t(t,e,r){void 0===e&&(e=0),void 0===r&&(r=1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform sampler2D uLightmap;\nuniform vec4 filterArea;\nuniform vec2 dimensions;\nuniform vec4 ambientColor;\nvoid main() {\n vec4 diffuseColor = texture2D(uSampler, vTextureCoord);\n vec2 lightCoord = (vTextureCoord * filterArea.xy) / dimensions;\n vec4 light = texture2D(uLightmap, lightCoord);\n vec3 ambient = ambientColor.rgb * ambientColor.a;\n vec3 intensity = ambient + light.rgb;\n vec3 finalColor = diffuseColor.rgb * intensity;\n gl_FragColor = vec4(finalColor, diffuseColor.a);\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.uniforms.ambientColor=new Float32Array([0,0,0,r]),this.texture=t,this.color=e}i&&(t.__proto__=i);var e={texture:{configurable:!0},color:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,t.applyFilter(this,e,r,i)},e.texture.get=function(){return this.uniforms.uLightmap},e.texture.set=function(t){this.uniforms.uLightmap=t},e.color.set=function(t){var e=this.uniforms.ambientColor;"number"==typeof t?(l.hex2rgb(t,e),this._color=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],this._color=l.rgb2hex(e))},e.color.get=function(){return this._color},e.alpha.get=function(){return this.uniforms.ambientColor[3]},e.alpha.set=function(t){this.uniforms.ambientColor[3]=t},Object.defineProperties(t.prototype,e),t}(n.Filter),N=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=600),void 0===r&&(r=null),void 0===i&&(i=null),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float blur;\nuniform float gradientBlur;\nuniform vec2 start;\nuniform vec2 end;\nuniform vec2 delta;\nuniform vec2 texSize;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * texSize - start, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture2D(uSampler, vTextureCoord + delta / texSize * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n"),this.uniforms.blur=t,this.uniforms.gradientBlur=e,this.uniforms.start=r||new f.Point(0,window.innerHeight/2),this.uniforms.end=i||new f.Point(600,window.innerHeight/2),this.uniforms.delta=new f.Point(30,30),this.uniforms.texSize=new f.Point(window.innerWidth,window.innerHeight),this.updateDelta()}n&&(t.__proto__=n);var e={blur:{configurable:!0},gradientBlur:{configurable:!0},start:{configurable:!0},end:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.updateDelta=function(){this.uniforms.delta.x=0,this.uniforms.delta.y=0},e.blur.get=function(){return this.uniforms.blur},e.blur.set=function(t){this.uniforms.blur=t},e.gradientBlur.get=function(){return this.uniforms.gradientBlur},e.gradientBlur.set=function(t){this.uniforms.gradientBlur=t},e.start.get=function(){return this.uniforms.start},e.start.set=function(t){this.uniforms.start=t,this.updateDelta()},e.end.get=function(){return this.uniforms.end},e.end.set=function(t){this.uniforms.end=t,this.updateDelta()},Object.defineProperties(t.prototype,e),t}(n.Filter),B=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.updateDelta=function(){var t=this.uniforms.end.x-this.uniforms.start.x,e=this.uniforms.end.y-this.uniforms.start.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.x=t/r,this.uniforms.delta.y=e/r},e}(N),U=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.updateDelta=function(){var t=this.uniforms.end.x-this.uniforms.start.x,e=this.uniforms.end.y-this.uniforms.start.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.x=-e/r,this.uniforms.delta.y=t/r},e}(N),X=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=600),void 0===r&&(r=null),void 0===i&&(i=null),n.call(this),this.tiltShiftXFilter=new B(t,e,r,i),this.tiltShiftYFilter=new U(t,e,r,i)}n&&(t.__proto__=n);var e={blur:{configurable:!0},gradientBlur:{configurable:!0},start:{configurable:!0},end:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.apply=function(t,e,r){var i=t.getFilterTexture();this.tiltShiftXFilter.apply(t,e,i),this.tiltShiftYFilter.apply(t,i,r),t.returnFilterTexture(i)},e.blur.get=function(){return this.tiltShiftXFilter.blur},e.blur.set=function(t){this.tiltShiftXFilter.blur=this.tiltShiftYFilter.blur=t},e.gradientBlur.get=function(){return this.tiltShiftXFilter.gradientBlur},e.gradientBlur.set=function(t){this.tiltShiftXFilter.gradientBlur=this.tiltShiftYFilter.gradientBlur=t},e.start.get=function(){return this.tiltShiftXFilter.start},e.start.set=function(t){this.tiltShiftXFilter.start=this.tiltShiftYFilter.start=t},e.end.get=function(){return this.tiltShiftXFilter.end},e.end.set=function(t){this.tiltShiftXFilter.end=this.tiltShiftYFilter.end=t},Object.defineProperties(t.prototype,e),t}(n.Filter),H=function(i){function t(t,e,r){void 0===t&&(t=200),void 0===e&&(e=4),void 0===r&&(r=20),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 twist(vec2 coord)\n{\n coord -= offset;\n\n float dist = length(coord);\n\n if (dist < radius)\n {\n float ratioDist = (radius - dist) / radius;\n float angleMod = ratioDist * ratioDist * angle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n coord += offset;\n\n return coord;\n}\n\nvoid main(void)\n{\n\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = twist(coord);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord );\n\n}\n"),this.radius=t,this.angle=e,this.padding=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={offset:{configurable:!0},radius:{configurable:!0},angle:{configurable:!0}};return e.offset.get=function(){return this.uniforms.offset},e.offset.set=function(t){this.uniforms.offset=t},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},e.angle.get=function(){return this.uniforms.angle},e.angle.set=function(t){this.uniforms.angle=t},Object.defineProperties(t.prototype,e),t}(n.Filter),q=function(n){function t(t,e,r,i){void 0===t&&(t=.1),void 0===e&&(e=[0,0]),void 0===r&&(r=0),void 0===i&&(i=-1),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform vec2 uCenter;\nuniform float uStrength;\nuniform float uInnerRadius;\nuniform float uRadius;\n\nconst float MAX_KERNEL_SIZE = 32.0;\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand(vec2 co, float seed) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}\n\nvoid main() {\n\n float minGradient = uInnerRadius * 0.3;\n float innerRadius = (uInnerRadius + minGradient * 0.5) / filterArea.x;\n\n float gradient = uRadius * 0.3;\n float radius = (uRadius - gradient * 0.5) / filterArea.x;\n\n float countLimit = MAX_KERNEL_SIZE;\n\n vec2 dir = vec2(uCenter.xy / filterArea.xy - vTextureCoord);\n float dist = length(vec2(dir.x, dir.y * filterArea.y / filterArea.x));\n\n float strength = uStrength;\n\n float delta = 0.0;\n float gap;\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n if (delta > 0.0) {\n float normalCount = gap / filterArea.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n if (countLimit < 1.0)\n {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n float offset = rand(vTextureCoord, 0.0);\n\n float total = 0.0;\n vec4 color = vec4(0.0);\n\n dir *= strength;\n\n for (float t = 0.0; t < MAX_KERNEL_SIZE; t++) {\n float percent = (t + offset) / MAX_KERNEL_SIZE;\n float weight = 4.0 * (percent - percent * percent);\n vec2 p = vTextureCoord + dir * percent;\n vec4 sample = texture2D(uSampler, p);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample * weight;\n total += weight;\n\n if (t > countLimit){\n break;\n }\n }\n\n color /= total;\n // switch back from pre-multiplied alpha\n // color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n"),this.center=e,this.strength=t,this.innerRadius=r,this.radius=i}n&&(t.__proto__=n),(t.prototype=Object.create(n&&n.prototype)).constructor=t;var e={center:{configurable:!0},strength:{configurable:!0},innerRadius:{configurable:!0},radius:{configurable:!0}};return e.center.get=function(){return this.uniforms.uCenter},e.center.set=function(t){this.uniforms.uCenter=t},e.strength.get=function(){return this.uniforms.uStrength},e.strength.set=function(t){this.uniforms.uStrength=t},e.innerRadius.get=function(){return this.uniforms.uInnerRadius},e.innerRadius.set=function(t){this.uniforms.uInnerRadius=t},e.radius.get=function(){return this.uniforms.uRadius},e.radius.set=function(t){(t<0||t===1/0)&&(t=-1),this.uniforms.uRadius=t},Object.defineProperties(t.prototype,e),t}(n.Filter);return t.AdjustmentFilter=e,t.AdvancedBloomFilter=i,t.AsciiFilter=o,t.BevelFilter=a,t.BloomFilter=g,t.BulgePinchFilter=v,t.CRTFilter=w,t.ColorMapFilter=_,t.ColorReplaceFilter=y,t.ConvolutionFilter=b,t.CrossHatchFilter=x,t.DotFilter=T,t.DropShadowFilter=k,t.EmbossFilter=S,t.GlitchFilter=P,t.GlowFilter=C,t.GodrayFilter=A,t.KawaseBlurFilter=d,t.MotionBlurFilter=E,t.MultiColorReplaceFilter=I,t.OldFilmFilter=O,t.OutlineFilter=M,t.PixelateFilter=D,t.RGBSplitFilter=F,t.RadialBlurFilter=z,t.ReflectionFilter=R,t.ShockwaveFilter=j,t.SimpleLightmapFilter=L,t.TiltShiftAxisFilter=N,t.TiltShiftFilter=X,t.TiltShiftXFilter=B,t.TiltShiftYFilter=U,t.TwistFilter=H,t.ZoomBlurFilter=q,t}({},PIXI,PIXI,PIXI,PIXI.utils,PIXI,PIXI.filters,PIXI.filters),pixi_projection,pixi_projection;Object.assign(PIXI.filters,__filters),this.PIXI=this.PIXI||{},function(p,v){"use strict";var e,f,d=function(){function f(t,e,r){this.value=t,this.time=e,this.next=null,this.isStepped=!1,this.ease=r?"function"==typeof r?r:p.ParticleUtils.generateEase(r):null}return f.createList=function(t){if("list"in t){var e=t.list,r=void 0,i=void 0,n=e[0],o=n.value,a=n.time;if(i=r=new f("string"==typeof o?p.ParticleUtils.hexToRGB(o):o,a,t.ease),2a.time;)n=a,a=t[++o];l=(l-n.time)/(a.time-n.time);var u=f.hexToRGB(n.value),h=f.hexToRGB(a.value),c={r:(h.r-u.r)*l+u.r,g:(h.g-u.g)*l+u.g,b:(h.b-u.b)*l+u.b};i.next=new d(c,s/e),i=i.next}return r};var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};function n(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var o=function(){function t(t){void 0===t&&(t=!1),this.current=null,this.next=null,this.isColor=!!t,this.interpolate=null,this.ease=null}return t.prototype.reset=function(t){this.current=t,this.next=t.next,this.next&&1<=this.next.time?this.interpolate=this.isColor?a:r:t.isStepped?this.interpolate=this.isColor?c:u:this.interpolate=this.isColor?l:s,this.ease=this.current.ease},t}();function r(t){return this.ease&&(t=this.ease(t)),(this.next.value-this.current.value)*t+this.current.value}function a(t){this.ease&&(t=this.ease(t));var e=this.current.value,r=this.next.value,i=(r.r-e.r)*t+e.r,n=(r.g-e.g)*t+e.g,o=(r.b-e.b)*t+e.b;return p.ParticleUtils.combineRGBComponents(i,n,o)}function s(t){for(this.ease&&(t=this.ease(t));t>this.next.time;)this.current=this.next,this.next=this.next.next;return t=(t-this.current.time)/(this.next.time-this.current.time),(this.next.value-this.current.value)*t+this.current.value}function l(t){for(this.ease&&(t=this.ease(t));t>this.next.time;)this.current=this.next,this.next=this.next.next;t=(t-this.current.time)/(this.next.time-this.current.time);var e=this.current.value,r=this.next.value,i=(r.r-e.r)*t+e.r,n=(r.g-e.g)*t+e.g,o=(r.b-e.b)*t+e.b;return p.ParticleUtils.combineRGBComponents(i,n,o)}function u(t){for(this.ease&&(t=this.ease(t));this.next&&t>this.next.time;)this.current=this.next,this.next=this.next.next;return this.current.value}function c(t){for(this.ease&&(t=this.ease(t));this.next&&t>this.next.time;)this.current=this.next,this.next=this.next.next;var e=this.current.value;return p.ParticleUtils.combineRGBComponents(e.r,e.g,e.b)}var m,g=function(r){function i(t){var e=r.call(this)||this;return e.emitter=t,e.anchor.x=e.anchor.y=.5,e.velocity=new v.Point,e.rotationSpeed=0,e.rotationAcceleration=0,e.maxLife=0,e.age=0,e.ease=null,e.extraData=null,e.alphaList=new o,e.speedList=new o,e.speedMultiplier=1,e.acceleration=new v.Point,e.maxSpeed=NaN,e.scaleList=new o,e.scaleMultiplier=1,e.colorList=new o(!0),e._doAlpha=!1,e._doScale=!1,e._doSpeed=!1,e._doAcceleration=!1,e._doColor=!1,e._doNormalMovement=!1,e._oneOverLife=0,e.next=null,e.prev=null,e.init=e.init,e.Particle_init=i.prototype.init,e.update=e.update,e.Particle_update=i.prototype.update,e.Sprite_destroy=r.prototype.destroy,e.Particle_destroy=i.prototype.destroy,e.applyArt=e.applyArt,e.kill=e.kill,e}return n(i,r),i.prototype.init=function(){this.age=0,this.velocity.x=this.speedList.current.value*this.speedMultiplier,this.velocity.y=0,p.ParticleUtils.rotatePoint(this.rotation,this.velocity),this.noRotation?this.rotation=0:this.rotation*=p.ParticleUtils.DEG_TO_RADS,this.rotationSpeed*=p.ParticleUtils.DEG_TO_RADS,this.rotationAcceleration*=p.ParticleUtils.DEG_TO_RADS,this.alpha=this.alphaList.current.value,this.scale.x=this.scale.y=this.scaleList.current.value,this._doAlpha=!!this.alphaList.current.next,this._doSpeed=!!this.speedList.current.next,this._doScale=!!this.scaleList.current.next,this._doColor=!!this.colorList.current.next,this._doAcceleration=0!==this.acceleration.x||0!==this.acceleration.y,this._doNormalMovement=this._doSpeed||0!==this.speedList.current.value||this._doAcceleration,this._oneOverLife=1/this.maxLife;var t=this.colorList.current.value;this.tint=p.ParticleUtils.combineRGBComponents(t.r,t.g,t.b),this.visible=!0},i.prototype.applyArt=function(t){this.texture=t||v.Texture.EMPTY},i.prototype.update=function(t){if(this.age+=t,this.age>=this.maxLife||this.age<0)return this.kill(),-1;var e=this.age*this._oneOverLife;if(this.ease&&(e=4==this.ease.length?this.ease(e,0,1,1):this.ease(e)),this._doAlpha&&(this.alpha=this.alphaList.interpolate(e)),this._doScale){var r=this.scaleList.interpolate(e)*this.scaleMultiplier;this.scale.x=this.scale.y=r}if(this._doNormalMovement){var i=void 0,n=void 0;if(this._doSpeed){var o=this.speedList.interpolate(e)*this.speedMultiplier;p.ParticleUtils.normalize(this.velocity),p.ParticleUtils.scaleBy(this.velocity,o),i=this.velocity.x*t,n=this.velocity.y*t}else if(this._doAcceleration){var a=this.velocity.x,s=this.velocity.y;if(this.velocity.x+=this.acceleration.x*t,this.velocity.y+=this.acceleration.y*t,this.maxSpeed){var l=p.ParticleUtils.length(this.velocity);l>this.maxSpeed&&p.ParticleUtils.scaleBy(this.velocity,this.maxSpeed/l)}i=(a+this.velocity.x)/2*t,n=(s+this.velocity.y)/2*t}else i=this.velocity.x*t,n=this.velocity.y*t;this.position.x+=i,this.position.y+=n}if(this._doColor&&(this.tint=this.colorList.interpolate(e)),0!==this.rotationAcceleration){var u=this.rotationSpeed+this.rotationAcceleration*t;this.rotation+=(this.rotationSpeed+u)/2*t,this.rotationSpeed=u}else 0!==this.rotationSpeed?this.rotation+=this.rotationSpeed*t:this.acceleration&&!this.noRotation&&(this.rotation=Math.atan2(this.velocity.y,this.velocity.x));return e},i.prototype.kill=function(){this.emitter.recycle(this)},i.prototype.destroy=function(){this.parent&&this.parent.removeChild(this),this.Sprite_destroy(),this.emitter=this.velocity=this.colorList=this.scaleList=this.alphaList=this.speedList=this.ease=this.next=this.prev=null},i.parseArt=function(t){var e;for(e=t.length;0<=e;--e)"string"==typeof t[e]&&(t[e]=h(t[e]));if(p.ParticleUtils.verbose)for(e=t.length-1;0=this.maxParticles)this._spawnTimer+=this._frequency;else{var l=void 0;if(l=this.minLifetime==this.maxLifetime?this.minLifetime:Math.random()*(this.maxLifetime-this.minLifetime)+this.minLifetime,-this._spawnTimer=this.spawnChance)){var p=void 0;if(this._poolFirst?(p=this._poolFirst,this._poolFirst=this._poolFirst.next,p.next=null):p=new this.particleConstructor(this),1this.duration&&(this.loop?this.elapsed=this.elapsed%this.duration:this.elapsed=this.duration-1e-6);var r=this.elapsed*this.framerate+1e-7|0;this.texture=this.textures[r]||v.Texture.EMPTY}return e},t.prototype.destroy=function(){this.Particle_destroy(),this.textures=null},t.parseArt=function(t){for(var e,r,i,n,o,a=[],s=0;se[s]&&(i=e[s]),oe[s+1]&&(n=e[s+1]),af[u]){l=c[s];c[s]=c[u],c[u]=l;var h=f[s];f[s]=f[u],f[u]=h}if(e[0]=c[0].x,e[1]=c[0].y,e[2]=c[1].x,e[3]=c[1].y,e[4]=c[2].x,e[5]=c[2].y,e[6]=c[3].x,e[7]=c[3].y,(c[3].x-c[2].x)*(c[1].y-c[2].y)-(c[1].x-c[2].x)*(c[3].y-c[2].y)<0)return e[4]=c[3].x,void(e[5]=c[3].y)}},t}();t.Surface=e}(pixi_projection||(pixi_projection={})),function(t){var k=new PIXI.Matrix,n=new PIXI.Rectangle,S=new PIXI.Point,e=function(e){function t(){var t=e.call(this)||this;return t.distortion=new PIXI.Point,t}return __extends(t,e),t.prototype.clear=function(){this.distortion.set(0,0)},t.prototype.apply=function(t,e){e=e||new PIXI.Point;var r=this.distortion,i=t.x*t.y;return e.x=t.x+r.x*i,e.y=t.y+r.y*i,e},t.prototype.applyInverse=function(t,e){e=e||new PIXI.Point;var r=t.x,i=t.y,n=this.distortion.x,o=this.distortion.y;if(0==n)e.x=r,e.y=i/(1+o*r);else if(0==o)e.y=i,e.x=r/(1+n*i);else{var a=.5*(i*n-r*o+1)/o,s=a*a+r/o;if(s<=1e-5)return void e.set(NaN,NaN);e.x=0 vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * samplerSize[0];\n \n if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n discard;\n }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\n%forloop%\ngl_FragColor = color * rColor;\n}",geometryClass:r.Batch3dGeometry,vertexSize:7},t),i=e.vertex,n=e.fragment,o=e.vertexSize,a=e.geometryClass;return function(r){function t(t){var e=r.call(this,t)||this;return e.defUniforms={worldTransform:new Float32Array([1,0,0,0,1,0,0,0,1]),distortion:new Float32Array([0,0])},e.shaderGenerator=new PIXI.BatchShaderGenerator(i,n),e.geometryClass=a,e.vertexSize=o,e}return __extends(t,r),t.prototype.getUniforms=function(t){var e=t.proj;this._shader;return null!==e.surface?e.uniforms:null!==e._activeProjection?e._activeProjection.uniforms:this.defUniforms},t.prototype.packGeometry=function(t,e,r,i,n,o){for(var a=n/this.vertexSize,s=(t.uvs,t.indices),l=t.vertexData,u=t._texture._frame,h=t.aTrans,c=Math.min(t.worldAlpha,1),f=c<1&&t._texture.baseTexture.premultiplyAlpha?d(t._tintRGB,c):t._tintRGB+(255*c<<24),p=0;p=o.TRANSFORM_STEP.PROJ?(i||this.displayObjectUpdateTransform(),this.proj.affine?this.transform.worldTransform.applyInverse(t,r):this.proj.world.applyInverse(t,r)):(this.parent?r=this.parent.worldTransform.applyInverse(t,r):r.copyFrom(t),n===o.TRANSFORM_STEP.NONE?r:this.transform.localTransform.applyInverse(r,r))},Object.defineProperty(t.prototype,"worldTransform",{get:function(){return this.proj.affine?this.transform.worldTransform:this.proj.world},enumerable:!0,configurable:!0}),t}(PIXI.Container);o.Container2d=t,o.container2dToLocal=t.prototype.toLocal}(pixi_projection||(pixi_projection={})),function(t){var l,e,v=PIXI.Point,r=[1,0,0,0,1,0,0,0,1];(e=l=t.AFFINE||(t.AFFINE={}))[e.NONE=0]="NONE",e[e.FREE=1]="FREE",e[e.AXIS_X=2]="AXIS_X",e[e.AXIS_Y=3]="AXIS_Y",e[e.POINT=4]="POINT",e[e.AXIS_XR=5]="AXIS_XR";var i=function(){function t(t){this.floatArray=null,this.mat3=new Float64Array(t||r)}return Object.defineProperty(t.prototype,"a",{get:function(){return this.mat3[0]/this.mat3[8]},set:function(t){this.mat3[0]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this.mat3[1]/this.mat3[8]},set:function(t){this.mat3[1]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"c",{get:function(){return this.mat3[3]/this.mat3[8]},set:function(t){this.mat3[3]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"d",{get:function(){return this.mat3[4]/this.mat3[8]},set:function(t){this.mat3[4]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tx",{get:function(){return this.mat3[6]/this.mat3[8]},set:function(t){this.mat3[6]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ty",{get:function(){return this.mat3[7]/this.mat3[8]},set:function(t){this.mat3[7]=t*this.mat3[8]},enumerable:!0,configurable:!0}),t.prototype.set=function(t,e,r,i,n,o){var a=this.mat3;return a[0]=t,a[1]=e,a[2]=0,a[3]=r,a[4]=i,a[5]=0,a[6]=n,a[7]=o,a[8]=1,this},t.prototype.toArray=function(t,e){this.floatArray||(this.floatArray=new Float32Array(9));var r=e||this.floatArray,i=this.mat3;return t?(r[0]=i[0],r[1]=i[1],r[2]=i[2],r[3]=i[3],r[4]=i[4],r[5]=i[5],r[6]=i[6],r[7]=i[7]):(r[0]=i[0],r[1]=i[3],r[2]=i[6],r[3]=i[1],r[4]=i[4],r[5]=i[7],r[6]=i[2],r[7]=i[5]),r[8]=i[8],r},t.prototype.apply=function(t,e){e=e||new PIXI.Point;var r=this.mat3,i=t.x,n=t.y,o=1/(r[2]*i+r[5]*n+r[8]);return e.x=o*(r[0]*i+r[3]*n+r[6]),e.y=o*(r[1]*i+r[4]*n+r[7]),e},t.prototype.translate=function(t,e){var r=this.mat3;return r[0]+=t*r[2],r[1]+=e*r[2],r[3]+=t*r[5],r[4]+=e*r[5],r[6]+=t*r[8],r[7]+=e*r[8],this},t.prototype.scale=function(t,e){var r=this.mat3;return r[0]*=t,r[1]*=e,r[3]*=t,r[4]*=e,r[6]*=t,r[7]*=e,this},t.prototype.scaleAndTranslate=function(t,e,r,i){var n=this.mat3;n[0]=t*n[0]+r*n[2],n[1]=e*n[1]+i*n[2],n[3]=t*n[3]+r*n[5],n[4]=e*n[4]+i*n[5],n[6]=t*n[6]+r*n[8],n[7]=e*n[7]+i*n[8]},t.prototype.applyInverse=function(t,e){e=e||new v;var r=this.mat3,i=t.x,n=t.y,o=r[0],a=r[3],s=r[6],l=r[1],u=r[4],h=r[7],c=r[2],f=r[5],p=r[8],d=(p*u-h*f)*i+(-p*a+s*f)*n+(h*a-s*u),m=(-p*l+h*c)*i+(p*o-s*c)*n+(-h*o+s*l),g=(f*l-u*c)*i+(-f*o+a*c)*n+(u*o-a*l);return e.x=d/g,e.y=m/g,e},t.prototype.invert=function(){var t=this.mat3,e=t[0],r=t[1],i=t[2],n=t[3],o=t[4],a=t[5],s=t[6],l=t[7],u=t[8],h=u*o-a*l,c=-u*n+a*s,f=l*n-o*s,p=e*h+r*c+i*f;return p&&(p=1/p,t[0]=h*p,t[1]=(-u*r+i*l)*p,t[2]=(a*r-i*o)*p,t[3]=c*p,t[4]=(u*e-i*s)*p,t[5]=(-a*e+i*n)*p,t[6]=f*p,t[7]=(-l*e+r*s)*p,t[8]=(o*e-r*n)*p),this},t.prototype.identity=function(){var t=this.mat3;return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,this},t.prototype.clone=function(){return new t(this.mat3)},t.prototype.copyTo2dOr3d=function(t){var e=this.mat3,r=t.mat3;return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],t},t.prototype.copyTo=function(t,e,r){var i=this.mat3,n=1/i[8],o=i[6]*n,a=i[7]*n;if(t.a=(i[0]-i[2]*o)*n,t.b=(i[1]-i[2]*a)*n,t.c=(i[3]-i[5]*o)*n,t.d=(i[4]-i[5]*a)*n,t.tx=o,t.ty=a,2<=e){var s=t.a*t.d-t.b*t.c;r||(s=Math.abs(s)),e===l.POINT?(s=0>0,0!==f._cycle&&f._cycle===f._totalTime/a&&m<=t&&f._cycle--,f._time=f._totalTime-f._cycle*a,f._yoyo&&0!=(1&f._cycle)&&(f._time=v-f._time,(c=f._yoyoEase||f.vars.yoyoEase)&&(f._yoyoEase||(!0!==c||f._initted?f._yoyoEase=c=!0===c?f._ease:c instanceof Ease?c:Ease.map[c]:(c=f.vars.ease,f._yoyoEase=c=c?c instanceof Ease?c:"function"==typeof c?new Ease(c,f.vars.easeParams):Ease.map[c]||y.defaultEase:y.defaultEase)),f.ratio=c?1-c.getRatio((v-f._time)/v):0)),f._time>v?f._time=v:f._time<0&&(f._time=0)),f._easeType&&!c?(s=f._time/v,(1===(l=f._easeType)||3===l&&.5<=s)&&(s=1-s),3===l&&(s*=2),1===(u=f._easePower)?s*=s:2===u?s*=s*s:3===u?s*=s*s*s:4===u&&(s*=s*s*s*s),f.ratio=1===l?1-s:2===l?s:f._time/v<.5?s/2:1-s/2):c||(f.ratio=f._ease.getRatio(f._time/v))),d!==f._time||r||g!==f._cycle){if(!f._initted){if(f._init(),!f._initted||f._gc)return;if(!r&&f._firstPT&&(!1!==f.vars.lazy&&f._duration||f.vars.lazy&&!f._duration))return f._time=d,f._totalTime=m,f._rawPrevTime=_,f._cycle=g,x.lazyTweens.push(f),void(f._lazy=[t,e]);!f._time||i||c?i&&this._ease._calcEnd&&!c&&(f.ratio=f._ease.getRatio(0===f._time?0:1)):f.ratio=f._ease.getRatio(f._time/v)}for(!1!==f._lazy&&(f._lazy=!1),f._active||!f._paused&&f._time!==d&&0<=t&&(f._active=!0),0===m&&(2===f._initted&&0t._startTime;l._timeline;)u&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return h},r.remove=function(t){if(t instanceof c){this._remove(t,!1);var e=t._timeline=t.vars.useFrames?c._rootFramesTimeline:c._rootTimeline;return t._startTime=(t._paused?t._pauseTime:e._time)-(t._reversed?t.totalDuration()-t._totalTime:t._totalTime)/t._timeScale,this}if(t instanceof Array||t&&t.push&&p(t)){for(var r=t.length;-1<--r;)this.remove(t[r]);return this}return"string"==typeof t?this.removeLabel(t):this.kill(null,t)},r._remove=function(t,e){return f.prototype._remove.call(this,t,e),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},r.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},r.insert=r.insertMultiple=function(t,e,r,i){return this.add(t,e||0,r,i)},r.appendMultiple=function(t,e,r,i){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),r,i)},r.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},r.addPause=function(t,e,r,i){var n=d.delayedCall(0,o,r,i||this);return n.vars.onComplete=n.vars.onReverseComplete=e,n.data="isPause",this._hasPause=!0,this.add(n,t)},r.removeLabel=function(t){return delete this._labels[t],this},r.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},r._parseTimeOrLabel=function(t,e,r,i){var n,o;if(i instanceof c&&i.timeline===this)this.remove(i);else if(i&&(i instanceof Array||i.push&&p(i)))for(o=i.length;-1<--o;)i[o]instanceof c&&i[o].timeline===this&&this.remove(i[o]);if(n="number"!=typeof t||e?99999999999=t&&!l;)i._duration||"isPause"===i.data&&0c._time;)l.render(l._reversed?l.totalDuration()-(t-l._startTime)*l._timeScale:(t-l._startTime)*l._timeScale,e,r),l=l._prev;l=null,c.pause(),c._pauseTime=h}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}c._onUpdate&&(e||(v.length&&_(),c._callback("onUpdate"))),a&&(c._gc||d!==c._startTime&&m===c._timeScale||(0===c._time||p>=c.totalDuration())&&(n&&(v.length&&_(),c._timeline.autoRemoveChildren&&c._enabled(!1,!1),c._active=!1),!e&&c.vars[a]&&c._callback(a)))}},r._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof m&&t._hasPausedChild())return!0;t=t._next}return!1},r.getChildren=function(t,e,r,i){i=i||-9999999999;for(var n=[],o=this._first,a=0;o;)o._startTime=r&&(n._startTime+=t),n=n._next;if(e)for(i in o)o[i]>=r&&(o[i]+=t);return this._uncache(!0)},r._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var r=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),i=r.length,n=!1;-1<--i;)r[i]._kill(t,e)&&(n=!0);return n},r.clear=function(t){var e=this.getChildren(!1,!0,!0),r=e.length;for(this._time=this._totalTime=0;-1<--r;)e[r]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},r.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return c.prototype.invalidate.call(this)},r._enabled=function(t,e){if(t===this._gc)for(var r=this._first;r;)r._enabled(t,!0),r=r._next;return f.prototype._enabled.call(this,t,e)},r.totalTime=function(t,e,r){this._forcingPlayhead=!0;var i=c.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,i},r.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},r.totalDuration=function(t){if(arguments.length)return t&&this.totalDuration()?this.timeScale(this._totalDuration/t):this;if(this._dirty){for(var e,r,i=0,n=this,o=n._last,a=999999999999;o;)e=o._prev,o._dirty&&o.totalDuration(),o._startTime>a&&n._sortChildren&&!o._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(o,o._startTime-o._delay),n._calculatingDuration=0):a=o._startTime,o._startTime<0&&!o._paused&&(i-=o._startTime,n._timeline.smoothChildTiming&&(n._startTime+=o._startTime/n._timeScale,n._time-=o._startTime,n._totalTime-=o._startTime,n._rawPrevTime-=o._startTime),n.shiftChildren(-o._startTime,!1,-9999999999),a=0),i<(r=o._startTime+o._totalDuration/o._timeScale)&&(i=r),o=e;n._duration=n._totalDuration=i,n._dirty=!1}return this._totalDuration},r.paused=function(t){if(!1===t&&this._paused)for(var e=this._first;e;)e._startTime===this._time&&"isPause"===e.data&&(e._rawPrevTime=0),e=e._next;return c.prototype.paused.apply(this,arguments)},r.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===c._rootFramesTimeline},r.rawTime=function(t){return t&&(this._paused||this._repeat&&0>0,f._cycle&&f._cycle===f._totalTime/l&&g<=t&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=m-f._time),f._time>m?t=(f._time=m)+1e-4:f._time<0?f._time=t=0:t=f._time));if(f._hasPause&&!f._forcingPlayhead&&!e){if(p<(t=f._time)||f._repeat&&x!==f._cycle)for(i=f._first;i&&i._startTime<=t&&!u;)i._duration||"isPause"!==i.data||i.ratio||0===i._startTime&&0===f._rawPrevTime||(u=i),i=i._next;else for(i=f._last;i&&i._startTime>=t&&!u;)i._duration||"isPause"===i.data&&0f._time;)u.render(u._reversed?u.totalDuration()-(t-u._startTime)*u._timeScale:(t-u._startTime)*u._timeScale,e,r),u=u._prev;u=null,f.pause(),f._pauseTime=c}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}f._onUpdate&&(e||(E.length&&I(),f._callback("onUpdate"))),a&&(f._locked||f._gc||v!==f._startTime&&_===f._timeScale||(0===f._time||d>=f.totalDuration())&&(n&&(E.length&&I(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!e&&f.vars[a]&&f._callback(a)))}else g!==f._totalTime&&f._onUpdate&&(e||f._callback("onUpdate"))},n.getActive=function(t,e,r){var i,n,o=[],a=this.getChildren(t||null==t,e||null==t,!!r),s=0,l=a.length;for(i=0;it)return r[e].name;return null},n.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),r=e.length;-1<--r;)if(e[r].time>0||6)-1,c=[],f=[];for(r in t)d(t[r],a,e);for(n=a.length,i=0;i>0]=f,s[o]=u,l=0,f=[]);return{length:u,lengths:s,segments:c}}(this._beziers,this._timeRes);this._length=f.length,this._lengths=f.lengths,this._segments=f.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(c=this._autoRotate)for(this._initialRotations=[],c[0]instanceof Array||(this._autoRotate=c=[c]),o=c.length;-1<--o;){for(a=0;a<3;a++)i=c[o][a],this._func[i]="function"==typeof t[i]&&t[i.indexOf("set")||"function"!=typeof t["get"+i.substr(3)]?i:"get"+i.substr(3)];i=c[o][2],this._initialRotations[o]=(this._func[i]?this._func[i].call(this._target):this._target[i])||0,this._overwriteProps.push(i)}return this._startRatio=r.vars.runBackwards?1:0,!0},set:function(t){var e,r,i,n,o,a,s,l,u,h,c,f=this._segCount,p=this._func,d=this._target,m=t!==this._startRatio;if(this._timeRes){if(u=this._lengths,h=this._curSeg,c=t*this._length,i=this._li,c>this._l2&&i=c;);0===i&&cthis._s2&&i=c;);0===i&&c>0)*(1/f))*f;for(r=1-a,i=this._props.length;-1<--i;)n=this._props[i],s=(a*a*(o=this._beziers[n][e]).da+3*r*(a*o.ca+r*o.ba))*a+o.a,this._mod[n]&&(s=this._mod[n](s,d)),p[n]?d[n](s):d[n]=s;if(this._autoRotate){var g,v,_,y,b,x,w,T=this._autoRotate;for(i=T.length;-1<--i;)n=T[i][2],x=T[i][3]||0,w=!0===T[i][4]?1:k,o=this._beziers[T[i][0]],g=this._beziers[T[i][1]],o&&g&&(o=o[e],g=g[e],v=o.a+(o.b-o.a)*a,v+=((y=o.b+(o.c-o.b)*a)-v)*a,y+=(o.c+(o.d-o.c)*a-y)*a,_=g.a+(g.b-g.a)*a,_+=((b=g.b+(g.c-g.b)*a)-_)*a,b+=(g.c+(g.d-g.c)*a-b)*a,s=m?Math.atan2(b-_,y-v)*w+x:this._initialRotations[i],this._mod[n]&&(s=this._mod[n](s,d)),p[n]?d[n](s):d[n]=s)}}}),t=g.prototype,g.bezierThrough=p,g.cubicToQuadratic=S,g._autoCSS=!0,g.quadraticToCubic=function(t,e,r){return new _(t,(2*e+t)/3,(2*e+r)/3,r)},g._cssRegister=function(){var t=r.CSSPlugin;if(t){var e=t._internals,p=e._parseToProxy,d=e._setPluginRatio,m=e.CSSPropTween;e._registerComplexSpecialProp("bezier",{parser:function(t,e,r,i,n,o){e instanceof Array&&(e={values:e}),o=new g;var a,s,l,u=e.values,h=u.length-1,c=[],f={};if(h<0)return n;for(a=0;a<=h;a++)l=p(t,u[a],i,n,o,h!==a),c[a]=l.end;for(s in e)f[s]=e[s];return f.values=c,(n=new m(t,"bezier",0,0,l.pt,2)).data=l,n.plugin=o,n.setRatio=d,0===f.autoRotate&&(f.autoRotate=!0),!f.autoRotate||f.autoRotate instanceof Array||(a=!0===f.autoRotate?0:Number(f.autoRotate),f.autoRotate=null!=l.end.left?[["left","top","rotation",a,!1]]:null!=l.end.x&&[["x","y","rotation",a,!1]]),f.autoRotate&&(i._transform||i._enableTransforms(!1),l.autoRotate=i._target._gsTransform,l.proxy.rotation=l.autoRotate.rotation||0,i._overwriteProps.push("rotation")),o._onInitTween(l.proxy,f,i._tween),n}})}},t._mod=function(t){for(var e,r=this._overwriteProps,i=r.length;-1<--i;)(e=t[r[i]])&&"function"==typeof e&&(this._mod[r[i]]=e)},t._kill=function(t){var e,r,i=this._props;for(e in this._beziers)if(e in t)for(delete this._beziers[e],delete this._func[e],r=i.length;-1<--r;)i[r]===e&&i.splice(r,1);if(i=this._autoRotate)for(r=i.length;-1<--r;)t[i[r][2]]&&i.splice(r,1);return this._super._kill.call(this,t)},_gsScope._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(o,B){var d,k,S,m,U=function(){o.call(this,"css"),this._overwriteProps.length=0,this.setRatio=U.prototype.setRatio},u=_gsScope._gsDefine.globals,g={},t=U.prototype=new o("css");(t.constructor=U).version="2.1.3",U.API=2,U.defaultTransformPerspective=0,U.defaultSkewType="compensated",U.defaultSmoothOrigin=!0,t="px",U.suffixMap={top:t,right:t,bottom:t,left:t,width:t,height:t,fontSize:t,padding:t,margin:t,perspective:t,lineHeight:""};var C,v,_,j,y,P,A,E,e,r,I=/(?:\-|\.|\b)(\d|\.|e\-)+/g,O=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,b=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,n=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi,h=/(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,M=/(?:\d|\-|\+|=|#|\.)*/g,D=/opacity *= *([^)]*)/i,x=/opacity:([^;]*)/i,a=/alpha\(opacity *=.+?\)/i,w=/^(rgb|hsl)/,s=/([A-Z])/g,l=/-([a-z])/gi,T=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,c=function(t,e){return e.toUpperCase()},p=/(?:Left|Right|Width)/i,f=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,z=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,R=/,(?=[^\)]*(?:\(|$))/gi,F=/[\s,\(]/i,L=Math.PI/180,X=180/Math.PI,N={},i={style:{}},H=_gsScope.document||{createElement:function(){return i}},q=function(t,e){var r=H.createElementNS?H.createElementNS(e||"http://www.w3.org/1999/xhtml",t):H.createElement(t);return r.style?r:H.createElement(t)},W=q("div"),G=q("img"),V=U._internals={_specialProps:g},Y=(_gsScope.navigator||{}).userAgent||"",Z=(e=Y.indexOf("Android"),r=q("a"),_=-1!==Y.indexOf("Safari")&&-1===Y.indexOf("Chrome")&&(-1===e||3>16,t>>8&255,255&t];else{if(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),mt[t])r=mt[t];else if("#"===t.charAt(0))4===t.length&&(t="#"+(i=t.charAt(1))+i+(n=t.charAt(2))+n+(o=t.charAt(3))+o),r=[(t=parseInt(t.substr(1),16))>>16,t>>8&255,255&t];else if("hsl"===t.substr(0,3))if(r=f=t.match(I),e){if(-1!==t.indexOf("="))return t.match(O)}else a=Number(r[0])%360/360,s=Number(r[1])/100,i=2*(l=Number(r[2])/100)-(n=l<=.5?l*(s+1):l+s-l*s),3i--)for(;++ii--)for(;++i>0];return i.parse(t,a,n,o)}},wt=(V._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,r,i,n,o,a=this.data,s=a.proxy,l=a.firstMPT;l;)e=s[l.v],l.r?e=l.r(e):e<1e-6&&-1e-6s.length?l.length:s.length,a=0;ao.pr;)a=a._next;(o._prev=a?a._prev:l)?o._prev._next=o:s=o,(o._next=a)?a._prev=o:l=o,o=u}this._firstPT=s}return!0},t.parse=function(t,e,r,i){var n,o,a,s,l,u,h,c,f,p,d=t.style;for(n in e){if(u=e[n],o=g[n],"function"!=typeof u||o&&o.allowFunc||(u=u(E,A)),o)r=o.parse(t,u,n,this,r,i,e);else{if("--"===n.substr(0,2)){this._tween._propLookup[n]=this._addTween.call(this._tween,t.style,"setProperty",rt(t).getPropertyValue(n)+"",u+"",n,!1,n);continue}l=it(t,n,S)+"",f="string"==typeof u,"color"===n||"fill"===n||"stroke"===n||-1!==n.indexOf("Color")||f&&w.test(u)?(f||(u=(3<(u=vt(u)).length?"rgba(":"rgb(")+u.join(",")+")"),r=St(d,n,l,u,!0,"transparent",r,0,i)):f&&F.test(u)?r=St(d,n,l,u,!0,null,r,0,i):(h=(a=parseFloat(l))||0===a?l.substr((a+"").length):"",""!==l&&"auto"!==l||(h="width"===n||"height"===n?(a=ht(t,n,S),"px"):"left"===n||"top"===n?(a=ot(t,n,S),"px"):(a="opacity"!==n?0:1,"")),""===(c=(p=f&&"="===u.charAt(1))?(s=parseInt(u.charAt(0)+"1",10),u=u.substr(2),s*=parseFloat(u),u.replace(M,"")):(s=parseFloat(u),f?u.replace(M,""):""))&&(c=n in k?k[n]:h),u=s||0===s?(p?s+a:s)+c:e[n],h!==c&&(""===c&&"lineHeight"!==n||(s||0===s)&&a&&(a=nt(t,n,a,h),"%"===c?(a/=nt(t,n,100,"%")/100,!0!==e.strictUnits&&(l=a+"%")):"em"===c||"rem"===c||"vw"===c||"vh"===c?a/=nt(t,n,1,c):"px"!==c&&(s=nt(t,n,s,c),c="px"),p&&(s||0===s)&&(u=s+a+c))),p&&(s+=a),!a&&0!==a||!s&&0!==s?void 0!==d[n]&&(u||u+""!="NaN"&&null!=u)?(r=new Tt(d,n,s||a||0,0,r,-1,n,!1,0,l,u)).xs0="none"!==u||"display"!==n&&-1===n.indexOf("Style")?u:l:K("invalid "+n+" tween value: "+e[n]):(r=new Tt(d,n,a,s-a,r,0,n,!1!==C&&("px"===c||"zIndex"===n),0,l,u)).xs0=c)}i&&r&&!r.plugin&&(r.plugin=i)}return r},t.setRatio=function(t){var e,r,i,n=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;n;){if(e=n.c*t+n.s,n.r?e=n.r(e):e<1e-6&&-1e-6this._p3?this._calcEnd?1===t?0:1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},d.ease=new d(.7,.7),m.config=d.config=function(t,e,r){return new d(t,e,r)},(m=(r=l("easing.SteppedEase",function(t,e){t=t||1,this._p1=1/t,this._p2=t+(e?0:1),this._p3=e?1:0},!0)).prototype=new g).constructor=r,m.getRatio=function(t){return t<0?t=0:1<=t&&(t=.999999999),((this._p2*t|0)+this._p3)*this._p1},m.config=r.config=function(t,e){return new r(t,e)},(m=(i=l("easing.ExpoScaleEase",function(t,e,r){this._p1=Math.log(e/t),this._p2=e-t,this._p3=t,this._ease=r},!0)).prototype=new g).constructor=i,m.getRatio=function(t){return this._ease&&(t=this._ease.getRatio(t)),(this._p3*Math.exp(this._p1*t)-this._p3)/this._p2},m.config=i.config=function(t,e,r){return new i(t,e,r)},(m=(e=l("easing.RoughEase",function(t){for(var e,r,i,n,o,a,s=(t=t||{}).taper||"none",l=[],u=0,h=0|(t.points||20),c=h,f=!1!==t.randomize,p=!0===t.clamp,d=t.template instanceof g?t.template:null,m="number"==typeof t.strength?.4*t.strength:.4;-1<--c;)e=f?Math.random():1/h*c,r=d?d.getRatio(e):e,i="none"===s?m:"out"===s?(n=1-e)*n*m:"in"===s?e*e*m:e<.5?(n=2*e)*n*.5*m:(n=2*(1-e))*n*.5*m,f?r+=Math.random()*i-.5*i:c%2?r+=.5*i:r-=.5*i,p&&(1e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&t<=e.t;)e=e.prev;return(this._prev=e).v+(t-e.t)/e.gap*e.c},m.config=function(t){return new e(t)},e.ease=new e,c("Bounce",u("BounceOut",function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),u("BounceIn",function(t){return(t=1-t)<1/2.75?1-7.5625*t*t:t<2/2.75?1-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),u("BounceInOut",function(t){var e=t<.5;return(t=e?1-2*t:2*t-1)<1/2.75?t*=7.5625*t:t=t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),c("Circ",u("CircOut",function(t){return Math.sqrt(1-(t-=1)*t)}),u("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),u("CircInOut",function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),c("Elastic",(t=function(t,e,r){var i=l("easing."+t,function(t,e){this._p1=1<=t?t:1,this._p2=(e||r)/(t<1?t:1),this._p3=this._p2/a*(Math.asin(1/this._p1)||0),this._p2=a/this._p2},!0),n=i.prototype=new g;return n.constructor=i,n.getRatio=e,n.config=function(t,e){return new i(t,e)},i})("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*this._p2)+1},.3),t("ElasticIn",function(t){return-this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*this._p2)},.3),t("ElasticInOut",function(t){return(t*=2)<1?this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*this._p2)*-.5:this._p1*Math.pow(2,-10*(t-=1))*Math.sin((t-this._p3)*this._p2)*.5+1},.45)),c("Expo",u("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),u("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),u("ExpoInOut",function(t){return(t*=2)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),c("Sine",u("SineOut",function(t){return Math.sin(t*s)}),u("SineIn",function(t){return 1-Math.cos(t*s)}),u("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),l("easing.EaseLookup",{find:function(t){return g.map[t]}},!0),h(n.SlowMo,"SlowMo","ease,"),h(e,"RoughEase","ease,"),h(r,"SteppedEase","ease,"),p},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(f,p){"use strict";var d={},i=f.document,m=f.GreenSockGlobals=f.GreenSockGlobals||f,t=m[p];if(t)return"undefined"!=typeof module&&module.exports&&(module.exports=t);var e,r,n,g,v,o,a,_=function(t){var e,r=t.split("."),i=m;for(e=0;e=r&&tthis._duration?this._duration:t,e)):this._time},n.totalTime=function(t,e,r){if(v||g.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(t<0&&!r&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var i=this._totalDuration,n=this._timeline;if(io;)n=n._prev;return n?(t._next=n._next,n._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=n,this._recent=t,this._timeline&&this._uncache(!0),this},n._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),t._next=t._prev=t.timeline=null,t===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},n.render=function(t,e,r){var i,n=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;n;)i=n._next,(n._active||t>=n._startTime&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,r):n.render((t-n._startTime)*n._timeScale,e,r)),n=i},n.rawTime=function(){return v||g.wake(),this._totalTime};var R=k("TweenLite",function(t,e,r){if(M.call(this,e,r),this.render=R.prototype.render,null==t)throw"Cannot tween a null target.";this.target=t="string"!=typeof t?t:R.selector(t)||t;var i,n,o,a=t.jquery||t.length&&t!==f&&t[0]&&(t[0]===f||t[0].nodeType&&t[0].style&&!t.nodeType),s=this.vars.overwrite;if(this._overwrite=s=null==s?J[R.defaultOverwrite]:"number"==typeof s?s>>0:J[s],(a||t instanceof Array||t.push&&x(t))&&"number"!=typeof t[0])for(this._targets=o=l(t),this._propLookup=[],this._siblings=[],i=0;i=$){for(r in $=g.frame+(parseInt(R.autoSleep,10)||120),V){for(t=(e=V[r].tweens).length;-1<--t;)e[t]._gc&&e.splice(t,1);0===e.length&&delete V[r]}if((!(r=Q._first)||r._paused)&&R.autoSleep&&!K._first&&1===g._listeners.tick.length){for(;r&&r._paused;)r=r._next;r||g.sleep()}}},g.addEventListener("tick",M._updateRoot);var et=function(t,e,r){var i,n,o=t._gsTweenID;if(V[o||(t._gsTweenID=o="t"+Y++)]||(V[o]={target:t,tweens:[]}),e&&((i=V[o].tweens)[n=i.length]=e,r))for(;-1<--n;)i[n]===e&&i.splice(n,1);return V[o].tweens},rt=function(t,e,r,i){var n,o,a=t.vars.onOverwrite;return a&&(n=a(t,e,r,i)),(a=R.onOverwrite)&&(o=a(t,e,r,i)),!1!==n&&!1!==o},it=function(t,e,r,i,n){var o,a,s,l;if(1===i||4<=i){for(l=n.length,o=0;oh&&((p||!s._initted)&&h-s._startTime<=2e-8||(c[f++]=s)));for(o=f;-1<--o;)if(l=(s=c[o])._firstPT,2===i&&s._kill(r,t,e)&&(a=!0),2!==i||!s._firstPT&&s._initted&&l){if(2!==i&&!rt(s,e))continue;s._enabled(!1,!1)&&(a=!0)}return a},nt=function(t,e,r){for(var i=t._timeline,n=i._timeScale,o=t._startTime;i._timeline;){if(o+=i._startTime,n*=i._timeScale,i._paused)return-100;i=i._timeline}return e<(o/=n)?o-e:r&&o===e||!t._initted&&o-e<2e-8?y:(o+=t.totalDuration()/t._timeScale/n)>e+y?0:o-e-y};n._init=function(){var t,e,r,i,n,o,a=this.vars,s=this._overwrittenProps,l=this._duration,u=!!a.immediateRender,h=a.ease,c=this._startAt;if(a.startAt){for(i in c&&(c.render(-1,!0),c.kill()),n={},a.startAt)n[i]=a.startAt[i];if(n.data="isStart",n.overwrite=!1,n.immediateRender=!0,n.lazy=u&&!1!==a.lazy,n.startAt=n.delay=null,n.onUpdate=a.onUpdate,n.onUpdateParams=a.onUpdateParams,n.onUpdateScope=a.onUpdateScope||a.callbackScope||this,this._startAt=R.to(this.target||{},0,n),u)if(0s.pr;)i=i._next;(s._prev=i?i._prev:o)?s._prev._next=s:n=s,(s._next=i)?i._prev=s:o=s,s=a}s=e._firstPT=n}for(;s;)s.pg&&"function"==typeof s.t[t]&&s.t[t]()&&(r=!0),s=s._next;return r},ot.activate=function(t){for(var e=t.length;-1<--e;)t[e].API===ot.API&&(G[(new t[e])._propName]=t[e]);return!0},s.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,r=t.propName,i=t.priority||0,n=t.overwriteProps,o={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_mod",mod:"_mod",initAll:"_onInitAllProps"},a=k("plugins."+r.charAt(0).toUpperCase()+r.substr(1)+"Plugin",function(){ot.call(this,r,i),this._overwriteProps=n||[]},!0===t.global),s=a.prototype=new ot(r);for(e in(s.constructor=a).API=t.API,o)"function"==typeof t[e]&&(s[o[e]]=t[e]);return a.version=t.version,ot.activate([a]),a},e=f._gsQueue){for(r=0;r>0,f._cycle&&f._cycle===f._totalTime/l&&g<=t&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=m-f._time),f._time>m?t=(f._time=m)+1e-4:f._time<0?f._time=t=0:t=f._time));if(f._hasPause&&!f._forcingPlayhead&&!e){if(p<(t=f._time)||f._repeat&&x!==f._cycle)for(i=f._first;i&&i._startTime<=t&&!u;)i._duration||"isPause"!==i.data||i.ratio||0===i._startTime&&0===f._rawPrevTime||(u=i),i=i._next;else for(i=f._last;i&&i._startTime>=t&&!u;)i._duration||"isPause"===i.data&&0f._time;)u.render(u._reversed?u.totalDuration()-(t-u._startTime)*u._timeScale:(t-u._startTime)*u._timeScale,e,r),u=u._prev;u=null,f.pause(),f._pauseTime=c}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}f._onUpdate&&(e||(E.length&&I(),f._callback("onUpdate"))),a&&(f._locked||f._gc||v!==f._startTime&&_===f._timeScale||(0===f._time||d>=f.totalDuration())&&(n&&(E.length&&I(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!e&&f.vars[a]&&f._callback(a)))}else g!==f._totalTime&&f._onUpdate&&(e||f._callback("onUpdate"))},n.getActive=function(t,e,r){var i,n,o=[],a=this.getChildren(t||null==t,e||null==t,!!r),s=0,l=a.length;for(i=0;it)return r[e].name;return null},n.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),r=e.length;-1<--r;)if(e[r].timet._startTime;l._timeline;)u&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return h},r.remove=function(t){if(t instanceof c){this._remove(t,!1);var e=t._timeline=t.vars.useFrames?c._rootFramesTimeline:c._rootTimeline;return t._startTime=(t._paused?t._pauseTime:e._time)-(t._reversed?t.totalDuration()-t._totalTime:t._totalTime)/t._timeScale,this}if(t instanceof Array||t&&t.push&&p(t)){for(var r=t.length;-1<--r;)this.remove(t[r]);return this}return"string"==typeof t?this.removeLabel(t):this.kill(null,t)},r._remove=function(t,e){return f.prototype._remove.call(this,t,e),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},r.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},r.insert=r.insertMultiple=function(t,e,r,i){return this.add(t,e||0,r,i)},r.appendMultiple=function(t,e,r,i){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),r,i)},r.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},r.addPause=function(t,e,r,i){var n=d.delayedCall(0,o,r,i||this);return n.vars.onComplete=n.vars.onReverseComplete=e,n.data="isPause",this._hasPause=!0,this.add(n,t)},r.removeLabel=function(t){return delete this._labels[t],this},r.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},r._parseTimeOrLabel=function(t,e,r,i){var n,o;if(i instanceof c&&i.timeline===this)this.remove(i);else if(i&&(i instanceof Array||i.push&&p(i)))for(o=i.length;-1<--o;)i[o]instanceof c&&i[o].timeline===this&&this.remove(i[o]);if(n="number"!=typeof t||e?99999999999=t&&!l;)i._duration||"isPause"===i.data&&0c._time;)l.render(l._reversed?l.totalDuration()-(t-l._startTime)*l._timeScale:(t-l._startTime)*l._timeScale,e,r),l=l._prev;l=null,c.pause(),c._pauseTime=h}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}c._onUpdate&&(e||(v.length&&_(),c._callback("onUpdate"))),a&&(c._gc||d!==c._startTime&&m===c._timeScale||(0===c._time||p>=c.totalDuration())&&(n&&(v.length&&_(),c._timeline.autoRemoveChildren&&c._enabled(!1,!1),c._active=!1),!e&&c.vars[a]&&c._callback(a)))}},r._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof m&&t._hasPausedChild())return!0;t=t._next}return!1},r.getChildren=function(t,e,r,i){i=i||-9999999999;for(var n=[],o=this._first,a=0;o;)o._startTime=r&&(n._startTime+=t),n=n._next;if(e)for(i in o)o[i]>=r&&(o[i]+=t);return this._uncache(!0)},r._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var r=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),i=r.length,n=!1;-1<--i;)r[i]._kill(t,e)&&(n=!0);return n},r.clear=function(t){var e=this.getChildren(!1,!0,!0),r=e.length;for(this._time=this._totalTime=0;-1<--r;)e[r]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},r.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return c.prototype.invalidate.call(this)},r._enabled=function(t,e){if(t===this._gc)for(var r=this._first;r;)r._enabled(t,!0),r=r._next;return f.prototype._enabled.call(this,t,e)},r.totalTime=function(t,e,r){this._forcingPlayhead=!0;var i=c.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,i},r.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},r.totalDuration=function(t){if(arguments.length)return t&&this.totalDuration()?this.timeScale(this._totalDuration/t):this;if(this._dirty){for(var e,r,i=0,n=this,o=n._last,a=999999999999;o;)e=o._prev,o._dirty&&o.totalDuration(),o._startTime>a&&n._sortChildren&&!o._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(o,o._startTime-o._delay),n._calculatingDuration=0):a=o._startTime,o._startTime<0&&!o._paused&&(i-=o._startTime,n._timeline.smoothChildTiming&&(n._startTime+=o._startTime/n._timeScale,n._time-=o._startTime,n._totalTime-=o._startTime,n._rawPrevTime-=o._startTime),n.shiftChildren(-o._startTime,!1,-9999999999),a=0),i<(r=o._startTime+o._totalDuration/o._timeScale)&&(i=r),o=e;n._duration=n._totalDuration=i,n._dirty=!1}return this._totalDuration},r.paused=function(t){if(!1===t&&this._paused)for(var e=this._first;e;)e._startTime===this._time&&"isPause"===e.data&&(e._rawPrevTime=0),e=e._next;return c.prototype.paused.apply(this,arguments)},r.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===c._rootFramesTimeline},r.rawTime=function(t){return t&&(this._paused||this._repeat&&0+~]|"+F+")"+F+"*"),q=new RegExp("="+F+"*([^\\]'\"]*?)"+F+"*\\]","g"),W=new RegExp(N),G=new RegExp("^"+j+"$"),V={ID:new RegExp("^#("+j+")"),CLASS:new RegExp("^\\.("+j+")"),TAG:new RegExp("^("+j+"|[*])"),ATTR:new RegExp("^"+L),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+F+"*(even|odd|(([+-]|)(\\d*)n|)"+F+"*(?:([+-]|)"+F+"*(\\d+)|))"+F+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+F+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+F+"*((?:-\\d)?\\d*)"+F+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Q=/[+~]/,$=new RegExp("\\\\([\\da-f]{1,6}"+F+"?|("+F+")|.)","ig"),tt=function(t,e,r){var i="0x"+e-65536;return i!=i||r?e:i<0?String.fromCharCode(65536+i):String.fromCharCode(i>>10|55296,1023&i|56320)},et=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,rt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},it=function(){w()},nt=_t(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{M.apply(e=D.call(_.childNodes),_.childNodes),e[_.childNodes.length].nodeType}catch(t){M={apply:e.length?function(t,e){O.apply(t,D.call(e))}:function(t,e){for(var r=t.length,i=0;t[r++]=e[i++];);t.length=r-1}}}function ot(t,e,r,i){var n,o,a,s,l,u,h,c=e&&e.ownerDocument,f=e?e.nodeType:9;if(r=r||[],"string"!=typeof t||!t||1!==f&&9!==f&&11!==f)return r;if(!i&&((e?e.ownerDocument||e:_)!==T&&w(e),e=e||T,k)){if(11!==f&&(l=K.exec(t)))if(n=l[1]){if(9===f){if(!(a=e.getElementById(n)))return r;if(a.id===n)return r.push(a),r}else if(c&&(a=c.getElementById(n))&&v(e,a)&&a.id===n)return r.push(a),r}else{if(l[2])return M.apply(r,e.getElementsByTagName(t)),r;if((n=l[3])&&p.getElementsByClassName&&e.getElementsByClassName)return M.apply(r,e.getElementsByClassName(n)),r}if(p.qsa&&!C[t+" "]&&(!g||!g.test(t))){if(1!==f)c=e,h=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(et,rt):e.setAttribute("id",s=S),o=(u=d(t)).length;o--;)u[o]="#"+s+" "+vt(u[o]);h=u.join(","),c=Q.test(t)&&mt(e.parentNode)||e}if(h)try{return M.apply(r,c.querySelectorAll(h)),r}catch(t){}finally{s===S&&e.removeAttribute("id")}}}return m(t.replace(U,"$1"),e,r,i)}function at(){var i=[];return function t(e,r){return i.push(e+" ")>b.cacheLength&&delete t[i.shift()],t[e+" "]=r}}function st(t){return t[S]=!0,t}function lt(t){var e=T.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function ut(t,e){for(var r=t.split("|"),i=r.length;i--;)b.attrHandle[r[i]]=e}function ht(t,e){var r=e&&t,i=r&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(r)for(;r=r.nextSibling;)if(r===e)return-1;return t?1:-1}function ct(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function ft(r){return function(t){var e=t.nodeName.toLowerCase();return("input"===e||"button"===e)&&t.type===r}}function pt(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&nt(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function dt(a){return st(function(o){return o=+o,st(function(t,e){for(var r,i=a([],t.length,o),n=i.length;n--;)t[r=i[n]]&&(t[r]=!(e[r]=t[r]))})})}function mt(t){return t&&void 0!==t.getElementsByTagName&&t}for(t in p=ot.support={},n=ot.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},w=ot.setDocument=function(t){var e,r,i=t?t.ownerDocument||t:_;return i!==T&&9===i.nodeType&&i.documentElement&&(a=(T=i).documentElement,k=!n(T),_!==T&&(r=T.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",it,!1):r.attachEvent&&r.attachEvent("onunload",it)),p.attributes=lt(function(t){return t.className="i",!t.getAttribute("className")}),p.getElementsByTagName=lt(function(t){return t.appendChild(T.createComment("")),!t.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=lt(function(t){return a.appendChild(t).id=S,!T.getElementsByName||!T.getElementsByName(S).length}),p.getById?(b.filter.ID=function(t){var e=t.replace($,tt);return function(t){return t.getAttribute("id")===e}},b.find.ID=function(t,e){if(void 0!==e.getElementById&&k){var r=e.getElementById(t);return r?[r]:[]}}):(b.filter.ID=function(t){var r=t.replace($,tt);return function(t){var e=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return e&&e.value===r}},b.find.ID=function(t,e){if(void 0!==e.getElementById&&k){var r,i,n,o=e.getElementById(t);if(o){if((r=o.getAttributeNode("id"))&&r.value===t)return[o];for(n=e.getElementsByName(t),i=0;o=n[i++];)if((r=o.getAttributeNode("id"))&&r.value===t)return[o]}return[]}}),b.find.TAG=p.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):p.qsa?e.querySelectorAll(t):void 0}:function(t,e){var r,i=[],n=0,o=e.getElementsByTagName(t);if("*"!==t)return o;for(;r=o[n++];)1===r.nodeType&&i.push(r);return i},b.find.CLASS=p.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&k)return e.getElementsByClassName(t)},s=[],g=[],(p.qsa=J.test(T.querySelectorAll))&&(lt(function(t){a.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+F+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||g.push("\\["+F+"*(?:value|"+R+")"),t.querySelectorAll("[id~="+S+"-]").length||g.push("~="),t.querySelectorAll(":checked").length||g.push(":checked"),t.querySelectorAll("a#"+S+"+*").length||g.push(".#.+[+~]")}),lt(function(t){t.innerHTML="";var e=T.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&g.push("name"+F+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),a.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),g.push(",.*:")})),(p.matchesSelector=J.test(h=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&<(function(t){p.disconnectedMatch=h.call(t,"*"),h.call(t,"[s!='']:x"),s.push("!=",N)}),g=g.length&&new RegExp(g.join("|")),s=s.length&&new RegExp(s.join("|")),e=J.test(a.compareDocumentPosition),v=e||J.test(a.contains)?function(t,e){var r=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(r.contains?r.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},A=e?function(t,e){if(t===e)return u=!0,0;var r=!t.compareDocumentPosition-!e.compareDocumentPosition;return r||(1&(r=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!p.sortDetached&&e.compareDocumentPosition(t)===r?t===T||t.ownerDocument===_&&v(_,t)?-1:e===T||e.ownerDocument===_&&v(_,e)?1:l?z(l,t)-z(l,e):0:4&r?-1:1)}:function(t,e){if(t===e)return u=!0,0;var r,i=0,n=t.parentNode,o=e.parentNode,a=[t],s=[e];if(!n||!o)return t===T?-1:e===T?1:n?-1:o?1:l?z(l,t)-z(l,e):0;if(n===o)return ht(t,e);for(r=t;r=r.parentNode;)a.unshift(r);for(r=e;r=r.parentNode;)s.unshift(r);for(;a[i]===s[i];)i++;return i?ht(a[i],s[i]):a[i]===_?-1:s[i]===_?1:0}),T},ot.matches=function(t,e){return ot(t,null,null,e)},ot.matchesSelector=function(t,e){if((t.ownerDocument||t)!==T&&w(t),e=e.replace(q,"='$1']"),p.matchesSelector&&k&&!C[e+" "]&&(!s||!s.test(e))&&(!g||!g.test(e)))try{var r=h.call(t,e);if(r||p.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace($,tt),t[3]=(t[3]||t[4]||t[5]||"").replace($,tt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||ot.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&ot.error(t[0]),t},PSEUDO:function(t){var e,r=!t[6]&&t[2];return V.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":r&&W.test(r)&&(e=d(r,!0))&&(e=r.indexOf(")",r.length-e)-r.length)&&(t[0]=t[0].slice(0,e),t[2]=r.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace($,tt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=f[t+" "];return e||(e=new RegExp("(^|"+F+")"+t+"("+F+"|$)"))&&f(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(r,i,n){return function(t){var e=ot.attr(t,r);return null==e?"!="===i:!i||(e+="","="===i?e===n:"!="===i?e!==n:"^="===i?n&&0===e.indexOf(n):"*="===i?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function E(t,r,i){return _(r)?S.grep(t,function(t,e){return!!r.call(t,e,t)!==i}):r.nodeType?S.grep(t,function(t){return t===r!==i}):"string"!=typeof r?S.grep(t,function(t){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(t,e,r){var i,n;if(!t)return this;if(r=r||I,"string"!=typeof t)return t.nodeType?(this[0]=t,this.length=1,this):_(t)?void 0!==r.ready?r.ready(t):t(S):S.makeArray(t,this);if(!(i="<"===t[0]&&">"===t[t.length-1]&&3<=t.length?[null,t,null]:O.exec(t))||!i[1]&&e)return!e||e.jquery?(e||r).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof S?e[0]:e,S.merge(this,S.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:k,!0)),A.test(i[1])&&S.isPlainObject(e))for(i in e)_(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(n=k.getElementById(i[2]))&&(this[0]=n,this.length=1),this}).prototype=S.fn,I=S(k);var M=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};function z(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}S.fn.extend({has:function(t){var e=S(t,this),r=e.length;return this.filter(function(){for(var t=0;t\x20\t\r\n\f]+)/i,ht=/^$|^module$|\/(?:java|ecma)script/i,ct={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ft(t,e){var r;return r=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&C(t,e)?S.merge([t],r):r}function pt(t,e){for(var r=0,i=t.length;rx",v.noCloneChecked=!!dt.cloneNode(!0).lastChild.defaultValue;var _t=k.documentElement,yt=/^key/,bt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,xt=/^([^.]*)(?:\.(.+)|)/;function wt(){return!0}function Tt(){return!1}function kt(){try{return k.activeElement}catch(t){}}function St(t,e,r,i,n,o){var a,s;if("object"==typeof e){for(s in"string"!=typeof r&&(i=i||r,r=void 0),e)St(t,s,r,i,e[s],o);return t}if(null==i&&null==n?(n=r,i=r=void 0):null==n&&("string"==typeof r?(n=i,i=void 0):(n=i,i=r,r=void 0)),!1===n)n=Tt;else if(!n)return t;return 1===o&&(a=n,(n=function(t){return S().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),t.each(function(){S.event.add(this,e,n,i,r)})}S.event={global:{},add:function(e,t,r,i,n){var o,a,s,l,u,h,c,f,p,d,m,g=Z.get(e);if(g)for(r.handler&&(r=(o=r).handler,n=o.selector),n&&S.find.matchesSelector(_t,n),r.guid||(r.guid=S.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return void 0!==S&&S.event.triggered!==t.type?S.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(R)||[""]).length;u--;)p=m=(s=xt.exec(t[u])||[])[1],d=(s[2]||"").split(".").sort(),p&&(c=S.event.special[p]||{},p=(n?c.delegateType:c.bindType)||p,c=S.event.special[p]||{},h=S.extend({type:p,origType:m,data:i,handler:r,guid:r.guid,selector:n,needsContext:n&&S.expr.match.needsContext.test(n),namespace:d.join(".")},o),(f=l[p])||((f=l[p]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,i,d,a)||e.addEventListener&&e.addEventListener(p,a)),c.add&&(c.add.call(e,h),h.handler.guid||(h.handler.guid=r.guid)),n?f.splice(f.delegateCount++,0,h):f.push(h),S.event.global[p]=!0)},remove:function(t,e,r,i,n){var o,a,s,l,u,h,c,f,p,d,m,g=Z.hasData(t)&&Z.get(t);if(g&&(l=g.events)){for(u=(e=(e||"").match(R)||[""]).length;u--;)if(p=m=(s=xt.exec(e[u])||[])[1],d=(s[2]||"").split(".").sort(),p){for(c=S.event.special[p]||{},f=l[p=(i?c.delegateType:c.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=f.length;o--;)h=f[o],!n&&m!==h.origType||r&&r.guid!==h.guid||s&&!s.test(h.namespace)||i&&i!==h.selector&&("**"!==i||!h.selector)||(f.splice(o,1),h.selector&&f.delegateCount--,c.remove&&c.remove.call(t,h));a&&!f.length&&(c.teardown&&!1!==c.teardown.call(t,d,g.handle)||S.removeEvent(t,p,g.handle),delete l[p])}else for(p in l)S.event.remove(t,p+e[u],r,i,!0);S.isEmptyObject(l)&&Z.remove(t,"handle events")}},dispatch:function(t){var e,r,i,n,o,a,s=S.event.fix(t),l=new Array(arguments.length),u=(Z.get(this,"events")||{})[s.type]||[],h=S.event.special[s.type]||{};for(l[0]=s,e=1;e\x20\t\r\n\f]*)[^>]*)\/>/gi,Ct=/\s*$/g;function It(t,e){return C(t,"table")&&C(11!==e.nodeType?e:e.firstChild,"tr")&&S(t).children("tbody")[0]||t}function Ot(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Mt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Dt(t,e){var r,i,n,o,a,s,l,u;if(1===e.nodeType){if(Z.hasData(t)&&(o=Z.access(t),a=Z.set(e,o),u=o.events))for(n in delete a.handle,a.events={},u)for(r=0,i=u[n].length;r")},clone:function(t,e,r){var i,n,o,a,s,l,u,h=t.cloneNode(!0),c=S.contains(t.ownerDocument,t);if(!(v.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||S.isXMLDoc(t)))for(a=ft(h),i=0,n=(o=ft(t)).length;i").prop({charset:r.scriptCharset,src:r.url}).on("load error",n=function(t){i.remove(),n=null,t&&e("error"===t.type?404:200,t.type)}),k.head.appendChild(i[0])},abort:function(){n&&n()}}});var Xe,He=[],qe=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=He.pop()||S.expando+"_"+be++;return this[t]=!0,t}}),S.ajaxPrefilter("json jsonp",function(t,e,r){var i,n,o,a=!1!==t.jsonp&&(qe.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&qe.test(t.data)&&"data");if(a||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=_(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(qe,"$1"+i):!1!==t.jsonp&&(t.url+=(xe.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return o||S.error(i+" was not called"),o[0]},t.dataTypes[0]="json",n=T[i],T[i]=function(){o=arguments},r.always(function(){void 0===n?S(T).removeProp(i):T[i]=n,t[i]&&(t.jsonpCallback=e.jsonpCallback,He.push(i)),o&&_(n)&&n(o[0]),o=n=void 0}),"script"}),v.createHTMLDocument=((Xe=k.implementation.createHTMLDocument("").body).innerHTML="
",2===Xe.childNodes.length),S.parseHTML=function(t,e,r){return"string"!=typeof t?[]:("boolean"==typeof e&&(r=e,e=!1),e||(v.createHTMLDocument?((i=(e=k.implementation.createHTMLDocument("")).createElement("base")).href=k.location.href,e.head.appendChild(i)):e=k),o=!r&&[],(n=A.exec(t))?[e.createElement(n[1])]:(n=vt([t],e,o),o&&o.length&&S(o).remove(),S.merge([],n.childNodes)));var i,n,o},S.fn.load=function(t,e,r){var i,n,o,a=this,s=t.indexOf(" ");return-1").append(S.parseHTML(t)).find(i):t)}).always(r&&function(t,e){a.each(function(){r.apply(this,o||[t.responseText,e,t])})}),this},S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){S.fn[e]=function(t){return this.on(e,t)}}),S.expr.pseudos.animated=function(e){return S.grep(S.timers,function(t){return e===t.elem}).length},S.offset={setOffset:function(t,e,r){var i,n,o,a,s,l,u=S.css(t,"position"),h=S(t),c={};"static"===u&&(t.style.position="relative"),s=h.offset(),o=S.css(t,"top"),l=S.css(t,"left"),n=("absolute"===u||"fixed"===u)&&-1<(o+l).indexOf("auto")?(a=(i=h.position()).top,i.left):(a=parseFloat(o)||0,parseFloat(l)||0),_(e)&&(e=e.call(t,r,S.extend({},s))),null!=e.top&&(c.top=e.top-s.top+a),null!=e.left&&(c.left=e.left-s.left+n),"using"in e?e.using.call(t,c):h.css(c)}},S.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){S.offset.setOffset(this,e,t)});var t,r,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),r=i.ownerDocument.defaultView,{top:t.top+r.pageYOffset,left:t.left+r.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,r,i=this[0],n={top:0,left:0};if("fixed"===S.css(i,"position"))e=i.getBoundingClientRect();else{for(e=this.offset(),r=i.ownerDocument,t=i.offsetParent||r.documentElement;t&&(t===r.body||t===r.documentElement)&&"static"===S.css(t,"position");)t=t.parentNode;t&&t!==i&&1===t.nodeType&&((n=S(t).offset()).top+=S.css(t,"borderTopWidth",!0),n.left+=S.css(t,"borderLeftWidth",!0))}return{top:e.top-n.top-S.css(i,"marginTop",!0),left:e.left-n.left-S.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===S.css(t,"position");)t=t.offsetParent;return t||_t})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var o="pageYOffset"===n;S.fn[e]=function(t){return X(this,function(t,e,r){var i;if(y(t)?i=t:9===t.nodeType&&(i=t.defaultView),void 0===r)return i?i[n]:t[e];i?i.scrollTo(o?i.pageXOffset:r,o?r:i.pageYOffset):t[e]=r},e,t,arguments.length)}}),S.each(["top","left"],function(t,r){S.cssHooks[r]=Bt(v.pixelPosition,function(t,e){if(e)return e=Nt(t,r),Ft.test(e)?S(t).position()[r]+"px":e})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(i,o){S.fn[o]=function(t,e){var r=arguments.length&&(i||"boolean"!=typeof t),n=i||(!0===t||!0===e?"margin":"border");return X(this,function(t,e,r){var i;return y(t)?0===o.indexOf("outer")?t["inner"+a]:t.document.documentElement["client"+a]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+a],i["scroll"+a],t.body["offset"+a],i["offset"+a],i["client"+a])):void 0===r?S.css(t,e,n):S.style(t,e,r,n)},s,r?t:void 0,r)}})}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,r){S.fn[r]=function(t,e){return 0>>0,i=(r*=i)>>>0,i+=4294967296*(r-=i)}return 2.3283064365386963e-10*(i>>>0)}}();e.next=function(){var t=2091639*e.s0+2.3283064365386963e-10*e.c;return e.s0=e.s1,e.s1=e.s2,e.s2=t-(e.c=0|t)},e.c=1,e.s0=r(" "),e.s1=r(" "),e.s2=r(" "),e.s0-=r(t),e.s0<0&&(e.s0+=1),e.s1-=r(t),e.s1<0&&(e.s1+=1),e.s2-=r(t),e.s2<0&&(e.s2+=1),r=null}function a(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function i(t,e){var r=new o(t),i=e&&e.state,n=r.next;return n.int32=function(){return 4294967296*r.next()|0},n.double=function(){return n()+11102230246251565e-32*(2097152*n()|0)},n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.alea=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],16:[function(t,e,r){!function(t,e,r){function o(t){var n=this,e="";n.next=function(){var t=n.b,e=n.c,r=n.d,i=n.a;return t=t<<25^t>>>7^e,e=e-r|0,r=r<<24^r>>>8^i,i=i-t|0,n.b=t=t<<20^t>>>12^e,n.c=e=e-r|0,n.d=r<<16^e>>>16^i,n.a=i-t|0},n.a=0,n.b=0,n.c=-1640531527,n.d=1367130551,t===Math.floor(t)?(n.a=t/4294967296|0,n.b=0|t):e+=t;for(var r=0;r>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.tychei=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],17:[function(t,e,r){!function(t,e,r){function o(t){var e=this,r="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:r+=t;for(var i=0;i>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xor128=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],18:[function(t,e,r){!function(t,e,r){function o(t){var o=this;o.next=function(){var t,e,r=o.w,i=o.X,n=o.i;return o.w=r=r+1640531527|0,e=i[n+34&127],t=i[n=n+1&127],e^=e<<13,t^=t<<17,e^=e>>>15,t^=t>>>12,e=i[n]=e^t,o.i=n,e+(r^r>>>16)|0},function(t,e){var r,i,n,o,a,s=[],l=128;for(e===(0|e)?(i=e,e=null):(e+="\0",i=0,l=Math.max(l,e.length)),n=0,o=-32;o>>15,i^=i<<4,i^=i>>>13,0<=o&&(a=a+1640531527|0,n=0==(r=s[127&o]^=i+a)?n+1:0);for(128<=n&&(s[127&(e&&e.length||0)]=-1),n=127,o=512;0>>15,r^=r>>>12,s[n]=i^r;t.w=a,t.X=s,t.i=n}(o,t)}function a(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function i(t,e){null==t&&(t=+new Date);var r=new o(t),i=e&&e.state,n=function(){return(r.next()>>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&(i.X&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xor4096=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],19:[function(t,e,r){!function(t,e,r){function o(t){var n=this;n.next=function(){var t,e,r=n.x,i=n.i;return t=r[i],e=(t^=t>>>7)^t<<24,e^=(t=r[i+1&7])^t>>>10,e^=(t=r[i+3&7])^t>>>3,e^=(t=r[i+4&7])^t<<7,t=r[i+7&7],e^=(t^=t<<13)^t<<9,r[i]=e,n.i=i+1&7,e},function(t,e){var r,i=[];if(e===(0|e))i[0]=e;else for(e=""+e,r=0;r>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&(i.x&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xorshift7=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],20:[function(t,e,r){!function(t,e,r){function o(t){var e=this,r="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,t===((e.v=0)|t)?e.x=t:r+=t;for(var i=0;i>>4),e.next()}function a(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function i(t,e){var r=new o(t),i=e&&e.state,n=function(){return(r.next()>>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xorwow=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],21:[function(e,r,t){!function(s,l){var u,h=this,c=256,f=6,p="random",d=l.pow(c,f),m=l.pow(2,52),g=2*m,v=c-1;function t(t,e,r){var i=[],n=b(function t(e,r){var i,n=[],o=typeof e;if(r&&"object"==o)for(i in e)try{n.push(t(e[i],r-1))}catch(t){}return n.length?n:"string"==o?e:e+"\0"}((e=1==e?{entropy:!0}:e||{}).entropy?[t,x(s)]:null==t?function(){try{var t;return u&&(t=u.randomBytes)?t=t(c):(t=new Uint8Array(c),(h.crypto||h.msCrypto).getRandomValues(t)),x(t)}catch(t){var e=h.navigator,r=e&&e.plugins;return[+new Date,h,r,h.screen,x(s)]}}():t,3),i),o=new _(i),a=function(){for(var t=o.g(f),e=d,r=0;t>>=1;return(t+r)/e};return a.int32=function(){return 0|o.g(4)},a.quick=function(){return o.g(4)/4294967296},a.double=a,b(x(o.S),s),(e.pass||r||function(t,e,r,i){return i&&(i.S&&y(i,o),t.state=function(){return y(o,{})}),r?(l[p]=t,e):t})(a,n,"global"in e?e.global:this==l,e.state)}function _(t){var e,r=t.length,a=this,i=0,n=a.i=a.j=0,o=a.S=[];for(r||(t=[r++]);iMath.PI?c-r:r}function g(t){return t-c*Math.floor(t/c)}e.exports={UP:o,DOWN:a,LEFT:s,RIGHT:0,NORTH:l,SOUTH:u,WEST:h,EAST:0,PI_2:c,PI_QUARTER:f,PI_HALF:p,toDegrees:function(t){return t*i},toRadians:function(t){return t*n},isAngleBetween:function(t,e,r){if(((r-e)%c+c)%c>=Math.PI){var i=e;e=r,r=i}return e<=r?e<=t&&t<=r:e<=t||t<=r},differenceAnglesSign:d,differenceAngles:m,shortestAngle:function(t,e){return m(e,t)*d(e,t)+t},normalize:g,angleTwoPoints:function(){return 4===arguments.length?Math.atan2(arguments[3]-arguments[1],arguments[2]-arguments[0]):Math.atan2(arguments[1].y-arguments[0].y,arguments[1].x-arguments[0].x)},distanceTwoPoints:function(){return 2===arguments.length?Math.sqrt(Math.pow(arguments[1].x-arguments[0].x,2)+Math.pow(arguments[1].y-arguments[0].y,2)):Math.sqrt(Math.pow(arguments[2]-arguments[0],2)+Math.pow(arguments[3]-arguments[1],2))},distanceTwoPointsSquared:function(){return 2===arguments.length?Math.pow(arguments[1].x-arguments[0].x,2)+Math.pow(arguments[1].y-arguments[0].y,2):Math.pow(arguments[2]-arguments[0],2)+Math.pow(arguments[3]-arguments[1],2)},closestAngle:function(t){var e=m(t,s),r=m(t,0),i=m(t,o),n=m(t,a);return e<=r&&e<=i&&e<=n?s:r<=i&&r<=n?0:i<=n?o:a},equals:function(t,e,r){return r?m(t,e)>16)+t*(r>>16)<<16|i*(e>>8&255)+t*(r>>8&255)<<8|i*(255&e)+t*(255&r)},random:function(t,e){function r(){return s.range(t,e)}var i=s.pick([{r:1,g:1,b:1},{r:1,g:1,b:0},{r:1,g:0,b:1},{r:0,g:1,b:1},{r:1,g:0,b:0},{r:0,g:1,b:0},{r:0,g:0,b:1}]);return t=t||0,e=e||255,this.rgbToHex(i.r?r():0,i.g?r():0,i.b?r():0)},randomHSL:function(t,e,r,i,n,o){var a={h:s.range(t,e),s:s.range(r,i,!0),l:s.range(n,o,!0)};return this.hslToHex(a)},randomGoldenRatioHSL:function(t,e,r){for(var i=s.get(1,!0),n=[],o=0;o=this.time?(this.parent.x=e.end,this.toX=null,this.parent.emit("bounce-x-end",this.parent)):this.parent.x=this.ease(e.time,e.start,e.delta,this.time),this.parent.dirty=!0}if(this.toY){var r=this.toY;r.time+=t,this.parent.emit("moved",{viewport:this.parent,type:"bounce-y"}),r.time>=this.time?(this.parent.y=r.end,this.toY=null,this.parent.emit("bounce-y-end",this.parent)):this.parent.y=this.ease(r.time,r.start,r.delta,this.time),this.parent.dirty=!0}}}},{key:"calcUnderflowX",value:function(){var t=void 0;switch(this.underflowX){case-1:t=0;break;case 1:t=this.parent.screenWidth-this.parent.screenWorldWidth;break;default:t=(this.parent.screenWidth-this.parent.screenWorldWidth)/2}return t}},{key:"calcUnderflowY",value:function(){var t=void 0;switch(this.underflowY){case-1:t=0;break;case 1:t=this.parent.screenHeight-this.parent.screenWorldHeight;break;default:t=(this.parent.screenHeight-this.parent.screenWorldHeight)/2}return t}},{key:"bounce",value:function(){if(!this.paused){var t=void 0,e=this.parent.plugins.decelerate;e&&(e.x||e.y)&&(e.x&&e.percentChangeX===e.friction||e.y&&e.percentChangeY===e.friction)&&(((t=this.parent.OOB()).left&&this.left||t.right&&this.right)&&(e.percentChangeX=this.friction),(t.top&&this.top||t.bottom&&this.bottom)&&(e.percentChangeY=this.friction));var r=this.parent.plugins.drag||{},i=this.parent.plugins.pinch||{};if(e=e||{},!(r.active||i.active||this.toX&&this.toY||e.x&&e.y)){var n=(t=t||this.parent.OOB()).cornerPoint;if(!this.toX&&!e.x){var o=null;t.left&&this.left?o=this.parent.screenWorldWidththis.maxWidth&&(this.parent.fitWidth(this.maxWidth),t=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})),this.minHeight&&ethis.maxHeight&&(this.parent.fitHeight(this.maxHeight),this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"}))}}}]),i}()},{"./plugin":9}],3:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r(!0===this.right?this.parent.worldWidth:this.right)&&(this.parent.x=-(!0===this.right?this.parent.worldWidth:this.right)*this.parent.scale.x+this.parent.screenWidth,e=!(t.x=0));e&&this.parent.emit("moved",{viewport:this.parent,type:"clamp-x"})}if(null!==this.top||null!==this.bottom){var r=void 0;if(this.parent.screenWorldHeight(!0===this.bottom?this.parent.worldHeight:this.bottom)&&(this.parent.y=-(!0===this.bottom?this.parent.worldHeight:this.bottom)*this.parent.scale.y+this.parent.screenHeight,r=!(t.y=0));r&&this.parent.emit("moved",{viewport:this.parent,type:"clamp-y"})}}}}]),i}()},{"./plugin":9,"./utils":12}],4:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=t-100){var s=t-a.time;this.x=(this.parent.x-a.x)/s,this.y=(this.parent.y-a.y)/s,this.percentChangeX=this.percentChangeY=this.friction;break}}}catch(t){r=!0,i=t}finally{try{!e&&o.return&&o.return()}finally{if(r)throw i}}}}},{key:"activate",value:function(t){void 0!==(t=t||{}).x&&(this.x=t.x,this.percentChangeX=this.friction),void 0!==t.y&&(this.y=t.y,this.percentChangeY=this.friction)}},{key:"update",value:function(t){if(!this.paused){var e=void 0;this.x&&(this.parent.x+=this.x*t,this.x*=this.percentChangeX,Math.abs(this.x)this.parent.worldWidth&&(this.parent.x=-this.parent.worldWidth*this.parent.scale.x+this.parent.screenWidth,t.x=0);if("x"!==this.clampWheel)if(this.parent.screenWorldHeightthis.parent.worldHeight&&(this.parent.y=-this.parent.worldHeight*this.parent.scale.y+this.parent.screenHeight,t.y=0)}},{key:"active",get:function(){return this.moved}}]),i}()},{"./plugin":9,"./utils":12}],6:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;rthis.radius))return;var i=Math.atan2(this.target.y-t.y,this.target.x-t.x);e=this.target.x-Math.cos(i)*this.radius,r=this.target.y-Math.sin(i)*this.radius}if(this.speed){var n=e-t.x,o=r-t.y;if(n||o){var a=Math.atan2(r-t.y,e-t.x),s=Math.cos(a)*this.speed,l=Math.sin(a)*this.speed,u=Math.abs(s)>Math.abs(n)?e:t.x+s,h=Math.abs(l)>Math.abs(o)?r:t.y+l;this.parent.moveCenter(u,h),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}else this.parent.moveCenter(e,r),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}}]),n}()},{"./plugin":9}],7:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=this.radiusSquared){var n=Math.atan2(i.y-r,i.x-e);this.linear?(this.horizontal=Math.round(Math.cos(n))*this.speed*this.reverse*.06,this.vertical=Math.round(Math.sin(n))*this.speed*this.reverse*.06):(this.horizontal=Math.cos(n)*this.speed*this.reverse*.06,this.vertical=Math.sin(n)*this.speed*this.reverse*.06)}else this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=0}else o.exists(this.left)&&ethis.right?this.horizontal=-1*this.reverse*this.speed*.06:(this.decelerateHorizontal(),this.horizontal=0),o.exists(this.top)&&rthis.bottom?this.vertical=-1*this.reverse*this.speed*.06:(this.decelerateVertical(),this.vertical=0)}}},{key:"decelerateHorizontal",value:function(){var t=this.parent.plugins.decelerate;this.horizontal&&t&&!this.noDecelerate&&t.activate({x:this.horizontal*this.speed*this.reverse/(1e3/60)})}},{key:"decelerateVertical",value:function(){var t=this.parent.plugins.decelerate;this.vertical&&t&&!this.noDecelerate&&t.activate({y:this.vertical*this.speed*this.reverse/(1e3/60)})}},{key:"up",value:function(){this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=null}},{key:"update",value:function(){if(!this.paused&&(this.horizontal||this.vertical)){var t=this.parent.center;this.horizontal&&(t.x+=this.horizontal*this.speed),this.vertical&&(t.y+=this.vertical*this.speed),this.parent.moveCenter(t),this.parent.emit("moved",{viewport:this.parent,type:"mouse-edges"})}}}]),i}()},{"./plugin":9,"./utils":12}],8:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=this.time)this.parent.scale.set(this.x_scale,this.y_scale),this.removeOnComplete&&this.parent.removePlugin("snap-zoom"),this.parent.emit("snap-zoom-end",this.parent),this.snapping=null;else{var i=this.snapping;this.parent.scale.x=this.ease(i.time,i.startX,i.deltaX,this.time),this.parent.scale.y=this.ease(i.time,i.startY,i.deltaY,this.time)}var n=this.parent.plugins["clamp-zoom"];n&&n.clamp(),this.noMove||(this.center?this.parent.moveCenter(this.center):this.parent.moveCenter(e))}}else this.parent.scale.x===this.x_scale&&this.parent.scale.y===this.y_scale||this.createSnapping()}}},{key:"resume",value:function(){this.snapping=null,function t(e,r,i){null===e&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,r);if(void 0===n){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,r,i)}if("value"in n)return n.value;var a=n.get;return void 0!==a?a.call(i):void 0}(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"resume",this).call(this)}}]),i}()},{"./plugin":9,"./utils":12}],11:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;rthis.time)r=!0,i=this.startX+this.deltaX,n=this.startY+this.deltaY;else{var o=this.ease(e.time,0,1,this.time);i=this.startX+this.deltaX*o,n=this.startY+this.deltaY*o}this.topLeft?this.parent.moveCorner(i,n):this.parent.moveCenter(i,n),this.parent.emit("moved",{viewport:this.parent,type:"snap"}),r&&(this.removeOnComplete&&this.parent.removePlugin("snap"),this.parent.emit("snap-end",this.parent),this.snapping=null)}else{var a=this.topLeft?this.parent.corner:this.parent.center;a.x===this.x&&a.y===this.y||this.snapStart()}}}]),o}()},{"./plugin":9,"./utils":12}],12:[function(t,e,r){"use strict";var i=t("penner");function n(t){return null!=t}e.exports={exists:n,defaults:function(t,e){return null!=t?t:e},ease:function(t,e){return n(t)?"function"==typeof t?t:"string"==typeof t?i[t]:void 0:i[e]}}},{penner:15}],13:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;r=this.threshold}},{key:"move",value:function(t){if(!this.pause){var e=!0,r=!1,i=void 0;try{for(var n,o=this.pluginsList[Symbol.iterator]();!(e=(n=o.next()).done);e=!0){n.value.move(t)}}catch(t){r=!0,i=t}finally{try{!e&&o.return&&o.return()}finally{if(r)throw i}}if(this.clickedAvailable){var a=t.data.global.x-this.last.x,s=t.data.global.y-this.last.y;(this.checkThreshold(a)||this.checkThreshold(s))&&(this.clickedAvailable=!1)}}}},{key:"up",value:function(t){if(!this.pause){if(t.data.originalEvent instanceof MouseEvent&&0==t.data.originalEvent.button&&(this.leftDown=!1),"mouse"!==t.data.pointerType)for(var e=0;ethis._worldWidth,t.top=this.top<0,t.bottom=this.bottom>this._worldHeight,t.cornerPoint={x:this._worldWidth*this.scale.x-this._screenWidth,y:this._worldHeight*this.scale.y-this._screenHeight},t}},{key:"countDownPointers",value:function(){return(this.leftDown?1:0)+this.touches.length}},{key:"getTouchPointers",value:function(){var t=[],e=this.trackedPointers;for(var r in e){var i=e[r];-1!==this.touches.indexOf(i.pointerId)&&t.push(i)}return t}},{key:"getPointers",value:function(){var t=[],e=this.trackedPointers;for(var r in e)t.push(e[r]);return t}},{key:"_reset",value:function(){this.plugins.bounce&&(this.plugins.bounce.reset(),this.plugins.bounce.bounce()),this.plugins.decelerate&&this.plugins.decelerate.reset(),this.plugins.snap&&this.plugins.snap.reset(),this.plugins.clamp&&this.plugins.clamp.update(),this.plugins["clamp-zoom"]&&this.plugins["clamp-zoom"].clamp(),this.dirty=!0}},{key:"removePlugin",value:function(t){this.plugins[t]&&(this.plugins[t]=null,this.emit(t+"-remove"),this.pluginsSort())}},{key:"pausePlugin",value:function(t){this.plugins[t]&&this.plugins[t].pause()}},{key:"resumePlugin",value:function(t){this.plugins[t]&&this.plugins[t].resume()}},{key:"pluginsSort",value:function(){var t=!0,e=!(this.pluginsList=[]),r=void 0;try{for(var i,n=g[Symbol.iterator]();!(t=(i=n.next()).done);t=!0){var o=i.value;this.plugins[o]&&this.pluginsList.push(this.plugins[o])}}catch(t){e=!0,r=t}finally{try{!t&&n.return&&n.return()}finally{if(e)throw r}}}},{key:"drag",value:function(t){return this.plugins.drag=new o(this,t),this.pluginsSort(),this}},{key:"clamp",value:function(t){return this.plugins.clamp=new s(this,t),this.pluginsSort(),this}},{key:"decelerate",value:function(t){return this.plugins.decelerate=new u(this,t),this.pluginsSort(),this}},{key:"bounce",value:function(t){return this.plugins.bounce=new h(this,t),this.pluginsSort(),this}},{key:"pinch",value:function(t){return this.plugins.pinch=new a(this,t),this.pluginsSort(),this}},{key:"snap",value:function(t,e,r){return this.plugins.snap=new c(this,t,e,r),this.pluginsSort(),this}},{key:"follow",value:function(t,e){return this.plugins.follow=new p(this,t,e),this.pluginsSort(),this}},{key:"wheel",value:function(t){return this.plugins.wheel=new d(this,t),this.pluginsSort(),this}},{key:"clampZoom",value:function(t){return this.plugins["clamp-zoom"]=new l(this,t),this.pluginsSort(),this}},{key:"mouseEdges",value:function(t){return this.plugins["mouse-edges"]=new m(this,t),this.pluginsSort(),this}},{key:"screenWidth",get:function(){return this._screenWidth},set:function(t){this._screenWidth=t}},{key:"screenHeight",get:function(){return this._screenHeight},set:function(t){this._screenHeight=t}},{key:"worldWidth",get:function(){return this._worldWidth?this._worldWidth:this.width},set:function(t){this._worldWidth=t,this.resizePlugins()}},{key:"worldHeight",get:function(){return this._worldHeight?this._worldHeight:this.height},set:function(t){this._worldHeight=t,this.resizePlugins()}},{key:"worldScreenWidth",get:function(){return this._screenWidth/this.scale.x}},{key:"worldScreenHeight",get:function(){return this._screenHeight/this.scale.y}},{key:"screenWorldWidth",get:function(){return this._worldWidth*this.scale.x}},{key:"screenWorldHeight",get:function(){return this._worldHeight*this.scale.y}},{key:"center",get:function(){return{x:this.worldScreenWidth/2-this.x/this.scale.x,y:this.worldScreenHeight/2-this.y/this.scale.y}},set:function(t){this.moveCenter(t)}},{key:"corner",get:function(){return{x:-this.x/this.scale.x,y:-this.y/this.scale.y}},set:function(t){this.moveCorner(t)}},{key:"right",get:function(){return-this.x/this.scale.x+this.worldScreenWidth},set:function(t){this.x=-t*this.scale.x+this.screenWidth,this._reset()}},{key:"left",get:function(){return-this.x/this.scale.x},set:function(t){this.x=-t*this.scale.x,this._reset()}},{key:"top",get:function(){return-this.y/this.scale.y},set:function(t){this.y=-t*this.scale.y,this._reset()}},{key:"bottom",get:function(){return-this.y/this.scale.y+this.worldScreenHeight},set:function(t){this.y=-t*this.scale.y+this.screenHeight,this._reset()}},{key:"dirty",get:function(){return this._dirty},set:function(t){this._dirty=t}},{key:"forceHitArea",get:function(){return this._forceHitArea},set:function(t){t?(this._forceHitArea=t,this.hitArea=t):(this._forceHitArea=!1,this.hitArea=new PIXI.Rectangle(0,0,this.worldWidth,this.worldHeight))}},{key:"pause",get:function(){return this._pause},set:function(t){(this._pause=t)&&(this.touches=[],this.leftDown=!1)}}]),r}();PIXI.extras.Viewport=v,e.exports=v},{"./bounce":1,"./clamp":3,"./clamp-zoom":2,"./decelerate":4,"./drag":5,"./follow":6,"./mouse-edges":7,"./pinch":8,"./snap":11,"./snap-zoom":10,"./utils":12,"./wheel":14}],14:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;re&&(r[i]=this.hyphenate(r[i]).join("­"));return r.join("")},e.prototype.hyphenate=function(t){var e,r,i,n,o,a,s,l,u,h=[],c=[],f=t.toLowerCase(),p=Math.max,d=this.trie,m=[""];if(this.exceptions.hasOwnProperty(f))return t.match(this.exceptions[f]).slice(1);if(-1!==t.indexOf("­"))return[t];for(e=(t="_"+t+"_").toLowerCase().split(""),r=t.split(""),s=e.length,i=0;ithis.leftMin&&i@~]/g,"\\$&").replace(/\n/g,"A")}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCommonAncestor=function(t){var e=(1 /g,">").split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);if(i.length<2)return f("",t,"",e);var n=[i.pop()];for(;1/g,"> ").trim()};var i,n=r(3),h=(i=n)&&i.__esModule?i:{default:i},c=r(0);function f(r,i,n,o){if(r.length&&(r+=" "),n.length&&(n=" "+n),/\[*\]/.test(i)){var t=i.replace(/=.*$/,"]"),a=""+r+t+n;if(g(document.querySelectorAll(a),o))i=t;else for(var s=document.querySelectorAll(""+r+t),e=function(){var e=s[l];if(o.some(function(t){return e.contains(t)})){var t=e.tagName.toLowerCase();return a=""+r+t+n,g(document.querySelectorAll(a),o)&&(i=t),"break"}},l=0,u=s.length;l/.test(i)){var h=i.replace(/>/,"");a=""+r+h+n;g(document.querySelectorAll(a),o)&&(i=h)}if(/:nth-child/.test(i)){var c=i.replace(/nth-child/g,"nth-of-type");a=""+r+c+n;g(document.querySelectorAll(a),o)&&(i=c)}if(/\.\S+\.\S+/.test(i)){for(var f=i.trim().split(".").slice(1).map(function(t){return"."+t}).sort(function(t,e){return t.length-e.length});f.length;){var p=i.replace(f.shift(),"").trim();if(!(a=(""+r+p+n).trim()).length||">"===a.charAt(0)||">"===a.charAt(a.length-1))break;g(document.querySelectorAll(a),o)&&(i=p)}if((f=i&&i.match(/\./g))&&2/.test(s):u=function(e){return function(t){return t(e.parent)&&e.parent}};break;case/^\./.test(s):var r=s.substr(1).split(".");l=function(t){var e=t.attribs.class;return e&&r.every(function(t){return-1)(\S)/g,"$1 $2").trim()),e=i.shift(),n=i.length;return e(this).filter(function(t){for(var e=0;e\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",r=o.console&&(o.console.warn||o.console.log);return r&&r.call(o.console,n,e),i.apply(this,arguments)}}a="function"!=typeof Object.assign?function(t){if(t===c||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),r=1;re[r]}):i.sort()),i}function E(t,e){for(var r,i,n=e[0].toUpperCase()+e.slice(1),o=0;of(u.y)?u.x:u.y,e.scale=a?function(t,e){return it(e[0],e[1],J)/it(t[0],t[1],J)}(a.pointers,i):1,e.rotation=a?function(t,e){return nt(e[1],e[0],J)+nt(t[1],t[0],J)}(a.pointers,i):0,e.maxPointers=r.prevInput?e.pointers.length>r.prevInput.maxPointers?e.pointers.length:r.prevInput.maxPointers:e.pointers.length,function(t,e){var r,i,n,o,a=t.lastInterval||e,s=e.timeStamp-a.timeStamp;if(e.eventType!=B&&(jf(h.y)?h.x:h.y,o=rt(l,u),t.lastInterval=e}else r=a.velocity,i=a.velocityX,n=a.velocityY,o=a.direction;e.velocity=r,e.velocityX=i,e.velocityY=n,e.direction=o}(r,e);var h=t.element;T(e.srcEvent.target,h)&&(h=e.srcEvent.target);e.target=h}(t,r),t.emit("hammer.input",r),t.recognize(r),t.session.prevInput=r}function $(t){for(var e=[],r=0;r=f(e)?t<0?X:H:e<0?q:W}function it(t,e,r){r||(r=Z);var i=e[r[0]]-t[r[0]],n=e[r[1]]-t[r[1]];return Math.sqrt(i*i+n*n)}function nt(t,e,r){r||(r=Z);var i=e[r[0]]-t[r[0]],n=e[r[1]]-t[r[1]];return 180*Math.atan2(n,i)/Math.PI}K.prototype={handler:function(){},init:function(){this.evEl&&x(this.element,this.evEl,this.domHandler),this.evTarget&&x(this.target,this.evTarget,this.domHandler),this.evWin&&x(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&w(this.element,this.evEl,this.domHandler),this.evTarget&&w(this.target,this.evTarget,this.domHandler),this.evWin&&w(O(this.element),this.evWin,this.domHandler)}};var ot={mousedown:L,mousemove:2,mouseup:N},at="mousedown",st="mousemove mouseup";function lt(){this.evEl=at,this.evWin=st,this.pressed=!1,K.apply(this,arguments)}v(lt,K,{handler:function(t){var e=ot[t.type];e&L&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=N),this.pressed&&(e&N&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:F,srcEvent:t}))}});var ut={pointerdown:L,pointermove:2,pointerup:N,pointercancel:B,pointerout:B},ht={2:R,3:"pen",4:F,5:"kinect"},ct="pointerdown",ft="pointermove pointerup pointercancel";function pt(){this.evEl=ct,this.evWin=ft,K.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ct="MSPointerDown",ft="MSPointerMove MSPointerUp MSPointerCancel"),v(pt,K,{handler:function(t){var e=this.store,r=!1,i=t.type.toLowerCase().replace("ms",""),n=ut[i],o=ht[t.pointerType]||t.pointerType,a=o==R,s=P(e,t.pointerId,"pointerId");n&L&&(0===t.button||a)?s<0&&(e.push(t),s=e.length-1):n&(N|B)&&(r=!0),s<0||(e[s]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),r&&e.splice(s,1))}});var dt={touchstart:L,touchmove:2,touchend:N,touchcancel:B};function mt(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,K.apply(this,arguments)}v(mt,K,{handler:function(t){var e=dt[t.type];if(e===L&&(this.started=!0),this.started){var r=function(t,e){var r=C(t.touches),i=C(t.changedTouches);e&(N|B)&&(r=A(r.concat(i),"identifier",!0));return[r,i]}.call(this,t,e);e&(N|B)&&r[0].length-r[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:r[0],changedPointers:r[1],pointerType:R,srcEvent:t})}}});var gt={touchstart:L,touchmove:2,touchend:N,touchcancel:B},vt="touchstart touchmove touchend touchcancel";function _t(){this.evTarget=vt,this.targetIds={},K.apply(this,arguments)}v(_t,K,{handler:function(t){var e=gt[t.type],r=function(t,e){var r=C(t.touches),i=this.targetIds;if(e&(2|L)&&1===r.length)return i[r[0].identifier]=!0,[r,r];var n,o,a=C(t.changedTouches),s=[],l=this.target;if(o=r.filter(function(t){return T(t.target,l)}),e===L)for(n=0;ne.threshold&&n&e.direction},attrTest:function(t){return Ft.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=zt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),v(Lt,Ft,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Pt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),v(Nt,Mt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(t){var e=this.options,r=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!r||t.eventType&(N|B)&&!n)this.reset();else if(t.eventType&L)this.reset(),this._timer=u(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&N)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&N?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=p(),this.manager.emit(this.options.event,this._input)))}}),v(Bt,Ft,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Pt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),v(Ut,Ft,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:G|V,pointers:1},getTouchAction:function(){return jt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,r=this.options.direction;return r&(G|V)?e=t.overallVelocity:r&G?e=t.overallVelocityX:r&V&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&r&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&f(e)>this.options.velocity&&t.eventType&N},emit:function(t){var e=zt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),v(Xt,Mt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[St]},process:function(t){var e=this.options,r=t.pointers.length===e.pointers,i=t.distance80*r){i=o=t[0],n=a=t[1];for(var d=r;do.x?n.x>a.x?n.x:a.x:o.x>a.x?o.x:a.x,h=n.y>o.y?n.y>a.y?n.y:a.y:o.y>a.y?o.y:a.y,c=E(s,l,e,r,i),f=E(u,h,e,r,i),p=t.prevZ,d=t.nextZ;p&&p.z>=c&&d&&d.z<=f;){if(p!==t.prev&&p!==t.next&&O(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&0<=M(p.prev,p,p.next))return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&O(n.x,n.y,o.x,o.y,a.x,a.y,d.x,d.y)&&0<=M(d.prev,d,d.next))return!1;d=d.nextZ}for(;p&&p.z>=c;){if(p!==t.prev&&p!==t.next&&O(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&0<=M(p.prev,p,p.next))return!1;p=p.prevZ}for(;d&&d.z<=f;){if(d!==t.prev&&d!==t.next&&O(n.x,n.y,o.x,o.y,a.x,a.y,d.x,d.y)&&0<=M(d.prev,d,d.next))return!1;d=d.nextZ}return!0}function k(t,e,r){var i=t;do{var n=i.prev,o=i.next.next;!z(n,o)&&R(n,i,i.next,o)&&L(n,o)&&L(o,n)&&(e.push(n.i/r),e.push(i.i/r),e.push(o.i/r),U(i),U(i.next),i=t=o),i=i.next}while(i!==t);return b(i)}function S(t,e,r,i,n,o){var a,s,l=t;do{for(var u=l.next.next;u!==l.prev;){if(l.i!==u.i&&(s=u,(a=l).next.i!==s.i&&a.prev.i!==s.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&R(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(a,s)&&(L(a,s)&&L(s,a)&&function(t,e){var r=t,i=!1,n=(t.x+e.x)/2,o=(t.y+e.y)/2;for(;r.y>o!=r.next.y>o&&r.next.y!==r.y&&n<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next,r!==t;);return i}(a,s)&&(M(a.prev,a,s.prev)||M(a,s.prev,s))||z(a,s)&&0=i.next.y&&i.next.y!==i.y){var s=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&a=i.x&&i.x>=h&&n!==i.x&&O(or.x||i.x===r.x&&(d=i,M((p=r).prev,p,d.prev)<0&&M(d.next,p,p.next)<0)))&&(r=i,f=l)),i=i.next,i!==u;);var p,d;return r}(t,e)){var r=N(e,t);b(r,r.next)}}function E(t,e,r,i,n){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*n)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*n)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function I(t){for(var e=t,r=t;(e.x=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function j(t){return 0= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=_-y,k=Math.floor,S=String.fromCharCode;function P(t){throw RangeError(c[t])}function p(t,e){for(var r=t.length,i=[];r--;)i[r]=e(t[r]);return i}function d(t,e){var r=t.split("@"),i="";return 1>>10&1023|55296),t=56320|1023&t),e+=S(t)}).join("")}function E(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function I(t,e,r){var i=0;for(t=r?k(t/s):t>>1,t+=k(t/e);f*b>>1k((v-d)/a))&&P("overflow"),d+=l*a,!(l<(u=s<=g?y:g+b<=s?b:s-g));s+=_)a>k(v/(h=_-u))&&P("overflow"),a*=h;g=I(d-o,e=f.length+1,0==o),k(d/e)>v-m&&P("overflow"),m+=k(d/e),d%=e,f.splice(d++,0,m)}return A(f)}function g(t){var e,r,i,n,o,a,s,l,u,h,c,f,p,d,m,g=[];for(f=(t=C(t)).length,e=w,o=x,a=r=0;ak((v-r)/(p=i+1))&&P("overflow"),r+=(s-e)*p,e=s,a=0;av&&P("overflow"),c==e){for(l=r,u=_;!(l<(h=u<=o?y:o+b<=u?b:u-o));u+=_)m=l-h,d=_-h,g.push(S(E(h+m%d,0))),l=k(m/d);g.push(S(E(l,0))),o=I(r,p,i==n),r=0,++i}++r,++e}return g.join("")}if(n={version:"1.3.2",ucs2:{decode:C,encode:A},decode:m,encode:g,toASCII:function(t){return d(t,function(t){return u.test(t)?"xn--"+g(t):t})},toUnicode:function(t){return d(t,function(t){return l.test(t)?m(t.slice(4).toLowerCase()):t})}},e&&r)if(O.exports==e)r.exports=n;else for(o in n)n.hasOwnProperty(o)&&(e[o]=n[o]);else t.punycode=n}(D)}),W={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}};W.isString,W.isObject,W.isNull,W.isNullOrUndefined;var G=function(t,e,r,i){e=e||"&",r=r||"=";var n={};if("string"!=typeof t||0===t.length)return n;var o=/\+/g;t=t.split(e);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var s,l,u=t.length;0",'"',"`"," ","\r","\n","\t"]),at=["'"].concat(ot),st=["%","/","?",";","#"].concat(at),lt=["/","?","#"],ut=/^[+a-z0-9A-Z_-]{0,63}$/,ht=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,ct={javascript:!0,"javascript:":!0},ft={javascript:!0,"javascript:":!0},pt={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function dt(t,e,r){if(t&&W.isObject(t)&&t instanceof et)return t;var i=new et;return i.parse(t,e,r),i}et.prototype.parse=function(t,e,r){if(!W.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),n=-1!==i&&i>16&255)/255,e[1]=(t>>8&255)/255,e[2]=(255&t)/255,e}function zt(t){return t=t.toString(16),"#"+(t="000000".substr(0,6-t.length)+t)}function Rt(t){return"string"==typeof t&&"#"===t[0]&&(t=t.substr(1)),parseInt(t,16)}var Ft=function(){for(var t=[],e=[],r=0;r<32;r++)e[t[r]=r]=r;t[_t.NORMAL_NPM]=_t.NORMAL,t[_t.ADD_NPM]=_t.ADD,t[_t.SCREEN_NPM]=_t.SCREEN,e[_t.NORMAL]=_t.NORMAL_NPM,e[_t.ADD]=_t.ADD_NPM,e[_t.SCREEN]=_t.SCREEN_NPM;var i=[];return i.push(e),i.push(t),i}();function jt(t,e){return Ft[e?1:0][t]}function Lt(t,e,r,i){return r=r||new Float32Array(4),i||void 0===i?(r[0]=t[0]*e,r[1]=t[1]*e,r[2]=t[2]*e):(r[0]=t[0],r[1]=t[1],r[2]=t[2]),r[3]=e,r}function Nt(t,e){if(1===e)return(255*e<<24)+t;if(0===e)return 0;var r=t>>16&255,i=t>>8&255,n=255&t;return(255*e<<24)+((r=r*e+.5|0)<<16)+((i=i*e+.5|0)<<8)+(n=n*e+.5|0)}function Bt(t,e,r,i){return(r=r||new Float32Array(4))[0]=(t>>16&255)/255,r[1]=(t>>8&255)/255,r[2]=(255&t)/255,(i||void 0===i)&&(r[0]*=e,r[1]*=e,r[2]*=e),r[3]=e,r}function Ut(t,e){void 0===e&&(e=null);var r=6*t;if((e=e||new Uint16Array(r)).length!==r)throw new Error("Out buffer length is incorrect, got "+e.length+" and expected "+r);for(var i=0,n=0;i>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)+1}function Vt(t){return!(t&t-1||!t)}function Yt(t){var e=(65535>>=e))<<3;return e|=r,e|=r=(15<(t>>>=r))<<2,(e|=r=(3<(t>>>=r))<<1)|(t>>>=r)>>1}var Zt={},Jt=Object.create(null),Kt=Object.create(null);function Qt(t){var e,r,i,n=t.width,o=t.height,a=t.getContext("2d"),s=a.getImageData(0,0,n,o).data,l=s.length,u={top:null,left:null,right:null,bottom:null},h=null;for(e=0;e=this.x&&t=this.y&&e=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){if(e>=this.y+this.radius&&e<=this.y+this.height-this.radius||t>=this.x+this.radius&&t<=this.x+this.width-this.radius)return!0;var r=t-(this.x+this.radius),i=e-(this.y+this.radius),n=this.radius*this.radius;if(r*r+i*i<=n)return!0;if((r=t-(this.x+this.width-this.radius))*r+i*i<=n)return!0;if(r*r+(i=e-(this.y+this.height-this.radius))*i<=n)return!0;if((r=t-(this.x+this.radius))*r+i*i<=n)return!0}return!1},P.SORTABLE_CHILDREN=!1;var ze=function(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null};ze.prototype.isEmpty=function(){return this.minX>this.maxX||this.minY>this.maxY},ze.prototype.clear=function(){this.updateID++,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0},ze.prototype.getRectangle=function(t){return this.minX>this.maxX||this.minY>this.maxY?Ce.EMPTY:((t=t||new Ce(0,0,1,1)).x=this.minX,t.y=this.minY,t.width=this.maxX-this.minX,t.height=this.maxY-this.minY,t)},ze.prototype.addPoint=function(t){this.minX=Math.min(this.minX,t.x),this.maxX=Math.max(this.maxX,t.x),this.minY=Math.min(this.minY,t.y),this.maxY=Math.max(this.maxY,t.y)},ze.prototype.addQuad=function(t){var e=this.minX,r=this.minY,i=this.maxX,n=this.maxY,o=t[0],a=t[1];e=oi?t.maxX:i,this.maxY=t.maxY>n?t.maxY:n},ze.prototype.addBoundsMask=function(t,e){var r=t.minX>e.minX?t.minX:e.minX,i=t.minY>e.minY?t.minY:e.minY,n=t.maxXe.x?t.minX:e.x,i=t.minY>e.y?t.minY:e.y,n=t.maxXthis.children.length)throw new Error(t+"addChildAt: The index "+e+" supplied is out of bounds "+this.children.length);return t.parent&&t.parent.removeChild(t),(t.parent=this).sortDirty=!0,t.transform._parentID=-1,this.children.splice(e,0,t),this._boundsID++,this.onChildrenChange(e),t.emit("added",this),this.emit("childAdded",t,this,e),t},t.prototype.swapChildren=function(t,e){if(t!==e){var r=this.getChildIndex(t),i=this.getChildIndex(e);this.children[r]=e,this.children[i]=t,this.onChildrenChange(r=this.children.length)throw new Error("The index "+e+" supplied is out of bounds "+this.children.length);var r=this.getChildIndex(t);Xt(this.children,r,1),this.children.splice(e,0,t),this.onChildrenChange(e)},t.prototype.getChildAt=function(t){if(t<0||t>=this.children.length)throw new Error("getChildAt: Index ("+t+") does not exist.");return this.children[t]},t.prototype.removeChild=function(t){var e=arguments,r=arguments.length;if(1this.renderer.width&&(t.width=this.renderer.width-t.x),t.y+t.height>this.renderer.height&&(t.height=this.renderer.height-t.y)},Ne.prototype.addChild=function(t){var e=this.pool.pop();e||((e=document.createElement("button")).style.width="100px",e.style.height="100px",e.style.backgroundColor=this.debug?"rgba(255,0,0,0.5)":"transparent",e.style.position="absolute",e.style.zIndex=2,e.style.borderStyle="none",-1e.priority){t.connect(r);break}e=(r=e).next}t.previous||t.connect(r)}else t.connect(r);return this._startIfPossible(),this},We.prototype.remove=function(t,e){for(var r=this._head.next;r;)r=r.match(t,e)?r.destroy():r.next;return this._head.next||this._cancelIfNeeded(),this},We.prototype.start=function(){this.started||(this.started=!0,this._requestIfNeeded())},We.prototype.stop=function(){this.started&&(this.started=!1,this._cancelIfNeeded())},We.prototype.destroy=function(){if(!this._protected){this.stop();for(var t=this._head.next;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}},We.prototype.update=function(t){var e;if(void 0===t&&(t=performance.now()),t>this.lastTime){if((e=this.elapsedMS=t-this.lastTime)>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){var r=t-this._lastFrame|0;if(r]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;var lr=function(h){function r(t,e){if(e=e||{},!(t instanceof HTMLVideoElement)){var r=document.createElement("video");r.setAttribute("preload","auto"),r.setAttribute("webkit-playsinline",""),r.setAttribute("playsinline",""),"string"==typeof t&&(t=[t]),h.crossOrigin(r,t[0].src||t[0],e.crossorigin);for(var i=0;ithis.baseTexture.width,a=r+n>this.baseTexture.height;if(o||a){var s=o&&a?"and":"or",l="X: "+e+" + "+i+" = "+(e+i)+" > "+this.baseTexture.width,u="Y: "+r+" + "+n+" = "+(r+n)+" > "+this.baseTexture.height;throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: "+l+" "+s+" "+u)}this.valid=i&&n&&this.baseTexture.valid,this.trim||this.rotate||(this.orig=t),this.valid&&this.updateUvs()},t.rotate.get=function(){return this._rotate},t.rotate.set=function(t){this._rotate=t,this.valid&&this.updateUvs()},t.width.get=function(){return this.orig.width},t.height.get=function(){return this.orig.height},Object.defineProperties(s.prototype,t),s}(m);function yr(t){t.destroy=function(){},t.on=function(){},t.once=function(){},t.emit=function(){}}_r.EMPTY=new _r(new ir),yr(_r.EMPTY),yr(_r.EMPTY.baseTexture),_r.WHITE=function(){var t=document.createElement("canvas");t.width=16,t.height=16;var e=t.getContext("2d");return e.fillStyle="white",e.fillRect(0,0,16,16),new _r(new ir(new or(t)))}(),yr(_r.WHITE),yr(_r.WHITE.baseTexture);var br=function(s){function e(t,e){var r=null;if(!(t instanceof mr)){var i=arguments[1],n=arguments[2],o=arguments[3],a=arguments[4];console.warn("Please use RenderTexture.create("+i+", "+n+") instead of the ctor directly."),r=arguments[0],e=null,t=new mr({width:i,height:n,scaleMode:o,resolution:a})}s.call(this,t,e),this.legacyRenderer=r,this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}return s&&(e.__proto__=s),((e.prototype=Object.create(s&&s.prototype)).constructor=e).prototype.resize=function(t,e,r){void 0===r&&(r=!0),t=Math.ceil(t),e=Math.ceil(e),this.valid=0=gt.WEBGL2&&(r=t.getContext("webgl2",e)),r)this.webGLVersion=2;else if(this.webGLVersion=1,!(r=t.getContext("webgl",e)||t.getContext("experimental-webgl",e)))throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=r,this.getExtensions(),r},t.prototype.getExtensions=function(){var t=this.gl;1===this.webGLVersion?Object.assign(this.extensions,{drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBKIT_WEBGL_depth_texture"),loseContext:t.getExtension("WEBGL_lose_context"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear")}):2===this.webGLVersion&&Object.assign(this.extensions,{anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),colorBufferFloat:t.getExtension("EXT_color_buffer_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear")})},t.prototype.handleContextLost=function(t){t.preventDefault()},t.prototype.handleContextRestored=function(){this.renderer.runners.contextChange.run(this.gl)},t.prototype.destroy=function(){var t=this.renderer.view;t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()},t.prototype.postrender=function(){this.gl.flush()},t.prototype.validateContext=function(t){t.getContextAttributes().stencil||console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly")},Object.defineProperties(t.prototype,r),t}(cr),Ur=function(e){function t(t){e.call(this,t),this.managedFramebuffers=[],this.unknownFramebuffer=new pr(10,10)}e&&(t.__proto__=e);var r={size:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.contextChange=function(){var t=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Ce,this.hasMRT=!0,this.writeDepthTexture=!0,this.disposeAll(!0),1===this.renderer.context.webGLVersion){var e=this.renderer.context.extensions.drawBuffers,r=this.renderer.context.extensions.depthTexture;P.PREFER_ENV===gt.WEBGL_LEGACY&&(r=e=null),e?t.drawBuffers=function(t){return e.drawBuffersWEBGL(t)}:(this.hasMRT=!1,t.drawBuffers=function(){}),r||(this.writeDepthTexture=!1)}},t.prototype.bind=function(t,e){var r=this.gl;if(t){var i=t.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(t);this.current!==t&&(this.current=t,r.bindFramebuffer(r.FRAMEBUFFER,i.framebuffer)),i.dirtyId!==t.dirtyId&&(i.dirtyId=t.dirtyId,i.dirtyFormat!==t.dirtyFormat?(i.dirtyFormat=t.dirtyFormat,this.updateFramebuffer(t)):i.dirtySize!==t.dirtySize&&(i.dirtySize=t.dirtySize,this.resizeFramebuffer(t)));for(var n=0;n=i.data.byteLength)e.bufferSubData(o,0,i.data);else{var a=i.static?e.STATIC_DRAW:e.DYNAMIC_DRAW;n.byteLength=i.data.byteLength,e.bufferData(o,i.data,a)}}}},t.prototype.checkCompatibility=function(t,e){var r=t.attributes,i=e.attributeData;for(var n in i)if(!r[n])throw new Error('shader and geometry incompatible, geometry missing the "'+n+'" attribute')},t.prototype.getSignature=function(t,e){var r=t.attributes,i=e.attributeData,n=["g",t.id];for(var o in r)i[o]&&n.push(o);return n.join("-")},t.prototype.initGeometryVao=function(t,e){this.checkCompatibility(t,e);var r=this.gl,i=this.CONTEXT_UID,n=this.getSignature(t,e),o=t.glVertexArrayObjects[this.CONTEXT_UID],a=o[n];if(a)return o[e.id]=a;var s=t.buffers,l=t.attributes,u={},h={};for(var c in s)u[c]=0,h[c]=0;for(var f in l)!l[f].size&&e.attributeData[f]?l[f].size=e.attributeData[f].size:l[f].size||console.warn("PIXI Geometry attribute '"+f+"' size cannot be determined (likely the bound shader does not have the attribute)"),u[l[f].buffer]+=l[f].size*Hr[l[f].type];for(var p in l){var d=l[p],m=d.size;void 0===d.stride&&(u[d.buffer]===m*Hr[d.type]?d.stride=0:d.stride=u[d.buffer]),void 0===d.start&&(d.start=h[d.buffer],h[d.buffer]+=m*Hr[d.type])}a=r.createVertexArray(),r.bindVertexArray(a);for(var g=0;g=gt.WEBGL2&&(t=e.getContext("webgl2",{})),t||((t=e.getContext("webgl",{})||e.getContext("experimental-webgl",{}))?t.getExtension("WEBGL_draw_buffers"):t=null),Kr=t}return Kr}function $r(t,e,r){if("precision"===t.substring(0,9))return r!==Ct.HIGH&&"precision highp"===t.substring(0,15)?t.replace("precision highp","precision mediump"):t;var i=e;return e===Ct.HIGH&&r!==Ct.HIGH&&(i=Ct.MEDIUM),"precision "+i+" float;\n"+t}var ti={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};var ei=null,ri={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray"};function ii(t,e){if(!ei){var r=Object.keys(ri);ei={};for(var i=0;ie.name?1:-1});for(var h=0;h>=1,r++;this.stateId=t.data}for(var i=0;ithis.checkCountMax&&(this.checkCount=0,this.run()))},t.prototype.run=function(){for(var t=this.renderer.texture,e=t.managedTextures,r=!1,i=0;ithis.maxIdle&&(t.destroyTexture(n,!0),r=!(e[i]=null))}if(r){for(var o=0,a=0;athis.size&&this.flush(),this._vertexCount+=t.vertexData.length/2,this._indexCount+=t.indices.length,this._bufferedElements[this._bufferSize++]=t)},t.prototype.flush=function(){if(0!==this._vertexCount){var t,e,r=this.getAttributeBuffer(this._vertexCount),i=this.getIndexBuffer(this._indexCount),n=this.renderer.gl,o=this._bufferedElements,a=this._drawCalls,s=this.MAX_TEXTURES,l=this._packedGeometries,u=this.vertexSize,h=this.renderer.textureGC.count,c=0,f=0,p=0,d=a[0],m=0,g=-1;d.textureCount=0,d.start=0,d.blend=g;var v,_=++ir._globalBatch;for(v=0;vthis.maxSegments&&(r=this.maxSegments),r}},dn=function(){this.reset()};dn.prototype.clone=function(){var t=new dn;return t.color=this.color,t.alpha=this.alpha,t.texture=this.texture,t.matrix=this.matrix,t.visible=this.visible,t},dn.prototype.reset=function(){this.color=16777215,this.alpha=1,this.texture=_r.WHITE,this.matrix=null,this.visible=!1},dn.prototype.destroy=function(){this.texture=null,this.matrix=null};var mn=function(t,e,r,i){void 0===e&&(e=null),void 0===r&&(r=null),void 0===i&&(i=null),this.shape=t,this.lineStyle=r,this.fillStyle=e,this.matrix=i,this.type=t.type,this.points=[],this.holes=[]};mn.prototype.clone=function(){return new mn(this.shape,this.fillStyle,this.lineStyle,this.matrix)},mn.prototype.destroy=function(){this.shape=null,this.holes.length=0,this.holes=null,this.points.length=0,this.points=null,this.lineStyle=null,this.fillStyle=null};var gn={build:function(t){var e,r,i=t.shape,n=t.points,o=i.x,a=i.y;if(n.length=0,r=t.type===de.CIRC?(e=i.radius,i.radius):(e=i.width,i.height),0!==e&&0!==r){var s=Math.floor(30*Math.sqrt(i.radius))||Math.floor(15*Math.sqrt(i.width+i.height));s/=2.3;for(var l=2*Math.PI/s,u=0;u>16)+(65280&e)+((255&e)<<16),r);0>16&255)/255*n,o.tint[1]=(i>>8&255)/255*n,o.tint[2]=(255&i)/255*n,o.tint[3]=n,t.shader.bind(e),t.geometry.bind(r,e),t.state.set(this.state);for(var s=0,l=a.length;s>16)+(65280&n)+((255&n)<<16)}}},r.prototype.calculateVertices=function(){if(this._transformID!==this.transform._worldID){this._transformID=this.transform._worldID;for(var t=this.transform.worldTransform,e=t.a,r=t.b,i=t.c,n=t.d,o=t.tx,a=t.ty,s=this.geometry.points,l=this.vertexData,u=0,h=0;h=i&&Fn.x=n&&Fn.y>16)+(65280&t)+((255&t)<<16)},t.texture.get=function(){return this._texture},t.texture.set=function(t){this._texture!==t&&(this._texture=t||_r.EMPTY,this._cachedTint=16777215,this._textureID=-1,this._textureTrimmedID=-1,t&&(t.baseTexture.valid?this._onTextureUpdate():t.once("update",this._onTextureUpdate,this)))},Object.defineProperties(i.prototype,t),i}(je),Nn={LINEAR_VERTICAL:0,LINEAR_HORIZONTAL:1},Bn={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:Nn.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100,leading:0},Un=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],Xn=function(t){this.styleID=0,this.reset(),Gn(this,t,t)},Hn={align:{configurable:!0},breakWords:{configurable:!0},dropShadow:{configurable:!0},dropShadowAlpha:{configurable:!0},dropShadowAngle:{configurable:!0},dropShadowBlur:{configurable:!0},dropShadowColor:{configurable:!0},dropShadowDistance:{configurable:!0},fill:{configurable:!0},fillGradientType:{configurable:!0},fillGradientStops:{configurable:!0},fontFamily:{configurable:!0},fontSize:{configurable:!0},fontStyle:{configurable:!0},fontVariant:{configurable:!0},fontWeight:{configurable:!0},letterSpacing:{configurable:!0},lineHeight:{configurable:!0},leading:{configurable:!0},lineJoin:{configurable:!0},miterLimit:{configurable:!0},padding:{configurable:!0},stroke:{configurable:!0},strokeThickness:{configurable:!0},textBaseline:{configurable:!0},trim:{configurable:!0},whiteSpace:{configurable:!0},wordWrap:{configurable:!0},wordWrapWidth:{configurable:!0}};function qn(t){return"number"==typeof t?zt(t):("string"==typeof t&&0===t.indexOf("0x")&&(t=t.replace("0x","#")),t)}function Wn(t){if(Array.isArray(t)){for(var e=0;e>2,n[1]=(3&i[0])<<4|i[1]>>4,n[2]=(15&i[1])<<2|i[2]>>6,n[3]=63&i[2],r-(t.length-1)){case 2:n[3]=64,n[2]=64;break;case 1:n[3]=64}for(var a=0;a=a.length&&a.push(this._generateOneMoreBuffer(t));var d=a[f];d.uploadDynamic(e,c,p);var m=t._bufferUpdateIDs[f]||0;(h=h||d._updateID=i&&Yo.x=n&&Yo.ys&&(Xt(i,1+f-++d,1+g-f),g=f,f=-1,n.push(p),h=Math.max(h,p),c++,r.x=0,r.y+=t.lineHeight,l=null))}else n.push(u),h=Math.max(h,u),++c,++d,r.x=0,r.y+=t.lineHeight,l=null}var b=o.charAt(o.length-1);"\r"!==b&&"\n"!==b&&(/(?:\s)/.test(b)&&(u=p),n.push(u),h=Math.max(h,u));for(var x=[],w=0;w<=c;w++){var T=0;"right"===this._font.align?T=h-n[w]:"center"===this._font.align&&(T=(h-n[w])/2),x.push(T)}for(var k=i.length,S=this.tint,P=0;P 0.0) {\n c.rgb /= c.a;\n }\n\n vec4 result;\n\n result.r = (m[0] * c.r);\n result.r += (m[1] * c.g);\n result.r += (m[2] * c.b);\n result.r += (m[3] * c.a);\n result.r += m[4];\n\n result.g = (m[5] * c.r);\n result.g += (m[6] * c.g);\n result.g += (m[7] * c.b);\n result.g += (m[8] * c.a);\n result.g += m[9];\n\n result.b = (m[10] * c.r);\n result.b += (m[11] * c.g);\n result.b += (m[12] * c.b);\n result.b += (m[13] * c.a);\n result.b += m[14];\n\n result.a = (m[15] * c.r);\n result.a += (m[16] * c.g);\n result.a += (m[17] * c.b);\n result.a += (m[18] * c.a);\n result.a += m[19];\n\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n gl_FragColor = vec4(rgb, result.a);\n}\n",t),this.alpha=1}e&&(t.__proto__=e);var r={matrix:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype._loadMatrix=function(t,e){void 0===e&&(e=!1);var r=t;e&&(this._multiply(r,this.uniforms.m,t),r=this._colorMatrix(r)),this.uniforms.m=r},t.prototype._multiply=function(t,e,r){return t[0]=e[0]*r[0]+e[1]*r[5]+e[2]*r[10]+e[3]*r[15],t[1]=e[0]*r[1]+e[1]*r[6]+e[2]*r[11]+e[3]*r[16],t[2]=e[0]*r[2]+e[1]*r[7]+e[2]*r[12]+e[3]*r[17],t[3]=e[0]*r[3]+e[1]*r[8]+e[2]*r[13]+e[3]*r[18],t[4]=e[0]*r[4]+e[1]*r[9]+e[2]*r[14]+e[3]*r[19]+e[4],t[5]=e[5]*r[0]+e[6]*r[5]+e[7]*r[10]+e[8]*r[15],t[6]=e[5]*r[1]+e[6]*r[6]+e[7]*r[11]+e[8]*r[16],t[7]=e[5]*r[2]+e[6]*r[7]+e[7]*r[12]+e[8]*r[17],t[8]=e[5]*r[3]+e[6]*r[8]+e[7]*r[13]+e[8]*r[18],t[9]=e[5]*r[4]+e[6]*r[9]+e[7]*r[14]+e[8]*r[19]+e[9],t[10]=e[10]*r[0]+e[11]*r[5]+e[12]*r[10]+e[13]*r[15],t[11]=e[10]*r[1]+e[11]*r[6]+e[12]*r[11]+e[13]*r[16],t[12]=e[10]*r[2]+e[11]*r[7]+e[12]*r[12]+e[13]*r[17],t[13]=e[10]*r[3]+e[11]*r[8]+e[12]*r[13]+e[13]*r[18],t[14]=e[10]*r[4]+e[11]*r[9]+e[12]*r[14]+e[13]*r[19]+e[14],t[15]=e[15]*r[0]+e[16]*r[5]+e[17]*r[10]+e[18]*r[15],t[16]=e[15]*r[1]+e[16]*r[6]+e[17]*r[11]+e[18]*r[16],t[17]=e[15]*r[2]+e[16]*r[7]+e[17]*r[12]+e[18]*r[17],t[18]=e[15]*r[3]+e[16]*r[8]+e[17]*r[13]+e[18]*r[18],t[19]=e[15]*r[4]+e[16]*r[9]+e[17]*r[14]+e[18]*r[19]+e[19],t},t.prototype._colorMatrix=function(t){var e=new Float32Array(t);return e[4]/=255,e[9]/=255,e[14]/=255,e[19]/=255,e},t.prototype.brightness=function(t,e){var r=[t,0,0,0,0,0,t,0,0,0,0,0,t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.greyscale=function(t,e){var r=[t,t,t,0,0,t,t,t,0,0,t,t,t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.blackAndWhite=function(t){this._loadMatrix([.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0],t)},t.prototype.hue=function(t,e){t=(t||0)/180*Math.PI;var r=Math.cos(t),i=Math.sin(t),n=(0,Math.sqrt)(1/3),o=[r+1/3*(1-r),1/3*(1-r)-n*i,1/3*(1-r)+n*i,0,0,1/3*(1-r)+n*i,r+1/3*(1-r),1/3*(1-r)-n*i,0,0,1/3*(1-r)-n*i,1/3*(1-r)+n*i,r+1/3*(1-r),0,0,0,0,0,1,0];this._loadMatrix(o,e)},t.prototype.contrast=function(t,e){var r=(t||0)+1,i=-.5*(r-1),n=[r,0,0,0,i,0,r,0,0,i,0,0,r,0,i,0,0,0,1,0];this._loadMatrix(n,e)},t.prototype.saturate=function(t,e){void 0===t&&(t=0);var r=2*t/3+1,i=-.5*(r-1),n=[r,i,i,0,0,i,r,i,0,0,i,i,r,0,0,0,0,0,1,0];this._loadMatrix(n,e)},t.prototype.desaturate=function(){this.saturate(-1)},t.prototype.negative=function(t){this._loadMatrix([-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0],t)},t.prototype.sepia=function(t){this._loadMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0],t)},t.prototype.technicolor=function(t){this._loadMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0],t)},t.prototype.polaroid=function(t){this._loadMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],t)},t.prototype.toBGR=function(t){this._loadMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0],t)},t.prototype.kodachrome=function(t){this._loadMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0],t)},t.prototype.browni=function(t){this._loadMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0],t)},t.prototype.vintage=function(t){this._loadMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0],t)},t.prototype.colorTone=function(t,e,r,i,n){var o=((r=r||16770432)>>16&255)/255,a=(r>>8&255)/255,s=(255&r)/255,l=((i=i||3375104)>>16&255)/255,u=(i>>8&255)/255,h=(255&i)/255,c=[.3,.59,.11,0,0,o,a,s,t=t||.2,0,l,u,h,e=e||.15,0,o-l,a-u,s-h,0,0];this._loadMatrix(c,n)},t.prototype.night=function(t,e){var r=[-2*(t=t||.1),-t,0,0,0,-t,0,t,0,0,0,t,2*t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.predator=function(t,e){var r=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.lsd=function(t){this._loadMatrix([2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0],t)},t.prototype.reset=function(){this._loadMatrix([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],!1)},r.matrix.get=function(){return this.uniforms.m},r.matrix.set=function(t){this.uniforms.m=t},r.alpha.get=function(){return this.uniforms.uAlpha},r.alpha.set=function(t){this.uniforms.uAlpha=t},Object.defineProperties(t.prototype,r),t}(_i);sa.prototype.grayscale=sa.prototype.greyscale;var la=function(i){function t(t,e){var r=new me;t.renderable=!1,i.call(this,"attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\n}\n","varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n vec4 map = texture2D(mapSampler, vFilterCoord);\n\n map -= 0.5;\n map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n",{mapSampler:t._texture,filterMatrix:r,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=t,this.maskMatrix=r,null==e&&(e=20),this.scale=new le(e,e)}i&&(t.__proto__=i);var e={map:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.filterMatrix=t.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;var n=this.maskSprite.transform.worldTransform,o=Math.sqrt(n.a*n.a+n.b*n.b),a=Math.sqrt(n.c*n.c+n.d*n.d);0!==o&&0!==a&&(this.uniforms.rotation[0]=n.a/o,this.uniforms.rotation[1]=n.b/o,this.uniforms.rotation[2]=n.c/a,this.uniforms.rotation[3]=n.d/a),t.applyFilter(this,e,r,i)},e.map.get=function(){return this.uniforms.mapSampler},e.map.set=function(t){this.uniforms.mapSampler=t},Object.defineProperties(t.prototype,e),t}(_i),ua=function(t){function e(){t.call(this,"\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputPixel;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n gl_Position = filterVertexPosition();\n\n vFragCoord = aVertexPosition * outputFrame.zw;\n\n texcoords(vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n",'varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputPixel;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it\'s\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\nvoid main() {\n\n vec4 color;\n\n color = fxaa(uSampler, vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n gl_FragColor = color;\n}\n')}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e}(_i),ha=function(r){function t(t,e){void 0===t&&(t=.5),void 0===e&&(e=Math.random()),r.call(this,Ui,"precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * uSeed);\n float diff = (randomValue - 0.5) * uNoise;\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n // Premultiply alpha again.\n color.rgb *= color.a;\n\n gl_FragColor = color;\n}\n",{uNoise:0,uSeed:0}),this.noise=t,this.seed=e}r&&(t.__proto__=r),(t.prototype=Object.create(r&&r.prototype)).constructor=t;var e={noise:{configurable:!0},seed:{configurable:!0}};return e.noise.get=function(){return this.uniforms.uNoise},e.noise.set=function(t){this.uniforms.uNoise=t},e.seed.get=function(){return this.uniforms.uSeed},e.seed.set=function(t){this.uniforms.uSeed=t},Object.defineProperties(t.prototype,e),t}(_i),ca=new me;Re.prototype._cacheAsBitmap=!1,Re.prototype._cacheData=!1;var fa=function(){this.textureCacheId=null,this.originalRender=null,this.originalRenderCanvas=null,this.originalCalculateBounds=null,this.originalGetLocalBounds=null,this.originalUpdateTransform=null,this.originalHitTest=null,this.originalDestroy=null,this.originalMask=null,this.originalFilterArea=null,this.sprite=null};Object.defineProperties(Re.prototype,{cacheAsBitmap:{get:function(){return this._cacheAsBitmap},set:function(t){var e;this._cacheAsBitmap!==t&&((this._cacheAsBitmap=t)?(this._cacheData||(this._cacheData=new fa),(e=this._cacheData).originalRender=this.render,e.originalRenderCanvas=this.renderCanvas,e.originalUpdateTransform=this.updateTransform,e.originalCalculateBounds=this.calculateBounds,e.originalGetLocalBounds=this.getLocalBounds,e.originalDestroy=this.destroy,e.originalContainsPoint=this.containsPoint,e.originalMask=this._mask,e.originalFilterArea=this.filterArea,this.render=this._renderCached,this.renderCanvas=this._renderCachedCanvas,this.destroy=this._cacheAsBitmapDestroy):((e=this._cacheData).sprite&&this._destroyCachedDisplayObject(),this.render=e.originalRender,this.renderCanvas=e.originalRenderCanvas,this.calculateBounds=e.originalCalculateBounds,this.getLocalBounds=e.originalGetLocalBounds,this.destroy=e.originalDestroy,this.updateTransform=e.originalUpdateTransform,this.containsPoint=e.originalContainsPoint,this._mask=e.originalMask,this.filterArea=e.originalFilterArea))}}}),Re.prototype._renderCached=function(t){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObject(t),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._render(t))},Re.prototype._initCachedDisplayObject=function(t){if(!this._cacheData||!this._cacheData.sprite){var e=this.alpha;this.alpha=1,t.batch.flush();var r=this.getLocalBounds().clone();if(this.filters){var i=this.filters[0].padding;r.pad(i)}r.ceil(P.RESOLUTION);var n=t.renderTexture.current,o=t.renderTexture.sourceFrame,a=t.projection.transform,s=br.create(r.width,r.height),l="cacheAsBitmap_"+qt();this._cacheData.textureCacheId=l,ir.addToCache(s.baseTexture,l),_r.addToCache(s,l);var u=ca;u.tx=-r.x,u.ty=-r.y,this.transform.worldTransform.identity(),this.render=this._cacheData.originalRender,t.render(this,s,!0,u,!0),t.projection.transform=a,t.renderTexture.bind(n,o),this.render=this._renderCached,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null;var h=new Ln(s);h.transform.worldTransform=this.transform.worldTransform,h.anchor.x=-r.x/r.width,h.anchor.y=-r.y/r.height,h.alpha=e,h._bounds=this._bounds,this._cacheData.sprite=h,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=t._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=h.containsPoint.bind(h)}},Re.prototype._renderCachedCanvas=function(t){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObjectCanvas(t),this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._renderCanvas(t))},Re.prototype._initCachedDisplayObjectCanvas=function(t){if(!this._cacheData||!this._cacheData.sprite){var e=this.getLocalBounds(),r=this.alpha;this.alpha=1;var i=t.context;e.ceil(P.RESOLUTION);var n=br.create(e.width,e.height),o="cacheAsBitmap_"+qt();this._cacheData.textureCacheId=o,ir.addToCache(n.baseTexture,o),_r.addToCache(n,o);var a=ca;this.transform.localTransform.copyTo(a),a.invert(),a.tx-=e.x,a.ty-=e.y,this.renderCanvas=this._cacheData.originalRenderCanvas,t.render(this,n,!0,a,!1),t.context=i,this.renderCanvas=this._renderCachedCanvas,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null;var s=new Ln(n);s.transform.worldTransform=this.transform.worldTransform,s.anchor.x=-e.x/e.width,s.anchor.y=-e.y/e.height,s.alpha=r,s._bounds=this._bounds,this._cacheData.sprite=s,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=t._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=s.containsPoint.bind(s)}},Re.prototype._calculateCachedBounds=function(){this._bounds.clear(),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite._calculateBounds(),this._lastBoundsID=this._boundsID},Re.prototype._getCachedLocalBounds=function(){return this._cacheData.sprite.getLocalBounds()},Re.prototype._destroyCachedDisplayObject=function(){this._cacheData.sprite._texture.destroy(!0),this._cacheData.sprite=null,ir.removeFromCache(this._cacheData.textureCacheId),_r.removeFromCache(this._cacheData.textureCacheId),this._cacheData.textureCacheId=null},Re.prototype._cacheAsBitmapDestroy=function(t){this.cacheAsBitmap=!1,this.destroy(t)},Re.prototype.name=null,je.prototype.getChildByName=function(t){for(var e=0;e>16)+(65280&t)+((255&t)<<16),this._colorDirty=!0)},e.tint.get=function(){return this._tint},t.prototype.update=function(){if(this._colorDirty){this._colorDirty=!1;var t=this.texture.baseTexture;Bt(this._tint,this._alpha,this.uniforms.uColor,t.premultiplyAlpha)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)},Object.defineProperties(t.prototype,e),t}(di),ya=function(a){function t(t,e,r){a.call(this);var i=new kr(t),n=new kr(e,!0),o=new kr(r,!0,!0);this.addAttribute("aVertexPosition",i,2,!1,wt.FLOAT).addAttribute("aTextureCoord",n,2,!1,wt.FLOAT).addIndex(o),this._updateId=-1}a&&(t.__proto__=a),(t.prototype=Object.create(a&&a.prototype)).constructor=t;var e={vertexDirtyId:{configurable:!0}};return e.vertexDirtyId.get=function(){return this.buffers[0]._updateID},Object.defineProperties(t.prototype,e),t}(Ir),ba=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=100),void 0===r&&(r=10),void 0===i&&(i=10),n.call(this),this.segWidth=r,this.segHeight=i,this.width=t,this.height=e,this.build()}return n&&(t.__proto__=n),((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.build=function(){for(var t=this.segWidth*this.segHeight,e=[],r=[],i=[],n=this.segWidth-1,o=this.segHeight-1,a=this.width/n,s=this.height/o,l=0;le?1:this._height/e;t[9]=t[11]=t[13]=t[15]=this._topHeight*r,t[17]=t[19]=t[21]=t[23]=this._height-this._bottomHeight*r,t[25]=t[27]=t[29]=t[31]=this._height},t.prototype.updateVerticalVertices=function(){var t=this.vertices,e=this._leftWidth+this._rightWidth,r=this._width>e?1:this._width/e;t[2]=t[10]=t[18]=t[26]=this._leftWidth*r,t[4]=t[12]=t[20]=t[28]=this._width-this._rightWidth*r,t[6]=t[14]=t[22]=t[30]=this._width},e.width.get=function(){return this._width},e.width.set=function(t){this._width=t,this._refresh()},e.height.get=function(){return this._height},e.height.set=function(t){this._height=t,this._refresh()},e.leftWidth.get=function(){return this._leftWidth},e.leftWidth.set=function(t){this._leftWidth=t,this._refresh()},e.rightWidth.get=function(){return this._rightWidth},e.rightWidth.set=function(t){this._rightWidth=t,this._refresh()},e.topHeight.get=function(){return this._topHeight},e.topHeight.set=function(t){this._topHeight=t,this._refresh()},e.bottomHeight.get=function(){return this._bottomHeight},e.bottomHeight.set=function(t){this._bottomHeight=t,this._refresh()},t.prototype._refresh=function(){var t=this.texture,e=this.geometry.buffers[1].data;this._origWidth=t.orig.width,this._origHeight=t.orig.height;var r=1/this._origWidth,i=1/this._origHeight;e[0]=e[8]=e[16]=e[24]=0,e[1]=e[3]=e[5]=e[7]=0,e[6]=e[14]=e[22]=e[30]=1,e[25]=e[27]=e[29]=e[31]=1,e[2]=e[10]=e[18]=e[26]=r*this._leftWidth,e[4]=e[12]=e[20]=e[28]=1-r*this._rightWidth,e[9]=e[11]=e[13]=e[15]=i*this._topHeight,e[17]=e[19]=e[21]=e[23]=1-i*this._bottomHeight,this.updateHorizontalVertices(),this.updateVerticalVertices(),this.geometry.buffers[0].update(),this.geometry.buffers[1].update()},Object.defineProperties(t.prototype,e),t}(Ta),Pa=function(r){function i(t,e){r.call(this,t[0]instanceof _r?t[0]:t[0].texture),this._textures=null,this._durations=null,this.textures=t,this._autoUpdate=!1!==e,this.animationSpeed=1,this.loop=!0,this.updateAnchor=!1,this.onComplete=null,this.onFrameChange=null,this.onLoop=null,this._currentTime=0,this.playing=!1}r&&(i.__proto__=r);var t={totalFrames:{configurable:!0},textures:{configurable:!0},currentFrame:{configurable:!0}};return((i.prototype=Object.create(r&&r.prototype)).constructor=i).prototype.stop=function(){this.playing&&(this.playing=!1,this._autoUpdate&&We.shared.remove(this.update,this))},i.prototype.play=function(){this.playing||(this.playing=!0,this._autoUpdate&&We.shared.add(this.update,this,He.HIGH))},i.prototype.gotoAndStop=function(t){this.stop();var e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()},i.prototype.gotoAndPlay=function(t){var e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture(),this.play()},i.prototype.update=function(t){var e=this.animationSpeed*t,r=this.currentFrame;if(null!==this._durations){var i=this._currentTime%1*this._durations[this.currentFrame];for(i+=e/60*1e3;i<0;)this._currentTime--,i+=this._durations[this.currentFrame];var n=Math.sign(this.animationSpeed*t);for(this._currentTime=Math.floor(this._currentTime);i>=this._durations[this.currentFrame];)i-=this._durations[this.currentFrame]*n,this._currentTime+=n;this._currentTime+=i/this._durations[this.currentFrame]}else this._currentTime+=e;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):r!==this.currentFrame&&(this.loop&&this.onLoop&&(0r&&this.onLoop()),this.updateTexture())},i.prototype.updateTexture=function(){this._texture=this._textures[this.currentFrame],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame)},i.prototype.destroy=function(t){this.stop(),r.prototype.destroy.call(this,t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null},i.fromFrames=function(t){for(var e=[],r=0;r 0) var gc = undefined");else{if(!ba&&!ca)throw"Unknown runtime environment. Where are we?";e.read=function(t){var e=new XMLHttpRequest;return e.open("GET",t,!1),e.send(null),e.responseText},"undefined"!=typeof arguments&&(e.arguments=arguments),"undefined"!=typeof console?(e.print||(e.print=function(t){console.log(t)}),e.printErr||(e.printErr=function(t){console.log(t)})):e.print||(e.print=function(){}),ca&&(e.load=importScripts),void 0===e.setWindowTitle&&(e.setWindowTitle=function(t){document.title=t})}function ha(t){eval.call(null,t)}for(k in!e.load&&e.read&&(e.load=function(t){ha(e.read(t))}),e.print||(e.print=function(){}),e.printErr||(e.printErr=e.print),e.arguments||(e.arguments=[]),e.thisProgram||(e.thisProgram="./this.program"),e.print=e.print,e.W=e.printErr,e.preRun=[],e.postRun=[],aa)aa.hasOwnProperty(k)&&(e[k]=aa[k]);var n={rb:function(t){ka=t},fb:function(){return ka},ua:function(){return m},ba:function(t){m=t},Ka:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:return"*"===t[t.length-1]?n.J:"i"===t[0]?(assert(0==(t=parseInt(t.substr(1)))%8),t/8):0}},eb:function(t){return Math.max(n.Ka(t),n.J)},ud:16,Qd:function(t,e){return"double"===e||"i64"===e?7&t&&(assert(4==(7&t)),t+=4):assert(0==(3&t)),t},Ed:function(t,e,r){return r||"i64"!=t&&"double"!=t?t?Math.min(e||(t?n.eb(t):0),n.J):Math.min(e,8):8},L:function(t,r,i){return i&&i.length?(i.splice||(i=Array.prototype.slice.call(i)),i.splice(0,0,r),e["dynCall_"+t].apply(null,i)):e["dynCall_"+t].call(null,r)},Z:[],Xa:function(t){for(var e=0;e>>0)+4294967296*+(e>>>0):+(t>>>0)+4294967296*+(0|e)},Ua:8,J:4,vd:0};e.Runtime=n,n.addFunction=n.Xa,n.removeFunction=n.nb;var na=!1,oa,pa,ka,ra,sa;function assert(t,e){t||x("Assertion failed: "+e)}function qa(a){var b=e["_"+a];if(!b)try{b=eval("_"+a)}catch(t){}return assert(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)"),b}function wa(t,e,r){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":y[t>>0]=e;break;case"i16":z[t>>1]=e;break;case"i32":C[t>>2]=e;break;case"i64":pa=[e>>>0,(oa=e,1<=+xa(oa)?0>>0:~~+Aa((oa-+(~~oa>>>0))/4294967296)>>>0:0)],C[t>>2]=pa[0],C[t+4>>2]=pa[1];break;case"float":Ba[t>>2]=e;break;case"double":Ca[t>>3]=e;break;default:x("invalid type for setValue: "+r)}}function Da(t,e){switch("*"===(e=e||"i8").charAt(e.length-1)&&(e="i32"),e){case"i1":case"i8":return y[t>>0];case"i16":return z[t>>1];case"i32":case"i64":return C[t>>2];case"float":return Ba[t>>2];case"double":return Ca[t>>3];default:x("invalid type for setValue: "+e)}return null}function D(t,e,r,i){var o,a;a="number"==typeof t?(o=!0,t):(o=!1,t.length);var s,l,u="string"==typeof e?e:null;if(r=4==r?i:[Ea,n.aa,n.Ra,n.R][void 0===r?2:r](Math.max(a,u?1:e.length)),o){for(assert(0==(3&(i=r))),t=r+(-4&a);i>2]=0;for(t=r+a;i>0]=0;return r}if("i8"===u)return t.subarray||t.slice?E.set(t,r):E.set(new Uint8Array(t),r),r;for(i=0;i>0],0!=i||r)&&(o++,!r||o!=r););if(r||(r=o),i="",n<128){for(;0>10,56320|1023&r)))):s+=String.fromCharCode(r)}}function Ka(t,e,r,i){if(!(0>6}else{if(a<=65535){if(i<=r+2)break;e[r++]=224|a>>12}else{if(a<=2097151){if(i<=r+3)break;e[r++]=240|a>>18}else{if(a<=67108863){if(i<=r+4)break;e[r++]=248|a>>24}else{if(i<=r+5)break;e[r++]=252|a>>30,e[r++]=128|a>>24&63}e[r++]=128|a>>18&63}e[r++]=128|a>>12&63}e[r++]=128|a>>6&63}e[r++]=128|63&a}}return e[r]=0,r-n}function La(t){for(var e=0,r=0;r"):o=n;t:for(;c>0];if(!r)return e;e+=String.fromCharCode(r)}},e.stringToAscii=function(t,e){return Ia(t,e,!1)},e.UTF8ArrayToString=Ja,e.UTF8ToString=function(t){return Ja(E,t)},e.stringToUTF8Array=Ka,e.stringToUTF8=function(t,e,r){return Ka(t,E,e,r)},e.lengthBytesUTF8=La,e.UTF16ToString=function(t){for(var e=0,r="";;){var i=z[t+2*e>>1];if(0==i)return r;++e,r+=String.fromCharCode(i)}},e.stringToUTF16=function(t,e,r){if(void 0===r&&(r=2147483647),r<2)return 0;var i=e;r=(r-=2)<2*t.length?r/2:t.length;for(var n=0;n>1]=t.charCodeAt(n),e+=2;return z[e>>1]=0,e-i},e.lengthBytesUTF16=function(t){return 2*t.length},e.UTF32ToString=function(t){for(var e=0,r="";;){var i=C[t+4*e>>2];if(0==i)return r;++e,65536<=i?(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|1023&i)):r+=String.fromCharCode(i)}},e.stringToUTF32=function(t,e,r){if(void 0===r&&(r=2147483647),r<4)return 0;var i=e;r=i+r-4;for(var n=0;n>2]=o,r<(e+=4)+4)break}return C[e>>2]=0,e-i},e.lengthBytesUTF32=function(t){for(var e=0,r=0;r>0]=t[r],r+=1}function ta(t,e){for(var r=0;r>0]=t[r]}function Ia(t,e,r){for(var i=0;i>0]=t.charCodeAt(i);r||(y[e>>0]=0)}e.addOnPreRun=fb,e.addOnInit=function(t){cb.unshift(t)},e.addOnPreMain=function(t){db.unshift(t)},e.addOnExit=function(t){H.unshift(t)},e.addOnPostRun=gb,e.intArrayFromString=hb,e.intArrayToString=function(t){for(var e=[],r=0;r>>16)*i+r*(e>>>16)<<16)|0}),Math.Jd=Math.imul,Math.clz32||(Math.clz32=function(t){t>>>=0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.Ad=Math.clz32;var xa=Math.abs,Aa=Math.ceil,za=Math.floor,ya=Math.min,I=0,ib=null,jb=null;function kb(){I++,e.monitorRunDependencies&&e.monitorRunDependencies(I)}function lb(){if(I--,e.monitorRunDependencies&&e.monitorRunDependencies(I),0==I&&(null!==ib&&(clearInterval(ib),ib=null),jb)){var t=jb;jb=null,t()}}e.addRunDependency=kb,e.removeRunDependency=lb,e.preloadedImages={},e.preloadedAudios={},Ta=8,la=Ta+5888,cb.push(),D([124,0,0,0,98,7,0,0,124,0,0,0,111,7,0,0,164,0,0,0,124,7,0,0,16,0,0,0,0,0,0,0,164,0,0,0,157,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,227,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,191,7,0,0,56,0,0,0,0,0,0,0,164,0,0,0,5,8,0,0,40,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,114,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,0,0,236,1,0,0,236,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,231,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,40,37,117,41,58,32,65,115,115,101,114,116,105,111,110,32,102,97,105,108,117,114,101,58,32,34,37,115,34,10,0,109,95,115,105,122,101,32,60,61,32,109,95,99,97,112,97,99,105,116,121,0,46,47,99,114,110,95,100,101,99,111,109,112,46,104,0,109,105,110,95,110,101,119,95,99,97,112,97,99,105,116,121,32,60,32,40,48,120,55,70,70,70,48,48,48,48,85,32,47,32,101,108,101,109,101,110,116,95,115,105,122,101,41,0,110,101,119,95,99,97,112,97,99,105,116,121,32,38,38,32,40,110,101,119,95,99,97,112,97,99,105,116,121,32,62,32,109,95,99,97,112,97,99,105,116,121,41,0,110,117,109,95,99,111,100,101,115,91,99,93,0,115,111,114,116,101,100,95,112,111,115,32,60,32,116,111,116,97,108,95,117,115,101,100,95,115,121,109,115,0,112,67,111,100,101,115,105,122,101,115,91,115,121,109,95,105,110,100,101,120,93,32,61,61,32,99,111,100,101,115,105,122,101,0,116,32,60,32,40,49,85,32,60,60,32,116,97,98,108,101,95,98,105,116,115,41,0,109,95,108,111,111,107,117,112,91,116,93,32,61,61,32,99,85,73,78,84,51,50,95,77,65,88,0,99,114,110,100,95,109,97,108,108,111,99,58,32,115,105,122,101,32,116,111,111,32,98,105,103,0,99,114,110,100,95,109,97,108,108,111,99,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,40,40,117,105,110,116,51,50,41,112,95,110,101,119,32,38,32,40,67,82,78,68,95,77,73,78,95,65,76,76,79,67,95,65,76,73,71,78,77,69,78,84,32,45,32,49,41,41,32,61,61,32,48,0,99,114,110,100,95,114,101,97,108,108,111,99,58,32,98,97,100,32,112,116,114,0,99,114,110,100,95,102,114,101,101,58,32,98,97,100,32,112,116,114,0,102,97,108,115,101,0,40,116,111,116,97,108,95,115,121,109,115,32,62,61,32,49,41,32,38,38,32,40,116,111,116,97,108,95,115,121,109,115,32,60,61,32,112,114,101,102,105,120,95,99,111,100,105,110,103,58,58,99,77,97,120,83,117,112,112,111,114,116,101,100,83,121,109,115,41,0,17,18,19,20,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,16,48,0,110,117,109,95,98,105,116,115,32,60,61,32,51,50,85,0,109,95,98,105,116,95,99,111,117,110,116,32,60,61,32,99,66,105,116,66,117,102,83,105,122,101,0,116,32,33,61,32,99,85,73,78,84,51,50,95,77,65,88,0,109,111,100,101,108,46,109,95,99,111,100,101,95,115,105,122,101,115,91,115,121,109,93,32,61,61,32,108,101,110,0,0,2,3,1,0,2,3,4,5,6,7,1,40,108,101,110,32,62,61,32,49,41,32,38,38,32,40,108,101,110,32,60,61,32,99,77,97,120,69,120,112,101,99,116,101,100,67,111,100,101,83,105,122,101,41,0,105,32,60,32,109,95,115,105,122,101,0,110,101,120,116,95,108,101,118,101,108,95,111,102,115,32,62,32,99,117,114,95,108,101,118,101,108,95,111,102,115,0,1,2,2,3,3,3,3,4,0,0,0,0,0,0,1,1,0,1,0,1,0,0,1,2,1,2,0,0,0,1,0,2,1,0,2,0,0,1,2,3,110,117,109,32,38,38,32,40,110,117,109,32,61,61,32,126,110,117,109,95,99,104,101,99,107,41,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",4,n.Ua);var mb=n.ja(D(12,"i8",2),8);function ob(t){return e.___errno_location&&(C[e.___errno_location()>>2]=t),t}assert(0==mb%8),e._i64Subtract=nb;var J={I:1,F:2,ed:3,bc:4,H:5,Aa:6,vb:7,zc:8,ea:9,Jb:10,va:11,qd:11,Ta:12,da:13,Vb:14,Lc:15,fa:16,wa:17,rd:18,ha:19,ya:20,P:21,q:22,uc:23,Sa:24,Q:25,nd:26,Wb:27,Hc:28,ia:29,bd:30,nc:31,Vc:32,Sb:33,Zc:34,Dc:42,Zb:43,Kb:44,ec:45,fc:46,gc:47,mc:48,od:49,xc:50,dc:51,Pb:35,Ac:37,Bb:52,Eb:53,sd:54,vc:55,Fb:56,Gb:57,Qb:35,Hb:59,Jc:60,yc:61,kd:62,Ic:63,Ec:64,Fc:65,ad:66,Bc:67,yb:68,gd:69,Lb:70,Wc:71,pc:72,Tb:73,Db:74,Qc:76,Cb:77,$c:78,hc:79,ic:80,lc:81,kc:82,jc:83,Kc:38,za:39,qc:36,ga:40,Rc:95,Uc:96,Ob:104,wc:105,zb:97,Yc:91,Oc:88,Gc:92,cd:108,Nb:111,wb:98,Mb:103,tc:101,rc:100,ld:110,Xb:112,Yb:113,ac:115,Ab:114,Rb:89,oc:90,Xc:93,dd:94,xb:99,sc:102,cc:106,Mc:107,md:109,pd:87,Ub:122,hd:116,Pc:95,Cc:123,$b:84,Sc:75,Ib:125,Nc:131,Tc:130,jd:86};function pb(t,e){H.push(function(){n.L("vi",t,[e])}),pb.level=H.length}function tb(){return!!tb.p}e._memset=qb,e._bitshift64Lshr=rb,e._bitshift64Shl=sb;var ub=[],vb={};function wb(t,e){wb.p||(wb.p={}),t in wb.p||(n.L("v",e),wb.p[t]=1)}var xb={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function yb(t,e){for(var r=0,i=t.length-1;0<=i;i--){var n=t[i];"."===n?t.splice(i,1):".."===n?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function zb(t){var e="/"===t.charAt(0),r="/"===t.substr(-1);return(t=yb(t.split("/").filter(function(t){return!!t}),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t}function Ab(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1);return t=e[0],e=e[1],t||e?(e&&(e=e.substr(0,e.length-1)),t+e):"."}function Bb(t){if("/"===t)return"/";var e=t.lastIndexOf("/");return-1===e?t:t.substr(e+1)}function Cb(){return zb(Array.prototype.slice.call(arguments,0).join("/"))}function K(t,e){return zb(t+"/"+e)}function Db(){for(var t="",e=!1,r=arguments.length-1;-1<=r&&!e;r--){if("string"!=typeof(e=0<=r?arguments[r]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!e)return"";t=e+"/"+t,e="/"===e.charAt(0)}return(e?"/":"")+(t=yb(t.split("/").filter(function(t){return!!t}),!e).join("/"))||"."}var Eb=[];function Fb(t,e){Eb[t]={input:[],output:[],N:e},Gb(t,Hb)}var Hb={open:function(t){var e=Eb[t.g.rdev];if(!e)throw new L(J.ha);t.tty=e,t.seekable=!1},close:function(t){t.tty.N.flush(t.tty)},flush:function(t){t.tty.N.flush(t.tty)},read:function(t,e,r,i){if(!t.tty||!t.tty.N.La)throw new L(J.Aa);for(var n=0,o=0;ot.e.length&&(t.e=M.cb(t),t.o=t.e.length),!t.e||t.e.subarray){var r=t.e?t.e.buffer.byteLength:0;e<=r||(e=Math.max(e,r*(r<1048576?2:1.125)|0),0!=r&&(e=Math.max(e,256)),r=t.e,t.e=new Uint8Array(e),0e)t.e.length=e;else for(;t.e.length=t.g.o)return 0;if(assert(0<=(t=Math.min(t.g.o-n,i))),8>1)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return e.mode},B:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.A.pa.root),e.reverse(),Cb.apply(null,e)},Ha:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},$a:function(t){if((t&=-32769)in P.Ha)return P.Ha[t];throw new L(J.q)},k:{D:function(t){var e;t=P.B(t);try{e=fs.lstatSync(t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return P.$&&!e.K&&(e.K=4096),P.$&&!e.blocks&&(e.blocks=(e.size+e.K-1)/e.K|0),{dev:e.dev,ino:e.ino,mode:e.mode,nlink:e.nlink,uid:e.uid,gid:e.gid,rdev:e.rdev,size:e.size,atime:e.atime,mtime:e.mtime,ctime:e.ctime,K:e.K,blocks:e.blocks}},u:function(t,e){var r=P.B(t);try{void 0!==e.mode&&(fs.chmodSync(r,e.mode),t.mode=e.mode),void 0!==e.size&&fs.truncateSync(r,e.size)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},lookup:function(t,e){var r=K(P.B(t),e);r=P.Ja(r);return P.createNode(t,e,r)},T:function(t,e,r,i){t=P.createNode(t,e,r,i),e=P.B(t);try{N(t.mode)?fs.mkdirSync(e,t.mode):fs.writeFileSync(e,"",{mode:t.mode})}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return t},rename:function(t,e,r){t=P.B(t),e=K(P.B(e),r);try{fs.renameSync(t,e)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},unlink:function(t,e){var r=K(P.B(t),e);try{fs.unlinkSync(r)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},rmdir:function(t,e){var r=K(P.B(t),e);try{fs.rmdirSync(r)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},readdir:function(t){t=P.B(t);try{return fs.readdirSync(t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},symlink:function(t,e,r){t=K(P.B(t),e);try{fs.symlinkSync(r,t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},readlink:function(t){var e=P.B(t);try{return e=fs.readlinkSync(e),e=Ob.relative(Ob.resolve(t.A.pa.root),e)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}}},n:{open:function(t){var e=P.B(t.g);try{32768==(61440&t.g.mode)&&(t.V=fs.openSync(e,P.$a(t.flags)))}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},close:function(t){try{32768==(61440&t.g.mode)&&t.V&&fs.closeSync(t.V)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},read:function(t,e,r,i,n){if(0===i)return 0;var o,a=new Buffer(i);try{o=fs.readSync(t.V,a,0,i,n)}catch(t){throw new L(J[t.code])}if(0>>0)%Q.length}function Xb(t){var e=Wb(t.parent.id,t.name);t.M=Q[e],Q[e]=t}function Nb(t,e){var r;if(r=(r=Yb(t,"x"))?r:t.k.lookup?0:J.da)throw new L(r,t);for(r=Q[Wb(t.id,e)];r;r=r.M){var i=r.name;if(r.parent.id===t.id&&i===e)return r}return t.k.lookup(t,e)}function Lb(t,e,r,i){return Zb||((Zb=function(t,e,r,i){t||(t=this),this.parent=t,this.A=t.A,this.U=null,this.id=Sb++,this.name=e,this.mode=r,this.k={},this.n={},this.rdev=i}).prototype={},Object.defineProperties(Zb.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(t){t?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(t){t?this.mode|=146:this.mode&=-147}},kb:{get:function(){return N(this.mode)}},jb:{get:function(){return 8192==(61440&this.mode)}}})),Xb(t=new Zb(t,e,r,i)),t}function N(t){return 16384==(61440&t)}var $b={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Yb(t,e){return Tb?0:(-1===e.indexOf("r")||292&t.mode)&&(-1===e.indexOf("w")||146&t.mode)&&(-1===e.indexOf("x")||73&t.mode)?0:J.da}function ac(t,e){try{return Nb(t,e),J.wa}catch(t){}return Yb(t,"wx")}function bc(){for(var t=0;t<=4096;t++)if(!Rb[t])return t;throw new L(J.Sa)}function cc(t){dc||((dc=function(){}).prototype={},Object.defineProperties(dc.prototype,{object:{get:function(){return this.g},set:function(t){this.g=t}},Ld:{get:function(){return 1!=(2097155&this.flags)}},Md:{get:function(){return 0!=(2097155&this.flags)}},Kd:{get:function(){return 1024&this.flags}}}));var e,r=new dc;for(e in t)r[e]=t[e];return t=r,r=bc(),t.fd=r,Rb[r]=t}var Kb={open:function(t){t.n=Qb[t.g.rdev].n,t.n.open&&t.n.open(t)},G:function(){throw new L(J.ia)}},qc;function Gb(t,e){Qb[t]={n:e}}function ec(t,e){var r,i="/"===e,n=!e;if(i&&Pb)throw new L(J.fa);if(!i&&!n){if(e=(r=S(e,{Ia:!1})).path,(r=r.g).U)throw new L(J.fa);if(!N(r.mode))throw new L(J.ya)}n={type:t,pa:{},Oa:e,lb:[]};var o=t.A(n);(o.A=n).root=o,i?Pb=o:r&&(r.U=n,r.A&&r.A.lb.push(n))}function fc(t,e,r){var i=S(t,{parent:!0}).g;if(!(t=Bb(t))||"."===t||".."===t)throw new L(J.q);var n=ac(i,t);if(n)throw new L(n);if(!i.k.T)throw new L(J.I);return i.k.T(i,t,e,r)}function gc(t,e){return e=4095&(void 0!==e?e:438),fc(t,e|=32768,0)}function V(t,e){return e=1023&(void 0!==e?e:511),fc(t,e|=16384,0)}function hc(t,e,r){return void 0===r&&(r=e,e=438),fc(t,8192|e,r)}function ic(t,e){if(!Db(t))throw new L(J.F);var r=S(e,{parent:!0}).g;if(!r)throw new L(J.F);var i=Bb(e),n=ac(r,i);if(n)throw new L(n);if(!r.k.symlink)throw new L(J.I);return r.k.symlink(r,i,t)}function Vb(t){if(!(t=S(t).g))throw new L(J.F);if(!t.k.readlink)throw new L(J.q);return Db(T(t.parent),t.k.readlink(t))}function jc(t,e){var r;if(!(r="string"==typeof t?S(t,{la:!0}).g:t).k.u)throw new L(J.I);r.k.u(r,{mode:4095&e|-4096&r.mode,timestamp:Date.now()})}function kc(r,t){var i,n,o;if(""===r)throw new L(J.F);if("string"==typeof t){if(void 0===(n=$b[t]))throw Error("Unknown file open mode: "+t)}else n=t;if(i=64&(t=n)?4095&(void 0===i?438:i)|32768:0,"object"==typeof r)o=r;else{r=zb(r);try{o=S(r,{la:!(131072&t)}).g}catch(t){}}if(n=!1,64&t)if(o){if(128&t)throw new L(J.wa)}else o=fc(r,i,0),n=!0;if(!o)throw new L(J.F);if(8192==(61440&o.mode)&&(t&=-513),65536&t&&!N(o.mode))throw new L(J.ya);if(!n&&(i=o?40960==(61440&o.mode)?J.ga:N(o.mode)&&(0!=(2097155&t)||512&t)?J.P:(i=["r","w","rw"][3&t],512&t&&(i+="w"),Yb(o,i)):J.F))throw new L(i);if(512&t){var a;if(!(a="string"==typeof(i=o)?S(i,{la:!0}).g:i).k.u)throw new L(J.I);if(N(a.mode))throw new L(J.P);if(32768!=(61440&a.mode))throw new L(J.q);if(i=Yb(a,"w"))throw new L(i);a.k.u(a,{size:0,timestamp:Date.now()})}t&=-641,(o=cc({g:o,path:T(o),flags:t,seekable:!0,position:0,n:o.n,tb:[],error:!1})).n.open&&o.n.open(o),!e.logReadFiles||1&t||(lc||(lc={}),r in lc||(lc[r]=1,e.printErr("read file: "+r)));try{R.onOpenFile&&(a=0,1!=(2097155&t)&&(a|=1),0!=(2097155&t)&&(a|=2),R.onOpenFile(r,a))}catch(t){console.log("FS.trackingDelegate['onOpenFile']('"+r+"', flags) threw an exception: "+t.message)}return o}function mc(t){t.na&&(t.na=null);try{t.n.close&&t.n.close(t)}catch(t){throw t}finally{Rb[t.fd]=null}}function nc(t,e,r){if(!t.seekable||!t.n.G)throw new L(J.ia);t.position=t.n.G(t,e,r),t.tb=[]}function oc(t,e,r,i,n,o){if(i<0||n<0)throw new L(J.q);if(0==(2097155&t.flags))throw new L(J.ea);if(N(t.g.mode))throw new L(J.P);if(!t.n.write)throw new L(J.q);1024&t.flags&&nc(t,0,2);var a=!0;if(void 0===n)n=t.position,a=!1;else if(!t.seekable)throw new L(J.ia);e=t.n.write(t,e,r,i,n,o),a||(t.position+=e);try{t.path&&R.onWriteToFile&&R.onWriteToFile(t.path)}catch(t){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+t.message)}return e}function pc(){L||((L=function(t,e){this.g=e,this.qb=function(t){for(var e in this.S=t,J)if(J[e]===t){this.code=e;break}},this.qb(t),this.message=xb[t]}).prototype=Error(),L.prototype.constructor=L,[J.F].forEach(function(t){Mb[t]=new L(t),Mb[t].stack=""}))}function rc(t,e){var r=0;return t&&(r|=365),e&&(r|=146),r}function sc(t,e,r,i){return gc(t=K("string"==typeof t?t:T(t),e),rc(r,i))}function tc(t,e,r,i,n,o){if(n=gc(t=e?K("string"==typeof t?t:T(t),e):t,i=rc(i,n)),r){if("string"==typeof r){t=Array(r.length),e=0;for(var a=r.length;e>2]}function xc(){var t;if(t=X(),!(t=Rb[t]))throw new L(J.ea);return t}var yc={};function Ga(t){Ga.p||(r=Qa(r),Ga.p=!0,assert(n.R),Ga.bb=n.R,n.R=function(){x("cannot dynamically allocate, sbrk now has control")});var e=r;return 0==t||Ga.bb(t)?e:4294967295}e._i64Add=zc;var Ac=1;function Cc(t,e){if(Dc=t,Ec=e,!Fc)return 1;if(0==t)Y=function(){setTimeout(Gc,e)},Hc="timeout";else if(1==t)Y=function(){Ic(Gc)},Hc="rAF";else if(2==t){if(!window.setImmediate){var r=[];window.addEventListener("message",function(t){t.source===window&&"__emcc"===t.data&&(t.stopPropagation(),r.shift()())},!0),window.setImmediate=function(t){r.push(t),window.postMessage("__emcc","*")}}Y=function(){window.setImmediate(Gc)},Hc="immediate"}return 0}function Jc(a,t,r,s,i){e.noExitRuntime=!0,assert(!Fc,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Fc=a,Kc=s;var l=Lc;if(Gc=function(){if(!na)if(0>r-6&63;r=r-6,t=t+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[n]}2==r?(t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(3&e)<<4],t+="=="):4==r&&(t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(15&e)<<2],t+="="),u.src="data:audio/x-"+a.substr(-3)+";base64,"+t,s(u)}},u.src=n,ad(function(){s(u)})}});var r=e.canvas;r&&(r.sa=r.requestPointerLock||r.mozRequestPointerLock||r.webkitRequestPointerLock||r.msRequestPointerLock||function(){},r.Fa=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},r.Fa=r.Fa.bind(document),document.addEventListener("pointerlockchange",t,!1),document.addEventListener("mozpointerlockchange",t,!1),document.addEventListener("webkitpointerlockchange",t,!1),document.addEventListener("mspointerlockchange",t,!1),e.elementPointerLock&&r.addEventListener("click",function(t){!Tc&&r.sa&&(r.sa(),t.preventDefault())},!1))}}function bd(t,r,i,n){if(r&&e.ka&&t==e.canvas)return e.ka;var o,a;if(r){if(a={antialias:!1,alpha:!1},n)for(var s in n)a[s]=n[s];(a=GL.createContext(t,a))&&(o=GL.getContext(a).td),t.style.backgroundColor="black"}else o=t.getContext("2d");return o?(i&&(r||assert("undefined"==typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),e.ka=o,r&&GL.Od(a),e.Td=r,Uc.forEach(function(t){t()}),Vc()),o):null}var cd=!1,dd=void 0,ed=void 0;function fd(t,r,i){function n(){Sc=!1;var t=o.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===t?(o.Da=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){},o.Da=o.Da.bind(document),dd&&o.sa(),Sc=!0,ed&&gd()):(t.parentNode.insertBefore(o,t),t.parentNode.removeChild(t),ed&&hd()),e.onFullScreen&&e.onFullScreen(Sc),id(o)}void 0===(dd=t)&&(dd=!0),void 0===(ed=r)&&(ed=!1),void 0===(jd=i)&&(jd=null);var o=e.canvas;cd||(cd=!0,document.addEventListener("fullscreenchange",n,!1),document.addEventListener("mozfullscreenchange",n,!1),document.addEventListener("webkitfullscreenchange",n,!1),document.addEventListener("MSFullscreenChange",n,!1));var a=document.createElement("div");o.parentNode.insertBefore(a,o),a.appendChild(o),a.p=a.requestFullScreen||a.mozRequestFullScreen||a.msRequestFullscreen||(a.webkitRequestFullScreen?function(){a.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),i?a.p({Ud:i}):a.p()}var kd=0;function ld(t){var e=Date.now();if(0===kd)kd=e+1e3/60;else for(;kd<=e+2;)kd+=1e3/60;e=Math.max(kd-e,0),setTimeout(t,e)}function Ic(t){"undefined"==typeof window?ld(t):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||ld),window.requestAnimationFrame(t))}function ad(t){e.noExitRuntime=!0,setTimeout(function(){na||t()},1e4)}function $c(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]}function md(t,e,r){var i=new XMLHttpRequest;i.open("GET",t,!0),i.responseType="arraybuffer",i.onload=function(){200==i.status||0==i.status&&i.response?e(i.response):r()},i.onerror=r,i.send(null)}function nd(e,r,t){md(e,function(t){assert(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),lb()},function(){if(!t)throw'Loading data file "'+e+'" failed.';t()}),kb()}var od=[],Wc,Xc,Yc,Zc,jd;function pd(){var r=e.canvas;od.forEach(function(t){t(r.width,r.height)})}function gd(){if("undefined"!=typeof SDL){var t=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=8388608|t}pd()}function hd(){if("undefined"!=typeof SDL){var t=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=-8388609&t}pd()}function id(t,r,i){r&&i?(t.ub=r,t.hb=i):(r=t.ub,i=t.hb);var n=r,o=i;if(e.forcedAspectRatio&&0this.length-1||t<0)){var e=t%this.chunkSize;return this.gb(t/this.chunkSize|0)[e]}},a.prototype.pb=function(t){this.gb=t},a.prototype.Ca=function(){var t=new XMLHttpRequest;if(t.open("HEAD",l,!1),t.send(null),!(200<=t.status&&t.status<300||304===t.status))throw Error("Couldn't load "+l+". Status: "+t.status);var e,o=Number(t.getResponseHeader("Content-length")),a=1048576;(e=t.getResponseHeader("Accept-Ranges"))&&"bytes"===e||(a=o);var s=this;s.pb(function(t){var e=t*a,r=(t+1)*a-1;r=Math.min(r,o-1);if(void 0===s.Y[t]){var i=s.Y;if(r=(t=t.g.e).length)return 0;if(assert(0<=(i=Math.min(t.length-n,i))),t.slice)for(var o=0;o>2]=0;case 21520:return r.tty?-J.q:-J.Q;case 21531:if(n=X(),!r.n.ib)throw new L(J.Q);return r.n.ib(r,i,n);default:x("bad ioctl syscall "+i)}}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},___syscall6:function(t,e){wc=e;try{return mc(xc()),0}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},_emscripten_set_main_loop_timing:Cc,__ZSt18uncaught_exceptionv:tb,___setErrNo:ob,_sbrk:Ga,___cxa_begin_catch:function(t){var e;tb.p--,ub.push(t);t:{if(t&&!vb[t])for(e in vb)if(vb[e].wd===t)break t;e=t}return e&&vb[e].Sd++,t},_emscripten_memcpy_big:function(t,e,r){return E.set(E.subarray(e,e+r),t),t},_sysconf:function(t){switch(t){case 30:return 4096;case 85:return F/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return ob(J.q),-1},_pthread_getspecific:function(t){return yc[t]||0},_pthread_self:function(){return 0},_pthread_once:wb,_pthread_key_create:function(t){return 0==t?J.q:(C[t>>2]=Ac,yc[Ac]=0,Ac++,0)},___unlock:function(){},_emscripten_set_main_loop:Jc,_pthread_setspecific:function(t,e){return t in yc?(yc[t]=e,0):J.q},___lock:function(){},_abort:function(){e.abort()},_pthread_cleanup_push:pb,_time:function(t){var e=Date.now()/1e3|0;return t&&(C[t>>2]=e),e},___syscall140:function(t,e){wc=e;try{var r=xc(),i=X(),n=X(),o=X(),a=X();return assert(0===i),nc(r,n,a),C[o>>2]=r.position,r.na&&0===n&&0===a&&(r.na=null),0}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},___syscall146:function(t,e){wc=e;try{var r,i=xc(),n=X();t:{for(var o=X(),a=0,s=0;s>2],C[n+(8*s+4)>>2],void 0);if(l<0){r=-1;break t}a+=l}r=a}return r}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},STACKTOP:m,STACK_MAX:Va,tempDoublePtr:mb,ABORT:na,cttz_i8:qd};var Z=function(t,e,r){"use asm";var i=t.Int8Array;var n=t.Int16Array;var o=t.Int32Array;var a=t.Uint8Array;var s=t.Uint16Array;var l=t.Uint32Array;var u=t.Float32Array;var h=t.Float64Array;var pt=new i(r);var $=new n(r);var dt=new o(r);var mt=new a(r);var gt=new s(r);var c=new l(r);var f=new u(r);var tt=new h(r);var p=t.byteLength;var vt=e.STACKTOP|0;var d=e.STACK_MAX|0;var et=e.tempDoublePtr|0;var m=e.ABORT|0;var g=e.cttz_i8|0;var v=0;var _=0;var y=0;var b=0;var x=t.NaN,w=t.Infinity;var T=0,k=0,S=0,P=0,C=0.0,A=0,E=0,I=0,O=0.0;var rt=0;var M=0;var D=0;var z=0;var R=0;var F=0;var j=0;var L=0;var N=0;var B=0;var U=t.Math.floor;var X=t.Math.abs;var H=t.Math.sqrt;var q=t.Math.pow;var W=t.Math.cos;var G=t.Math.sin;var V=t.Math.tan;var Y=t.Math.acos;var Z=t.Math.asin;var J=t.Math.atan;var K=t.Math.atan2;var Q=t.Math.exp;var it=t.Math.log;var nt=t.Math.ceil;var _t=t.Math.imul;var ot=t.Math.min;var at=t.Math.clz32;var st=e.abort;var lt=e.assert;var ut=e.invoke_iiii;var ht=e.invoke_viiiii;var ct=e.invoke_vi;var ft=e.invoke_ii;var yt=e.invoke_viii;var bt=e.invoke_v;var xt=e.invoke_viiiiii;var wt=e.invoke_iiiiii;var Tt=e.invoke_viiii;var kt=e._pthread_cleanup_pop;var St=e.___syscall54;var Pt=e.___syscall6;var Ct=e._emscripten_set_main_loop_timing;var At=e.__ZSt18uncaught_exceptionv;var Et=e.___setErrNo;var It=e._sbrk;var Ot=e.___cxa_begin_catch;var Mt=e._emscripten_memcpy_big;var Dt=e._sysconf;var zt=e._pthread_getspecific;var Rt=e._pthread_self;var Ft=e._pthread_once;var jt=e._pthread_key_create;var Lt=e.___unlock;var Nt=e._emscripten_set_main_loop;var Bt=e._pthread_setspecific;var Ut=e.___lock;var Xt=e._abort;var Ht=e._pthread_cleanup_push;var qt=e._time;var Wt=e.___syscall140;var Gt=e.___syscall146;var Vt=0.0;function Yt(t){if(p(t)&16777215||p(t)<=16777215||p(t)>2147483648)return false;pt=new i(t);$=new n(t);dt=new o(t);mt=new a(t);gt=new s(t);c=new l(t);f=new u(t);tt=new h(t);r=t;return true}function Zt(t){t=t|0;var e=0;e=vt;vt=vt+t|0;vt=vt+15&-16;return e|0}function Jt(){return vt|0}function Kt(t){t=t|0;vt=t}function Qt(t,e){t=t|0;e=e|0;vt=t;d=e}function $t(t,e){t=t|0;e=e|0;if(!v){v=t;_=e}}function te(t){t=t|0;pt[et>>0]=pt[t>>0];pt[et+1>>0]=pt[t+1>>0];pt[et+2>>0]=pt[t+2>>0];pt[et+3>>0]=pt[t+3>>0]}function ee(t){t=t|0;pt[et>>0]=pt[t>>0];pt[et+1>>0]=pt[t+1>>0];pt[et+2>>0]=pt[t+2>>0];pt[et+3>>0]=pt[t+3>>0];pt[et+4>>0]=pt[t+4>>0];pt[et+5>>0]=pt[t+5>>0];pt[et+6>>0]=pt[t+6>>0];pt[et+7>>0]=pt[t+7>>0]}function re(t){t=t|0;rt=t}function ie(){return rt|0}function ne(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;m=vt;vt=vt+608|0;f=m+88|0;c=m+72|0;l=m+64|0;s=m+48|0;a=m+24|0;o=m;h=m+96|0;p=m+92|0;u=t+4|0;d=t+8|0;if((dt[u>>2]|0)>>>0>(dt[d>>2]|0)>>>0){dt[o>>2]=1154;dt[o+4>>2]=2120;dt[o+8>>2]=1133;br(h,1100,o)|0;yr(h,m+16|0)|0}if((2147418112/(i>>>0)|0)>>>0<=e>>>0){dt[a>>2]=1154;dt[a+4>>2]=2121;dt[a+8>>2]=1169;br(h,1100,a)|0;yr(h,m+40|0)|0}a=dt[d>>2]|0;if(a>>>0>=e>>>0){d=1;vt=m;return d|0}do{if(r){if(e){o=e+-1|0;if(!(o&e)){o=11;break}else e=o}else e=-1;e=e>>>16|e;e=e>>>8|e;e=e>>>4|e;e=e>>>2|e;e=(e>>>1|e)+1|0;o=10}else o=10}while(0);if((o|0)==10)if(!e){e=0;o=12}else o=11;if((o|0)==11)if(e>>>0<=a>>>0)o=12;if((o|0)==12){dt[s>>2]=1154;dt[s+4>>2]=2130;dt[s+8>>2]=1217;br(h,1100,s)|0;yr(h,l)|0}r=_t(e,i)|0;do{if(!n){o=oe(dt[t>>2]|0,r,p,1)|0;if(!o){d=0;vt=m;return d|0}else{dt[t>>2]=o;break}}else{a=ae(r,p)|0;if(!a){d=0;vt=m;return d|0}Ii[n&0](a,dt[t>>2]|0,dt[u>>2]|0);o=dt[t>>2]|0;do{if(o)if(!(o&7)){Di[dt[104>>2]&1](o,0,0,1,dt[27]|0)|0;break}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(h,1100,c)|0;yr(h,f)|0;break}}while(0);dt[t>>2]=a}}while(0);o=dt[p>>2]|0;if(o>>>0>r>>>0)e=(o>>>0)/(i>>>0)|0;dt[d>>2]=e;d=1;vt=m;return d|0}function oe(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;u=vt;vt=vt+592|0;l=u+48|0;o=u+24|0;n=u;s=u+72|0;a=u+68|0;if(t&7){dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1494;br(s,1100,n)|0;yr(s,u+16|0)|0;l=0;vt=u;return l|0}if(e>>>0>2147418112){dt[o>>2]=1154;dt[o+4>>2]=2499;dt[o+8>>2]=1387;br(s,1100,o)|0;yr(s,u+40|0)|0;l=0;vt=u;return l|0}dt[a>>2]=e;i=Di[dt[104>>2]&1](t,e,a,i,dt[27]|0)|0;if(r)dt[r>>2]=dt[a>>2];if(!(i&7)){l=i;vt=u;return l|0}dt[l>>2]=1154;dt[l+4>>2]=2551;dt[l+8>>2]=1440;br(s,1100,l)|0;yr(s,u+64|0)|0;l=i;vt=u;return l|0}function ae(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0;l=vt;vt=vt+592|0;a=l+48|0;s=l+24|0;r=l;o=l+72|0;n=l+68|0;i=t+3&-4;i=(i|0)!=0?i:4;if(i>>>0>2147418112){dt[r>>2]=1154;dt[r+4>>2]=2499;dt[r+8>>2]=1387;br(o,1100,r)|0;yr(o,l+16|0)|0;s=0;vt=l;return s|0}dt[n>>2]=i;r=Di[dt[104>>2]&1](0,i,n,1,dt[27]|0)|0;t=dt[n>>2]|0;if(e)dt[e>>2]=t;if((r|0)==0|t>>>0>>0){dt[s>>2]=1154;dt[s+4>>2]=2499;dt[s+8>>2]=1413;br(o,1100,s)|0;yr(o,l+40|0)|0;s=0;vt=l;return s|0}if(!(r&7)){s=r;vt=l;return s|0}dt[a>>2]=1154;dt[a+4>>2]=2526;dt[a+8>>2]=1440;br(o,1100,a)|0;yr(o,l+64|0)|0;s=r;vt=l;return s|0}function se(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0;L=vt;vt=vt+960|0;R=L+232|0;z=L+216|0;D=L+208|0;M=L+192|0;O=L+184|0;I=L+168|0;E=L+160|0;A=L+144|0;S=L+136|0;k=L+120|0;T=L+112|0;w=L+96|0;y=L+88|0;_=L+72|0;v=L+64|0;g=L+48|0;c=L+40|0;p=L+24|0;f=L+16|0;h=L;C=L+440|0;F=L+376|0;j=L+304|0;m=L+236|0;if((e|0)==0|i>>>0>11){t=0;vt=L;return t|0}dt[t>>2]=e;n=j;o=n+68|0;do{dt[n>>2]=0;n=n+4|0}while((n|0)<(o|0));o=0;do{n=pt[r+o>>0]|0;if(n<<24>>24){P=j+((n&255)<<2)|0;dt[P>>2]=(dt[P>>2]|0)+1}o=o+1|0}while((o|0)!=(e|0));o=0;u=1;a=0;s=-1;l=0;while(1){n=dt[j+(u<<2)>>2]|0;if(!n)dt[t+28+(u+-1<<2)>>2]=0;else{P=u+-1|0;dt[F+(P<<2)>>2]=o;o=n+o|0;x=16-u|0;dt[t+28+(P<<2)>>2]=(o+-1<>2]=l;dt[m+(u<<2)>>2]=l;a=a>>>0>u>>>0?a:u;s=s>>>0>>0?s:u;l=n+l|0}u=u+1|0;if((u|0)==17){P=a;break}else o=o<<1}dt[t+4>>2]=l;o=t+172|0;do{if(l>>>0>(dt[o>>2]|0)>>>0){dt[o>>2]=l;if(l){n=l+-1|0;if(n&l)d=14}else{n=-1;d=14}if((d|0)==14){x=n>>>16|n;x=x>>>8|x;x=x>>>4|x;x=x>>>2|x;x=(x>>>1|x)+1|0;dt[o>>2]=x>>>0>e>>>0?e:x}a=t+176|0;n=dt[a>>2]|0;do{if(n){x=dt[n+-4>>2]|0;n=n+-8|0;if(!((x|0)!=0?(x|0)==(~dt[n>>2]|0):0)){dt[h>>2]=1154;dt[h+4>>2]=644;dt[h+8>>2]=1863;br(C,1100,h)|0;yr(C,f)|0}if(!(n&7)){Di[dt[104>>2]&1](n,0,0,1,dt[27]|0)|0;break}else{dt[p>>2]=1154;dt[p+4>>2]=2499;dt[p+8>>2]=1516;br(C,1100,p)|0;yr(C,c)|0;break}}}while(0);o=dt[o>>2]|0;o=(o|0)!=0?o:1;n=ae((o<<1)+8|0,0)|0;if(!n){dt[a>>2]=0;n=0;break}else{dt[n+4>>2]=o;dt[n>>2]=~o;dt[a>>2]=n+8;d=25;break}}else d=25}while(0);t:do{if((d|0)==25){x=t+24|0;pt[x>>0]=s;pt[t+25>>0]=P;o=t+176|0;a=0;do{b=pt[r+a>>0]|0;n=b&255;if(b<<24>>24){if(!(dt[j+(n<<2)>>2]|0)){dt[g>>2]=1154;dt[g+4>>2]=2273;dt[g+8>>2]=1261;br(C,1100,g)|0;yr(C,v)|0}b=m+(n<<2)|0;n=dt[b>>2]|0;dt[b>>2]=n+1;if(n>>>0>=l>>>0){dt[_>>2]=1154;dt[_+4>>2]=2277;dt[_+8>>2]=1274;br(C,1100,_)|0;yr(C,y)|0}$[(dt[o>>2]|0)+(n<<1)>>1]=a}a=a+1|0}while((a|0)!=(e|0));n=pt[x>>0]|0;y=(n&255)>>>0>>0?i:0;b=t+8|0;dt[b>>2]=y;_=(y|0)!=0;if(_){v=1<>>0>(dt[n>>2]|0)>>>0){dt[n>>2]=v;a=t+168|0;n=dt[a>>2]|0;do{if(n){g=dt[n+-4>>2]|0;n=n+-8|0;if(!((g|0)!=0?(g|0)==(~dt[n>>2]|0):0)){dt[w>>2]=1154;dt[w+4>>2]=644;dt[w+8>>2]=1863;br(C,1100,w)|0;yr(C,T)|0}if(!(n&7)){Di[dt[104>>2]&1](n,0,0,1,dt[27]|0)|0;break}else{dt[k>>2]=1154;dt[k+4>>2]=2499;dt[k+8>>2]=1516;br(C,1100,k)|0;yr(C,S)|0;break}}}while(0);n=v<<2;o=ae(n+8|0,0)|0;if(!o){dt[a>>2]=0;n=0;break t}else{S=o+8|0;dt[o+4>>2]=v;dt[o>>2]=~v;dt[a>>2]=S;o=S;break}}else{o=t+168|0;n=v<<2;a=o;o=dt[o>>2]|0}}while(0);Yr(o|0,-1,n|0)|0;d=t+176|0;g=1;do{if(dt[j+(g<<2)>>2]|0){e=y-g|0;m=1<>2]|0;if(o>>>0>=16){dt[A>>2]=1154;dt[A+4>>2]=1953;dt[A+8>>2]=1737;br(C,1100,A)|0;yr(C,E)|0}n=dt[t+28+(o<<2)>>2]|0;if(!n)p=-1;else p=(n+-1|0)>>>(16-g|0);if(s>>>0<=p>>>0){c=(dt[t+96+(o<<2)>>2]|0)-s|0;f=g<<16;do{n=gt[(dt[d>>2]|0)+(c+s<<1)>>1]|0;if((mt[r+n>>0]|0|0)!=(g|0)){dt[I>>2]=1154;dt[I+4>>2]=2319;dt[I+8>>2]=1303;br(C,1100,I)|0;yr(C,O)|0}h=s<>>0>=v>>>0){dt[M>>2]=1154;dt[M+4>>2]=2325;dt[M+8>>2]=1337;br(C,1100,M)|0;yr(C,D)|0}n=dt[a>>2]|0;if((dt[n+(l<<2)>>2]|0)!=-1){dt[z>>2]=1154;dt[z+4>>2]=2327;dt[z+8>>2]=1360;br(C,1100,z)|0;yr(C,R)|0;n=dt[a>>2]|0}dt[n+(l<<2)>>2]=o;u=u+1|0}while(u>>>0>>0);s=s+1|0}while(s>>>0<=p>>>0)}}g=g+1|0}while(y>>>0>=g>>>0);n=pt[x>>0]|0}o=t+96|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F>>2]|0);o=t+100|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+4>>2]|0);o=t+104|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+8>>2]|0);o=t+108|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+12>>2]|0);o=t+112|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+16>>2]|0);o=t+116|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+20>>2]|0);o=t+120|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+24>>2]|0);o=t+124|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+28>>2]|0);o=t+128|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+32>>2]|0);o=t+132|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+36>>2]|0);o=t+136|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+40>>2]|0);o=t+140|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+44>>2]|0);o=t+144|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+48>>2]|0);o=t+148|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+52>>2]|0);o=t+152|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+56>>2]|0);o=t+156|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+60>>2]|0);o=t+16|0;dt[o>>2]=0;a=t+20|0;dt[a>>2]=n&255;e:do{if(_){while(1){if(!i)break e;n=i+-1|0;if(!(dt[j+(i<<2)>>2]|0))i=n;else break}dt[o>>2]=dt[t+28+(n<<2)>>2];n=y+1|0;dt[a>>2]=n;if(n>>>0<=P>>>0){while(1){if(dt[j+(n<<2)>>2]|0)break;n=n+1|0;if(n>>>0>P>>>0)break e}dt[a>>2]=n}}}while(0);dt[t+92>>2]=-1;dt[t+160>>2]=1048575;dt[t+12>>2]=32-(dt[b>>2]|0);n=1}}while(0);t=n;vt=L;return t|0}function le(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0;if(!t){n=Br(e)|0;if(!r){r=n;return r|0}if(!n)o=0;else o=Hr(n)|0;dt[r>>2]=o;r=n;return r|0}if(!e){Ur(t);if(!r){r=0;return r|0}dt[r>>2]=0;r=0;return r|0}n=Xr(t,e)|0;o=(n|0)!=0;if(o|i^1)o=o?n:t;else{n=Xr(t,e)|0;o=(n|0)==0?t:n}if(!r){r=n;return r|0}e=Hr(o)|0;dt[r>>2]=e;r=n;return r|0}function ue(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if(!((t|0)!=0&e>>>0>73&(r|0)!=0)){r=0;return r|0}if((dt[r>>2]|0)!=40|e>>>0<74){r=0;return r|0}if(((mt[t>>0]|0)<<8|(mt[t+1>>0]|0)|0)!=18552){r=0;return r|0}if(((mt[t+2>>0]|0)<<8|(mt[t+3>>0]|0))>>>0<74){r=0;return r|0}if(((mt[t+7>>0]|0)<<16|(mt[t+6>>0]|0)<<24|(mt[t+8>>0]|0)<<8|(mt[t+9>>0]|0))>>>0>e>>>0){r=0;return r|0}dt[r+4>>2]=(mt[t+12>>0]|0)<<8|(mt[t+13>>0]|0);dt[r+8>>2]=(mt[t+14>>0]|0)<<8|(mt[t+15>>0]|0);dt[r+12>>2]=mt[t+16>>0];dt[r+16>>2]=mt[t+17>>0];e=t+18|0;i=r+32|0;dt[i>>2]=mt[e>>0];dt[i+4>>2]=0;e=pt[e>>0]|0;dt[r+20>>2]=e<<24>>24==0|e<<24>>24==9?8:16;dt[r+24>>2]=(mt[t+26>>0]|0)<<16|(mt[t+25>>0]|0)<<24|(mt[t+27>>0]|0)<<8|(mt[t+28>>0]|0);dt[r+28>>2]=(mt[t+30>>0]|0)<<16|(mt[t+29>>0]|0)<<24|(mt[t+31>>0]|0)<<8|(mt[t+32>>0]|0);r=1;return r|0}function he(t){t=t|0;Ot(t|0)|0;Ue()}function ce(t){t=t|0;var e=0,r=0,i=0,n=0,o=0;o=vt;vt=vt+544|0;n=o;i=o+24|0;e=dt[t+20>>2]|0;if(e)fe(e);e=t+4|0;r=dt[e>>2]|0;if(!r){n=t+16|0;pt[n>>0]=0;vt=o;return}if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1516;br(i,1100,n)|0;yr(i,o+16|0)|0}dt[e>>2]=0;dt[t+8>>2]=0;dt[t+12>>2]=0;n=t+16|0;pt[n>>0]=0;vt=o;return}function fe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;p=vt;vt=vt+640|0;f=p+112|0;c=p+96|0;h=p+88|0;u=p+72|0;l=p+64|0;s=p+48|0;i=p+40|0;o=p+24|0;n=p+16|0;r=p;a=p+120|0;if(!t){vt=p;return}e=dt[t+168>>2]|0;do{if(e){d=dt[e+-4>>2]|0;e=e+-8|0;if(!((d|0)!=0?(d|0)==(~dt[e>>2]|0):0)){dt[r>>2]=1154;dt[r+4>>2]=644;dt[r+8>>2]=1863;br(a,1100,r)|0;yr(a,n)|0}if(!(e&7)){Di[dt[104>>2]&1](e,0,0,1,dt[27]|0)|0;break}else{dt[o>>2]=1154;dt[o+4>>2]=2499;dt[o+8>>2]=1516;br(a,1100,o)|0;yr(a,i)|0;break}}}while(0);e=dt[t+176>>2]|0;do{if(e){d=dt[e+-4>>2]|0;e=e+-8|0;if(!((d|0)!=0?(d|0)==(~dt[e>>2]|0):0)){dt[s>>2]=1154;dt[s+4>>2]=644;dt[s+8>>2]=1863;br(a,1100,s)|0;yr(a,l)|0}if(!(e&7)){Di[dt[104>>2]&1](e,0,0,1,dt[27]|0)|0;break}else{dt[u>>2]=1154;dt[u+4>>2]=2499;dt[u+8>>2]=1516;br(a,1100,u)|0;yr(a,h)|0;break}}}while(0);if(!(t&7)){Di[dt[104>>2]&1](t,0,0,1,dt[27]|0)|0;vt=p;return}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(a,1100,c)|0;yr(a,f)|0;vt=p;return}}function pe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+560|0;a=h+40|0;s=h+24|0;e=h;o=h+48|0;n=t+8|0;r=dt[n>>2]|0;if((r+-1|0)>>>0>=8192){dt[e>>2]=1154;dt[e+4>>2]=2997;dt[e+8>>2]=1541;br(o,1100,e)|0;yr(o,h+16|0)|0}dt[t>>2]=r;i=t+20|0;e=dt[i>>2]|0;if(!e){e=ae(180,0)|0;if(!e)e=0;else{u=e+164|0;dt[u>>2]=0;dt[u+4>>2]=0;dt[u+8>>2]=0;dt[u+12>>2]=0}dt[i>>2]=e;u=e;l=dt[t>>2]|0}else{u=e;l=r}if(!(dt[n>>2]|0)){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(o,1100,s)|0;yr(o,a)|0;o=dt[t>>2]|0}else o=l;n=dt[t+4>>2]|0;if(o>>>0>16){r=o;e=0}else{t=0;u=se(u,l,n,t)|0;vt=h;return u|0}while(1){i=e+1|0;if(r>>>0>3){r=r>>>1;e=i}else{r=i;break}}t=e+2+((r|0)!=32&1<>>0>>0&1)|0;t=t>>>0<11?t&255:11;u=se(u,l,n,t)|0;vt=h;return u|0}function de(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0;R=vt;vt=vt+800|0;I=R+256|0;E=R+240|0;A=R+232|0;C=R+216|0;P=R+208|0;S=R+192|0;k=R+184|0;T=R+168|0;w=R+160|0;x=R+144|0;b=R+136|0;y=R+120|0;_=R+112|0;v=R+96|0;g=R+88|0;m=R+72|0;c=R+64|0;h=R+48|0;s=R+40|0;l=R+24|0;o=R+16|0;n=R;D=R+288|0;z=R+264|0;O=me(t,14)|0;if(!O){dt[e>>2]=0;r=e+4|0;i=dt[r>>2]|0;if(i){if(!(i&7))Di[dt[104>>2]&1](i,0,0,1,dt[27]|0)|0;else{dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1516;br(D,1100,n)|0;yr(D,o)|0}dt[r>>2]=0;dt[e+8>>2]=0;dt[e+12>>2]=0}pt[e+16>>0]=0;r=e+20|0;i=dt[r>>2]|0;if(!i){e=1;vt=R;return e|0}fe(i);dt[r>>2]=0;e=1;vt=R;return e|0}p=e+4|0;d=e+8|0;r=dt[d>>2]|0;if((r|0)!=(O|0)){if(r>>>0<=O>>>0){do{if((dt[e+12>>2]|0)>>>0>>0){if(ne(p,O,(r+1|0)==(O|0),1,0)|0){r=dt[d>>2]|0;break}pt[e+16>>0]=1;e=0;vt=R;return e|0}}while(0);Yr((dt[p>>2]|0)+r|0,0,O-r|0)|0}dt[d>>2]=O}Yr(dt[p>>2]|0,0,O|0)|0;f=t+20|0;r=dt[f>>2]|0;if((r|0)<5){o=t+4|0;a=t+8|0;n=t+16|0;do{i=dt[o>>2]|0;if((i|0)==(dt[a>>2]|0))i=0;else{dt[o>>2]=i+1;i=mt[i>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[l>>2]=1154;dt[l+4>>2]=3199;dt[l+8>>2]=1650;br(D,1100,l)|0;yr(D,s)|0;r=dt[f>>2]|0}i=i<<32-r|dt[n>>2];dt[n>>2]=i}while((r|0)<5)}else{i=t+16|0;n=i;i=dt[i>>2]|0}u=i>>>27;dt[n>>2]=i<<5;dt[f>>2]=r+-5;if((u+-1|0)>>>0>20){e=0;vt=R;return e|0}dt[z+20>>2]=0;dt[z>>2]=0;dt[z+4>>2]=0;dt[z+8>>2]=0;dt[z+12>>2]=0;pt[z+16>>0]=0;r=z+4|0;i=z+8|0;t:do{if(ne(r,21,0,1,0)|0){s=dt[i>>2]|0;l=dt[r>>2]|0;Yr(l+s|0,0,21-s|0)|0;dt[i>>2]=21;if(u){n=t+4|0;o=t+8|0;a=t+16|0;s=0;do{r=dt[f>>2]|0;if((r|0)<3)do{i=dt[n>>2]|0;if((i|0)==(dt[o>>2]|0))i=0;else{dt[n>>2]=i+1;i=mt[i>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[h>>2]=1154;dt[h+4>>2]=3199;dt[h+8>>2]=1650;br(D,1100,h)|0;yr(D,c)|0;r=dt[f>>2]|0}i=i<<32-r|dt[a>>2];dt[a>>2]=i}while((r|0)<3);else i=dt[a>>2]|0;dt[a>>2]=i<<3;dt[f>>2]=r+-3;pt[l+(mt[1611+s>>0]|0)>>0]=i>>>29;s=s+1|0}while((s|0)!=(u|0))}if(pe(z)|0){s=t+4|0;l=t+8|0;u=t+16|0;i=0;e:while(1){a=O-i|0;r=ge(t,z)|0;r:do{if(r>>>0<17){if((dt[d>>2]|0)>>>0<=i>>>0){dt[m>>2]=1154;dt[m+4>>2]=903;dt[m+8>>2]=1781;br(D,1100,m)|0;yr(D,g)|0}pt[(dt[p>>2]|0)+i>>0]=r;r=i+1|0}else switch(r|0){case 17:{r=dt[f>>2]|0;if((r|0)<3)do{n=dt[s>>2]|0;if((n|0)==(dt[l>>2]|0))n=0;else{dt[s>>2]=n+1;n=mt[n>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[v>>2]=1154;dt[v+4>>2]=3199;dt[v+8>>2]=1650;br(D,1100,v)|0;yr(D,_)|0;r=dt[f>>2]|0}n=n<<32-r|dt[u>>2];dt[u>>2]=n}while((r|0)<3);else n=dt[u>>2]|0;dt[u>>2]=n<<3;dt[f>>2]=r+-3;r=(n>>>29)+3|0;if(r>>>0>a>>>0){r=0;break t}r=r+i|0;break r}case 18:{r=dt[f>>2]|0;if((r|0)<7)do{n=dt[s>>2]|0;if((n|0)==(dt[l>>2]|0))n=0;else{dt[s>>2]=n+1;n=mt[n>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[y>>2]=1154;dt[y+4>>2]=3199;dt[y+8>>2]=1650;br(D,1100,y)|0;yr(D,b)|0;r=dt[f>>2]|0}n=n<<32-r|dt[u>>2];dt[u>>2]=n}while((r|0)<7);else n=dt[u>>2]|0;dt[u>>2]=n<<7;dt[f>>2]=r+-7;r=(n>>>25)+11|0;if(r>>>0>a>>>0){r=0;break t}r=r+i|0;break r}default:{if((r+-19|0)>>>0>=2){M=90;break e}o=dt[f>>2]|0;if((r|0)==19){if((o|0)<2){n=o;while(1){r=dt[s>>2]|0;if((r|0)==(dt[l>>2]|0))o=0;else{dt[s>>2]=r+1;o=mt[r>>0]|0}r=n+8|0;dt[f>>2]=r;if((r|0)>=33){dt[x>>2]=1154;dt[x+4>>2]=3199;dt[x+8>>2]=1650;br(D,1100,x)|0;yr(D,w)|0;r=dt[f>>2]|0}n=o<<32-r|dt[u>>2];dt[u>>2]=n;if((r|0)<2)n=r;else break}}else{n=dt[u>>2]|0;r=o}dt[u>>2]=n<<2;dt[f>>2]=r+-2;o=(n>>>30)+3|0}else{if((o|0)<6){n=o;while(1){r=dt[s>>2]|0;if((r|0)==(dt[l>>2]|0))o=0;else{dt[s>>2]=r+1;o=mt[r>>0]|0}r=n+8|0;dt[f>>2]=r;if((r|0)>=33){dt[T>>2]=1154;dt[T+4>>2]=3199;dt[T+8>>2]=1650;br(D,1100,T)|0;yr(D,k)|0;r=dt[f>>2]|0}n=o<<32-r|dt[u>>2];dt[u>>2]=n;if((r|0)<6)n=r;else break}}else{n=dt[u>>2]|0;r=o}dt[u>>2]=n<<6;dt[f>>2]=r+-6;o=(n>>>26)+7|0}if((i|0)==0|o>>>0>a>>>0){r=0;break t}r=i+-1|0;if((dt[d>>2]|0)>>>0<=r>>>0){dt[S>>2]=1154;dt[S+4>>2]=903;dt[S+8>>2]=1781;br(D,1100,S)|0;yr(D,P)|0}n=pt[(dt[p>>2]|0)+r>>0]|0;if(!(n<<24>>24)){r=0;break t}r=o+i|0;if(i>>>0>=r>>>0){r=i;break r}do{if((dt[d>>2]|0)>>>0<=i>>>0){dt[C>>2]=1154;dt[C+4>>2]=903;dt[C+8>>2]=1781;br(D,1100,C)|0;yr(D,A)|0}pt[(dt[p>>2]|0)+i>>0]=n;i=i+1|0}while((i|0)!=(r|0))}}}while(0);if(O>>>0>r>>>0)i=r;else break}if((M|0)==90){dt[E>>2]=1154;dt[E+4>>2]=3140;dt[E+8>>2]=1632;br(D,1100,E)|0;yr(D,I)|0;r=0;break}if((O|0)==(r|0))r=pe(e)|0;else r=0}else r=0}else{pt[z+16>>0]=1;r=0}}while(0);ce(z);e=r;vt=R;return e|0}function me(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+544|0;s=h+16|0;a=h;o=h+24|0;if(!e){u=0;vt=h;return u|0}if(e>>>0<=16){u=ve(t,e)|0;vt=h;return u|0}l=ve(t,e+-16|0)|0;u=t+20|0;e=dt[u>>2]|0;if((e|0)<16){i=t+4|0;n=t+8|0;r=t+16|0;do{t=dt[i>>2]|0;if((t|0)==(dt[n>>2]|0))t=0;else{dt[i>>2]=t+1;t=mt[t>>0]|0}e=e+8|0;dt[u>>2]=e;if((e|0)>=33){dt[a>>2]=1154;dt[a+4>>2]=3199;dt[a+8>>2]=1650;br(o,1100,a)|0;yr(o,s)|0;e=dt[u>>2]|0}t=t<<32-e|dt[r>>2];dt[r>>2]=t}while((e|0)<16)}else{t=t+16|0;r=t;t=dt[t>>2]|0}dt[r>>2]=t<<16;dt[u>>2]=e+-16;u=t>>>16|l<<16;vt=h;return u|0}function ge(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0;y=vt;vt=vt+608|0;m=y+88|0;d=y+72|0;f=y+64|0;c=y+48|0;h=y+40|0;p=y+24|0;u=y+16|0;l=y;v=y+96|0;g=dt[e+20>>2]|0;_=t+20|0;s=dt[_>>2]|0;do{if((s|0)<24){a=t+4|0;i=dt[a>>2]|0;n=dt[t+8>>2]|0;r=i>>>0>>0;if((s|0)>=16){if(r){dt[a>>2]=i+1;r=mt[i>>0]|0}else r=0;dt[_>>2]=s+8;a=t+16|0;o=r<<24-s|dt[a>>2];dt[a>>2]=o;break}if(r){o=(mt[i>>0]|0)<<8;r=i+1|0}else{o=0;r=i}if(r>>>0>>0){i=mt[r>>0]|0;r=r+1|0}else i=0;dt[a>>2]=r;dt[_>>2]=s+16;a=t+16|0;o=(i|o)<<16-s|dt[a>>2];dt[a>>2]=o}else{o=t+16|0;a=o;o=dt[o>>2]|0}}while(0);n=(o>>>16)+1|0;do{if(n>>>0<=(dt[g+16>>2]|0)>>>0){i=dt[(dt[g+168>>2]|0)+(o>>>(32-(dt[g+8>>2]|0)|0)<<2)>>2]|0;if((i|0)==-1){dt[l>>2]=1154;dt[l+4>>2]=3244;dt[l+8>>2]=1677;br(v,1100,l)|0;yr(v,u)|0}r=i&65535;i=i>>>16;if((dt[e+8>>2]|0)>>>0<=r>>>0){dt[p>>2]=1154;dt[p+4>>2]=902;dt[p+8>>2]=1781;br(v,1100,p)|0;yr(v,h)|0}if((mt[(dt[e+4>>2]|0)+r>>0]|0|0)!=(i|0)){dt[c>>2]=1154;dt[c+4>>2]=3248;dt[c+8>>2]=1694;br(v,1100,c)|0;yr(v,f)|0}}else{i=dt[g+20>>2]|0;while(1){r=i+-1|0;if(n>>>0>(dt[g+28+(r<<2)>>2]|0)>>>0)i=i+1|0;else break}r=(o>>>(32-i|0))+(dt[g+96+(r<<2)>>2]|0)|0;if(r>>>0<(dt[e>>2]|0)>>>0){r=gt[(dt[g+176>>2]|0)+(r<<1)>>1]|0;break}dt[d>>2]=1154;dt[d+4>>2]=3266;dt[d+8>>2]=1632;br(v,1100,d)|0;yr(v,m)|0;_=0;vt=y;return _|0}}while(0);dt[a>>2]=dt[a>>2]<>2]=(dt[_>>2]|0)-i;_=r;vt=y;return _|0}function ve(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+560|0;s=h+40|0;l=h+24|0;r=h;a=h+48|0;if(e>>>0>=33){dt[r>>2]=1154;dt[r+4>>2]=3190;dt[r+8>>2]=1634;br(a,1100,r)|0;yr(a,h+16|0)|0}u=t+20|0;r=dt[u>>2]|0;if((r|0)>=(e|0)){o=t+16|0;a=o;o=dt[o>>2]|0;s=r;l=32-e|0;l=o>>>l;o=o<>2]=o;e=s-e|0;dt[u>>2]=e;vt=h;return l|0}n=t+4|0;o=t+8|0;i=t+16|0;do{t=dt[n>>2]|0;if((t|0)==(dt[o>>2]|0))t=0;else{dt[n>>2]=t+1;t=mt[t>>0]|0}r=r+8|0;dt[u>>2]=r;if((r|0)>=33){dt[l>>2]=1154;dt[l+4>>2]=3199;dt[l+8>>2]=1650;br(a,1100,l)|0;yr(a,s)|0;r=dt[u>>2]|0}t=t<<32-r|dt[i>>2];dt[i>>2]=t}while((r|0)<(e|0));l=32-e|0;l=t>>>l;s=t<>2]=s;e=r-e|0;dt[u>>2]=e;vt=h;return l|0}function _e(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0;d=vt;vt=vt+544|0;f=d+16|0;c=d;h=d+24|0;if((t|0)==0|e>>>0<62){p=0;vt=d;return p|0}u=ae(300,0)|0;if(!u){p=0;vt=d;return p|0}dt[u>>2]=519686845;r=u+4|0;dt[r>>2]=0;i=u+8|0;dt[i>>2]=0;l=u+88|0;n=u+136|0;o=u+160|0;a=l;s=a+44|0;do{dt[a>>2]=0;a=a+4|0}while((a|0)<(s|0));pt[l+44>>0]=0;m=u+184|0;a=u+208|0;s=u+232|0;g=u+252|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;g=u+268|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;g=u+284|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;dt[n>>2]=0;dt[n+4>>2]=0;dt[n+8>>2]=0;dt[n+12>>2]=0;dt[n+16>>2]=0;pt[n+20>>0]=0;dt[o>>2]=0;dt[o+4>>2]=0;dt[o+8>>2]=0;dt[o+12>>2]=0;dt[o+16>>2]=0;pt[o+20>>0]=0;dt[m>>2]=0;dt[m+4>>2]=0;dt[m+8>>2]=0;dt[m+12>>2]=0;dt[m+16>>2]=0;pt[m+20>>0]=0;dt[a>>2]=0;dt[a+4>>2]=0;dt[a+8>>2]=0;dt[a+12>>2]=0;dt[a+16>>2]=0;pt[a+20>>0]=0;dt[s>>2]=0;dt[s+4>>2]=0;dt[s+8>>2]=0;dt[s+12>>2]=0;pt[s+16>>0]=0;do{if(((e>>>0>=74?((mt[t>>0]|0)<<8|(mt[t+1>>0]|0)|0)==18552:0)?((mt[t+2>>0]|0)<<8|(mt[t+3>>0]|0))>>>0>=74:0)?((mt[t+7>>0]|0)<<16|(mt[t+6>>0]|0)<<24|(mt[t+8>>0]|0)<<8|(mt[t+9>>0]|0))>>>0<=e>>>0:0){dt[l>>2]=t;dt[r>>2]=t;dt[i>>2]=e;if(Ce(u)|0){r=dt[l>>2]|0;if((mt[r+39>>0]|0)<<8|(mt[r+40>>0]|0)){if(!(Ae(u)|0))break;if(!(Ee(u)|0))break;r=dt[l>>2]|0}if(!((mt[r+55>>0]|0)<<8|(mt[r+56>>0]|0))){g=u;vt=d;return g|0}if(Ie(u)|0?Oe(u)|0:0){g=u;vt=d;return g|0}}}else p=7}while(0);if((p|0)==7)dt[l>>2]=0;Fe(u);if(!(u&7)){Di[dt[104>>2]&1](u,0,0,1,dt[27]|0)|0;g=0;vt=d;return g|0}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(h,1100,c)|0;yr(h,f)|0;g=0;vt=d;return g|0}return 0}function ye(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+544|0;u=h;l=h+24|0;o=dt[t+88>>2]|0;s=(mt[o+70+(n<<2)+1>>0]|0)<<16|(mt[o+70+(n<<2)>>0]|0)<<24|(mt[o+70+(n<<2)+2>>0]|0)<<8|(mt[o+70+(n<<2)+3>>0]|0);a=n+1|0;if(a>>>0<(mt[o+16>>0]|0)>>>0)o=(mt[o+70+(a<<2)+1>>0]|0)<<16|(mt[o+70+(a<<2)>>0]|0)<<24|(mt[o+70+(a<<2)+2>>0]|0)<<8|(mt[o+70+(a<<2)+3>>0]|0);else o=dt[t+8>>2]|0;if(o>>>0>s>>>0){l=t+4|0;l=dt[l>>2]|0;l=l+s|0;u=o-s|0;u=be(t,l,u,e,r,i,n)|0;vt=h;return u|0}dt[u>>2]=1154;dt[u+4>>2]=3704;dt[u+8>>2]=1792;br(l,1100,u)|0;yr(l,h+16|0)|0;l=t+4|0;l=dt[l>>2]|0;l=l+s|0;u=o-s|0;u=be(t,l,u,e,r,i,n)|0;vt=h;return u|0}function be(t,e,r,i,n,o,a){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;var s=0,l=0,u=0,h=0;h=dt[t+88>>2]|0;l=((mt[h+12>>0]|0)<<8|(mt[h+13>>0]|0))>>>a;u=((mt[h+14>>0]|0)<<8|(mt[h+15>>0]|0))>>>a;l=l>>>0>1?(l+3|0)>>>2:1;u=u>>>0>1?(u+3|0)>>>2:1;h=h+18|0;a=pt[h>>0]|0;a=_t(a<<24>>24==0|a<<24>>24==9?8:16,l)|0;if(o)if((o&3|0)==0&a>>>0<=o>>>0)a=o;else{t=0;return t|0}if((_t(a,u)|0)>>>0>n>>>0){t=0;return t|0}o=(l+1|0)>>>1;s=(u+1|0)>>>1;if(!r){t=0;return t|0}dt[t+92>>2]=e;dt[t+96>>2]=e;dt[t+104>>2]=r;dt[t+100>>2]=e+r;dt[t+108>>2]=0;dt[t+112>>2]=0;switch(mt[h>>0]|0|0){case 0:{Me(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 4:case 6:case 5:case 3:case 2:{De(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 9:{ze(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 8:case 7:{Re(t,i,n,a,l,u,o,s)|0;t=1;return t|0}default:{t=0;return t|0}}return 0}function xe(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+4>>2]|0}function we(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+8>>2]|0}function Te(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+12>>2]|0}function ke(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+32>>2]|0}function Se(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0;l=vt;vt=vt+576|0;a=l+56|0;o=l+40|0;n=l+64|0;u=l;dt[u>>2]=40;ue(t,e,u)|0;i=(((dt[u+4>>2]|0)>>>r)+3|0)>>>2;e=(((dt[u+8>>2]|0)>>>r)+3|0)>>>2;r=u+32|0;t=dt[r+4>>2]|0;do{switch(dt[r>>2]|0){case 0:{if(!t)t=8;else s=13;break}case 1:{if(!t)s=12;else s=13;break}case 2:{if(!t)s=12;else s=13;break}case 3:{if(!t)s=12;else s=13;break}case 4:{if(!t)s=12;else s=13;break}case 5:{if(!t)s=12;else s=13;break}case 6:{if(!t)s=12;else s=13;break}case 7:{if(!t)s=12;else s=13;break}case 8:{if(!t)s=12;else s=13;break}case 9:{if(!t)t=8;else s=13;break}default:s=13}}while(0);if((s|0)==12)t=16;else if((s|0)==13){dt[o>>2]=1154;dt[o+4>>2]=2663;dt[o+8>>2]=1535;br(n,1100,o)|0;yr(n,a)|0;t=0}u=_t(_t(e,i)|0,t)|0;vt=l;return u|0}function Pe(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;d=vt;vt=vt+608|0;f=d+80|0;p=d+64|0;s=d+56|0;a=d+40|0;h=d+88|0;m=d;c=d+84|0;dt[m>>2]=40;ue(t,e,m)|0;l=(((dt[m+4>>2]|0)>>>n)+3|0)>>>2;m=m+32|0;o=dt[m+4>>2]|0;do{switch(dt[m>>2]|0){case 0:{if(!o)o=8;else u=13;break}case 1:{if(!o)u=12;else u=13;break}case 2:{if(!o)u=12;else u=13;break}case 3:{if(!o)u=12;else u=13;break}case 4:{if(!o)u=12;else u=13;break}case 5:{if(!o)u=12;else u=13;break}case 6:{if(!o)u=12;else u=13;break}case 7:{if(!o)u=12;else u=13;break}case 8:{if(!o)u=12;else u=13;break}case 9:{if(!o)o=8;else u=13;break}default:u=13}}while(0);if((u|0)==12)o=16;else if((u|0)==13){dt[a>>2]=1154;dt[a+4>>2]=2663;dt[a+8>>2]=1535;br(h,1100,a)|0;yr(h,s)|0;o=0}s=_t(o,l)|0;a=_e(t,e)|0;dt[c>>2]=r;o=(a|0)==0;if(!(n>>>0>15|(i>>>0<8|o))?(dt[a>>2]|0)==519686845:0)ye(a,c,i,s,n)|0;if(o){vt=d;return}if((dt[a>>2]|0)!=519686845){vt=d;return}Fe(a);if(!(a&7)){Di[dt[104>>2]&1](a,0,0,1,dt[27]|0)|0;vt=d;return}else{dt[p>>2]=1154;dt[p+4>>2]=2499;dt[p+8>>2]=1516;br(h,1100,p)|0;yr(h,f)|0;vt=d;return}}function Ce(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0;a=t+92|0;i=dt[t+4>>2]|0;o=t+88|0;n=dt[o>>2]|0;e=(mt[n+68>>0]|0)<<8|(mt[n+67>>0]|0)<<16|(mt[n+69>>0]|0);r=i+e|0;n=(mt[n+65>>0]|0)<<8|(mt[n+66>>0]|0);if(!n){t=0;return t|0}dt[a>>2]=r;dt[t+96>>2]=r;dt[t+104>>2]=n;dt[t+100>>2]=i+(n+e);dt[t+108>>2]=0;dt[t+112>>2]=0;if(!(de(a,t+116|0)|0)){t=0;return t|0}e=dt[o>>2]|0;do{if(!((mt[e+39>>0]|0)<<8|(mt[e+40>>0]|0))){if(!((mt[e+55>>0]|0)<<8|(mt[e+56>>0]|0))){t=0;return t|0}}else{if(!(de(a,t+140|0)|0)){t=0;return t|0}if(de(a,t+188|0)|0){e=dt[o>>2]|0;break}else{t=0;return t|0}}}while(0);if((mt[e+55>>0]|0)<<8|(mt[e+56>>0]|0)){if(!(de(a,t+164|0)|0)){t=0;return t|0}if(!(de(a,t+212|0)|0)){t=0;return t|0}}t=1;return t|0}function Ae(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;d=vt;vt=vt+592|0;l=d+16|0;s=d;a=d+72|0;p=d+24|0;i=t+88|0;e=dt[i>>2]|0;f=(mt[e+39>>0]|0)<<8|(mt[e+40>>0]|0);h=t+236|0;o=t+240|0;r=dt[o>>2]|0;if((r|0)!=(f|0)){if(r>>>0<=f>>>0){do{if((dt[t+244>>2]|0)>>>0>>0){if(ne(h,f,(r+1|0)==(f|0),4,0)|0){e=dt[o>>2]|0;break}pt[t+248>>0]=1;p=0;vt=d;return p|0}else e=r}while(0);Yr((dt[h>>2]|0)+(e<<2)|0,0,f-e<<2|0)|0;e=dt[i>>2]|0}dt[o>>2]=f}u=t+92|0;r=dt[t+4>>2]|0;i=(mt[e+34>>0]|0)<<8|(mt[e+33>>0]|0)<<16|(mt[e+35>>0]|0);n=r+i|0;e=(mt[e+37>>0]|0)<<8|(mt[e+36>>0]|0)<<16|(mt[e+38>>0]|0);if(!e){p=0;vt=d;return p|0}dt[u>>2]=n;dt[t+96>>2]=n;dt[t+104>>2]=e;dt[t+100>>2]=r+(e+i);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[p+20>>2]=0;dt[p>>2]=0;dt[p+4>>2]=0;dt[p+8>>2]=0;dt[p+12>>2]=0;pt[p+16>>0]=0;t=p+24|0;dt[p+44>>2]=0;dt[t>>2]=0;dt[t+4>>2]=0;dt[t+8>>2]=0;dt[t+12>>2]=0;pt[t+16>>0]=0;if(de(u,p)|0?(c=p+24|0,de(u,c)|0):0){if(!(dt[o>>2]|0)){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(a,1100,s)|0;yr(a,l)|0}if(!f)e=1;else{i=0;n=0;o=0;e=0;a=0;t=0;s=0;r=dt[h>>2]|0;while(1){i=(ge(u,p)|0)+i&31;n=(ge(u,c)|0)+n&63;o=(ge(u,p)|0)+o&31;e=(ge(u,p)|0)+e|0;a=(ge(u,c)|0)+a&63;t=(ge(u,p)|0)+t&31;dt[r>>2]=n<<5|i<<11|o|e<<27|a<<21|t<<16;s=s+1|0;if((s|0)==(f|0)){e=1;break}else{e=e&31;r=r+4|0}}}}else e=0;ce(p+24|0);ce(p);p=e;vt=d;return p|0}function Ee(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0;S=vt;vt=vt+1024|0;s=S+16|0;a=S;o=S+504|0;k=S+480|0;w=S+284|0;T=S+88|0;x=S+24|0;n=dt[t+88>>2]|0;b=(mt[n+47>>0]|0)<<8|(mt[n+48>>0]|0);y=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+42>>0]|0)<<8|(mt[n+41>>0]|0)<<16|(mt[n+43>>0]|0);i=e+r|0;n=(mt[n+45>>0]|0)<<8|(mt[n+44>>0]|0)<<16|(mt[n+46>>0]|0);if(!n){k=0;vt=S;return k|0}dt[y>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[k+20>>2]=0;dt[k>>2]=0;dt[k+4>>2]=0;dt[k+8>>2]=0;dt[k+12>>2]=0;pt[k+16>>0]=0;if(de(y,k)|0){r=0;i=-3;n=-3;while(1){dt[w+(r<<2)>>2]=i;dt[T+(r<<2)>>2]=n;e=(i|0)>2;r=r+1|0;if((r|0)==49)break;else{i=e?-3:i+1|0;n=(e&1)+n|0}}e=x;r=e+64|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(r|0));_=t+252|0;r=t+256|0;e=dt[r>>2]|0;t:do{if((e|0)==(b|0))l=13;else{if(e>>>0<=b>>>0){do{if((dt[t+260>>2]|0)>>>0>>0)if(ne(_,b,(e+1|0)==(b|0),4,0)|0){e=dt[r>>2]|0;break}else{pt[t+264>>0]=1;e=0;break t}}while(0);Yr((dt[_>>2]|0)+(e<<2)|0,0,b-e<<2|0)|0}dt[r>>2]=b;l=13}}while(0);do{if((l|0)==13){if(!b){dt[a>>2]=1154;dt[a+4>>2]=903;dt[a+8>>2]=1781;br(o,1100,a)|0;yr(o,s)|0;e=1;break}i=x+4|0;n=x+8|0;t=x+12|0;o=x+16|0;a=x+20|0;s=x+24|0;l=x+28|0;u=x+32|0;h=x+36|0;c=x+40|0;f=x+44|0;p=x+48|0;d=x+52|0;m=x+56|0;g=x+60|0;v=0;r=dt[_>>2]|0;while(1){e=0;do{P=ge(y,k)|0;_=e<<1;C=x+(_<<2)|0;dt[C>>2]=(dt[C>>2]|0)+(dt[w+(P<<2)>>2]|0)&3;_=x+((_|1)<<2)|0;dt[_>>2]=(dt[_>>2]|0)+(dt[T+(P<<2)>>2]|0)&3;e=e+1|0}while((e|0)!=8);dt[r>>2]=(mt[1725+(dt[i>>2]|0)>>0]|0)<<2|(mt[1725+(dt[x>>2]|0)>>0]|0)|(mt[1725+(dt[n>>2]|0)>>0]|0)<<4|(mt[1725+(dt[t>>2]|0)>>0]|0)<<6|(mt[1725+(dt[o>>2]|0)>>0]|0)<<8|(mt[1725+(dt[a>>2]|0)>>0]|0)<<10|(mt[1725+(dt[s>>2]|0)>>0]|0)<<12|(mt[1725+(dt[l>>2]|0)>>0]|0)<<14|(mt[1725+(dt[u>>2]|0)>>0]|0)<<16|(mt[1725+(dt[h>>2]|0)>>0]|0)<<18|(mt[1725+(dt[c>>2]|0)>>0]|0)<<20|(mt[1725+(dt[f>>2]|0)>>0]|0)<<22|(mt[1725+(dt[p>>2]|0)>>0]|0)<<24|(mt[1725+(dt[d>>2]|0)>>0]|0)<<26|(mt[1725+(dt[m>>2]|0)>>0]|0)<<28|(mt[1725+(dt[g>>2]|0)>>0]|0)<<30;v=v+1|0;if((v|0)==(b|0)){e=1;break}else r=r+4|0}}}while(0)}else e=0;ce(k);C=e;vt=S;return C|0}function Ie(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0;f=vt;vt=vt+560|0;l=f+16|0;s=f;a=f+48|0;c=f+24|0;n=dt[t+88>>2]|0;h=(mt[n+55>>0]|0)<<8|(mt[n+56>>0]|0);u=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+50>>0]|0)<<8|(mt[n+49>>0]|0)<<16|(mt[n+51>>0]|0);i=e+r|0;n=(mt[n+53>>0]|0)<<8|(mt[n+52>>0]|0)<<16|(mt[n+54>>0]|0);if(!n){c=0;vt=f;return c|0}dt[u>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[c+20>>2]=0;dt[c>>2]=0;dt[c+4>>2]=0;dt[c+8>>2]=0;dt[c+12>>2]=0;pt[c+16>>0]=0;t:do{if(de(u,c)|0){o=t+268|0;r=t+272|0;e=dt[r>>2]|0;if((e|0)!=(h|0)){if(e>>>0<=h>>>0){do{if((dt[t+276>>2]|0)>>>0>>0)if(ne(o,h,(e+1|0)==(h|0),2,0)|0){e=dt[r>>2]|0;break}else{pt[t+280>>0]=1;e=0;break t}}while(0);Yr((dt[o>>2]|0)+(e<<1)|0,0,h-e<<1|0)|0}dt[r>>2]=h}if(!h){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(a,1100,s)|0;yr(a,l)|0;e=1;break}r=0;i=0;n=0;e=dt[o>>2]|0;while(1){l=ge(u,c)|0;r=l+r&255;i=(ge(u,c)|0)+i&255;$[e>>1]=i<<8|r;n=n+1|0;if((n|0)==(h|0)){e=1;break}else e=e+2|0}}else e=0}while(0);ce(c);c=e;vt=f;return c|0}function Oe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0;S=vt;vt=vt+2432|0;s=S+16|0;a=S;o=S+1912|0;k=S+1888|0;w=S+988|0;T=S+88|0;x=S+24|0;n=dt[t+88>>2]|0;b=(mt[n+63>>0]|0)<<8|(mt[n+64>>0]|0);y=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+58>>0]|0)<<8|(mt[n+57>>0]|0)<<16|(mt[n+59>>0]|0);i=e+r|0;n=(mt[n+61>>0]|0)<<8|(mt[n+60>>0]|0)<<16|(mt[n+62>>0]|0);if(!n){k=0;vt=S;return k|0}dt[y>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[k+20>>2]=0;dt[k>>2]=0;dt[k+4>>2]=0;dt[k+8>>2]=0;dt[k+12>>2]=0;pt[k+16>>0]=0;if(de(y,k)|0){r=0;i=-7;n=-7;while(1){dt[w+(r<<2)>>2]=i;dt[T+(r<<2)>>2]=n;e=(i|0)>6;r=r+1|0;if((r|0)==225)break;else{i=e?-7:i+1|0;n=(e&1)+n|0}}e=x;r=e+64|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(r|0));_=t+284|0;r=b*3|0;i=t+288|0;e=dt[i>>2]|0;t:do{if((e|0)==(r|0))l=13;else{if(e>>>0<=r>>>0){do{if((dt[t+292>>2]|0)>>>0>>0)if(ne(_,r,(e+1|0)==(r|0),2,0)|0){e=dt[i>>2]|0;break}else{pt[t+296>>0]=1;e=0;break t}}while(0);Yr((dt[_>>2]|0)+(e<<1)|0,0,r-e<<1|0)|0}dt[i>>2]=r;l=13}}while(0);do{if((l|0)==13){if(!b){dt[a>>2]=1154;dt[a+4>>2]=903;dt[a+8>>2]=1781;br(o,1100,a)|0;yr(o,s)|0;e=1;break}i=x+4|0;n=x+8|0;t=x+12|0;o=x+16|0;a=x+20|0;s=x+24|0;l=x+28|0;u=x+32|0;h=x+36|0;c=x+40|0;f=x+44|0;p=x+48|0;d=x+52|0;m=x+56|0;g=x+60|0;v=0;r=dt[_>>2]|0;while(1){e=0;do{P=ge(y,k)|0;_=e<<1;C=x+(_<<2)|0;dt[C>>2]=(dt[C>>2]|0)+(dt[w+(P<<2)>>2]|0)&7;_=x+((_|1)<<2)|0;dt[_>>2]=(dt[_>>2]|0)+(dt[T+(P<<2)>>2]|0)&7;e=e+1|0}while((e|0)!=8);P=mt[1729+(dt[a>>2]|0)>>0]|0;$[r>>1]=(mt[1729+(dt[i>>2]|0)>>0]|0)<<3|(mt[1729+(dt[x>>2]|0)>>0]|0)|(mt[1729+(dt[n>>2]|0)>>0]|0)<<6|(mt[1729+(dt[t>>2]|0)>>0]|0)<<9|(mt[1729+(dt[o>>2]|0)>>0]|0)<<12|P<<15;C=mt[1729+(dt[c>>2]|0)>>0]|0;$[r+2>>1]=(mt[1729+(dt[s>>2]|0)>>0]|0)<<2|P>>>1|(mt[1729+(dt[l>>2]|0)>>0]|0)<<5|(mt[1729+(dt[u>>2]|0)>>0]|0)<<8|(mt[1729+(dt[h>>2]|0)>>0]|0)<<11|C<<14;$[r+4>>1]=(mt[1729+(dt[f>>2]|0)>>0]|0)<<1|C>>>2|(mt[1729+(dt[p>>2]|0)>>0]|0)<<4|(mt[1729+(dt[d>>2]|0)>>0]|0)<<7|(mt[1729+(dt[m>>2]|0)>>0]|0)<<10|(mt[1729+(dt[g>>2]|0)>>0]|0)<<13;v=v+1|0;if((v|0)==(b|0)){e=1;break}else r=r+6|0}}}while(0)}else e=0;ce(k);C=e;vt=S;return C|0}function Me(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0,st=0,lt=0,ut=0,ht=0,ct=0,ft=0;ht=vt;vt=vt+720|0;ut=ht+184|0;st=ht+168|0;at=ht+160|0;ot=ht+144|0;nt=ht+136|0;it=ht+120|0;rt=ht+112|0;tt=ht+96|0;$=ht+88|0;Q=ht+72|0;K=ht+64|0;J=ht+48|0;Z=ht+40|0;lt=ht+24|0;et=ht+16|0;Y=ht;G=ht+208|0;V=ht+192|0;N=t+240|0;B=dt[N>>2]|0;H=t+256|0;q=dt[H>>2]|0;r=pt[(dt[t+88>>2]|0)+17>>0]|0;W=i>>>2;if(!(r<<24>>24)){vt=ht;return 1}U=(s|0)==0;X=s+-1|0;M=(o&1|0)!=0;D=i<<1;z=t+92|0;R=t+116|0;F=t+140|0;j=t+236|0;L=a+-1|0;O=(n&1|0)!=0;I=t+188|0;S=t+252|0;P=W+1|0;C=W+2|0;A=W+3|0;E=L<<4;T=r&255;r=0;o=0;n=1;k=0;do{if(!U){x=dt[e+(k<<2)>>2]|0;w=0;while(1){_=w&1;l=(_|0)==0;v=(_<<5^32)+-16|0;_=(_<<1^2)+-1|0;b=l?a:-1;u=l?0:L;t=(w|0)==(X|0);y=M&t;if((u|0)!=(b|0)){g=M&t^1;m=l?x:x+E|0;while(1){if((n|0)==1)n=ge(z,R)|0|512;d=n&7;n=n>>>3;l=mt[1823+d>>0]|0;t=0;do{f=(ge(z,F)|0)+o|0;p=f-B|0;o=p>>31;o=o&f|p&~o;if((dt[N>>2]|0)>>>0<=o>>>0){dt[Y>>2]=1154;dt[Y+4>>2]=903;dt[Y+8>>2]=1781;br(G,1100,Y)|0;yr(G,et)|0}dt[V+(t<<2)>>2]=dt[(dt[j>>2]|0)+(o<<2)>>2];t=t+1|0}while(t>>>0>>0);p=O&(u|0)==(L|0);if(y|p){f=0;do{h=_t(f,i)|0;t=m+h|0;l=(f|0)==0|g;c=f<<1;ft=(ge(z,I)|0)+r|0;ct=ft-q|0;r=ct>>31;r=r&ft|ct&~r;do{if(p){if(!l){ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;break}dt[t>>2]=dt[V+((mt[1831+(d<<2)+c>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(G,1100,ot)|0;yr(G,at)|0}dt[m+(h+4)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r}else{if(!l){ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;break}dt[t>>2]=dt[V+((mt[1831+(d<<2)+c>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[it>>2]=1154;dt[it+4>>2]=903;dt[it+8>>2]=1781;br(G,1100,it)|0;yr(G,nt)|0}dt[m+(h+4)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;dt[m+(h+8)>>2]=dt[V+((mt[(c|1)+(1831+(d<<2))>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[st>>2]=1154;dt[st+4>>2]=903;dt[st+8>>2]=1781;br(G,1100,st)|0;yr(G,ut)|0}dt[m+(h+12)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2]}}while(0);f=f+1|0}while((f|0)!=2)}else{dt[m>>2]=dt[V+((mt[1831+(d<<2)>>0]|0)<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[lt>>2]=1154;dt[lt+4>>2]=903;dt[lt+8>>2]=1781;br(G,1100,lt)|0;yr(G,Z)|0}dt[m+4>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+8>>2]=dt[V+((mt[1831+(d<<2)+1>>0]|0)<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[J>>2]=1154;dt[J+4>>2]=903;dt[J+8>>2]=1781;br(G,1100,J)|0;yr(G,K)|0}dt[m+12>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+(W<<2)>>2]=dt[V+((mt[1831+(d<<2)+2>>0]|0)<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[Q>>2]=1154;dt[Q+4>>2]=903;dt[Q+8>>2]=1781;br(G,1100,Q)|0;yr(G,$)|0}dt[m+(P<<2)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+(C<<2)>>2]=dt[V+((mt[1831+(d<<2)+3>>0]|0)<<2)>>2];ct=(ge(z,I)|0)+r|0;ft=ct-q|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[tt>>2]=1154;dt[tt+4>>2]=903;dt[tt+8>>2]=1781;br(G,1100,tt)|0;yr(G,rt)|0}dt[m+(A<<2)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2]}u=u+_|0;if((u|0)==(b|0))break;else m=m+v|0}}w=w+1|0;if((w|0)==(s|0))break;else x=x+D|0}}k=k+1|0}while((k|0)!=(T|0));vt=ht;return 1}function De(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0,st=0,lt=0,ut=0,ht=0,ct=0,ft=0;ct=vt;vt=vt+640|0;lt=ct+88|0;st=ct+72|0;at=ct+64|0;ot=ct+48|0;nt=ct+40|0;ht=ct+24|0;ut=ct+16|0;it=ct;et=ct+128|0;rt=ct+112|0;tt=ct+96|0;N=t+240|0;B=dt[N>>2]|0;H=t+256|0;K=dt[H>>2]|0;Q=t+272|0;$=dt[Q>>2]|0;r=dt[t+88>>2]|0;U=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=ct;return 1}X=(s|0)==0;q=s+-1|0;W=i<<1;G=t+92|0;V=t+116|0;Y=a+-1|0;Z=t+212|0;J=t+188|0;L=(n&1|0)==0;j=(o&1|0)==0;O=t+288|0;M=t+284|0;D=t+252|0;z=t+140|0;R=t+236|0;F=t+164|0;E=t+268|0;I=Y<<5;C=r&255;r=0;n=0;o=0;t=0;l=1;A=0;do{if(!X){S=dt[e+(A<<2)>>2]|0;P=0;while(1){T=P&1;u=(T|0)==0;w=(T<<6^64)+-32|0;T=(T<<1^2)+-1|0;k=u?a:-1;h=u?0:Y;if((h|0)!=(k|0)){x=j|(P|0)!=(q|0);b=u?S:S+I|0;while(1){if((l|0)==1)l=ge(G,V)|0|512;y=l&7;l=l>>>3;c=mt[1823+y>>0]|0;u=0;do{v=(ge(G,F)|0)+n|0;_=v-$|0;n=_>>31;n=n&v|_&~n;if((dt[Q>>2]|0)>>>0<=n>>>0){dt[it>>2]=1154;dt[it+4>>2]=903;dt[it+8>>2]=1781;br(et,1100,it)|0;yr(et,ut)|0}dt[tt+(u<<2)>>2]=gt[(dt[E>>2]|0)+(n<<1)>>1];u=u+1|0}while(u>>>0>>0);u=0;do{v=(ge(G,z)|0)+t|0;_=v-B|0;t=_>>31;t=t&v|_&~t;if((dt[N>>2]|0)>>>0<=t>>>0){dt[ht>>2]=1154;dt[ht+4>>2]=903;dt[ht+8>>2]=1781;br(et,1100,ht)|0;yr(et,nt)|0}dt[rt+(u<<2)>>2]=dt[(dt[R>>2]|0)+(t<<2)>>2];u=u+1|0}while(u>>>0>>0);_=L|(h|0)!=(Y|0);g=0;v=b;while(1){m=x|(g|0)==0;d=g<<1;f=0;p=v;while(1){c=(ge(G,Z)|0)+r|0;u=c-U|0;r=u>>31;r=r&c|u&~r;u=(ge(G,J)|0)+o|0;c=u-K|0;o=c>>31;o=o&u|c&~o;if((_|(f|0)==0)&m){u=mt[f+d+(1831+(y<<2))>>0]|0;c=r*3|0;if((dt[O>>2]|0)>>>0<=c>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(et,1100,ot)|0;yr(et,at)|0}ft=dt[M>>2]|0;dt[p>>2]=(gt[ft+(c<<1)>>1]|0)<<16|dt[tt+(u<<2)>>2];dt[p+4>>2]=(gt[ft+(c+2<<1)>>1]|0)<<16|(gt[ft+(c+1<<1)>>1]|0);dt[p+8>>2]=dt[rt+(u<<2)>>2];if((dt[H>>2]|0)>>>0<=o>>>0){dt[st>>2]=1154;dt[st+4>>2]=903;dt[st+8>>2]=1781;br(et,1100,st)|0;yr(et,lt)|0}dt[p+12>>2]=dt[(dt[D>>2]|0)+(o<<2)>>2]}f=f+1|0;if((f|0)==2)break;else p=p+16|0}g=g+1|0;if((g|0)==2)break;else v=v+i|0}h=h+T|0;if((h|0)==(k|0))break;else b=b+w|0}}P=P+1|0;if((P|0)==(s|0))break;else S=S+W|0}}A=A+1|0}while((A|0)!=(C|0));vt=ct;return 1}function ze(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0;K=vt;vt=vt+608|0;Y=K+64|0;V=K+48|0;G=K+40|0;J=K+24|0;Z=K+16|0;W=K;q=K+88|0;H=K+72|0;D=t+272|0;z=dt[D>>2]|0;r=dt[t+88>>2]|0;R=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=K;return 1}F=(s|0)==0;j=s+-1|0;L=i<<1;N=t+92|0;B=t+116|0;U=a+-1|0;X=t+212|0;M=(o&1|0)==0;E=t+288|0;I=t+284|0;O=t+164|0;C=t+268|0;A=U<<4;P=r&255;S=(n&1|0)!=0;r=0;o=0;t=1;k=0;do{if(!F){w=dt[e+(k<<2)>>2]|0;T=0;while(1){b=T&1;n=(b|0)==0;y=(b<<5^32)+-16|0;b=(b<<1^2)+-1|0;x=n?a:-1;l=n?0:U;if((l|0)!=(x|0)){_=M|(T|0)!=(j|0);v=n?w:w+A|0;while(1){if((t|0)==1)t=ge(N,B)|0|512;g=t&7;t=t>>>3;u=mt[1823+g>>0]|0;n=0;do{d=(ge(N,O)|0)+o|0;m=d-z|0;o=m>>31;o=o&d|m&~o;if((dt[D>>2]|0)>>>0<=o>>>0){dt[W>>2]=1154;dt[W+4>>2]=903;dt[W+8>>2]=1781;br(q,1100,W)|0;yr(q,Z)|0}dt[H+(n<<2)>>2]=gt[(dt[C>>2]|0)+(o<<1)>>1];n=n+1|0}while(n>>>0>>0);m=(l|0)==(U|0)&S;p=0;d=v;while(1){f=_|(p|0)==0;c=p<<1;n=(ge(N,X)|0)+r|0;h=n-R|0;u=h>>31;u=u&n|h&~u;if(f){r=mt[1831+(g<<2)+c>>0]|0;n=u*3|0;if((dt[E>>2]|0)>>>0<=n>>>0){dt[J>>2]=1154;dt[J+4>>2]=903;dt[J+8>>2]=1781;br(q,1100,J)|0;yr(q,G)|0}h=dt[I>>2]|0;dt[d>>2]=(gt[h+(n<<1)>>1]|0)<<16|dt[H+(r<<2)>>2];dt[d+4>>2]=(gt[h+(n+2<<1)>>1]|0)<<16|(gt[h+(n+1<<1)>>1]|0)}h=d+8|0;n=(ge(N,X)|0)+u|0;u=n-R|0;r=u>>31;r=r&n|u&~r;if(!(m|f^1)){n=mt[(c|1)+(1831+(g<<2))>>0]|0;u=r*3|0;if((dt[E>>2]|0)>>>0<=u>>>0){dt[V>>2]=1154;dt[V+4>>2]=903;dt[V+8>>2]=1781;br(q,1100,V)|0;yr(q,Y)|0}f=dt[I>>2]|0;dt[h>>2]=(gt[f+(u<<1)>>1]|0)<<16|dt[H+(n<<2)>>2];dt[d+12>>2]=(gt[f+(u+2<<1)>>1]|0)<<16|(gt[f+(u+1<<1)>>1]|0)}p=p+1|0;if((p|0)==2)break;else d=d+i|0}l=l+b|0;if((l|0)==(x|0))break;else v=v+y|0}}T=T+1|0;if((T|0)==(s|0))break;else w=w+L|0}}k=k+1|0}while((k|0)!=(P|0));vt=K;return 1}function Re(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0;at=vt;vt=vt+640|0;it=at+88|0;rt=at+72|0;et=at+64|0;tt=at+48|0;$=at+40|0;ot=at+24|0;nt=at+16|0;Q=at;K=at+128|0;Z=at+112|0;J=at+96|0;N=t+272|0;B=dt[N>>2]|0;r=dt[t+88>>2]|0;U=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=at;return 1}X=(s|0)==0;H=s+-1|0;q=i<<1;W=t+92|0;G=t+116|0;V=a+-1|0;Y=t+212|0;L=(n&1|0)==0;j=(o&1|0)==0;z=t+288|0;R=t+284|0;F=t+164|0;M=t+268|0;D=V<<5;I=r&255;r=0;n=0;o=0;t=0;l=1;O=0;do{if(!X){A=dt[e+(O<<2)>>2]|0;E=0;while(1){P=E&1;u=(P|0)==0;S=(P<<6^64)+-32|0;P=(P<<1^2)+-1|0;C=u?a:-1;h=u?0:V;if((h|0)!=(C|0)){k=j|(E|0)!=(H|0);T=u?A:A+D|0;while(1){if((l|0)==1)l=ge(W,G)|0|512;w=l&7;l=l>>>3;c=mt[1823+w>>0]|0;u=0;do{b=(ge(W,F)|0)+t|0;x=b-B|0;t=x>>31;t=t&b|x&~t;if((dt[N>>2]|0)>>>0<=t>>>0){dt[Q>>2]=1154;dt[Q+4>>2]=903;dt[Q+8>>2]=1781;br(K,1100,Q)|0;yr(K,nt)|0}dt[Z+(u<<2)>>2]=gt[(dt[M>>2]|0)+(t<<1)>>1];u=u+1|0}while(u>>>0>>0);u=0;do{b=(ge(W,F)|0)+n|0;x=b-B|0;n=x>>31;n=n&b|x&~n;if((dt[N>>2]|0)>>>0<=n>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(K,1100,ot)|0;yr(K,$)|0}dt[J+(u<<2)>>2]=gt[(dt[M>>2]|0)+(n<<1)>>1];u=u+1|0}while(u>>>0>>0);x=L|(h|0)!=(V|0);y=0;b=T;while(1){_=k|(y|0)==0;v=y<<1;m=0;g=b;while(1){d=(ge(W,Y)|0)+o|0;p=d-U|0;o=p>>31;o=o&d|p&~o;p=(ge(W,Y)|0)+r|0;d=p-U|0;r=d>>31;r=r&p|d&~r;if((x|(m|0)==0)&_){p=mt[m+v+(1831+(w<<2))>>0]|0;d=o*3|0;u=dt[z>>2]|0;if(u>>>0<=d>>>0){dt[tt>>2]=1154;dt[tt+4>>2]=903;dt[tt+8>>2]=1781;br(K,1100,tt)|0;yr(K,et)|0;u=dt[z>>2]|0}c=dt[R>>2]|0;f=r*3|0;if(u>>>0>f>>>0)u=c;else{dt[rt>>2]=1154;dt[rt+4>>2]=903;dt[rt+8>>2]=1781;br(K,1100,rt)|0;yr(K,it)|0;u=dt[R>>2]|0}dt[g>>2]=(gt[c+(d<<1)>>1]|0)<<16|dt[Z+(p<<2)>>2];dt[g+4>>2]=(gt[c+(d+2<<1)>>1]|0)<<16|(gt[c+(d+1<<1)>>1]|0);dt[g+8>>2]=(gt[u+(f<<1)>>1]|0)<<16|dt[J+(p<<2)>>2];dt[g+12>>2]=(gt[u+(f+2<<1)>>1]|0)<<16|(gt[u+(f+1<<1)>>1]|0)}m=m+1|0;if((m|0)==2)break;else g=g+16|0}y=y+1|0;if((y|0)==2)break;else b=b+i|0}h=h+P|0;if((h|0)==(C|0))break;else T=T+S|0}}E=E+1|0;if((E|0)==(s|0))break;else A=A+q|0}}O=O+1|0}while((O|0)!=(I|0));vt=at;return 1}function Fe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0;f=vt;vt=vt+608|0;c=f+88|0;h=f+72|0;l=f+64|0;s=f+48|0;o=f+40|0;a=f+24|0;n=f+16|0;i=f;u=f+96|0;dt[t>>2]=0;e=t+284|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[i>>2]=1154;dt[i+4>>2]=2499;dt[i+8>>2]=1516;br(u,1100,i)|0;yr(u,n)|0}dt[e>>2]=0;dt[t+288>>2]=0;dt[t+292>>2]=0}pt[t+296>>0]=0;e=t+268|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[a>>2]=1154;dt[a+4>>2]=2499;dt[a+8>>2]=1516;br(u,1100,a)|0;yr(u,o)|0}dt[e>>2]=0;dt[t+272>>2]=0;dt[t+276>>2]=0}pt[t+280>>0]=0;e=t+252|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[s>>2]=1154;dt[s+4>>2]=2499;dt[s+8>>2]=1516;br(u,1100,s)|0;yr(u,l)|0}dt[e>>2]=0;dt[t+256>>2]=0;dt[t+260>>2]=0}pt[t+264>>0]=0;e=t+236|0;r=dt[e>>2]|0;if(!r){c=t+248|0;pt[c>>0]=0;c=t+212|0;ce(c);c=t+188|0;ce(c);c=t+164|0;ce(c);c=t+140|0;ce(c);c=t+116|0;ce(c);vt=f;return}if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[h>>2]=1154;dt[h+4>>2]=2499;dt[h+8>>2]=1516;br(u,1100,h)|0;yr(u,c)|0}dt[e>>2]=0;dt[t+240>>2]=0;dt[t+244>>2]=0;c=t+248|0;pt[c>>0]=0;c=t+212|0;ce(c);c=t+188|0;ce(c);c=t+164|0;ce(c);c=t+140|0;ce(c);c=t+116|0;ce(c);vt=f;return}function je(t,e){t=t|0;e=e|0;var r=0;r=vt;vt=vt+16|0;dt[r>>2]=e;e=dt[63]|0;xr(e,t,r)|0;vr(10,e)|0;Xt()}function Le(){var t=0,e=0;t=vt;vt=vt+16|0;if(!(Ft(200,2)|0)){e=zt(dt[49]|0)|0;vt=t;return e|0}else je(2090,t);return 0}function Ne(t){t=t|0;Ur(t);return}function Be(t){t=t|0;var e=0;e=vt;vt=vt+16|0;Oi[t&3]();je(2139,e)}function Ue(){var t=0,e=0;t=Le()|0;if(((t|0)!=0?(e=dt[t>>2]|0,(e|0)!=0):0)?(t=e+48|0,(dt[t>>2]&-256|0)==1126902528?(dt[t+4>>2]|0)==1129074247:0):0)Be(dt[e+12>>2]|0);e=dt[28]|0;dt[28]=e+0;Be(e)}function Xe(t){t=t|0;return}function He(t){t=t|0;return}function qe(t){t=t|0;return}function We(t){t=t|0;return}function Ge(t){t=t|0;Ne(t);return}function Ve(t){t=t|0;Ne(t);return}function Ye(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;a=vt;vt=vt+64|0;o=a;if((t|0)!=(e|0))if((e|0)!=0?(n=Qe(e,24,40,0)|0,(n|0)!=0):0){e=o;i=e+56|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(i|0));dt[o>>2]=n;dt[o+8>>2]=t;dt[o+12>>2]=-1;dt[o+48>>2]=1;zi[dt[(dt[n>>2]|0)+28>>2]&3](n,o,dt[r>>2]|0,1);if((dt[o+24>>2]|0)==1){dt[r>>2]=dt[o+16>>2];e=1}else e=0}else e=0;else e=1;vt=a;return e|0}function Ze(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0;t=e+16|0;n=dt[t>>2]|0;do{if(n){if((n|0)!=(r|0)){i=e+36|0;dt[i>>2]=(dt[i>>2]|0)+1;dt[e+24>>2]=2;pt[e+54>>0]=1;break}t=e+24|0;if((dt[t>>2]|0)==2)dt[t>>2]=i}else{dt[t>>2]=r;dt[e+24>>2]=i;dt[e+36>>2]=1}}while(0);return}function Je(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;if((t|0)==(dt[e+8>>2]|0))Ze(0,e,r,i);return}function Ke(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;if((t|0)==(dt[e+8>>2]|0))Ze(0,e,r,i);else{t=dt[t+8>>2]|0;zi[dt[(dt[t>>2]|0)+28>>2]&3](t,e,r,i)}return}function Qe(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0;p=vt;vt=vt+64|0;f=p;c=dt[t>>2]|0;h=t+(dt[c+-8>>2]|0)|0;c=dt[c+-4>>2]|0;dt[f>>2]=r;dt[f+4>>2]=t;dt[f+8>>2]=e;dt[f+12>>2]=i;i=f+16|0;t=f+20|0;e=f+24|0;n=f+28|0;o=f+32|0;a=f+40|0;s=(c|0)==(r|0);l=i;u=l+36|0;do{dt[l>>2]=0;l=l+4|0}while((l|0)<(u|0));$[i+36>>1]=0;pt[i+38>>0]=0;t:do{if(s){dt[f+48>>2]=1;Mi[dt[(dt[r>>2]|0)+20>>2]&3](r,f,h,h,1,0);i=(dt[e>>2]|0)==1?h:0}else{Ci[dt[(dt[c>>2]|0)+24>>2]&3](c,f,h,1,0);switch(dt[f+36>>2]|0){case 0:{i=(dt[a>>2]|0)==1&(dt[n>>2]|0)==1&(dt[o>>2]|0)==1?dt[t>>2]|0:0;break t}case 1:break;default:{i=0;break t}}if((dt[e>>2]|0)!=1?!((dt[a>>2]|0)==0&(dt[n>>2]|0)==1&(dt[o>>2]|0)==1):0){i=0;break}i=dt[i>>2]|0}}while(0);vt=p;return i|0}function $e(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;pt[e+53>>0]=1;do{if((dt[e+4>>2]|0)==(i|0)){pt[e+52>>0]=1;i=e+16|0;t=dt[i>>2]|0;if(!t){dt[i>>2]=r;dt[e+24>>2]=n;dt[e+36>>2]=1;if(!((n|0)==1?(dt[e+48>>2]|0)==1:0))break;pt[e+54>>0]=1;break}if((t|0)!=(r|0)){n=e+36|0;dt[n>>2]=(dt[n>>2]|0)+1;pt[e+54>>0]=1;break}t=e+24|0;i=dt[t>>2]|0;if((i|0)==2){dt[t>>2]=n;i=n}if((i|0)==1?(dt[e+48>>2]|0)==1:0)pt[e+54>>0]=1}}while(0);return}function tr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0;t:do{if((t|0)==(dt[e+8>>2]|0)){if((dt[e+4>>2]|0)==(r|0)?(o=e+28|0,(dt[o>>2]|0)!=1):0)dt[o>>2]=i}else{if((t|0)!=(dt[e>>2]|0)){s=dt[t+8>>2]|0;Ci[dt[(dt[s>>2]|0)+24>>2]&3](s,e,r,i,n);break}if((dt[e+16>>2]|0)!=(r|0)?(a=e+20|0,(dt[a>>2]|0)!=(r|0)):0){dt[e+32>>2]=i;i=e+44|0;if((dt[i>>2]|0)==4)break;o=e+52|0;pt[o>>0]=0;l=e+53|0;pt[l>>0]=0;t=dt[t+8>>2]|0;Mi[dt[(dt[t>>2]|0)+20>>2]&3](t,e,r,r,1,n);if(pt[l>>0]|0){if(!(pt[o>>0]|0)){o=1;s=13}}else{o=0;s=13}do{if((s|0)==13){dt[a>>2]=r;l=e+40|0;dt[l>>2]=(dt[l>>2]|0)+1;if((dt[e+36>>2]|0)==1?(dt[e+24>>2]|0)==2:0){pt[e+54>>0]=1;if(o)break}else s=16;if((s|0)==16?o:0)break;dt[i>>2]=4;break t}}while(0);dt[i>>2]=3;break}if((i|0)==1)dt[e+32>>2]=1}}while(0);return}function er(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0;do{if((t|0)==(dt[e+8>>2]|0)){if((dt[e+4>>2]|0)==(r|0)?(a=e+28|0,(dt[a>>2]|0)!=1):0)dt[a>>2]=i}else if((t|0)==(dt[e>>2]|0)){if((dt[e+16>>2]|0)!=(r|0)?(o=e+20|0,(dt[o>>2]|0)!=(r|0)):0){dt[e+32>>2]=i;dt[o>>2]=r;n=e+40|0;dt[n>>2]=(dt[n>>2]|0)+1;if((dt[e+36>>2]|0)==1?(dt[e+24>>2]|0)==2:0)pt[e+54>>0]=1;dt[e+44>>2]=4;break}if((i|0)==1)dt[e+32>>2]=1}}while(0);return}function rr(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;if((t|0)==(dt[e+8>>2]|0))$e(0,e,r,i,n);else{t=dt[t+8>>2]|0;Mi[dt[(dt[t>>2]|0)+20>>2]&3](t,e,r,i,n,o)}return}function ir(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;if((t|0)==(dt[e+8>>2]|0))$e(0,e,r,i,n);return}function nr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;n=vt;vt=vt+16|0;i=n;dt[i>>2]=dt[r>>2];t=Pi[dt[(dt[t>>2]|0)+16>>2]&7](t,e,i)|0;if(t)dt[r>>2]=dt[i>>2];vt=n;return t&1|0}function or(t){t=t|0;if(!t)t=0;else t=(Qe(t,24,72,0)|0)!=0;return t&1|0}function ar(){var t=0,e=0,r=0,i=0,n=0,o=0,a=0,s=0;n=vt;vt=vt+48|0;a=n+32|0;r=n+24|0;s=n+16|0;o=n;n=n+36|0;t=Le()|0;if((t|0)!=0?(i=dt[t>>2]|0,(i|0)!=0):0){t=i+48|0;e=dt[t>>2]|0;t=dt[t+4>>2]|0;if(!((e&-256|0)==1126902528&(t|0)==1129074247)){dt[r>>2]=dt[51];je(2368,r)}if((e|0)==1126902529&(t|0)==1129074247)t=dt[i+44>>2]|0;else t=i+80|0;dt[n>>2]=t;i=dt[i>>2]|0;t=dt[i+4>>2]|0;if(Pi[dt[(dt[8>>2]|0)+16>>2]&7](8,i,n)|0){s=dt[n>>2]|0;n=dt[51]|0;s=Ei[dt[(dt[s>>2]|0)+8>>2]&1](s)|0;dt[o>>2]=n;dt[o+4>>2]=t;dt[o+8>>2]=s;je(2282,o)}else{dt[s>>2]=dt[51];dt[s+4>>2]=t;je(2327,s)}}je(2406,a)}function sr(){var t=0;t=vt;vt=vt+16|0;if(!(jt(196,6)|0)){vt=t;return}else je(2179,t)}function lr(t){t=t|0;var e=0;e=vt;vt=vt+16|0;Ur(t);if(!(Bt(dt[49]|0,0)|0)){vt=e;return}else je(2229,e)}function ur(t){t=t|0;var e=0,r=0;e=0;while(1){if((mt[2427+e>>0]|0)==(t|0)){r=2;break}e=e+1|0;if((e|0)==87){e=87;t=2515;r=5;break}}if((r|0)==2)if(!e)t=2515;else{t=2515;r=5}if((r|0)==5)while(1){r=t;while(1){t=r+1|0;if(!(pt[r>>0]|0))break;else r=t}e=e+-1|0;if(!e)break;else r=5}return t|0}function hr(){var t=0;if(!(dt[52]|0))t=264;else{t=(Rt()|0)+60|0;t=dt[t>>2]|0}return t|0}function cr(t){t=t|0;var e=0;if(t>>>0>4294963200){e=hr()|0;dt[e>>2]=0-t;t=-1}return t|0}function fr(t,e){t=+t;e=e|0;var r=0,i=0,n=0;tt[et>>3]=t;r=dt[et>>2]|0;i=dt[et+4>>2]|0;n=Zr(r|0,i|0,52)|0;n=n&2047;switch(n|0){case 0:{if(t!=0.0){t=+fr(t*18446744073709552.0e3,e);r=(dt[e>>2]|0)+-64|0}else r=0;dt[e>>2]=r;break}case 2047:break;default:{dt[e>>2]=n+-1022;dt[et>>2]=r;dt[et+4>>2]=i&-2146435073|1071644672;t=+tt[et>>3]}}return+t}function pr(t,e){t=+t;e=e|0;return+ +fr(t,e)}function dr(t,e,r){t=t|0;e=e|0;r=r|0;do{if(t){if(e>>>0<128){pt[t>>0]=e;t=1;break}if(e>>>0<2048){pt[t>>0]=e>>>6|192;pt[t+1>>0]=e&63|128;t=2;break}if(e>>>0<55296|(e&-8192|0)==57344){pt[t>>0]=e>>>12|224;pt[t+1>>0]=e>>>6&63|128;pt[t+2>>0]=e&63|128;t=3;break}if((e+-65536|0)>>>0<1048576){pt[t>>0]=e>>>18|240;pt[t+1>>0]=e>>>12&63|128;pt[t+2>>0]=e>>>6&63|128;pt[t+3>>0]=e&63|128;t=4;break}else{t=hr()|0;dt[t>>2]=84;t=-1;break}}else t=1}while(0);return t|0}function mr(t,e){t=t|0;e=e|0;if(!t)t=0;else t=dr(t,e,0)|0;return t|0}function gr(t){t=t|0;var e=0,r=0;do{if(t){if((dt[t+76>>2]|0)<=-1){e=Dr(t)|0;break}r=(kr(t)|0)==0;e=Dr(t)|0;if(!r)Sr(t)}else{if(!(dt[65]|0))e=0;else e=gr(dt[65]|0)|0;Ut(236);t=dt[58]|0;if(t)do{if((dt[t+76>>2]|0)>-1)r=kr(t)|0;else r=0;if((dt[t+20>>2]|0)>>>0>(dt[t+28>>2]|0)>>>0)e=Dr(t)|0|e;if(r)Sr(t);t=dt[t+56>>2]|0}while((t|0)!=0);Lt(236)}}while(0);return e|0}function vr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0;if((dt[e+76>>2]|0)>=0?(kr(e)|0)!=0:0){if((pt[e+75>>0]|0)!=(t|0)?(i=e+20|0,n=dt[i>>2]|0,n>>>0<(dt[e+16>>2]|0)>>>0):0){dt[i>>2]=n+1;pt[n>>0]=t;r=t&255}else r=Pr(e,t)|0;Sr(e)}else a=3;do{if((a|0)==3){if((pt[e+75>>0]|0)!=(t|0)?(o=e+20|0,r=dt[o>>2]|0,r>>>0<(dt[e+16>>2]|0)>>>0):0){dt[o>>2]=r+1;pt[r>>0]=t;r=t&255;break}r=Pr(e,t)|0}}while(0);return r|0}function _r(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;i=r+16|0;n=dt[i>>2]|0;if(!n)if(!(Or(r)|0)){n=dt[i>>2]|0;o=4}else i=0;else o=4;t:do{if((o|0)==4){a=r+20|0;o=dt[a>>2]|0;if((n-o|0)>>>0>>0){i=Pi[dt[r+36>>2]&7](r,t,e)|0;break}e:do{if((pt[r+75>>0]|0)>-1){i=e;while(1){if(!i){n=o;i=0;break e}n=i+-1|0;if((pt[t+n>>0]|0)==10)break;else i=n}if((Pi[dt[r+36>>2]&7](r,t,i)|0)>>>0>>0)break t;e=e-i|0;t=t+i|0;n=dt[a>>2]|0}else{n=o;i=0}}while(0);Qr(n|0,t|0,e|0)|0;dt[a>>2]=(dt[a>>2]|0)+e;i=i+e|0}}while(0);return i|0}function yr(t,e){t=t|0;e=e|0;var r=0,i=0;r=vt;vt=vt+16|0;i=r;dt[i>>2]=e;e=xr(dt[64]|0,t,i)|0;vt=r;return e|0}function br(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;i=vt;vt=vt+16|0;n=i;dt[n>>2]=r;r=Tr(t,e,n)|0;vt=i;return r|0}function xr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;m=vt;vt=vt+224|0;c=m+120|0;d=m+80|0;p=m;f=m+136|0;i=d;n=i+40|0;do{dt[i>>2]=0;i=i+4|0}while((i|0)<(n|0));dt[c>>2]=dt[r>>2];if((zr(0,e,c,p,d)|0)<0)r=-1;else{if((dt[t+76>>2]|0)>-1)u=kr(t)|0;else u=0;r=dt[t>>2]|0;h=r&32;if((pt[t+74>>0]|0)<1)dt[t>>2]=r&-33;r=t+48|0;if(!(dt[r>>2]|0)){n=t+44|0;o=dt[n>>2]|0;dt[n>>2]=f;a=t+28|0;dt[a>>2]=f;s=t+20|0;dt[s>>2]=f;dt[r>>2]=80;l=t+16|0;dt[l>>2]=f+80;i=zr(t,e,c,p,d)|0;if(o){Pi[dt[t+36>>2]&7](t,0,0)|0;i=(dt[s>>2]|0)==0?-1:i;dt[n>>2]=o;dt[r>>2]=0;dt[l>>2]=0;dt[a>>2]=0;dt[s>>2]=0}}else i=zr(t,e,c,p,d)|0;r=dt[t>>2]|0;dt[t>>2]=r|h;if(u)Sr(t);r=(r&32|0)==0?i:-1}vt=m;return r|0}function wr(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+128|0;n=h+112|0;u=h;o=u;a=268;s=o+112|0;do{dt[o>>2]=dt[a>>2];o=o+4|0;a=a+4|0}while((o|0)<(s|0));if((e+-1|0)>>>0>2147483646)if(!e){e=1;l=4}else{e=hr()|0;dt[e>>2]=75;e=-1}else{n=t;l=4}if((l|0)==4){l=-2-n|0;l=e>>>0>l>>>0?l:e;dt[u+48>>2]=l;t=u+20|0;dt[t>>2]=n;dt[u+44>>2]=n;e=n+l|0;n=u+16|0;dt[n>>2]=e;dt[u+28>>2]=e;e=xr(u,r,i)|0;if(l){r=dt[t>>2]|0;pt[r+(((r|0)==(dt[n>>2]|0))<<31>>31)>>0]=0}}vt=h;return e|0}function Tr(t,e,r){t=t|0;e=e|0;r=r|0;return wr(t,2147483647,e,r)|0}function kr(t){t=t|0;return 0}function Sr(t){t=t|0;return}function Pr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0;l=vt;vt=vt+16|0;s=l;a=e&255;pt[s>>0]=a;i=t+16|0;n=dt[i>>2]|0;if(!n)if(!(Or(t)|0)){n=dt[i>>2]|0;o=4}else r=-1;else o=4;do{if((o|0)==4){i=t+20|0;o=dt[i>>2]|0;if(o>>>0>>0?(r=e&255,(r|0)!=(pt[t+75>>0]|0)):0){dt[i>>2]=o+1;pt[o>>0]=a;break}if((Pi[dt[t+36>>2]&7](t,s,1)|0)==1)r=mt[s>>0]|0;else r=-1}}while(0);vt=l;return r|0}function Cr(t){t=t|0;var e=0,r=0;e=vt;vt=vt+16|0;r=e;dt[r>>2]=dt[t+60>>2];t=cr(Pt(6,r|0)|0)|0;vt=e;return t|0}function Ar(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0;n=vt;vt=vt+32|0;o=n;i=n+20|0;dt[o>>2]=dt[t+60>>2];dt[o+4>>2]=0;dt[o+8>>2]=e;dt[o+12>>2]=i;dt[o+16>>2]=r;if((cr(Wt(140,o|0)|0)|0)<0){dt[i>>2]=-1;t=-1}else t=dt[i>>2]|0;vt=n;return t|0}function Er(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;d=vt;vt=vt+48|0;c=d+16|0;h=d;i=d+32|0;f=t+28|0;n=dt[f>>2]|0;dt[i>>2]=n;p=t+20|0;n=(dt[p>>2]|0)-n|0;dt[i+4>>2]=n;dt[i+8>>2]=e;dt[i+12>>2]=r;l=t+60|0;u=t+44|0;e=2;n=n+r|0;while(1){if(!(dt[52]|0)){dt[c>>2]=dt[l>>2];dt[c+4>>2]=i;dt[c+8>>2]=e;a=cr(Gt(146,c|0)|0)|0}else{Ht(7,t|0);dt[h>>2]=dt[l>>2];dt[h+4>>2]=i;dt[h+8>>2]=e;a=cr(Gt(146,h|0)|0)|0;kt(0)}if((n|0)==(a|0)){n=6;break}if((a|0)<0){n=8;break}n=n-a|0;o=dt[i+4>>2]|0;if(a>>>0<=o>>>0)if((e|0)==2){dt[f>>2]=(dt[f>>2]|0)+a;s=o;e=2}else s=o;else{s=dt[u>>2]|0;dt[f>>2]=s;dt[p>>2]=s;s=dt[i+12>>2]|0;a=a-o|0;i=i+8|0;e=e+-1|0}dt[i>>2]=(dt[i>>2]|0)+a;dt[i+4>>2]=s-a}if((n|0)==6){c=dt[u>>2]|0;dt[t+16>>2]=c+(dt[t+48>>2]|0);t=c;dt[f>>2]=t;dt[p>>2]=t}else if((n|0)==8){dt[t+16>>2]=0;dt[f>>2]=0;dt[p>>2]=0;dt[t>>2]=dt[t>>2]|32;if((e|0)==2)r=0;else r=r-(dt[i+4>>2]|0)|0}vt=d;return r|0}function Ir(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;n=vt;vt=vt+80|0;i=n;dt[t+36>>2]=3;if((dt[t>>2]&64|0)==0?(dt[i>>2]=dt[t+60>>2],dt[i+4>>2]=21505,dt[i+8>>2]=n+12,(St(54,i|0)|0)!=0):0)pt[t+75>>0]=-1;i=Er(t,e,r)|0;vt=n;return i|0}function Or(t){t=t|0;var e=0,r=0;e=t+74|0;r=pt[e>>0]|0;pt[e>>0]=r+255|r;e=dt[t>>2]|0;if(!(e&8)){dt[t+8>>2]=0;dt[t+4>>2]=0;e=dt[t+44>>2]|0;dt[t+28>>2]=e;dt[t+20>>2]=e;dt[t+16>>2]=e+(dt[t+48>>2]|0);e=0}else{dt[t>>2]=e|32;e=-1}return e|0}function Mr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;o=e&255;i=(r|0)!=0;t:do{if(i&(t&3|0)!=0){n=e&255;while(1){if((pt[t>>0]|0)==n<<24>>24){a=6;break t}t=t+1|0;r=r+-1|0;i=(r|0)!=0;if(!(i&(t&3|0)!=0)){a=5;break}}}else a=5}while(0);if((a|0)==5)if(i)a=6;else r=0;t:do{if((a|0)==6){n=e&255;if((pt[t>>0]|0)!=n<<24>>24){i=_t(o,16843009)|0;e:do{if(r>>>0>3)while(1){o=dt[t>>2]^i;if((o&-2139062144^-2139062144)&o+-16843009)break;t=t+4|0;r=r+-4|0;if(r>>>0<=3){a=11;break e}}else a=11}while(0);if((a|0)==11)if(!r){r=0;break}while(1){if((pt[t>>0]|0)==n<<24>>24)break t;t=t+1|0;r=r+-1|0;if(!r){r=0;break}}}}}while(0);return((r|0)!=0?t:0)|0}function Dr(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0;e=t+20|0;o=t+28|0;if((dt[e>>2]|0)>>>0>(dt[o>>2]|0)>>>0?(Pi[dt[t+36>>2]&7](t,0,0)|0,(dt[e>>2]|0)==0):0)e=-1;else{a=t+4|0;r=dt[a>>2]|0;i=t+8|0;n=dt[i>>2]|0;if(r>>>0>>0)Pi[dt[t+40>>2]&7](t,r-n|0,1)|0;dt[t+16>>2]=0;dt[o>>2]=0;dt[e>>2]=0;dt[i>>2]=0;dt[a>>2]=0;e=0}return e|0}function zr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0.0,h=0,c=0,f=0,p=0,d=0.0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0,L=0,N=0,B=0,U=0,X=0,H=0,q=0,W=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0;Q=vt;vt=vt+624|0;V=Q+24|0;Z=Q+16|0;Y=Q+588|0;X=Q+576|0;G=Q;N=Q+536|0;K=Q+8|0;J=Q+528|0;I=(t|0)!=0;O=N+40|0;L=O;N=N+39|0;B=K+4|0;U=X+12|0;X=X+11|0;H=Y;q=U;W=q-H|0;M=-2-H|0;D=q+2|0;z=V+288|0;R=Y+9|0;F=R;j=Y+8|0;o=0;m=e;a=0;e=0;t:while(1){do{if((o|0)>-1)if((a|0)>(2147483647-o|0)){o=hr()|0;dt[o>>2]=75;o=-1;break}else{o=a+o|0;break}}while(0);a=pt[m>>0]|0;if(!(a<<24>>24)){E=245;break}else s=m;e:while(1){switch(a<<24>>24){case 37:{a=s;E=9;break e}case 0:{a=s;break e}default:{}}A=s+1|0;a=pt[A>>0]|0;s=A}e:do{if((E|0)==9)while(1){E=0;if((pt[a+1>>0]|0)!=37)break e;s=s+1|0;a=a+2|0;if((pt[a>>0]|0)==37)E=9;else break}}while(0);v=s-m|0;if(I?(dt[t>>2]&32|0)==0:0)_r(m,v,t)|0;if((s|0)!=(m|0)){m=a;a=v;continue}h=a+1|0;s=pt[h>>0]|0;l=(s<<24>>24)+-48|0;if(l>>>0<10){A=(pt[a+2>>0]|0)==36;h=A?a+3|0:h;s=pt[h>>0]|0;p=A?l:-1;e=A?1:e}else p=-1;a=s<<24>>24;e:do{if((a&-32|0)==32){l=0;while(1){if(!(1<>24)+-32|l;h=h+1|0;s=pt[h>>0]|0;a=s<<24>>24;if((a&-32|0)!=32){c=l;a=h;break}}}else{c=0;a=h}}while(0);do{if(s<<24>>24==42){l=a+1|0;s=(pt[l>>0]|0)+-48|0;if(s>>>0<10?(pt[a+2>>0]|0)==36:0){dt[n+(s<<2)>>2]=10;e=1;a=a+3|0;s=dt[i+((pt[l>>0]|0)+-48<<3)>>2]|0}else{if(e){o=-1;break t}if(!I){g=c;a=l;e=0;A=0;break}e=(dt[r>>2]|0)+(4-1)&~(4-1);s=dt[e>>2]|0;dt[r>>2]=e+4;e=0;a=l}if((s|0)<0){g=c|8192;A=0-s|0}else{g=c;A=s}}else{l=(s<<24>>24)+-48|0;if(l>>>0<10){s=0;do{s=(s*10|0)+l|0;a=a+1|0;l=(pt[a>>0]|0)+-48|0}while(l>>>0<10);if((s|0)<0){o=-1;break t}else{g=c;A=s}}else{g=c;A=0}}}while(0);e:do{if((pt[a>>0]|0)==46){l=a+1|0;s=pt[l>>0]|0;if(s<<24>>24!=42){h=(s<<24>>24)+-48|0;if(h>>>0<10){a=l;s=0}else{a=l;h=0;break}while(1){s=(s*10|0)+h|0;a=a+1|0;h=(pt[a>>0]|0)+-48|0;if(h>>>0>=10){h=s;break e}}}l=a+2|0;s=(pt[l>>0]|0)+-48|0;if(s>>>0<10?(pt[a+3>>0]|0)==36:0){dt[n+(s<<2)>>2]=10;a=a+4|0;h=dt[i+((pt[l>>0]|0)+-48<<3)>>2]|0;break}if(e){o=-1;break t}if(I){a=(dt[r>>2]|0)+(4-1)&~(4-1);h=dt[a>>2]|0;dt[r>>2]=a+4;a=l}else{a=l;h=0}}else h=-1}while(0);f=0;while(1){s=(pt[a>>0]|0)+-65|0;if(s>>>0>57){o=-1;break t}l=a+1|0;s=pt[5359+(f*58|0)+s>>0]|0;c=s&255;if((c+-1|0)>>>0<8){a=l;f=c}else{C=l;break}}if(!(s<<24>>24)){o=-1;break}l=(p|0)>-1;do{if(s<<24>>24==19)if(l){o=-1;break t}else E=52;else{if(l){dt[n+(p<<2)>>2]=c;S=i+(p<<3)|0;P=dt[S+4>>2]|0;E=G;dt[E>>2]=dt[S>>2];dt[E+4>>2]=P;E=52;break}if(!I){o=0;break t}jr(G,c,r)}}while(0);if((E|0)==52?(E=0,!I):0){m=C;a=v;continue}p=pt[a>>0]|0;p=(f|0)!=0&(p&15|0)==3?p&-33:p;l=g&-65537;P=(g&8192|0)==0?g:l;e:do{switch(p|0){case 110:switch(f|0){case 0:{dt[dt[G>>2]>>2]=o;m=C;a=v;continue t}case 1:{dt[dt[G>>2]>>2]=o;m=C;a=v;continue t}case 2:{m=dt[G>>2]|0;dt[m>>2]=o;dt[m+4>>2]=((o|0)<0)<<31>>31;m=C;a=v;continue t}case 3:{$[dt[G>>2]>>1]=o;m=C;a=v;continue t}case 4:{pt[dt[G>>2]>>0]=o;m=C;a=v;continue t}case 6:{dt[dt[G>>2]>>2]=o;m=C;a=v;continue t}case 7:{m=dt[G>>2]|0;dt[m>>2]=o;dt[m+4>>2]=((o|0)<0)<<31>>31;m=C;a=v;continue t}default:{m=C;a=v;continue t}}case 112:{f=P|8;h=h>>>0>8?h:8;p=120;E=64;break}case 88:case 120:{f=P;E=64;break}case 111:{l=G;s=dt[l>>2]|0;l=dt[l+4>>2]|0;if((s|0)==0&(l|0)==0)a=O;else{a=O;do{a=a+-1|0;pt[a>>0]=s&7|48;s=Zr(s|0,l|0,3)|0;l=rt}while(!((s|0)==0&(l|0)==0))}if(!(P&8)){s=P;f=0;c=5839;E=77}else{f=L-a+1|0;s=P;h=(h|0)<(f|0)?f:h;f=0;c=5839;E=77}break}case 105:case 100:{s=G;a=dt[s>>2]|0;s=dt[s+4>>2]|0;if((s|0)<0){a=Vr(0,0,a|0,s|0)|0;s=rt;l=G;dt[l>>2]=a;dt[l+4>>2]=s;l=1;c=5839;E=76;break e}if(!(P&2048)){c=P&1;l=c;c=(c|0)==0?5839:5841;E=76}else{l=1;c=5840;E=76}break}case 117:{s=G;a=dt[s>>2]|0;s=dt[s+4>>2]|0;l=0;c=5839;E=76;break}case 99:{pt[N>>0]=dt[G>>2];m=N;s=1;f=0;p=5839;a=O;break}case 109:{a=hr()|0;a=ur(dt[a>>2]|0)|0;E=82;break}case 115:{a=dt[G>>2]|0;a=(a|0)!=0?a:5849;E=82;break}case 67:{dt[K>>2]=dt[G>>2];dt[B>>2]=0;dt[G>>2]=K;h=-1;E=86;break}case 83:{if(!h){Nr(t,32,A,0,P);a=0;E=98}else E=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{u=+tt[G>>3];dt[Z>>2]=0;tt[et>>3]=u;if((dt[et+4>>2]|0)>=0)if(!(P&2048)){S=P&1;k=S;S=(S|0)==0?5857:5862}else{k=1;S=5859}else{u=-u;k=1;S=5856}tt[et>>3]=u;T=dt[et+4>>2]&2146435072;do{if(T>>>0<2146435072|(T|0)==2146435072&0<0){d=+pr(u,Z)*2.0;s=d!=0.0;if(s)dt[Z>>2]=(dt[Z>>2]|0)+-1;x=p|32;if((x|0)==97){m=p&32;v=(m|0)==0?S:S+9|0;g=k|2;a=12-h|0;do{if(!(h>>>0>11|(a|0)==0)){u=8.0;do{a=a+-1|0;u=u*16.0}while((a|0)!=0);if((pt[v>>0]|0)==45){u=-(u+(-d-u));break}else{u=d+u-u;break}}else u=d}while(0);s=dt[Z>>2]|0;a=(s|0)<0?0-s|0:s;a=Lr(a,((a|0)<0)<<31>>31,U)|0;if((a|0)==(U|0)){pt[X>>0]=48;a=X}pt[a+-1>>0]=(s>>31&2)+43;f=a+-2|0;pt[f>>0]=p+15;c=(h|0)<1;l=(P&8|0)==0;s=Y;while(1){S=~~u;a=s+1|0;pt[s>>0]=mt[5823+S>>0]|m;u=(u-+(S|0))*16.0;do{if((a-H|0)==1){if(l&(c&u==0.0))break;pt[a>>0]=46;a=s+2|0}}while(0);if(!(u!=0.0))break;else s=a}h=(h|0)!=0&(M+a|0)<(h|0)?D+h-f|0:W-f+a|0;l=h+g|0;Nr(t,32,A,l,P);if(!(dt[t>>2]&32))_r(v,g,t)|0;Nr(t,48,A,l,P^65536);a=a-H|0;if(!(dt[t>>2]&32))_r(Y,a,t)|0;s=q-f|0;Nr(t,48,h-(a+s)|0,0,0);if(!(dt[t>>2]&32))_r(f,s,t)|0;Nr(t,32,A,l,P^8192);a=(l|0)<(A|0)?A:l;break}a=(h|0)<0?6:h;if(s){s=(dt[Z>>2]|0)+-28|0;dt[Z>>2]=s;u=d*268435456.0}else{u=d;s=dt[Z>>2]|0}T=(s|0)<0?V:z;w=T;s=T;do{b=~~u>>>0;dt[s>>2]=b;s=s+4|0;u=(u-+(b>>>0))*1.0e9}while(u!=0.0);l=s;s=dt[Z>>2]|0;if((s|0)>0){c=T;while(1){f=(s|0)>29?29:s;h=l+-4|0;do{if(h>>>0>>0)h=c;else{s=0;do{b=Jr(dt[h>>2]|0,0,f|0)|0;b=Kr(b|0,rt|0,s|0,0)|0;s=rt;y=ai(b|0,s|0,1e9,0)|0;dt[h>>2]=y;s=oi(b|0,s|0,1e9,0)|0;h=h+-4|0}while(h>>>0>=c>>>0);if(!s){h=c;break}h=c+-4|0;dt[h>>2]=s}}while(0);while(1){if(l>>>0<=h>>>0)break;s=l+-4|0;if(!(dt[s>>2]|0))l=s;else break}s=(dt[Z>>2]|0)-f|0;dt[Z>>2]=s;if((s|0)>0)c=h;else break}}else h=T;if((s|0)<0){v=((a+25|0)/9|0)+1|0;_=(x|0)==102;m=h;while(1){g=0-s|0;g=(g|0)>9?9:g;do{if(m>>>0>>0){s=(1<>>g;h=0;f=m;do{b=dt[f>>2]|0;dt[f>>2]=(b>>>g)+h;h=_t(b&s,c)|0;f=f+4|0}while(f>>>0>>0);s=(dt[m>>2]|0)==0?m+4|0:m;if(!h){h=s;break}dt[l>>2]=h;h=s;l=l+4|0}else h=(dt[m>>2]|0)==0?m+4|0:m}while(0);s=_?T:h;l=(l-s>>2|0)>(v|0)?s+(v<<2)|0:l;s=(dt[Z>>2]|0)+g|0;dt[Z>>2]=s;if((s|0)>=0){m=h;break}else m=h}}else m=h;do{if(m>>>0>>0){s=(w-m>>2)*9|0;c=dt[m>>2]|0;if(c>>>0<10)break;else h=10;do{h=h*10|0;s=s+1|0}while(c>>>0>=h>>>0)}else s=0}while(0);y=(x|0)==103;b=(a|0)!=0;h=a-((x|0)!=102?s:0)+((b&y)<<31>>31)|0;if((h|0)<(((l-w>>2)*9|0)+-9|0)){f=h+9216|0;_=(f|0)/9|0;h=T+(_+-1023<<2)|0;f=((f|0)%9|0)+1|0;if((f|0)<9){c=10;do{c=c*10|0;f=f+1|0}while((f|0)!=9)}else c=10;g=dt[h>>2]|0;v=(g>>>0)%(c>>>0)|0;if((v|0)==0?(T+(_+-1022<<2)|0)==(l|0):0)c=m;else E=163;do{if((E|0)==163){E=0;d=(((g>>>0)/(c>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;f=(c|0)/2|0;do{if(v>>>0>>0)u=.5;else{if((v|0)==(f|0)?(T+(_+-1022<<2)|0)==(l|0):0){u=1.0;break}u=1.5}}while(0);do{if(k){if((pt[S>>0]|0)!=45)break;d=-d;u=-u}}while(0);f=g-v|0;dt[h>>2]=f;if(!(d+u!=d)){c=m;break}x=f+c|0;dt[h>>2]=x;if(x>>>0>999999999){s=m;while(1){c=h+-4|0;dt[h>>2]=0;if(c>>>0>>0){s=s+-4|0;dt[s>>2]=0}x=(dt[c>>2]|0)+1|0;dt[c>>2]=x;if(x>>>0>999999999)h=c;else{m=s;h=c;break}}}s=(w-m>>2)*9|0;f=dt[m>>2]|0;if(f>>>0<10){c=m;break}else c=10;do{c=c*10|0;s=s+1|0}while(f>>>0>=c>>>0);c=m}}while(0);x=h+4|0;m=c;l=l>>>0>x>>>0?x:l}v=0-s|0;while(1){if(l>>>0<=m>>>0){_=0;x=l;break}h=l+-4|0;if(!(dt[h>>2]|0))l=h;else{_=1;x=l;break}}do{if(y){a=(b&1^1)+a|0;if((a|0)>(s|0)&(s|0)>-5){p=p+-1|0;a=a+-1-s|0}else{p=p+-2|0;a=a+-1|0}l=P&8;if(l)break;do{if(_){l=dt[x+-4>>2]|0;if(!l){h=9;break}if(!((l>>>0)%10|0)){c=10;h=0}else{h=0;break}do{c=c*10|0;h=h+1|0}while(((l>>>0)%(c>>>0)|0|0)==0)}else h=9}while(0);l=((x-w>>2)*9|0)+-9|0;if((p|32|0)==102){l=l-h|0;l=(l|0)<0?0:l;a=(a|0)<(l|0)?a:l;l=0;break}else{l=l+s-h|0;l=(l|0)<0?0:l;a=(a|0)<(l|0)?a:l;l=0;break}}else l=P&8}while(0);g=a|l;c=(g|0)!=0&1;f=(p|32|0)==102;if(f){s=(s|0)>0?s:0;p=0}else{h=(s|0)<0?v:s;h=Lr(h,((h|0)<0)<<31>>31,U)|0;if((q-h|0)<2)do{h=h+-1|0;pt[h>>0]=48}while((q-h|0)<2);pt[h+-1>>0]=(s>>31&2)+43;w=h+-2|0;pt[w>>0]=p;s=q-w|0;p=w}v=k+1+a+c+s|0;Nr(t,32,A,v,P);if(!(dt[t>>2]&32))_r(S,k,t)|0;Nr(t,48,A,v,P^65536);do{if(f){h=m>>>0>T>>>0?T:m;s=h;do{l=Lr(dt[s>>2]|0,0,R)|0;do{if((s|0)==(h|0)){if((l|0)!=(R|0))break;pt[j>>0]=48;l=j}else{if(l>>>0<=Y>>>0)break;do{l=l+-1|0;pt[l>>0]=48}while(l>>>0>Y>>>0)}}while(0);if(!(dt[t>>2]&32))_r(l,F-l|0,t)|0;s=s+4|0}while(s>>>0<=T>>>0);do{if(g){if(dt[t>>2]&32)break;_r(5891,1,t)|0}}while(0);if((a|0)>0&s>>>0>>0){l=s;while(1){s=Lr(dt[l>>2]|0,0,R)|0;if(s>>>0>Y>>>0)do{s=s+-1|0;pt[s>>0]=48}while(s>>>0>Y>>>0);if(!(dt[t>>2]&32))_r(s,(a|0)>9?9:a,t)|0;l=l+4|0;s=a+-9|0;if(!((a|0)>9&l>>>0>>0)){a=s;break}else a=s}}Nr(t,48,a+9|0,9,0)}else{f=_?x:m+4|0;if((a|0)>-1){c=(l|0)==0;h=m;do{s=Lr(dt[h>>2]|0,0,R)|0;if((s|0)==(R|0)){pt[j>>0]=48;s=j}do{if((h|0)==(m|0)){l=s+1|0;if(!(dt[t>>2]&32))_r(s,1,t)|0;if(c&(a|0)<1){s=l;break}if(dt[t>>2]&32){s=l;break}_r(5891,1,t)|0;s=l}else{if(s>>>0<=Y>>>0)break;do{s=s+-1|0;pt[s>>0]=48}while(s>>>0>Y>>>0)}}while(0);l=F-s|0;if(!(dt[t>>2]&32))_r(s,(a|0)>(l|0)?l:a,t)|0;a=a-l|0;h=h+4|0}while(h>>>0>>0&(a|0)>-1)}Nr(t,48,a+18|0,18,0);if(dt[t>>2]&32)break;_r(p,q-p|0,t)|0}}while(0);Nr(t,32,A,v,P^8192);a=(v|0)<(A|0)?A:v}else{f=(p&32|0)!=0;c=u!=u|0.0!=0.0;s=c?0:k;h=s+3|0;Nr(t,32,A,h,l);a=dt[t>>2]|0;if(!(a&32)){_r(S,s,t)|0;a=dt[t>>2]|0}if(!(a&32))_r(c?f?5883:5887:f?5875:5879,3,t)|0;Nr(t,32,A,h,P^8192);a=(h|0)<(A|0)?A:h}}while(0);m=C;continue t}default:{l=P;s=h;f=0;p=5839;a=O}}}while(0);e:do{if((E|0)==64){l=G;s=dt[l>>2]|0;l=dt[l+4>>2]|0;c=p&32;if(!((s|0)==0&(l|0)==0)){a=O;do{a=a+-1|0;pt[a>>0]=mt[5823+(s&15)>>0]|c;s=Zr(s|0,l|0,4)|0;l=rt}while(!((s|0)==0&(l|0)==0));E=G;if((f&8|0)==0|(dt[E>>2]|0)==0&(dt[E+4>>2]|0)==0){s=f;f=0;c=5839;E=77}else{s=f;f=2;c=5839+(p>>4)|0;E=77}}else{a=O;s=f;f=0;c=5839;E=77}}else if((E|0)==76){a=Lr(a,s,O)|0;s=P;f=l;E=77}else if((E|0)==82){E=0;P=Mr(a,0,h)|0;S=(P|0)==0;m=a;s=S?h:P-a|0;f=0;p=5839;a=S?a+h|0:P}else if((E|0)==86){E=0;s=0;a=0;c=dt[G>>2]|0;while(1){l=dt[c>>2]|0;if(!l)break;a=mr(J,l)|0;if((a|0)<0|a>>>0>(h-s|0)>>>0)break;s=a+s|0;if(h>>>0>s>>>0)c=c+4|0;else break}if((a|0)<0){o=-1;break t}Nr(t,32,A,s,P);if(!s){a=0;E=98}else{l=0;h=dt[G>>2]|0;while(1){a=dt[h>>2]|0;if(!a){a=s;E=98;break e}a=mr(J,a)|0;l=a+l|0;if((l|0)>(s|0)){a=s;E=98;break e}if(!(dt[t>>2]&32))_r(J,a,t)|0;if(l>>>0>=s>>>0){a=s;E=98;break}else h=h+4|0}}}}while(0);if((E|0)==98){E=0;Nr(t,32,A,a,P^8192);m=C;a=(A|0)>(a|0)?A:a;continue}if((E|0)==77){E=0;l=(h|0)>-1?s&-65537:s;s=G;s=(dt[s>>2]|0)!=0|(dt[s+4>>2]|0)!=0;if((h|0)!=0|s){s=(s&1^1)+(L-a)|0;m=a;s=(h|0)>(s|0)?h:s;p=c;a=O}else{m=O;s=0;p=c;a=O}}c=a-m|0;s=(s|0)<(c|0)?c:s;h=f+s|0;a=(A|0)<(h|0)?h:A;Nr(t,32,a,h,l);if(!(dt[t>>2]&32))_r(p,f,t)|0;Nr(t,48,a,h,l^65536);Nr(t,48,s,c,0);if(!(dt[t>>2]&32))_r(m,c,t)|0;Nr(t,32,a,h,l^8192);m=C}t:do{if((E|0)==245)if(!t)if(e){o=1;while(1){e=dt[n+(o<<2)>>2]|0;if(!e)break;jr(i+(o<<3)|0,e,r);o=o+1|0;if((o|0)>=10){o=1;break t}}if((o|0)<10)while(1){if(dt[n+(o<<2)>>2]|0){o=-1;break t}o=o+1|0;if((o|0)>=10){o=1;break}}else o=1}else o=0}while(0);vt=Q;return o|0}function Rr(t){t=t|0;if(!(dt[t+68>>2]|0))Sr(t);return}function Fr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;i=t+20|0;n=dt[i>>2]|0;t=(dt[t+16>>2]|0)-n|0;t=t>>>0>r>>>0?r:t;Qr(n|0,e|0,t|0)|0;dt[i>>2]=(dt[i>>2]|0)+t;return r|0}function jr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0.0;t:do{if(e>>>0<=20)do{switch(e|0){case 9:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;dt[t>>2]=e;break t}case 10:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;i=t;dt[i>>2]=e;dt[i+4>>2]=((e|0)<0)<<31>>31;break t}case 11:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;i=t;dt[i>>2]=e;dt[i+4>>2]=0;break t}case 12:{i=(dt[r>>2]|0)+(8-1)&~(8-1);e=i;n=dt[e>>2]|0;e=dt[e+4>>2]|0;dt[r>>2]=i+8;i=t;dt[i>>2]=n;dt[i+4>>2]=e;break t}case 13:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;i=(i&65535)<<16>>16;n=t;dt[n>>2]=i;dt[n+4>>2]=((i|0)<0)<<31>>31;break t}case 14:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;n=t;dt[n>>2]=i&65535;dt[n+4>>2]=0;break t}case 15:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;i=(i&255)<<24>>24;n=t;dt[n>>2]=i;dt[n+4>>2]=((i|0)<0)<<31>>31;break t}case 16:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;n=t;dt[n>>2]=i&255;dt[n+4>>2]=0;break t}case 17:{n=(dt[r>>2]|0)+(8-1)&~(8-1);o=+tt[n>>3];dt[r>>2]=n+8;tt[t>>3]=o;break t}case 18:{n=(dt[r>>2]|0)+(8-1)&~(8-1);o=+tt[n>>3];dt[r>>2]=n+8;tt[t>>3]=o;break t}default:break t}}while(0)}while(0);return}function Lr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if(e>>>0>0|(e|0)==0&t>>>0>4294967295)while(1){i=ai(t|0,e|0,10,0)|0;r=r+-1|0;pt[r>>0]=i|48;i=oi(t|0,e|0,10,0)|0;if(e>>>0>9|(e|0)==9&t>>>0>4294967295){t=i;e=rt}else{t=i;break}}if(t)while(1){r=r+-1|0;pt[r>>0]=(t>>>0)%10|0|48;if(t>>>0<10)break;else t=(t>>>0)/10|0}return r|0}function Nr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0;s=vt;vt=vt+256|0;a=s;do{if((r|0)>(i|0)&(n&73728|0)==0){n=r-i|0;Yr(a|0,e|0,(n>>>0>256?256:n)|0)|0;e=dt[t>>2]|0;o=(e&32|0)==0;if(n>>>0>255){i=r-i|0;do{if(o){_r(a,256,t)|0;e=dt[t>>2]|0}n=n+-256|0;o=(e&32|0)==0}while(n>>>0>255);if(o)n=i&255;else break}else if(!o)break;_r(a,n,t)|0}}while(0);vt=s;return}function Br(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,C=0,A=0,E=0,I=0,O=0,M=0,D=0,z=0,R=0,F=0,j=0;do{if(t>>>0<245){p=t>>>0<11?16:t+11&-8;t=p>>>3;s=dt[151]|0;r=s>>>t;if(r&3){t=(r&1^1)+t|0;i=t<<1;r=644+(i<<2)|0;i=644+(i+2<<2)|0;n=dt[i>>2]|0;o=n+8|0;a=dt[o>>2]|0;do{if((r|0)!=(a|0)){if(a>>>0<(dt[155]|0)>>>0)Xt();e=a+12|0;if((dt[e>>2]|0)==(n|0)){dt[e>>2]=r;dt[i>>2]=a;break}else Xt()}else dt[151]=s&~(1<>2]=j|3;j=n+(j|4)|0;dt[j>>2]=dt[j>>2]|1;j=o;return j|0}a=dt[153]|0;if(p>>>0>a>>>0){if(r){i=2<>>12&16;i=i>>>l;n=i>>>5&8;i=i>>>n;o=i>>>2&4;i=i>>>o;r=i>>>1&2;i=i>>>r;t=i>>>1&1;t=(n|l|o|r|t)+(i>>>t)|0;i=t<<1;r=644+(i<<2)|0;i=644+(i+2<<2)|0;o=dt[i>>2]|0;l=o+8|0;n=dt[l>>2]|0;do{if((r|0)!=(n|0)){if(n>>>0<(dt[155]|0)>>>0)Xt();e=n+12|0;if((dt[e>>2]|0)==(o|0)){dt[e>>2]=r;dt[i>>2]=n;u=dt[153]|0;break}else Xt()}else{dt[151]=s&~(1<>2]=p|3;s=o+p|0;dt[o+(p|4)>>2]=a|1;dt[o+j>>2]=a;if(u){n=dt[156]|0;r=u>>>3;e=r<<1;i=644+(e<<2)|0;t=dt[151]|0;r=1<>2]|0;if(e>>>0<(dt[155]|0)>>>0)Xt();else{h=t;c=e}}else{dt[151]=t|r;h=644+(e+2<<2)|0;c=i}dt[h>>2]=n;dt[c+12>>2]=n;dt[n+8>>2]=c;dt[n+12>>2]=i}dt[153]=a;dt[156]=s;j=l;return j|0}t=dt[152]|0;if(t){r=(t&0-t)+-1|0;F=r>>>12&16;r=r>>>F;R=r>>>5&8;r=r>>>R;j=r>>>2&4;r=r>>>j;t=r>>>1&2;r=r>>>t;i=r>>>1&1;i=dt[908+((R|F|j|t|i)+(r>>>i)<<2)>>2]|0;r=(dt[i+4>>2]&-8)-p|0;t=i;while(1){e=dt[t+16>>2]|0;if(!e){e=dt[t+20>>2]|0;if(!e){l=r;break}}t=(dt[e+4>>2]&-8)-p|0;j=t>>>0>>0;r=j?t:r;t=e;i=j?e:i}o=dt[155]|0;if(i>>>0>>0)Xt();s=i+p|0;if(i>>>0>=s>>>0)Xt();a=dt[i+24>>2]|0;r=dt[i+12>>2]|0;do{if((r|0)==(i|0)){t=i+20|0;e=dt[t>>2]|0;if(!e){t=i+16|0;e=dt[t>>2]|0;if(!e){f=0;break}}while(1){r=e+20|0;n=dt[r>>2]|0;if(n){e=n;t=r;continue}r=e+16|0;n=dt[r>>2]|0;if(!n)break;else{e=n;t=r}}if(t>>>0>>0)Xt();else{dt[t>>2]=0;f=e;break}}else{n=dt[i+8>>2]|0;if(n>>>0>>0)Xt();e=n+12|0;if((dt[e>>2]|0)!=(i|0))Xt();t=r+8|0;if((dt[t>>2]|0)==(i|0)){dt[e>>2]=r;dt[t>>2]=n;f=r;break}else Xt()}}while(0);do{if(a){e=dt[i+28>>2]|0;t=908+(e<<2)|0;if((i|0)==(dt[t>>2]|0)){dt[t>>2]=f;if(!f){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(i|0))dt[e>>2]=f;else dt[a+20>>2]=f;if(!f)break}t=dt[155]|0;if(f>>>0>>0)Xt();dt[f+24>>2]=a;e=dt[i+16>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[f+16>>2]=e;dt[e+24>>2]=f;break}}while(0);e=dt[i+20>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[f+20>>2]=e;dt[e+24>>2]=f;break}}}while(0);if(l>>>0<16){j=l+p|0;dt[i+4>>2]=j|3;j=i+(j+4)|0;dt[j>>2]=dt[j>>2]|1}else{dt[i+4>>2]=p|3;dt[i+(p|4)>>2]=l|1;dt[i+(l+p)>>2]=l;e=dt[153]|0;if(e){o=dt[156]|0;r=e>>>3;e=r<<1;n=644+(e<<2)|0;t=dt[151]|0;r=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{d=e;m=t}}else{dt[151]=t|r;d=644+(e+2<<2)|0;m=n}dt[d>>2]=o;dt[m+12>>2]=o;dt[o+8>>2]=m;dt[o+12>>2]=n}dt[153]=l;dt[156]=s}j=i+8|0;return j|0}else m=p}else m=p}else if(t>>>0<=4294967231){t=t+11|0;c=t&-8;h=dt[152]|0;if(h){r=0-c|0;t=t>>>8;if(t)if(c>>>0>16777215)u=31;else{m=(t+1048320|0)>>>16&8;b=t<>>16&4;b=b<>>16&2;u=14-(d|m|u)+(b<>>15)|0;u=c>>>(u+7|0)&1|u<<1}else u=0;t=dt[908+(u<<2)>>2]|0;t:do{if(!t){n=0;t=0;b=86}else{a=r;n=0;s=c<<((u|0)==31?0:25-(u>>>1)|0);l=t;t=0;while(1){o=dt[l+4>>2]&-8;r=o-c|0;if(r>>>0>>0)if((o|0)==(c|0)){o=l;t=l;b=90;break t}else t=l;else r=a;b=dt[l+20>>2]|0;l=dt[l+16+(s>>>31<<2)>>2]|0;n=(b|0)==0|(b|0)==(l|0)?n:b;if(!l){b=86;break}else{a=r;s=s<<1}}}}while(0);if((b|0)==86){if((n|0)==0&(t|0)==0){t=2<>>12&16;t=t>>>f;h=t>>>5&8;t=t>>>h;d=t>>>2&4;t=t>>>d;m=t>>>1&2;t=t>>>m;n=t>>>1&1;n=dt[908+((h|f|d|m|n)+(t>>>n)<<2)>>2]|0;t=0}if(!n){s=r;l=t}else{o=n;b=90}}if((b|0)==90)while(1){b=0;m=(dt[o+4>>2]&-8)-c|0;n=m>>>0>>0;r=n?m:r;t=n?o:t;n=dt[o+16>>2]|0;if(n){o=n;b=90;continue}o=dt[o+20>>2]|0;if(!o){s=r;l=t;break}else b=90}if((l|0)!=0?s>>>0<((dt[153]|0)-c|0)>>>0:0){n=dt[155]|0;if(l>>>0>>0)Xt();a=l+c|0;if(l>>>0>=a>>>0)Xt();o=dt[l+24>>2]|0;r=dt[l+12>>2]|0;do{if((r|0)==(l|0)){t=l+20|0;e=dt[t>>2]|0;if(!e){t=l+16|0;e=dt[t>>2]|0;if(!e){p=0;break}}while(1){r=e+20|0;i=dt[r>>2]|0;if(i){e=i;t=r;continue}r=e+16|0;i=dt[r>>2]|0;if(!i)break;else{e=i;t=r}}if(t>>>0>>0)Xt();else{dt[t>>2]=0;p=e;break}}else{i=dt[l+8>>2]|0;if(i>>>0>>0)Xt();e=i+12|0;if((dt[e>>2]|0)!=(l|0))Xt();t=r+8|0;if((dt[t>>2]|0)==(l|0)){dt[e>>2]=r;dt[t>>2]=i;p=r;break}else Xt()}}while(0);do{if(o){e=dt[l+28>>2]|0;t=908+(e<<2)|0;if((l|0)==(dt[t>>2]|0)){dt[t>>2]=p;if(!p){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=o+16|0;if((dt[e>>2]|0)==(l|0))dt[e>>2]=p;else dt[o+20>>2]=p;if(!p)break}t=dt[155]|0;if(p>>>0>>0)Xt();dt[p+24>>2]=o;e=dt[l+16>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[p+16>>2]=e;dt[e+24>>2]=p;break}}while(0);e=dt[l+20>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[p+20>>2]=e;dt[e+24>>2]=p;break}}}while(0);t:do{if(s>>>0>=16){dt[l+4>>2]=c|3;dt[l+(c|4)>>2]=s|1;dt[l+(s+c)>>2]=s;e=s>>>3;if(s>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{v=e;_=t}}else{dt[151]=r|e;v=644+(t+2<<2)|0;_=i}dt[v>>2]=a;dt[_+12>>2]=a;dt[l+(c+8)>>2]=_;dt[l+(c+12)>>2]=i;break}e=s>>>8;if(e)if(s>>>0>16777215)i=31;else{F=(e+1048320|0)>>>16&8;j=e<>>16&4;j=j<>>16&2;i=14-(R|F|i)+(j<>>15)|0;i=s>>>(i+7|0)&1|i<<1}else i=0;e=908+(i<<2)|0;dt[l+(c+28)>>2]=i;dt[l+(c+20)>>2]=0;dt[l+(c+16)>>2]=0;t=dt[152]|0;r=1<>2]=a;dt[l+(c+24)>>2]=e;dt[l+(c+12)>>2]=a;dt[l+(c+8)>>2]=a;break}e=dt[e>>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(s|0)){i=s<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(s|0)){T=r;break e}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=a;dt[l+(c+24)>>2]=e;dt[l+(c+12)>>2]=a;dt[l+(c+8)>>2]=a;break t}}else T=e}while(0);e=T+8|0;t=dt[e>>2]|0;j=dt[155]|0;if(t>>>0>=j>>>0&T>>>0>=j>>>0){dt[t+12>>2]=a;dt[e>>2]=a;dt[l+(c+8)>>2]=t;dt[l+(c+12)>>2]=T;dt[l+(c+24)>>2]=0;break}else Xt()}else{j=s+c|0;dt[l+4>>2]=j|3;j=l+(j+4)|0;dt[j>>2]=dt[j>>2]|1}}while(0);j=l+8|0;return j|0}else m=c}else m=c}else m=-1}while(0);r=dt[153]|0;if(r>>>0>=m>>>0){e=r-m|0;t=dt[156]|0;if(e>>>0>15){dt[156]=t+m;dt[153]=e;dt[t+(m+4)>>2]=e|1;dt[t+r>>2]=e;dt[t+4>>2]=m|3}else{dt[153]=0;dt[156]=0;dt[t+4>>2]=r|3;j=t+(r+4)|0;dt[j>>2]=dt[j>>2]|1}j=t+8|0;return j|0}t=dt[154]|0;if(t>>>0>m>>>0){F=t-m|0;dt[154]=F;j=dt[157]|0;dt[157]=j+m;dt[j+(m+4)>>2]=F|1;dt[j+4>>2]=m|3;j=j+8|0;return j|0}do{if(!(dt[269]|0)){t=Dt(30)|0;if(!(t+-1&t)){dt[271]=t;dt[270]=t;dt[272]=-1;dt[273]=-1;dt[274]=0;dt[262]=0;T=(qt(0)|0)&-16^1431655768;dt[269]=T;break}else Xt()}}while(0);l=m+48|0;s=dt[271]|0;u=m+47|0;a=s+u|0;s=0-s|0;h=a&s;if(h>>>0<=m>>>0){j=0;return j|0}t=dt[261]|0;if((t|0)!=0?(_=dt[259]|0,T=_+h|0,T>>>0<=_>>>0|T>>>0>t>>>0):0){j=0;return j|0}t:do{if(!(dt[262]&4)){t=dt[157]|0;e:do{if(t){n=1052;while(1){r=dt[n>>2]|0;if(r>>>0<=t>>>0?(g=n+4|0,(r+(dt[g>>2]|0)|0)>>>0>t>>>0):0){o=n;t=g;break}n=dt[n+8>>2]|0;if(!n){b=174;break e}}r=a-(dt[154]|0)&s;if(r>>>0<2147483647){n=It(r|0)|0;T=(n|0)==((dt[o>>2]|0)+(dt[t>>2]|0)|0);t=T?r:0;if(T){if((n|0)!=(-1|0)){x=n;d=t;b=194;break t}}else b=184}else t=0}else b=174}while(0);do{if((b|0)==174){o=It(0)|0;if((o|0)!=(-1|0)){t=o;r=dt[270]|0;n=r+-1|0;if(!(n&t))r=h;else r=h-t+(n+t&0-r)|0;t=dt[259]|0;n=t+r|0;if(r>>>0>m>>>0&r>>>0<2147483647){T=dt[261]|0;if((T|0)!=0?n>>>0<=t>>>0|n>>>0>T>>>0:0){t=0;break}n=It(r|0)|0;T=(n|0)==(o|0);t=T?r:0;if(T){x=o;d=t;b=194;break t}else b=184}else t=0}else t=0}}while(0);e:do{if((b|0)==184){o=0-r|0;do{if(l>>>0>r>>>0&(r>>>0<2147483647&(n|0)!=(-1|0))?(y=dt[271]|0,y=u-r+y&0-y,y>>>0<2147483647):0)if((It(y|0)|0)==(-1|0)){It(o|0)|0;break e}else{r=y+r|0;break}}while(0);if((n|0)!=(-1|0)){x=n;d=r;b=194;break t}}}while(0);dt[262]=dt[262]|4;b=191}else{t=0;b=191}}while(0);if((((b|0)==191?h>>>0<2147483647:0)?(x=It(h|0)|0,w=It(0)|0,x>>>0>>0&((x|0)!=(-1|0)&(w|0)!=(-1|0))):0)?(k=w-x|0,S=k>>>0>(m+40|0)>>>0,S):0){d=S?k:t;b=194}if((b|0)==194){t=(dt[259]|0)+d|0;dt[259]=t;if(t>>>0>(dt[260]|0)>>>0)dt[260]=t;a=dt[157]|0;t:do{if(a){o=1052;do{t=dt[o>>2]|0;r=o+4|0;n=dt[r>>2]|0;if((x|0)==(t+n|0)){P=t;C=r;A=n;E=o;b=204;break}o=dt[o+8>>2]|0}while((o|0)!=0);if(((b|0)==204?(dt[E+12>>2]&8|0)==0:0)?a>>>0>>0&a>>>0>=P>>>0:0){dt[C>>2]=A+d;j=(dt[154]|0)+d|0;F=a+8|0;F=(F&7|0)==0?0:0-F&7;R=j-F|0;dt[157]=a+F;dt[154]=R;dt[a+(F+4)>>2]=R|1;dt[a+(j+4)>>2]=40;dt[158]=dt[273];break}t=dt[155]|0;if(x>>>0>>0){dt[155]=x;t=x}r=x+d|0;o=1052;while(1){if((dt[o>>2]|0)==(r|0)){n=o;r=o;b=212;break}o=dt[o+8>>2]|0;if(!o){r=1052;break}}if((b|0)==212)if(!(dt[r+12>>2]&8)){dt[n>>2]=x;f=r+4|0;dt[f>>2]=(dt[f>>2]|0)+d;f=x+8|0;f=(f&7|0)==0?0:0-f&7;u=x+(d+8)|0;u=(u&7|0)==0?0:0-u&7;e=x+(u+d)|0;c=f+m|0;p=x+c|0;h=e-(x+f)-m|0;dt[x+(f+4)>>2]=m|3;e:do{if((e|0)!=(a|0)){if((e|0)==(dt[156]|0)){j=(dt[153]|0)+h|0;dt[153]=j;dt[156]=p;dt[x+(c+4)>>2]=j|1;dt[x+(j+c)>>2]=j;break}s=d+4|0;r=dt[x+(s+u)>>2]|0;if((r&3|0)==1){l=r&-8;o=r>>>3;r:do{if(r>>>0>=256){a=dt[x+((u|24)+d)>>2]|0;i=dt[x+(d+12+u)>>2]|0;do{if((i|0)==(e|0)){n=u|16;i=x+(s+n)|0;r=dt[i>>2]|0;if(!r){i=x+(n+d)|0;r=dt[i>>2]|0;if(!r){z=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;z=r;break}}else{n=dt[x+((u|8)+d)>>2]|0;if(n>>>0>>0)Xt();t=n+12|0;if((dt[t>>2]|0)!=(e|0))Xt();r=i+8|0;if((dt[r>>2]|0)==(e|0)){dt[t>>2]=i;dt[r>>2]=n;z=i;break}else Xt()}}while(0);if(!a)break;t=dt[x+(d+28+u)>>2]|0;r=908+(t<<2)|0;do{if((e|0)!=(dt[r>>2]|0)){if(a>>>0<(dt[155]|0)>>>0)Xt();t=a+16|0;if((dt[t>>2]|0)==(e|0))dt[t>>2]=z;else dt[a+20>>2]=z;if(!z)break r}else{dt[r>>2]=z;if(z)break;dt[152]=dt[152]&~(1<>>0>>0)Xt();dt[z+24>>2]=a;e=u|16;t=dt[x+(e+d)>>2]|0;do{if(t)if(t>>>0>>0)Xt();else{dt[z+16>>2]=t;dt[t+24>>2]=z;break}}while(0);e=dt[x+(s+e)>>2]|0;if(!e)break;if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[z+20>>2]=e;dt[e+24>>2]=z;break}}else{i=dt[x+((u|8)+d)>>2]|0;n=dt[x+(d+12+u)>>2]|0;r=644+(o<<1<<2)|0;do{if((i|0)!=(r|0)){if(i>>>0>>0)Xt();if((dt[i+12>>2]|0)==(e|0))break;Xt()}}while(0);if((n|0)==(i|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();t=n+8|0;if((dt[t>>2]|0)==(e|0)){I=t;break}Xt()}}while(0);dt[i+12>>2]=n;dt[I>>2]=i}}while(0);e=x+((l|u)+d)|0;n=l+h|0}else n=h;e=e+4|0;dt[e>>2]=dt[e>>2]&-2;dt[x+(c+4)>>2]=n|1;dt[x+(n+c)>>2]=n;e=n>>>3;if(n>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0>=(dt[155]|0)>>>0){R=e;F=t;break}Xt()}}while(0);dt[R>>2]=p;dt[F+12>>2]=p;dt[x+(c+8)>>2]=F;dt[x+(c+12)>>2]=i;break}e=n>>>8;do{if(!e)i=0;else{if(n>>>0>16777215){i=31;break}R=(e+1048320|0)>>>16&8;F=e<>>16&4;F=F<>>16&2;i=14-(z|R|i)+(F<>>15)|0;i=n>>>(i+7|0)&1|i<<1}}while(0);e=908+(i<<2)|0;dt[x+(c+28)>>2]=i;dt[x+(c+20)>>2]=0;dt[x+(c+16)>>2]=0;t=dt[152]|0;r=1<>2]=p;dt[x+(c+24)>>2]=e;dt[x+(c+12)>>2]=p;dt[x+(c+8)>>2]=p;break}e=dt[e>>2]|0;r:do{if((dt[e+4>>2]&-8|0)!=(n|0)){i=n<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(n|0)){j=r;break r}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=p;dt[x+(c+24)>>2]=e;dt[x+(c+12)>>2]=p;dt[x+(c+8)>>2]=p;break e}}else j=e}while(0);e=j+8|0;t=dt[e>>2]|0;F=dt[155]|0;if(t>>>0>=F>>>0&j>>>0>=F>>>0){dt[t+12>>2]=p;dt[e>>2]=p;dt[x+(c+8)>>2]=t;dt[x+(c+12)>>2]=j;dt[x+(c+24)>>2]=0;break}else Xt()}else{j=(dt[154]|0)+h|0;dt[154]=j;dt[157]=p;dt[x+(c+4)>>2]=j|1}}while(0);j=x+(f|8)|0;return j|0}else r=1052;while(1){t=dt[r>>2]|0;if(t>>>0<=a>>>0?(e=dt[r+4>>2]|0,i=t+e|0,i>>>0>a>>>0):0)break;r=dt[r+8>>2]|0}n=t+(e+-39)|0;t=t+(e+-47+((n&7|0)==0?0:0-n&7))|0;n=a+16|0;t=t>>>0>>0?a:t;e=t+8|0;r=x+8|0;r=(r&7|0)==0?0:0-r&7;j=d+-40-r|0;dt[157]=x+r;dt[154]=j;dt[x+(r+4)>>2]=j|1;dt[x+(d+-36)>>2]=40;dt[158]=dt[273];r=t+4|0;dt[r>>2]=27;dt[e>>2]=dt[263];dt[e+4>>2]=dt[264];dt[e+8>>2]=dt[265];dt[e+12>>2]=dt[266];dt[263]=x;dt[264]=d;dt[266]=0;dt[265]=e;e=t+28|0;dt[e>>2]=7;if((t+32|0)>>>0>>0)do{j=e;e=e+4|0;dt[e>>2]=7}while((j+8|0)>>>0>>0);if((t|0)!=(a|0)){o=t-a|0;dt[r>>2]=dt[r>>2]&-2;dt[a+4>>2]=o|1;dt[t>>2]=o;e=o>>>3;if(o>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{O=e;M=t}}else{dt[151]=r|e;O=644+(t+2<<2)|0;M=i}dt[O>>2]=a;dt[M+12>>2]=a;dt[a+8>>2]=M;dt[a+12>>2]=i;break}e=o>>>8;if(e)if(o>>>0>16777215)i=31;else{F=(e+1048320|0)>>>16&8;j=e<>>16&4;j=j<>>16&2;i=14-(R|F|i)+(j<>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;r=908+(i<<2)|0;dt[a+28>>2]=i;dt[a+20>>2]=0;dt[n>>2]=0;e=dt[152]|0;t=1<>2]=a;dt[a+24>>2]=r;dt[a+12>>2]=a;dt[a+8>>2]=a;break}e=dt[r>>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(o|0)){i=o<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(o|0)){D=r;break e}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=a;dt[a+24>>2]=e;dt[a+12>>2]=a;dt[a+8>>2]=a;break t}}else D=e}while(0);e=D+8|0;t=dt[e>>2]|0;j=dt[155]|0;if(t>>>0>=j>>>0&D>>>0>=j>>>0){dt[t+12>>2]=a;dt[e>>2]=a;dt[a+8>>2]=t;dt[a+12>>2]=D;dt[a+24>>2]=0;break}else Xt()}}else{j=dt[155]|0;if((j|0)==0|x>>>0>>0)dt[155]=x;dt[263]=x;dt[264]=d;dt[266]=0;dt[160]=dt[269];dt[159]=-1;e=0;do{j=e<<1;F=644+(j<<2)|0;dt[644+(j+3<<2)>>2]=F;dt[644+(j+2<<2)>>2]=F;e=e+1|0}while((e|0)!=32);j=x+8|0;j=(j&7|0)==0?0:0-j&7;F=d+-40-j|0;dt[157]=x+j;dt[154]=F;dt[x+(j+4)>>2]=F|1;dt[x+(d+-36)>>2]=40;dt[158]=dt[273]}}while(0);e=dt[154]|0;if(e>>>0>m>>>0){F=e-m|0;dt[154]=F;j=dt[157]|0;dt[157]=j+m;dt[j+(m+4)>>2]=F|1;dt[j+4>>2]=m|3;j=j+8|0;return j|0}}j=hr()|0;dt[j>>2]=12;j=0;return j|0}function Ur(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0;if(!t)return;e=t+-8|0;s=dt[155]|0;if(e>>>0>>0)Xt();r=dt[t+-4>>2]|0;i=r&3;if((i|0)==1)Xt();p=r&-8;m=t+(p+-8)|0;do{if(!(r&1)){e=dt[e>>2]|0;if(!i)return;l=-8-e|0;h=t+l|0;c=e+p|0;if(h>>>0>>0)Xt();if((h|0)==(dt[156]|0)){e=t+(p+-4)|0;r=dt[e>>2]|0;if((r&3|0)!=3){y=h;o=c;break}dt[153]=c;dt[e>>2]=r&-2;dt[t+(l+4)>>2]=c|1;dt[m>>2]=c;return}n=e>>>3;if(e>>>0<256){i=dt[t+(l+8)>>2]|0;r=dt[t+(l+12)>>2]|0;e=644+(n<<1<<2)|0;if((i|0)!=(e|0)){if(i>>>0>>0)Xt();if((dt[i+12>>2]|0)!=(h|0))Xt()}if((r|0)==(i|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();e=r+8|0;if((dt[e>>2]|0)==(h|0))a=e;else Xt()}else a=r+8|0;dt[i+12>>2]=r;dt[a>>2]=i;y=h;o=c;break}a=dt[t+(l+24)>>2]|0;i=dt[t+(l+12)>>2]|0;do{if((i|0)==(h|0)){r=t+(l+20)|0;e=dt[r>>2]|0;if(!e){r=t+(l+16)|0;e=dt[r>>2]|0;if(!e){u=0;break}}while(1){i=e+20|0;n=dt[i>>2]|0;if(n){e=n;r=i;continue}i=e+16|0;n=dt[i>>2]|0;if(!n)break;else{e=n;r=i}}if(r>>>0>>0)Xt();else{dt[r>>2]=0;u=e;break}}else{n=dt[t+(l+8)>>2]|0;if(n>>>0>>0)Xt();e=n+12|0;if((dt[e>>2]|0)!=(h|0))Xt();r=i+8|0;if((dt[r>>2]|0)==(h|0)){dt[e>>2]=i;dt[r>>2]=n;u=i;break}else Xt()}}while(0);if(a){e=dt[t+(l+28)>>2]|0;r=908+(e<<2)|0;if((h|0)==(dt[r>>2]|0)){dt[r>>2]=u;if(!u){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(h|0))dt[e>>2]=u;else dt[a+20>>2]=u;if(!u){y=h;o=c;break}}r=dt[155]|0;if(u>>>0>>0)Xt();dt[u+24>>2]=a;e=dt[t+(l+16)>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[u+16>>2]=e;dt[e+24>>2]=u;break}}while(0);e=dt[t+(l+20)>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[u+20>>2]=e;dt[e+24>>2]=u;y=h;o=c;break}else{y=h;o=c}}else{y=h;o=c}}else{y=e;o=p}}while(0);if(y>>>0>=m>>>0)Xt();e=t+(p+-4)|0;r=dt[e>>2]|0;if(!(r&1))Xt();if(!(r&2)){if((m|0)==(dt[157]|0)){_=(dt[154]|0)+o|0;dt[154]=_;dt[157]=y;dt[y+4>>2]=_|1;if((y|0)!=(dt[156]|0))return;dt[156]=0;dt[153]=0;return}if((m|0)==(dt[156]|0)){_=(dt[153]|0)+o|0;dt[153]=_;dt[156]=y;dt[y+4>>2]=_|1;dt[y+_>>2]=_;return}o=(r&-8)+o|0;n=r>>>3;do{if(r>>>0>=256){a=dt[t+(p+16)>>2]|0;e=dt[t+(p|4)>>2]|0;do{if((e|0)==(m|0)){r=t+(p+12)|0;e=dt[r>>2]|0;if(!e){r=t+(p+8)|0;e=dt[r>>2]|0;if(!e){d=0;break}}while(1){i=e+20|0;n=dt[i>>2]|0;if(n){e=n;r=i;continue}i=e+16|0;n=dt[i>>2]|0;if(!n)break;else{e=n;r=i}}if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[r>>2]=0;d=e;break}}else{r=dt[t+p>>2]|0;if(r>>>0<(dt[155]|0)>>>0)Xt();i=r+12|0;if((dt[i>>2]|0)!=(m|0))Xt();n=e+8|0;if((dt[n>>2]|0)==(m|0)){dt[i>>2]=e;dt[n>>2]=r;d=e;break}else Xt()}}while(0);if(a){e=dt[t+(p+20)>>2]|0;r=908+(e<<2)|0;if((m|0)==(dt[r>>2]|0)){dt[r>>2]=d;if(!d){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(m|0))dt[e>>2]=d;else dt[a+20>>2]=d;if(!d)break}r=dt[155]|0;if(d>>>0>>0)Xt();dt[d+24>>2]=a;e=dt[t+(p+8)>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[d+16>>2]=e;dt[e+24>>2]=d;break}}while(0);e=dt[t+(p+12)>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[d+20>>2]=e;dt[e+24>>2]=d;break}}}else{i=dt[t+p>>2]|0;r=dt[t+(p|4)>>2]|0;e=644+(n<<1<<2)|0;if((i|0)!=(e|0)){if(i>>>0<(dt[155]|0)>>>0)Xt();if((dt[i+12>>2]|0)!=(m|0))Xt()}if((r|0)==(i|0)){dt[151]=dt[151]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=r+8|0;if((dt[e>>2]|0)==(m|0))f=e;else Xt()}else f=r+8|0;dt[i+12>>2]=r;dt[f>>2]=i}}while(0);dt[y+4>>2]=o|1;dt[y+o>>2]=o;if((y|0)==(dt[156]|0)){dt[153]=o;return}}else{dt[e>>2]=r&-2;dt[y+4>>2]=o|1;dt[y+o>>2]=o}e=o>>>3;if(o>>>0<256){r=e<<1;n=644+(r<<2)|0;i=dt[151]|0;e=1<>2]|0;if(r>>>0<(dt[155]|0)>>>0)Xt();else{g=e;v=r}}else{dt[151]=i|e;g=644+(r+2<<2)|0;v=n}dt[g>>2]=y;dt[v+12>>2]=y;dt[y+8>>2]=v;dt[y+12>>2]=n;return}e=o>>>8;if(e)if(o>>>0>16777215)n=31;else{g=(e+1048320|0)>>>16&8;v=e<>>16&4;v=v<>>16&2;n=14-(m|g|n)+(v<>>15)|0;n=o>>>(n+7|0)&1|n<<1}else n=0;e=908+(n<<2)|0;dt[y+28>>2]=n;dt[y+20>>2]=0;dt[y+16>>2]=0;r=dt[152]|0;i=1<>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(o|0)){n=o<<((n|0)==31?0:25-(n>>>1)|0);while(1){r=e+16+(n>>>31<<2)|0;i=dt[r>>2]|0;if(!i)break;if((dt[i+4>>2]&-8|0)==(o|0)){_=i;break e}else{n=n<<1;e=i}}if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[r>>2]=y;dt[y+24>>2]=e;dt[y+12>>2]=y;dt[y+8>>2]=y;break t}}else _=e}while(0);e=_+8|0;r=dt[e>>2]|0;v=dt[155]|0;if(r>>>0>=v>>>0&_>>>0>=v>>>0){dt[r+12>>2]=y;dt[e>>2]=y;dt[y+8>>2]=r;dt[y+12>>2]=_;dt[y+24>>2]=0;break}else Xt()}else{dt[152]=r|i;dt[e>>2]=y;dt[y+24>>2]=e;dt[y+12>>2]=y;dt[y+8>>2]=y}}while(0);y=(dt[159]|0)+-1|0;dt[159]=y;if(!y)e=1060;else return;while(1){e=dt[e>>2]|0;if(!e)break;else e=e+8|0}dt[159]=-1;return}function Xr(t,e){t=t|0;e=e|0;var r=0,i=0;if(!t){t=Br(e)|0;return t|0}if(e>>>0>4294967231){t=hr()|0;dt[t>>2]=12;t=0;return t|0}r=qr(t+-8|0,e>>>0<11?16:e+11&-8)|0;if(r){t=r+8|0;return t|0}r=Br(e)|0;if(!r){t=0;return t|0}i=dt[t+-4>>2]|0;i=(i&-8)-((i&3|0)==0?8:4)|0;Qr(r|0,t|0,(i>>>0>>0?i:e)|0)|0;Ur(t);t=r;return t|0}function Hr(t){t=t|0;var e=0;if(!t){e=0;return e|0}t=dt[t+-4>>2]|0;e=t&3;if((e|0)==1){e=0;return e|0}e=(t&-8)-((e|0)==0?8:4)|0;return e|0}function qr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;p=t+4|0;d=dt[p>>2]|0;l=d&-8;h=t+l|0;s=dt[155]|0;r=d&3;if(!((r|0)!=1&t>>>0>=s>>>0&t>>>0>>0))Xt();i=t+(l|4)|0;n=dt[i>>2]|0;if(!(n&1))Xt();if(!r){if(e>>>0<256){t=0;return t|0}if(l>>>0>=(e+4|0)>>>0?(l-e|0)>>>0<=dt[271]<<1>>>0:0)return t|0;t=0;return t|0}if(l>>>0>=e>>>0){r=l-e|0;if(r>>>0<=15)return t|0;dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=r|3;dt[i>>2]=dt[i>>2]|1;Wr(t+e|0,r);return t|0}if((h|0)==(dt[157]|0)){r=(dt[154]|0)+l|0;if(r>>>0<=e>>>0){t=0;return t|0}f=r-e|0;dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=f|1;dt[157]=t+e;dt[154]=f;return t|0}if((h|0)==(dt[156]|0)){i=(dt[153]|0)+l|0;if(i>>>0>>0){t=0;return t|0}r=i-e|0;if(r>>>0>15){dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=r|1;dt[t+i>>2]=r;i=t+(i+4)|0;dt[i>>2]=dt[i>>2]&-2;i=t+e|0}else{dt[p>>2]=d&1|i|2;i=t+(i+4)|0;dt[i>>2]=dt[i>>2]|1;i=0;r=0}dt[153]=r;dt[156]=i;return t|0}if(n&2){t=0;return t|0}c=(n&-8)+l|0;if(c>>>0>>0){t=0;return t|0}f=c-e|0;o=n>>>3;do{if(n>>>0>=256){a=dt[t+(l+24)>>2]|0;o=dt[t+(l+12)>>2]|0;do{if((o|0)==(h|0)){i=t+(l+20)|0;r=dt[i>>2]|0;if(!r){i=t+(l+16)|0;r=dt[i>>2]|0;if(!r){u=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;u=r;break}}else{n=dt[t+(l+8)>>2]|0;if(n>>>0>>0)Xt();r=n+12|0;if((dt[r>>2]|0)!=(h|0))Xt();i=o+8|0;if((dt[i>>2]|0)==(h|0)){dt[r>>2]=o;dt[i>>2]=n;u=o;break}else Xt()}}while(0);if(a){r=dt[t+(l+28)>>2]|0;i=908+(r<<2)|0;if((h|0)==(dt[i>>2]|0)){dt[i>>2]=u;if(!u){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=a+16|0;if((dt[r>>2]|0)==(h|0))dt[r>>2]=u;else dt[a+20>>2]=u;if(!u)break}i=dt[155]|0;if(u>>>0>>0)Xt();dt[u+24>>2]=a;r=dt[t+(l+16)>>2]|0;do{if(r)if(r>>>0>>0)Xt();else{dt[u+16>>2]=r;dt[r+24>>2]=u;break}}while(0);r=dt[t+(l+20)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[u+20>>2]=r;dt[r+24>>2]=u;break}}}else{n=dt[t+(l+8)>>2]|0;i=dt[t+(l+12)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(h|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(h|0))a=r;else Xt()}else a=i+8|0;dt[n+12>>2]=i;dt[a>>2]=n}}while(0);if(f>>>0<16){dt[p>>2]=c|d&1|2;e=t+(c|4)|0;dt[e>>2]=dt[e>>2]|1;return t|0}else{dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=f|3;d=t+(c|4)|0;dt[d>>2]=dt[d>>2]|1;Wr(t+e|0,f);return t|0}return 0}function Wr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0;m=t+e|0;r=dt[t+4>>2]|0;do{if(!(r&1)){u=dt[t>>2]|0;if(!(r&3))return;f=t+(0-u)|0;c=u+e|0;l=dt[155]|0;if(f>>>0>>0)Xt();if((f|0)==(dt[156]|0)){i=t+(e+4)|0;r=dt[i>>2]|0;if((r&3|0)!=3){_=f;a=c;break}dt[153]=c;dt[i>>2]=r&-2;dt[t+(4-u)>>2]=c|1;dt[m>>2]=c;return}o=u>>>3;if(u>>>0<256){n=dt[t+(8-u)>>2]|0;i=dt[t+(12-u)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(f|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(f|0))s=r;else Xt()}else s=i+8|0;dt[n+12>>2]=i;dt[s>>2]=n;_=f;a=c;break}s=dt[t+(24-u)>>2]|0;n=dt[t+(12-u)>>2]|0;do{if((n|0)==(f|0)){n=16-u|0;i=t+(n+4)|0;r=dt[i>>2]|0;if(!r){i=t+n|0;r=dt[i>>2]|0;if(!r){h=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;h=r;break}}else{o=dt[t+(8-u)>>2]|0;if(o>>>0>>0)Xt();r=o+12|0;if((dt[r>>2]|0)!=(f|0))Xt();i=n+8|0;if((dt[i>>2]|0)==(f|0)){dt[r>>2]=n;dt[i>>2]=o;h=n;break}else Xt()}}while(0);if(s){r=dt[t+(28-u)>>2]|0;i=908+(r<<2)|0;if((f|0)==(dt[i>>2]|0)){dt[i>>2]=h;if(!h){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=s+16|0;if((dt[r>>2]|0)==(f|0))dt[r>>2]=h;else dt[s+20>>2]=h;if(!h){_=f;a=c;break}}n=dt[155]|0;if(h>>>0>>0)Xt();dt[h+24>>2]=s;r=16-u|0;i=dt[t+r>>2]|0;do{if(i)if(i>>>0>>0)Xt();else{dt[h+16>>2]=i;dt[i+24>>2]=h;break}}while(0);r=dt[t+(r+4)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[h+20>>2]=r;dt[r+24>>2]=h;_=f;a=c;break}else{_=f;a=c}}else{_=f;a=c}}else{_=t;a=e}}while(0);l=dt[155]|0;if(m>>>0>>0)Xt();r=t+(e+4)|0;i=dt[r>>2]|0;if(!(i&2)){if((m|0)==(dt[157]|0)){v=(dt[154]|0)+a|0;dt[154]=v;dt[157]=_;dt[_+4>>2]=v|1;if((_|0)!=(dt[156]|0))return;dt[156]=0;dt[153]=0;return}if((m|0)==(dt[156]|0)){v=(dt[153]|0)+a|0;dt[153]=v;dt[156]=_;dt[_+4>>2]=v|1;dt[_+v>>2]=v;return}a=(i&-8)+a|0;o=i>>>3;do{if(i>>>0>=256){s=dt[t+(e+24)>>2]|0;n=dt[t+(e+12)>>2]|0;do{if((n|0)==(m|0)){i=t+(e+20)|0;r=dt[i>>2]|0;if(!r){i=t+(e+16)|0;r=dt[i>>2]|0;if(!r){d=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;d=r;break}}else{o=dt[t+(e+8)>>2]|0;if(o>>>0>>0)Xt();r=o+12|0;if((dt[r>>2]|0)!=(m|0))Xt();i=n+8|0;if((dt[i>>2]|0)==(m|0)){dt[r>>2]=n;dt[i>>2]=o;d=n;break}else Xt()}}while(0);if(s){r=dt[t+(e+28)>>2]|0;i=908+(r<<2)|0;if((m|0)==(dt[i>>2]|0)){dt[i>>2]=d;if(!d){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=s+16|0;if((dt[r>>2]|0)==(m|0))dt[r>>2]=d;else dt[s+20>>2]=d;if(!d)break}i=dt[155]|0;if(d>>>0>>0)Xt();dt[d+24>>2]=s;r=dt[t+(e+16)>>2]|0;do{if(r)if(r>>>0>>0)Xt();else{dt[d+16>>2]=r;dt[r+24>>2]=d;break}}while(0);r=dt[t+(e+20)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[d+20>>2]=r;dt[r+24>>2]=d;break}}}else{n=dt[t+(e+8)>>2]|0;i=dt[t+(e+12)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(m|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(m|0))p=r;else Xt()}else p=i+8|0;dt[n+12>>2]=i;dt[p>>2]=n}}while(0);dt[_+4>>2]=a|1;dt[_+a>>2]=a;if((_|0)==(dt[156]|0)){dt[153]=a;return}}else{dt[r>>2]=i&-2;dt[_+4>>2]=a|1;dt[_+a>>2]=a}r=a>>>3;if(a>>>0<256){i=r<<1;o=644+(i<<2)|0;n=dt[151]|0;r=1<>2]|0;if(i>>>0<(dt[155]|0)>>>0)Xt();else{g=r;v=i}}else{dt[151]=n|r;g=644+(i+2<<2)|0;v=o}dt[g>>2]=_;dt[v+12>>2]=_;dt[_+8>>2]=v;dt[_+12>>2]=o;return}r=a>>>8;if(r)if(a>>>0>16777215)o=31;else{g=(r+1048320|0)>>>16&8;v=r<>>16&4;v=v<>>16&2;o=14-(m|g|o)+(v<>>15)|0;o=a>>>(o+7|0)&1|o<<1}else o=0;r=908+(o<<2)|0;dt[_+28>>2]=o;dt[_+20>>2]=0;dt[_+16>>2]=0;i=dt[152]|0;n=1<>2]=_;dt[_+24>>2]=r;dt[_+12>>2]=_;dt[_+8>>2]=_;return}r=dt[r>>2]|0;t:do{if((dt[r+4>>2]&-8|0)!=(a|0)){o=a<<((o|0)==31?0:25-(o>>>1)|0);while(1){i=r+16+(o>>>31<<2)|0;n=dt[i>>2]|0;if(!n)break;if((dt[n+4>>2]&-8|0)==(a|0)){r=n;break t}else{o=o<<1;r=n}}if(i>>>0<(dt[155]|0)>>>0)Xt();dt[i>>2]=_;dt[_+24>>2]=r;dt[_+12>>2]=_;dt[_+8>>2]=_;return}}while(0);i=r+8|0;n=dt[i>>2]|0;v=dt[155]|0;if(!(n>>>0>=v>>>0&r>>>0>=v>>>0))Xt();dt[n+12>>2]=_;dt[i>>2]=_;dt[_+8>>2]=n;dt[_+12>>2]=r;dt[_+24>>2]=0;return}function Gr(){}function Vr(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;i=e-i-(r>>>0>t>>>0|0)>>>0;return(rt=i,t-r>>>0|0)|0}function Yr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;i=t+r|0;if((r|0)>=20){e=e&255;o=t&3;a=e|e<<8|e<<16|e<<24;n=i&~3;if(o){o=t+4-o|0;while((t|0)<(o|0)){pt[t>>0]=e;t=t+1|0}}while((t|0)<(n|0)){dt[t>>2]=a;t=t+4|0}}while((t|0)<(i|0)){pt[t>>0]=e;t=t+1|0}return t-r|0}function Zr(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e>>>r;return t>>>r|(e&(1<>>r-32|0}function Jr(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e<>>32-r;return t<>>0;return(rt=e+i+(r>>>0>>0|0)>>>0,r|0)|0}function Qr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if((r|0)>=4096)return Mt(t|0,e|0,r|0)|0;i=t|0;if((t&3)==(e&3)){while(t&3){if(!r)return i|0;pt[t>>0]=pt[e>>0]|0;t=t+1|0;e=e+1|0;r=r-1|0}while((r|0)>=4){dt[t>>2]=dt[e>>2];t=t+4|0;e=e+4|0;r=r-4|0}}while((r|0)>0){pt[t>>0]=pt[e>>0]|0;t=t+1|0;e=e+1|0;r=r-1|0}return i|0}function $r(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e>>r;return t>>>r|(e&(1<>r-32|0}function ti(t){t=t|0;var e=0;e=pt[g+(t&255)>>0]|0;if((e|0)<8)return e|0;e=pt[g+(t>>8&255)>>0]|0;if((e|0)<8)return e+8|0;e=pt[g+(t>>16&255)>>0]|0;if((e|0)<8)return e+16|0;return(pt[g+(t>>>24)>>0]|0)+24|0}function ei(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0;o=t&65535;n=e&65535;r=_t(n,o)|0;i=t>>>16;t=(r>>>16)+(_t(n,i)|0)|0;n=e>>>16;e=_t(n,o)|0;return(rt=(t>>>16)+(_t(n,i)|0)+(((t&65535)+e|0)>>>16)|0,t+e<<16|r&65535|0)|0}function ri(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;u=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;o=i>>31|((i|0)<0?-1:0)<<1;n=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;s=Vr(u^t,l^e,u,l)|0;a=rt;t=o^u;e=n^l;return Vr((si(s,a,Vr(o^r,n^i,o,n)|0,rt,0)|0)^t,rt^e,t,e)|0}function ii(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;n=vt;vt=vt+16|0;s=n|0;a=e>>31|((e|0)<0?-1:0)<<1;o=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;u=i>>31|((i|0)<0?-1:0)<<1;l=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;t=Vr(a^t,o^e,a,o)|0;e=rt;si(t,e,Vr(u^r,l^i,u,l)|0,rt,s)|0;i=Vr(dt[s>>2]^a,dt[s+4>>2]^o,a,o)|0;r=rt;vt=n;return(rt=r,i)|0}function ni(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0;n=t;o=r;r=ei(n,o)|0;t=rt;return(rt=(_t(e,o)|0)+(_t(i,n)|0)+t|t&0,r|0|0)|0}function oi(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;return si(t,e,r,i,0)|0}function ai(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0;o=vt;vt=vt+16|0;n=o|0;si(t,e,r,i,n)|0;vt=o;return(rt=dt[n+4>>2]|0,dt[n>>2]|0)|0}function si(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;h=t;l=e;u=l;a=r;f=i;s=f;if(!u){o=(n|0)!=0;if(!s){if(o){dt[n>>2]=(h>>>0)%(a>>>0);dt[n+4>>2]=0}f=0;n=(h>>>0)/(a>>>0)>>>0;return(rt=f,n)|0}else{if(!o){f=0;n=0;return(rt=f,n)|0}dt[n>>2]=t|0;dt[n+4>>2]=e&0;f=0;n=0;return(rt=f,n)|0}}o=(s|0)==0;do{if(a){if(!o){o=(at(s|0)|0)-(at(u|0)|0)|0;if(o>>>0<=31){c=o+1|0;s=31-o|0;e=o-31>>31;a=c;t=h>>>(c>>>0)&e|u<>>(c>>>0)&e;o=0;s=h<>2]=t|0;dt[n+4>>2]=l|e&0;f=0;n=0;return(rt=f,n)|0}o=a-1|0;if(o&a){s=(at(a|0)|0)+33-(at(u|0)|0)|0;d=64-s|0;c=32-s|0;l=c>>31;p=s-32|0;e=p>>31;a=s;t=c-1>>31&u>>>(p>>>0)|(u<>>(s>>>0))&e;e=e&u>>>(s>>>0);o=h<>>(p>>>0))&l|h<>31;break}if(n){dt[n>>2]=o&h;dt[n+4>>2]=0}if((a|0)==1){p=l|e&0;d=t|0|0;return(rt=p,d)|0}else{d=ti(a|0)|0;p=u>>>(d>>>0)|0;d=u<<32-d|h>>>(d>>>0)|0;return(rt=p,d)|0}}else{if(o){if(n){dt[n>>2]=(u>>>0)%(a>>>0);dt[n+4>>2]=0}p=0;d=(u>>>0)/(a>>>0)>>>0;return(rt=p,d)|0}if(!h){if(n){dt[n>>2]=0;dt[n+4>>2]=(u>>>0)%(s>>>0)}p=0;d=(u>>>0)/(s>>>0)>>>0;return(rt=p,d)|0}o=s-1|0;if(!(o&s)){if(n){dt[n>>2]=t|0;dt[n+4>>2]=o&u|e&0}p=0;d=u>>>((ti(s|0)|0)>>>0);return(rt=p,d)|0}o=(at(s|0)|0)-(at(u|0)|0)|0;if(o>>>0<=30){e=o+1|0;s=31-o|0;a=e;t=u<>>(e>>>0);e=u>>>(e>>>0);o=0;s=h<>2]=t|0;dt[n+4>>2]=l|e&0;p=0;d=0;return(rt=p,d)|0}}while(0);if(!a){u=s;l=0;s=0}else{c=r|0|0;h=f|i&0;u=Kr(c|0,h|0,-1,-1)|0;r=rt;l=s;s=0;do{i=l;l=o>>>31|l<<1;o=s|o<<1;i=t<<1|i>>>31|0;f=t>>>31|e<<1|0;Vr(u,r,i,f)|0;d=rt;p=d>>31|((d|0)<0?-1:0)<<1;s=p&1;t=Vr(i,f,p&c,(((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1)&h)|0;e=rt;a=a-1|0}while((a|0)!=0);u=l;l=0}a=0;if(n){dt[n>>2]=t;dt[n+4>>2]=e}p=(o|0)>>>31|(u|a)<<1|(a<<1|o>>>31)&0|l;d=(o<<1|0>>>31)&-2|s;return(rt=p,d)|0}function li(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;return Pi[t&7](e|0,r|0,i|0)|0}function ui(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;Ci[t&3](e|0,r|0,i|0,n|0,o|0)}function hi(t,e){t=t|0;e=e|0;Ai[t&7](e|0)}function ci(t,e){t=t|0;e=e|0;return Ei[t&1](e|0)|0}function fi(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;Ii[t&0](e|0,r|0,i|0)}function pi(t){t=t|0;Oi[t&3]()}function di(t,e,r,i,n,o,a){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;Mi[t&3](e|0,r|0,i|0,n|0,o|0,a|0)}function mi(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;return Di[t&1](e|0,r|0,i|0,n|0,o|0)|0}function gi(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;zi[t&3](e|0,r|0,i|0,n|0)}function vi(t,e,r){t=t|0;e=e|0;r=r|0;st(0);return 0}function _i(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;st(1)}function yi(t){t=t|0;st(2)}function bi(t){t=t|0;st(3);return 0}function xi(t,e,r){t=t|0;e=e|0;r=r|0;st(4)}function wi(){st(5)}function Ti(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;st(6)}function ki(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;st(7);return 0}function Si(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;st(8)}var Pi=[vi,Ye,Fr,Er,Ar,Ir,vi,vi];var Ci=[_i,er,tr,_i];var Ai=[yi,He,Ge,qe,We,Ve,lr,Rr];var Ei=[bi,Cr];var Ii=[xi];var Oi=[wi,ar,sr,wi];var Mi=[Ti,ir,rr,Ti];var Di=[ki,le];var zi=[Si,Je,Ke,Si];return{___cxa_can_catch:nr,_crn_get_levels:Te,_crn_get_uncompressed_size:Se,_crn_decompress:Pe,_i64Add:Kr,_crn_get_width:xe,___cxa_is_pointer_type:or,_i64Subtract:Vr,_memset:Yr,_malloc:Br,_free:Ur,_memcpy:Qr,_bitshift64Lshr:Zr,_fflush:gr,_bitshift64Shl:Jr,_crn_get_height:we,___errno_location:hr,_crn_get_dxt_format:ke,runPostSets:Gr,_emscripten_replace_memory:Yt,stackAlloc:Zt,stackSave:Jt,stackRestore:Kt,establishStackSpace:Qt,setThrew:$t,setTempRet0:re,getTempRet0:ie,dynCall_iiii:li,dynCall_viiiii:ui,dynCall_vi:hi,dynCall_ii:ci,dynCall_viii:fi,dynCall_v:pi,dynCall_viiiiii:di,dynCall_iiiiii:mi,dynCall_viiii:gi}}(e.Ya,e.Za,buffer);e.___cxa_can_catch=Z.___cxa_can_catch,e._crn_get_levels=Z._crn_get_levels,e.runPostSets=Z.runPostSets,e._crn_get_uncompressed_size=Z._crn_get_uncompressed_size,e._crn_decompress=Z._crn_decompress;var zc=e._i64Add=Z._i64Add;e._crn_get_height=Z._crn_get_height,e.___cxa_is_pointer_type=Z.___cxa_is_pointer_type;var nb=e._i64Subtract=Z._i64Subtract,qb=e._memset=Z._memset,Ea=e._malloc=Z._malloc,Bc=e._memcpy=Z._memcpy,Xa=e._emscripten_replace_memory=Z._emscripten_replace_memory;e._crn_get_dxt_format=Z._crn_get_dxt_format;var rb=e._bitshift64Lshr=Z._bitshift64Lshr,Na=e._free=Z._free;e._fflush=Z._fflush,e._crn_get_width=Z._crn_get_width,e.___errno_location=Z.___errno_location;var sb=e._bitshift64Shl=Z._bitshift64Shl;function ia(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}e.dynCall_iiii=Z.dynCall_iiii,e.dynCall_viiiii=Z.dynCall_viiiii,e.dynCall_vi=Z.dynCall_vi,e.dynCall_ii=Z.dynCall_ii,e.dynCall_viii=Z.dynCall_viii,e.dynCall_v=Z.dynCall_v,e.dynCall_viiiiii=Z.dynCall_viiiiii,e.dynCall_iiiiii=Z.dynCall_iiiiii,e.dynCall_viiii=Z.dynCall_viiii,n.aa=Z.stackAlloc,n.ua=Z.stackSave,n.ba=Z.stackRestore,n.Cd=Z.establishStackSpace,n.rb=Z.setTempRet0,n.fb=Z.getTempRet0,ia.prototype=Error(),ia.prototype.constructor=ia;var rd=null,jb=function t(){e.calledRun||td(),e.calledRun||(jb=t)};function td(t){function r(){if(!e.calledRun&&(e.calledRun=!0,!na)){if(Ha||(Ha=!0,ab(cb)),ab(db),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e._main&&vd&&e.callMain(t),e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)gb(e.postRun.shift());ab(eb)}}if(t=t||e.arguments,null===rd&&(rd=Date.now()),!(0>8&255,t>>16&255,t>>24&255)}!function(s){s.loadFromArrayBuffer=function(t,e,r){return new i(e).loadFromArrayBuffer(t,r)};var i=function(l){function t(t,e,r,i,n,o,a){var s=l.call(this)||this;return s.complete=!1,s.isCompressedImage=!0,s.preserveSource=!0,s.onload=null,s.baseTexture=null,s.init(t,e,r,i,n,o,a),s}return __extends(t,l),t.prototype.init=function(t,e,r,i,n,o,a){void 0===i&&(i=-1),void 0===n&&(n=-1),this.src=t,this.resize(i,n),this._width=i,this._height=n,this.data=e,this.type=r,this.levels=o,this.internalFormat=a;var s=this.complete;return this.complete=!!e,!s&&this.complete&&this.onload&&this.onload({target:this}),this.update(),this},t.prototype.dispose=function(){this.data=null},t.prototype.bind=function(t){t.premultiplyAlpha=!1,l.prototype.bind.call(this,t)},t.prototype.upload=function(t,e,r){var i=t.state.gl;if(r.compressed=!1,t.texture.initCompressed(),null===this.data)throw"Trying to create a second (or more) webgl texture from the same CompressedImage : "+this.src;for(var n=this.levels,o=this.width,a=this.height,s=0,l=0;l>=1)<1&&(o=1),(a>>=1)<1&&(a=1),s+=u}return this._internalLoader.free(),this.preserveSource||(this.data=null),!0},t.prototype.style=function(t,e,r){var i=t.state.gl,n=this.levels;return e.scaleMode===PIXI.SCALE_MODES.LINEAR?1>2)*(e+3>>2)*8;case 33778:case 33779:case 35987:case 34798:return(t+3>>2)*(e+3>>2)*16;default:return 0}},h.type="DDS",h}(t.AbstractInternalLoader);t.DDSLoader=l}(pixi_compressed_textures||(pixi_compressed_textures={})),function(h){var t,c=((t={})[0]=35841,t[1]=35843,t[2]=35840,t[3]=35842,t[6]=36196,t[7]=33776,t[9]=33778,t[5]=33779,t),e=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.load=function(t){if(!h.DDSLoader.test(t))throw"Invalid magic number in PVR header";var e=new Int32Array(t,0,13),r=e[2],i=c[r]||-1,n=e[7],o=e[6],a=e[11],s=e[12]+52,l=new Uint8Array(t,s),u=this._image;return this._format=i,u.init(u.src,l,"PVR",n,o,a,i),u},t.test=function(t){return 55727696===new Int32Array(t,0,1)[0]},t.prototype.levelBufferSize=function(t,e,r){switch(void 0===r&&(r=0),this._format){case 33776:case 36196:return(t+3>>2)*(e+3>>2)*8;case 33778:case 33779:return(t+3>>2)*(e+3>>2)*16;case 35840:case 35842:return Math.floor((Math.max(t,8)*Math.max(e,8)*4+7)/8);case 35841:case 35843:return Math.floor((Math.max(t,16)*Math.max(e,8)*2+7)/8);default:return 0}},t.type="PVR",t}(h.AbstractInternalLoader);h.PVRTCLoader=e}(pixi_compressed_textures||(pixi_compressed_textures={}));var __awaiter=this&&this.__awaiter||function(t,a,s,l){return new(s||(s=Promise))(function(e,r){function i(t){try{o(l.next(t))}catch(t){r(t)}}function n(t){try{o(l.throw(t))}catch(t){r(t)}}function o(t){t.done?e(t.value):function(e){return e instanceof s?e:new s(function(t){t(e)})}(t.value).then(i,n)}o((l=l.apply(t,a||[])).next())})},__generator=this&&this.__generator||function(r,i){var n,o,a,t,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return t={next:e(0),throw:e(1),return:e(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function(e){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(a=2&e[0]?o.return:e[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,e[1])).done)return a;switch(o=0,a&&(e=[2&e[0],a.value]),e[0]){case 0:case 1:a=e;break;case 4:return s.label++,{value:e[1],done:!1};case 5:s.label++,o=e[1],e=[0];continue;case 7:e=s.ops.pop(),s.trys.pop();continue;default:if(!(a=0<(a=s.trys).length&&a[a.length-1])&&(6===e[0]||2===e[0])){s=0;continue}if(3===e[0]&&(!a||e[1]>a[0]&&e[1] 0.0) {\n c.rgb /= c.a;\n\n vec3 rgb = pow(c.rgb, vec3(1. / gamma));\n rgb = mix(vec3(.5), mix(vec3(dot(vec3(.2125, .7154, .0721), rgb)), rgb, saturation), contrast);\n rgb.r *= red;\n rgb.g *= green;\n rgb.b *= blue;\n c.rgb = rgb * brightness;\n\n c.rgb *= c.a;\n }\n\n gl_FragColor = c * alpha;\n}\n"),Object.assign(this,{gamma:1,saturation:1,contrast:1,brightness:1,red:1,green:1,blue:1,alpha:1},t)}return e&&(t.__proto__=e),((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.gamma=Math.max(this.gamma,1e-4),this.uniforms.saturation=this.saturation,this.uniforms.contrast=this.contrast,this.uniforms.brightness=this.brightness,this.uniforms.red=this.red,this.uniforms.green=this.green,this.uniforms.blue=this.blue,this.uniforms.alpha=this.alpha,t.applyFilter(this,e,r,i)},t}(n.Filter),d=function(i){function t(t,e,r){void 0===t&&(t=4),void 0===e&&(e=3),void 0===r&&(r=!1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}",r?"\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\nuniform vec4 filterClamp;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample top right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}\n":"\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample top right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}"),this.uniforms.uOffset=new Float32Array(2),this._pixelSize=new f.Point,this.pixelSize=1,this._clamp=r,this._kernels=null,Array.isArray(t)?this.kernels=t:(this._blur=t,this.quality=e)}i&&(t.__proto__=i);var e={kernels:{configurable:!0},clamp:{configurable:!0},pixelSize:{configurable:!0},quality:{configurable:!0},blur:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n,o=this.pixelSize.x/e._frame.width,a=this.pixelSize.y/e._frame.height;if(1===this._quality||0===this._blur)n=this._kernels[0]+.5,this.uniforms.uOffset[0]=n*o,this.uniforms.uOffset[1]=n*a,t.applyFilter(this,e,r,i);else{for(var s,l=t.getFilterTexture(),u=e,h=l,c=this._quality-1,f=0;f threshold) {\n gl_FragColor = color;\n } else {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n"),this.threshold=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={threshold:{configurable:!0}};return r.threshold.get=function(){return this.uniforms.threshold},r.threshold.set=function(t){this.uniforms.threshold=t},Object.defineProperties(t.prototype,r),t}(n.Filter),i=function(a){function t(t){a.call(this,c,"uniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D bloomTexture;\nuniform float bloomScale;\nuniform float brightness;\n\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord);\n color.rgb *= brightness;\n vec4 bloomColor = vec4(texture2D(bloomTexture, vTextureCoord).rgb, 0.0);\n bloomColor.rgb *= bloomScale;\n gl_FragColor = color + bloomColor;\n}\n"),"number"==typeof t&&(t={threshold:t}),t=Object.assign({threshold:.5,bloomScale:1,brightness:1,kernels:null,blur:8,quality:4,pixelSize:1,resolution:p.settings.RESOLUTION},t),this.bloomScale=t.bloomScale,this.brightness=t.brightness;var e=t.kernels,r=t.blur,i=t.quality,n=t.pixelSize,o=t.resolution;this._extractFilter=new m(t.threshold),this._extractFilter.resolution=o,this._blurFilter=e?new d(e):new d(r,i),this.pixelSize=n,this.resolution=o}a&&(t.__proto__=a);var e={resolution:{configurable:!0},threshold:{configurable:!0},kernels:{configurable:!0},blur:{configurable:!0},quality:{configurable:!0},pixelSize:{configurable:!0}};return((t.prototype=Object.create(a&&a.prototype)).constructor=t).prototype.apply=function(t,e,r,i,n){var o=t.getFilterTexture();this._extractFilter.apply(t,e,o,!0,n);var a=t.getFilterTexture();this._blurFilter.apply(t,o,a,!0,n),this.uniforms.bloomScale=this.bloomScale,this.uniforms.brightness=this.brightness,this.uniforms.bloomTexture=a,t.applyFilter(this,e,r,i),t.returnFilterTexture(a),t.returnFilterTexture(o)},e.resolution.get=function(){return this._resolution},e.resolution.set=function(t){this._resolution=t,this._extractFilter&&(this._extractFilter.resolution=t),this._blurFilter&&(this._blurFilter.resolution=t)},e.threshold.get=function(){return this._extractFilter.threshold},e.threshold.set=function(t){this._extractFilter.threshold=t},e.kernels.get=function(){return this._blurFilter.kernels},e.kernels.set=function(t){this._blurFilter.kernels=t},e.blur.get=function(){return this._blurFilter.blur},e.blur.set=function(t){this._blurFilter.blur=t},e.quality.get=function(){return this._blurFilter.quality},e.quality.set=function(t){this._blurFilter.quality=t},e.pixelSize.get=function(){return this._blurFilter.pixelSize},e.pixelSize.set=function(t){this._blurFilter.pixelSize=t},Object.defineProperties(t.prototype,e),t}(n.Filter),o=function(e){function t(t){void 0===t&&(t=8),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform float pixelSize;\nuniform sampler2D uSampler;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n return floor( coord / size ) * size;\n}\n\nvec2 getMod(vec2 coord, vec2 size)\n{\n return mod( coord , size) / size;\n}\n\nfloat character(float n, vec2 p)\n{\n p = floor(p*vec2(4.0, -4.0) + 2.5);\n\n if (clamp(p.x, 0.0, 4.0) == p.x)\n {\n if (clamp(p.y, 0.0, 4.0) == p.y)\n {\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\n }\n }\n return 0.0;\n}\n\nvoid main()\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n // get the rounded color..\n vec2 pixCoord = pixelate(coord, vec2(pixelSize));\n pixCoord = unmapCoord(pixCoord);\n\n vec4 color = texture2D(uSampler, pixCoord);\n\n // determine the character to use\n float gray = (color.r + color.g + color.b) / 3.0;\n\n float n = 65536.0; // .\n if (gray > 0.2) n = 65600.0; // :\n if (gray > 0.3) n = 332772.0; // *\n if (gray > 0.4) n = 15255086.0; // o\n if (gray > 0.5) n = 23385164.0; // &\n if (gray > 0.6) n = 15252014.0; // 8\n if (gray > 0.7) n = 13199452.0; // @\n if (gray > 0.8) n = 11512810.0; // #\n\n // get the mod..\n vec2 modd = getMod(coord, vec2(pixelSize));\n\n gl_FragColor = color * character( n, vec2(-1.0) + modd * 2.0);\n\n}\n"),this.size=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={size:{configurable:!0}};return r.size.get=function(){return this.uniforms.pixelSize},r.size.set=function(t){this.uniforms.pixelSize=t},Object.defineProperties(t.prototype,r),t}(n.Filter),a=function(e){function t(t){void 0===t&&(t={}),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float transformX;\nuniform float transformY;\nuniform vec3 lightColor;\nuniform float lightAlpha;\nuniform vec3 shadowColor;\nuniform float shadowAlpha;\n\nvoid main(void) {\n vec2 transform = vec2(1.0 / filterArea) * vec2(transformX, transformY);\n vec4 color = texture2D(uSampler, vTextureCoord);\n float light = texture2D(uSampler, vTextureCoord - transform).a;\n float shadow = texture2D(uSampler, vTextureCoord + transform).a;\n\n color.rgb = mix(color.rgb, lightColor, clamp((color.a - light) * lightAlpha, 0.0, 1.0));\n color.rgb = mix(color.rgb, shadowColor, clamp((color.a - shadow) * shadowAlpha, 0.0, 1.0));\n gl_FragColor = vec4(color.rgb * color.a, color.a);\n}\n"),this.uniforms.lightColor=new Float32Array(3),this.uniforms.shadowColor=new Float32Array(3),t=Object.assign({rotation:45,thickness:2,lightColor:16777215,lightAlpha:.7,shadowColor:0,shadowAlpha:.7},t),this.rotation=t.rotation,this.thickness=t.thickness,this.lightColor=t.lightColor,this.lightAlpha=t.lightAlpha,this.shadowColor=t.shadowColor,this.shadowAlpha=t.shadowAlpha}e&&(t.__proto__=e);var r={rotation:{configurable:!0},thickness:{configurable:!0},lightColor:{configurable:!0},lightAlpha:{configurable:!0},shadowColor:{configurable:!0},shadowAlpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype._updateTransform=function(){this.uniforms.transformX=this._thickness*Math.cos(this._angle),this.uniforms.transformY=this._thickness*Math.sin(this._angle)},r.rotation.get=function(){return this._angle/f.DEG_TO_RAD},r.rotation.set=function(t){this._angle=t*f.DEG_TO_RAD,this._updateTransform()},r.thickness.get=function(){return this._thickness},r.thickness.set=function(t){this._thickness=t,this._updateTransform()},r.lightColor.get=function(){return l.rgb2hex(this.uniforms.lightColor)},r.lightColor.set=function(t){l.hex2rgb(t,this.uniforms.lightColor)},r.lightAlpha.get=function(){return this.uniforms.lightAlpha},r.lightAlpha.set=function(t){this.uniforms.lightAlpha=t},r.shadowColor.get=function(){return l.rgb2hex(this.uniforms.shadowColor)},r.shadowColor.set=function(t){l.hex2rgb(t,this.uniforms.shadowColor)},r.shadowAlpha.get=function(){return this.uniforms.shadowAlpha},r.shadowAlpha.set=function(t){this.uniforms.shadowAlpha=t},Object.defineProperties(t.prototype,r),t}(n.Filter),g=function(a){function t(t,e,r,i){var n,o;void 0===t&&(t=2),void 0===e&&(e=4),void 0===r&&(r=p.settings.RESOLUTION),void 0===i&&(i=5),a.call(this),"number"==typeof t?o=n=t:t instanceof f.Point?(n=t.x,o=t.y):Array.isArray(t)&&(n=t[0],o=t[1]),this.blurXFilter=new h.BlurFilterPass(!0,n,e,r,i),this.blurYFilter=new h.BlurFilterPass(!1,o,e,r,i),this.blurYFilter.blendMode=s.BLEND_MODES.SCREEN,this.defaultFilter=new u.AlphaFilter}a&&(t.__proto__=a);var e={blur:{configurable:!0},blurX:{configurable:!0},blurY:{configurable:!0}};return((t.prototype=Object.create(a&&a.prototype)).constructor=t).prototype.apply=function(t,e,r){var i=t.getFilterTexture(!0);this.defaultFilter.apply(t,e,r),this.blurXFilter.apply(t,e,i),this.blurYFilter.apply(t,i,r),t.returnFilterTexture(i)},e.blur.get=function(){return this.blurXFilter.blur},e.blur.set=function(t){this.blurXFilter.blur=this.blurYFilter.blur=t},e.blurX.get=function(){return this.blurXFilter.blur},e.blurX.set=function(t){this.blurXFilter.blur=t},e.blurY.get=function(){return this.blurYFilter.blur},e.blurY.set=function(t){this.blurYFilter.blur=t},Object.defineProperties(t.prototype,e),t}(n.Filter),v=function(i){function t(t,e,r){i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","uniform float radius;\nuniform float strength;\nuniform vec2 center;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nvoid main()\n{\n vec2 coord = vTextureCoord * filterArea.xy;\n coord -= center * dimensions.xy;\n float distance = length(coord);\n if (distance < radius) {\n float percent = distance / radius;\n if (strength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);\n }\n }\n coord += center * dimensions.xy;\n coord /= filterArea.xy;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n gl_FragColor = color;\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.center=t||[.5,.5],this.radius="number"==typeof e?e:100,this.strength="number"==typeof r?r:1}i&&(t.__proto__=i);var e={radius:{configurable:!0},strength:{configurable:!0},center:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,t.applyFilter(this,e,r,i)},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},e.strength.get=function(){return this.uniforms.strength},e.strength.set=function(t){this.uniforms.strength=t},e.center.get=function(){return this.uniforms.center},e.center.set=function(t){this.uniforms.center=t},Object.defineProperties(t.prototype,e),t}(n.Filter),_=function(i){function t(t,e,r){void 0===e&&(e=!1),void 0===r&&(r=1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform sampler2D colorMap;\nuniform float _mix;\nuniform float _size;\nuniform float _sliceSize;\nuniform float _slicePixelSize;\nuniform float _sliceInnerSize;\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord.xy);\n\n vec4 adjusted;\n if (color.a > 0.0) {\n color.rgb /= color.a;\n float innerWidth = _size - 1.0;\n float zSlice0 = min(floor(color.b * innerWidth), innerWidth);\n float zSlice1 = min(zSlice0 + 1.0, innerWidth);\n float xOffset = _slicePixelSize * 0.5 + color.r * _sliceInnerSize;\n float s0 = xOffset + (zSlice0 * _sliceSize);\n float s1 = xOffset + (zSlice1 * _sliceSize);\n float yOffset = _sliceSize * 0.5 + color.g * (1.0 - _sliceSize);\n vec4 slice0Color = texture2D(colorMap, vec2(s0,yOffset));\n vec4 slice1Color = texture2D(colorMap, vec2(s1,yOffset));\n float zOffset = fract(color.b * innerWidth);\n adjusted = mix(slice0Color, slice1Color, zOffset);\n\n color.rgb *= color.a;\n }\n gl_FragColor = vec4(mix(color, adjusted, _mix).rgb, color.a);\n\n}"),this._size=0,this._sliceSize=0,this._slicePixelSize=0,this._sliceInnerSize=0,this._scaleMode=null,this._nearest=!1,this.nearest=e,this.mix=r,this.colorMap=t}i&&(t.__proto__=i);var e={colorSize:{configurable:!0},colorMap:{configurable:!0},nearest:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms._mix=this.mix,t.applyFilter(this,e,r,i)},e.colorSize.get=function(){return this._size},e.colorMap.get=function(){return this._colorMap},e.colorMap.set=function(t){t instanceof n.Texture||(t=n.Texture.from(t)),t&&t.baseTexture&&(t.baseTexture.scaleMode=this._scaleMode,t.baseTexture.mipmap=!1,this._size=t.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms._size=this._size,this.uniforms._sliceSize=this._sliceSize,this.uniforms._slicePixelSize=this._slicePixelSize,this.uniforms._sliceInnerSize=this._sliceInnerSize,this.uniforms.colorMap=t),this._colorMap=t},e.nearest.get=function(){return this._nearest},e.nearest.set=function(t){this._nearest=t,this._scaleMode=t?s.SCALE_MODES.NEAREST:s.SCALE_MODES.LINEAR;var e=this._colorMap;e&&e.baseTexture&&(e.baseTexture._glTextures={},e.baseTexture.scaleMode=this._scaleMode,e.baseTexture.mipmap=!1,e._updateID++,e.baseTexture.emit("update",e.baseTexture))},t.prototype.updateColorMap=function(){var t=this._colorMap;t&&t.baseTexture&&(t._updateID++,t.baseTexture.emit("update",t.baseTexture),this.colorMap=t)},t.prototype.destroy=function(t){this._colorMap&&this._colorMap.destroy(t),i.prototype.destroy.call(this)},Object.defineProperties(t.prototype,e),t}(n.Filter),y=function(i){function t(t,e,r){void 0===t&&(t=16711680),void 0===e&&(e=0),void 0===r&&(r=.4),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec3 originalColor;\nuniform vec3 newColor;\nuniform float epsilon;\nvoid main(void) {\n vec4 currentColor = texture2D(uSampler, vTextureCoord);\n vec3 colorDiff = originalColor - (currentColor.rgb / max(currentColor.a, 0.0000000001));\n float colorDistance = length(colorDiff);\n float doReplace = step(colorDistance, epsilon);\n gl_FragColor = vec4(mix(currentColor.rgb, (newColor + colorDiff) * currentColor.a, doReplace), currentColor.a);\n}\n"),this.uniforms.originalColor=new Float32Array(3),this.uniforms.newColor=new Float32Array(3),this.originalColor=t,this.newColor=e,this.epsilon=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={originalColor:{configurable:!0},newColor:{configurable:!0},epsilon:{configurable:!0}};return e.originalColor.set=function(t){var e=this.uniforms.originalColor;"number"==typeof t?(l.hex2rgb(t,e),this._originalColor=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],this._originalColor=l.rgb2hex(e))},e.originalColor.get=function(){return this._originalColor},e.newColor.set=function(t){var e=this.uniforms.newColor;"number"==typeof t?(l.hex2rgb(t,e),this._newColor=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],this._newColor=l.rgb2hex(e))},e.newColor.get=function(){return this._newColor},e.epsilon.set=function(t){this.uniforms.epsilon=t},e.epsilon.get=function(){return this.uniforms.epsilon},Object.defineProperties(t.prototype,e),t}(n.Filter),b=function(i){function t(t,e,r){void 0===e&&(e=200),void 0===r&&(r=200),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying mediump vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec2 texelSize;\nuniform float matrix[9];\n\nvoid main(void)\n{\n vec4 c11 = texture2D(uSampler, vTextureCoord - texelSize); // top left\n vec4 c12 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y - texelSize.y)); // top center\n vec4 c13 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y - texelSize.y)); // top right\n\n vec4 c21 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y)); // mid left\n vec4 c22 = texture2D(uSampler, vTextureCoord); // mid center\n vec4 c23 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y)); // mid right\n\n vec4 c31 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y + texelSize.y)); // bottom left\n vec4 c32 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y + texelSize.y)); // bottom center\n vec4 c33 = texture2D(uSampler, vTextureCoord + texelSize); // bottom right\n\n gl_FragColor =\n c11 * matrix[0] + c12 * matrix[1] + c13 * matrix[2] +\n c21 * matrix[3] + c22 * matrix[4] + c23 * matrix[5] +\n c31 * matrix[6] + c32 * matrix[7] + c33 * matrix[8];\n\n gl_FragColor.a = c22.a;\n}\n"),this.uniforms.texelSize=new Float32Array(2),this.uniforms.matrix=new Float32Array(9),void 0!==t&&(this.matrix=t),this.width=e,this.height=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={matrix:{configurable:!0},width:{configurable:!0},height:{configurable:!0}};return e.matrix.get=function(){return this.uniforms.matrix},e.matrix.set=function(t){var r=this;t.forEach(function(t,e){return r.uniforms.matrix[e]=t})},e.width.get=function(){return 1/this.uniforms.texelSize[0]},e.width.set=function(t){this.uniforms.texelSize[0]=1/t},e.height.get=function(){return 1/this.uniforms.texelSize[1]},e.height.set=function(t){this.uniforms.texelSize[1]=1/t},Object.defineProperties(t.prototype,e),t}(n.Filter),x=function(t){function e(){t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);\n\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n\n if (lum < 1.00)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.75)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.50)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.3)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n}\n")}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e}(n.Filter),w=function(e){function t(t){e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec2 dimensions;\n\nconst float SQRT_2 = 1.414213;\n\nconst float light = 1.0;\n\nuniform float curvature;\nuniform float lineWidth;\nuniform float lineContrast;\nuniform bool verticalLine;\nuniform float noise;\nuniform float noiseSize;\n\nuniform float vignetting;\nuniform float vignettingAlpha;\nuniform float vignettingBlur;\n\nuniform float seed;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n vec2 dir = vec2(coord - vec2(0.5, 0.5));\n\n float _c = curvature > 0. ? curvature : 1.;\n float k = curvature > 0. ?(length(dir * dir) * 0.25 * _c * _c + 0.935 * _c) : 1.;\n vec2 uv = dir * k;\n\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 rgb = gl_FragColor.rgb;\n\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n rgb += _noise * noise;\n }\n\n if (lineWidth > 0.0) {\n float v = (verticalLine ? uv.x * dimensions.x : uv.y * dimensions.y) * min(1.0, 2.0 / lineWidth ) / _c;\n float j = 1. + cos(v * 1.2 - time) * 0.5 * lineContrast;\n rgb *= j;\n float segment = verticalLine ? mod((dir.x + .5) * dimensions.x, 4.) : mod((dir.y + .5) * dimensions.y, 4.);\n rgb *= 0.99 + ceil(segment) * 0.015;\n }\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n gl_FragColor.rgb = rgb;\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.time=0,this.seed=0,Object.assign(this,{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,seed:0,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0},t)}e&&(t.__proto__=e);var r={curvature:{configurable:!0},lineWidth:{configurable:!0},lineContrast:{configurable:!0},verticalLine:{configurable:!0},noise:{configurable:!0},noiseSize:{configurable:!0},vignetting:{configurable:!0},vignettingAlpha:{configurable:!0},vignettingBlur:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.seed=this.seed,this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},r.curvature.set=function(t){this.uniforms.curvature=t},r.curvature.get=function(){return this.uniforms.curvature},r.lineWidth.set=function(t){this.uniforms.lineWidth=t},r.lineWidth.get=function(){return this.uniforms.lineWidth},r.lineContrast.set=function(t){this.uniforms.lineContrast=t},r.lineContrast.get=function(){return this.uniforms.lineContrast},r.verticalLine.set=function(t){this.uniforms.verticalLine=t},r.verticalLine.get=function(){return this.uniforms.verticalLine},r.noise.set=function(t){this.uniforms.noise=t},r.noise.get=function(){return this.uniforms.noise},r.noiseSize.set=function(t){this.uniforms.noiseSize=t},r.noiseSize.get=function(){return this.uniforms.noiseSize},r.vignetting.set=function(t){this.uniforms.vignetting=t},r.vignetting.get=function(){return this.uniforms.vignetting},r.vignettingAlpha.set=function(t){this.uniforms.vignettingAlpha=t},r.vignettingAlpha.get=function(){return this.uniforms.vignettingAlpha},r.vignettingBlur.set=function(t){this.uniforms.vignettingBlur=t},r.vignettingBlur.get=function(){return this.uniforms.vignettingBlur},Object.defineProperties(t.prototype,r),t}(n.Filter),T=function(r){function t(t,e){void 0===t&&(t=1),void 0===e&&(e=5),r.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform vec4 filterArea;\nuniform sampler2D uSampler;\n\nuniform float angle;\nuniform float scale;\n\nfloat pattern()\n{\n float s = sin(angle), c = cos(angle);\n vec2 tex = vTextureCoord * filterArea.xy;\n vec2 point = vec2(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * scale;\n return (sin(point.x) * sin(point.y)) * 4.0;\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float average = (color.r + color.g + color.b) / 3.0;\n gl_FragColor = vec4(vec3(average * 10.0 - 5.0 + pattern()), color.a);\n}\n"),this.scale=t,this.angle=e}r&&(t.__proto__=r),(t.prototype=Object.create(r&&r.prototype)).constructor=t;var e={scale:{configurable:!0},angle:{configurable:!0}};return e.scale.get=function(){return this.uniforms.scale},e.scale.set=function(t){this.uniforms.scale=t},e.angle.get=function(){return this.uniforms.angle},e.angle.set=function(t){this.uniforms.angle=t},Object.defineProperties(t.prototype,e),t}(n.Filter),k=function(c){function t(t){t&&t.constructor!==Object&&(console.warn("DropShadowFilter now uses options instead of (rotation, distance, blur, color, alpha)"),t={rotation:t},void 0!==arguments[1]&&(t.distance=arguments[1]),void 0!==arguments[2]&&(t.blur=arguments[2]),void 0!==arguments[3]&&(t.color=arguments[3]),void 0!==arguments[4]&&(t.alpha=arguments[4])),t=Object.assign({rotation:45,distance:5,color:0,alpha:.5,shadowOnly:!1,kernels:null,blur:2,quality:3,pixelSize:1,resolution:p.settings.RESOLUTION},t),c.call(this);var e=t.kernels,r=t.blur,i=t.quality,n=t.pixelSize,o=t.resolution;this._tintFilter=new c("attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float alpha;\nuniform vec3 color;\n\nuniform vec2 shift;\nuniform vec4 inputSize;\n\nvoid main(void){\n vec4 sample = texture2D(uSampler, vTextureCoord - shift * inputSize.zw);\n\n // Un-premultiply alpha before applying the color\n if (sample.a > 0.0) {\n sample.rgb /= sample.a;\n }\n\n // Premultiply alpha again\n sample.rgb = color.rgb * sample.a;\n\n // alpha user alpha\n sample *= alpha;\n\n gl_FragColor = sample;\n}"),this._tintFilter.uniforms.color=new Float32Array(4),this._tintFilter.uniforms.shift=new f.Point,this._tintFilter.resolution=o,this._blurFilter=e?new d(e):new d(r,i),this.pixelSize=n,this.resolution=o;var a=t.shadowOnly,s=t.rotation,l=t.distance,u=t.alpha,h=t.color;this.shadowOnly=a,this.rotation=s,this.distance=l,this.alpha=u,this.color=h,this._updatePadding()}c&&(t.__proto__=c);var e={resolution:{configurable:!0},distance:{configurable:!0},rotation:{configurable:!0},alpha:{configurable:!0},color:{configurable:!0},kernels:{configurable:!0},blur:{configurable:!0},quality:{configurable:!0},pixelSize:{configurable:!0}};return((t.prototype=Object.create(c&&c.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n=t.getFilterTexture();this._tintFilter.apply(t,e,n,!0),this._blurFilter.apply(t,n,r,i),!0!==this.shadowOnly&&t.applyFilter(this,e,r,!1),t.returnFilterTexture(n)},t.prototype._updatePadding=function(){this.padding=this.distance+2*this.blur},t.prototype._updateShift=function(){this._tintFilter.uniforms.shift.set(this.distance*Math.cos(this.angle),this.distance*Math.sin(this.angle))},e.resolution.get=function(){return this._resolution},e.resolution.set=function(t){this._resolution=t,this._tintFilter&&(this._tintFilter.resolution=t),this._blurFilter&&(this._blurFilter.resolution=t)},e.distance.get=function(){return this._distance},e.distance.set=function(t){this._distance=t,this._updatePadding(),this._updateShift()},e.rotation.get=function(){return this.angle/f.DEG_TO_RAD},e.rotation.set=function(t){this.angle=t*f.DEG_TO_RAD,this._updateShift()},e.alpha.get=function(){return this._tintFilter.uniforms.alpha},e.alpha.set=function(t){this._tintFilter.uniforms.alpha=t},e.color.get=function(){return l.rgb2hex(this._tintFilter.uniforms.color)},e.color.set=function(t){l.hex2rgb(t,this._tintFilter.uniforms.color)},e.kernels.get=function(){return this._blurFilter.kernels},e.kernels.set=function(t){this._blurFilter.kernels=t},e.blur.get=function(){return this._blurFilter.blur},e.blur.set=function(t){this._blurFilter.blur=t,this._updatePadding()},e.quality.get=function(){return this._blurFilter.quality},e.quality.set=function(t){this._blurFilter.quality=t},e.pixelSize.get=function(){return this._blurFilter.pixelSize},e.pixelSize.set=function(t){this._blurFilter.pixelSize=t},Object.defineProperties(t.prototype,e),t}(n.Filter),S=function(e){function t(t){void 0===t&&(t=5),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float strength;\nuniform vec4 filterArea;\n\n\nvoid main(void)\n{\n\tvec2 onePixel = vec2(1.0 / filterArea);\n\n\tvec4 color;\n\n\tcolor.rgb = vec3(0.5);\n\n\tcolor -= texture2D(uSampler, vTextureCoord - onePixel) * strength;\n\tcolor += texture2D(uSampler, vTextureCoord + onePixel) * strength;\n\n\tcolor.rgb = vec3((color.r + color.g + color.b) / 3.0);\n\n\tfloat alpha = texture2D(uSampler, vTextureCoord).a;\n\n\tgl_FragColor = vec4(color.rgb * alpha, alpha);\n}\n"),this.strength=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={strength:{configurable:!0}};return r.strength.get=function(){return this.uniforms.strength},r.strength.set=function(t){this.uniforms.strength=t},Object.defineProperties(t.prototype,r),t}(n.Filter),P=function(e){function t(t){void 0===t&&(t={}),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","// precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\nuniform float aspect;\n\nuniform sampler2D displacementMap;\nuniform float offset;\nuniform float sinDir;\nuniform float cosDir;\nuniform int fillMode;\n\nuniform float seed;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nconst int TRANSPARENT = 0;\nconst int ORIGINAL = 1;\nconst int LOOP = 2;\nconst int CLAMP = 3;\nconst int MIRROR = 4;\n\nvoid main(void)\n{\n vec2 coord = (vTextureCoord * filterArea.xy) / dimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n return;\n }\n\n float cx = coord.x - 0.5;\n float cy = (coord.y - 0.5) * aspect;\n float ny = (-sinDir * cx + cosDir * cy) / aspect + 0.5;\n\n // displacementMap: repeat\n // ny = ny > 1.0 ? ny - 1.0 : (ny < 0.0 ? 1.0 + ny : ny);\n\n // displacementMap: mirror\n ny = ny > 1.0 ? 2.0 - ny : (ny < 0.0 ? -ny : ny);\n\n vec4 dc = texture2D(displacementMap, vec2(0.5, ny));\n\n float displacement = (dc.r - dc.g) * (offset / filterArea.x);\n\n coord = vTextureCoord + vec2(cosDir * displacement, sinDir * displacement * aspect);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, filterClamp.xy, filterClamp.zw);\n } else {\n if( coord.x > filterClamp.z ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x -= filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = filterClamp.z * 2.0 - coord.x;\n }\n } else if( coord.x < filterClamp.x ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x += filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x *= -filterClamp.z;\n }\n }\n\n if( coord.y > filterClamp.w ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y -= filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = filterClamp.w * 2.0 - coord.y;\n }\n } else if( coord.y < filterClamp.y ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y += filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y *= -filterClamp.w;\n }\n }\n }\n\n gl_FragColor.r = texture2D(uSampler, coord + red * (1.0 - seed * 0.4) / filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, coord + green * (1.0 - seed * 0.3) / filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, coord + blue * (1.0 - seed * 0.2) / filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, coord).a;\n}\n"),this.uniforms.dimensions=new Float32Array(2),t=Object.assign({slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:[0,0],green:[0,0],blue:[0,0],minSize:8,sampleSize:512},t),this.direction=t.direction,this.red=t.red,this.green=t.green,this.blue=t.blue,this.offset=t.offset,this.fillMode=t.fillMode,this.average=t.average,this.seed=t.seed,this.minSize=t.minSize,this.sampleSize=t.sampleSize,this._canvas=document.createElement("canvas"),this._canvas.width=4,this._canvas.height=this.sampleSize,this.texture=n.Texture.from(this._canvas,{scaleMode:s.SCALE_MODES.NEAREST}),this._slices=0,this.slices=t.slices}e&&(t.__proto__=e);var r={sizes:{configurable:!0},offsets:{configurable:!0},slices:{configurable:!0},direction:{configurable:!0},red:{configurable:!0},green:{configurable:!0},blue:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n=e.filterFrame.width,o=e.filterFrame.height;this.uniforms.dimensions[0]=n,this.uniforms.dimensions[1]=o,this.uniforms.aspect=o/n,this.uniforms.seed=this.seed,this.uniforms.offset=this.offset,this.uniforms.fillMode=this.fillMode,t.applyFilter(this,e,r,i)},t.prototype._randomizeSizes=function(){var t=this._sizes,e=this._slices-1,r=this.sampleSize,i=Math.min(this.minSize/r,.9/this._slices);if(this.average){for(var n=this._slices,o=1,a=0;a>0,i=t[e];t[e]=t[r],t[r]=i}},t.prototype._randomizeOffsets=function(){for(var t=0;t>0,e,1+a>>0),n+=a}r.baseTexture.update(),this.uniforms.displacementMap=r},r.sizes.set=function(t){for(var e=Math.min(this._slices,t.length),r=0;rthis._maxColors)throw"Length of replacements ("+i+") exceeds the maximum colors length ("+this._maxColors+")";e[3*i]=-1;for(var n=0;n 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n return vec3((dst.x <= 0.5) ? (2.0 * src.x * dst.x) : (1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)),\n (dst.y <= 0.5) ? (2.0 * src.y * dst.y) : (1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)),\n (dst.z <= 0.5) ? (2.0 * src.z * dst.z) : (1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)));\n}\n\n\nvoid main()\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 color = gl_FragColor.rgb;\n\n if (sepia > 0.0)\n {\n float gray = (color.x + color.y + color.z) / 3.0;\n vec3 grayscale = vec3(gray);\n\n color = Overlay(SEPIA_RGB, grayscale);\n\n color = grayscale + sepia * (color - grayscale);\n }\n\n vec2 coord = vTextureCoord * filterArea.xy / dimensions.xy;\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n vec2 dir = vec2(vec2(0.5, 0.5) - coord);\n dir.y *= dimensions.y / dimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n color.rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n if (scratchDensity > seed && scratch != 0.0)\n {\n float phase = seed * 256.0;\n float s = mod(floor(phase), 2.0);\n float dist = 1.0 / scratchDensity;\n float d = distance(coord, vec2(seed * dist, abs(s - seed * dist)));\n if (d < seed * 0.6 + 0.4)\n {\n highp float period = scratchDensity * 10.0;\n\n float xx = coord.x * period + phase;\n float aa = abs(mod(xx, 0.5) * 4.0);\n float bb = mod(floor(xx / 0.5), 2.0);\n float yy = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n float kk = 2.0 * period;\n float dw = scratchWidth / dimensions.x * (0.75 + seed);\n float dh = dw * kk;\n\n float tine = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n float _sign = sign(scratch);\n\n tine = s * tine / period + scratch + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color.rgb *= tine;\n }\n }\n }\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n // vec2 d = pixelCoord * noiseSize * vec2(1024.0 + seed * 512.0, 1024.0 - seed * 512.0);\n // float _noise = snoise(d) * 0.5;\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n color += _noise * noise;\n }\n\n gl_FragColor.rgb = color;\n}\n"),this.uniforms.dimensions=new Float32Array(2),"number"==typeof t?(this.seed=t,t=null):this.seed=e,Object.assign(this,{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3},t)}r&&(t.__proto__=r);var e={sepia:{configurable:!0},noise:{configurable:!0},noiseSize:{configurable:!0},scratch:{configurable:!0},scratchDensity:{configurable:!0},scratchWidth:{configurable:!0},vignetting:{configurable:!0},vignettingAlpha:{configurable:!0},vignettingBlur:{configurable:!0}};return((t.prototype=Object.create(r&&r.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.seed=this.seed,t.applyFilter(this,e,r,i)},e.sepia.set=function(t){this.uniforms.sepia=t},e.sepia.get=function(){return this.uniforms.sepia},e.noise.set=function(t){this.uniforms.noise=t},e.noise.get=function(){return this.uniforms.noise},e.noiseSize.set=function(t){this.uniforms.noiseSize=t},e.noiseSize.get=function(){return this.uniforms.noiseSize},e.scratch.set=function(t){this.uniforms.scratch=t},e.scratch.get=function(){return this.uniforms.scratch},e.scratchDensity.set=function(t){this.uniforms.scratchDensity=t},e.scratchDensity.get=function(){return this.uniforms.scratchDensity},e.scratchWidth.set=function(t){this.uniforms.scratchWidth=t},e.scratchWidth.get=function(){return this.uniforms.scratchWidth},e.vignetting.set=function(t){this.uniforms.vignetting=t},e.vignetting.get=function(){return this.uniforms.vignetting},e.vignettingAlpha.set=function(t){this.uniforms.vignettingAlpha=t},e.vignettingAlpha.get=function(){return this.uniforms.vignettingAlpha},e.vignettingBlur.set=function(t){this.uniforms.vignettingBlur=t},e.vignettingBlur.get=function(){return this.uniforms.vignettingBlur},Object.defineProperties(t.prototype,e),t}(n.Filter),M=function(o){function a(t,e,r){void 0===t&&(t=1),void 0===e&&(e=0),void 0===r&&(r=.1);var i=Math.max(r*a.MAX_SAMPLES,a.MIN_SAMPLES),n=(2*Math.PI/i).toFixed(7);o.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 thickness;\nuniform vec4 outlineColor;\nuniform vec4 filterClamp;\n\nconst float DOUBLE_PI = 3.14159265358979323846264 * 2.;\n\nvoid main(void) {\n vec4 ownColor = texture2D(uSampler, vTextureCoord);\n vec4 curColor;\n float maxAlpha = 0.;\n vec2 displaced;\n for (float angle = 0.; angle <= DOUBLE_PI; angle += ${angleStep}) {\n displaced.x = vTextureCoord.x + thickness.x * cos(angle);\n displaced.y = vTextureCoord.y + thickness.y * sin(angle);\n curColor = texture2D(uSampler, clamp(displaced, filterClamp.xy, filterClamp.zw));\n maxAlpha = max(maxAlpha, curColor.a);\n }\n float resultAlpha = max(maxAlpha, ownColor.a);\n gl_FragColor = vec4((ownColor.rgb + outlineColor.rgb * (1. - ownColor.a)) * resultAlpha, resultAlpha);\n}\n".replace(/\$\{angleStep\}/,n)),this.uniforms.thickness=new Float32Array([0,0]),this.thickness=t,this.uniforms.outlineColor=new Float32Array([0,0,0,1]),this.color=e,this.quality=r}o&&(a.__proto__=o);var t={color:{configurable:!0}};return((a.prototype=Object.create(o&&o.prototype)).constructor=a).prototype.apply=function(t,e,r,i){this.uniforms.thickness[0]=this.thickness/e._frame.width,this.uniforms.thickness[1]=this.thickness/e._frame.height,t.applyFilter(this,e,r,i)},t.color.get=function(){return l.rgb2hex(this.uniforms.outlineColor)},t.color.set=function(t){l.hex2rgb(t,this.uniforms.outlineColor)},Object.defineProperties(a.prototype,t),a}(n.Filter);M.MIN_SAMPLES=1,M.MAX_SAMPLES=100;var D=function(e){function t(t){void 0===t&&(t=10),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform vec2 size;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n\treturn floor( coord / size ) * size;\n}\n\nvoid main(void)\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = pixelate(coord, size);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord);\n}\n"),this.size=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={size:{configurable:!0}};return r.size.get=function(){return this.uniforms.size},r.size.set=function(t){"number"==typeof t&&(t=[t,t]),this.uniforms.size=t},Object.defineProperties(t.prototype,r),t}(n.Filter),z=function(n){function t(t,e,r,i){void 0===t&&(t=0),void 0===e&&(e=[0,0]),void 0===r&&(r=5),void 0===i&&(i=-1),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float uRadian;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform int uKernelSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\nvoid main(void)\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n gl_FragColor = color;\n return;\n }\n\n float aspect = filterArea.y / filterArea.x;\n vec2 center = uCenter.xy / filterArea.xy;\n float gradient = uRadius / filterArea.x * 0.3;\n float radius = uRadius / filterArea.x - gradient * 0.5;\n int k = uKernelSize - 1;\n\n vec2 coord = vTextureCoord;\n vec2 dir = vec2(center - coord);\n float dist = length(vec2(dir.x, dir.y * aspect));\n\n float radianStep = uRadian;\n if (radius >= 0.0 && dist > radius) {\n float delta = dist - radius;\n float gap = gradient;\n float scale = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n gl_FragColor = color;\n return;\n }\n radianStep *= scale;\n }\n radianStep /= float(k);\n\n float s = sin(radianStep);\n float c = cos(radianStep);\n mat2 rotationMatrix = mat2(vec2(c, -s), vec2(s, c));\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n\n vec4 sample = texture2D(uSampler, coord);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample;\n }\n\n gl_FragColor = color / float(uKernelSize);\n}\n"),this._angle=0,this.angle=t,this.center=e,this.kernelSize=r,this.radius=i}n&&(t.__proto__=n);var e={angle:{configurable:!0},center:{configurable:!0},radius:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.uKernelSize=0!==this._angle?this.kernelSize:0,t.applyFilter(this,e,r,i)},e.angle.set=function(t){this._angle=t,this.uniforms.uRadian=t*Math.PI/180},e.angle.get=function(){return this._angle},e.center.get=function(){return this.uniforms.uCenter},e.center.set=function(t){this.uniforms.uCenter=t},e.radius.get=function(){return this.uniforms.uRadius},e.radius.set=function(t){(t<0||t===1/0)&&(t=-1),this.uniforms.uRadius=t},Object.defineProperties(t.prototype,e),t}(n.Filter),R=function(e){function t(t){e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nuniform bool mirror;\nuniform float boundary;\nuniform vec2 amplitude;\nuniform vec2 waveLength;\nuniform vec2 alpha;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n if (coord.y < boundary) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n float k = (coord.y - boundary) / (1. - boundary + 0.0001);\n float areaY = boundary * dimensions.y / filterArea.y;\n float v = areaY + areaY - vTextureCoord.y;\n float y = mirror ? v : vTextureCoord.y;\n\n float _amplitude = ((amplitude.y - amplitude.x) * k + amplitude.x ) / filterArea.x;\n float _waveLength = ((waveLength.y - waveLength.x) * k + waveLength.x) / filterArea.y;\n float _alpha = (alpha.y - alpha.x) * k + alpha.x;\n\n float x = vTextureCoord.x + cos(v * 6.28 / _waveLength - time) * _amplitude;\n x = clamp(x, filterClamp.x, filterClamp.z);\n\n vec4 color = texture2D(uSampler, vec2(x, y));\n\n gl_FragColor = color * _alpha;\n}\n"),this.uniforms.amplitude=new Float32Array(2),this.uniforms.waveLength=new Float32Array(2),this.uniforms.alpha=new Float32Array(2),this.uniforms.dimensions=new Float32Array(2),Object.assign(this,{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0},t)}e&&(t.__proto__=e);var r={mirror:{configurable:!0},boundary:{configurable:!0},amplitude:{configurable:!0},waveLength:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},r.mirror.set=function(t){this.uniforms.mirror=t},r.mirror.get=function(){return this.uniforms.mirror},r.boundary.set=function(t){this.uniforms.boundary=t},r.boundary.get=function(){return this.uniforms.boundary},r.amplitude.set=function(t){this.uniforms.amplitude[0]=t[0],this.uniforms.amplitude[1]=t[1]},r.amplitude.get=function(){return this.uniforms.amplitude},r.waveLength.set=function(t){this.uniforms.waveLength[0]=t[0],this.uniforms.waveLength[1]=t[1]},r.waveLength.get=function(){return this.uniforms.waveLength},r.alpha.set=function(t){this.uniforms.alpha[0]=t[0],this.uniforms.alpha[1]=t[1]},r.alpha.get=function(){return this.uniforms.alpha},Object.defineProperties(t.prototype,r),t}(n.Filter),F=function(i){function t(t,e,r){void 0===t&&(t=[-10,0]),void 0===e&&(e=[0,10]),void 0===r&&(r=[0,0]),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nvoid main(void)\n{\n gl_FragColor.r = texture2D(uSampler, vTextureCoord + red/filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, vTextureCoord + green/filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, vTextureCoord + blue/filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, vTextureCoord).a;\n}\n"),this.red=t,this.green=e,this.blue=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={red:{configurable:!0},green:{configurable:!0},blue:{configurable:!0}};return e.red.get=function(){return this.uniforms.red},e.red.set=function(t){this.uniforms.red=t},e.green.get=function(){return this.uniforms.green},e.green.set=function(t){this.uniforms.green=t},e.blue.get=function(){return this.uniforms.blue},e.blue.set=function(t){this.uniforms.blue=t},Object.defineProperties(t.prototype,e),t}(n.Filter),j=function(i){function t(t,e,r){void 0===t&&(t=[0,0]),void 0===e&&(e={}),void 0===r&&(r=0),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\n\nuniform vec2 center;\n\nuniform float amplitude;\nuniform float wavelength;\n// uniform float power;\nuniform float brightness;\nuniform float speed;\nuniform float radius;\n\nuniform float time;\n\nconst float PI = 3.14159;\n\nvoid main()\n{\n float halfWavelength = wavelength * 0.5 / filterArea.x;\n float maxRadius = radius / filterArea.x;\n float currentRadius = time * speed / filterArea.x;\n\n float fade = 1.0;\n\n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n\n vec2 dir = vec2(vTextureCoord - center / filterArea.xy);\n dir.y *= filterArea.y / filterArea.x;\n float dist = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n vec2 diffUV = normalize(dir);\n\n float diff = (dist - currentRadius) / halfWavelength;\n\n float p = 1.0 - pow(abs(diff), 2.0);\n\n // float powDiff = diff * pow(p, 2.0) * ( amplitude * fade );\n float powDiff = 1.25 * sin(diff * PI) * p * ( amplitude * fade );\n\n vec2 offset = diffUV * powDiff / filterArea.xy;\n\n // Do clamp :\n vec2 coord = vTextureCoord + offset;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n // No clamp :\n // gl_FragColor = texture2D(uSampler, vTextureCoord + offset);\n\n color.rgb *= 1.0 + (brightness - 1.0) * p * fade;\n\n gl_FragColor = color;\n}\n"),this.center=t,Array.isArray(e)&&(console.warn("Deprecated Warning: ShockwaveFilter params Array has been changed to options Object."),e={}),e=Object.assign({amplitude:30,wavelength:160,brightness:1,speed:500,radius:-1},e),this.amplitude=e.amplitude,this.wavelength=e.wavelength,this.brightness=e.brightness,this.speed=e.speed,this.radius=e.radius,this.time=r}i&&(t.__proto__=i);var e={center:{configurable:!0},amplitude:{configurable:!0},wavelength:{configurable:!0},brightness:{configurable:!0},speed:{configurable:!0},radius:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},e.center.get=function(){return this.uniforms.center},e.center.set=function(t){this.uniforms.center=t},e.amplitude.get=function(){return this.uniforms.amplitude},e.amplitude.set=function(t){this.uniforms.amplitude=t},e.wavelength.get=function(){return this.uniforms.wavelength},e.wavelength.set=function(t){this.uniforms.wavelength=t},e.brightness.get=function(){return this.uniforms.brightness},e.brightness.set=function(t){this.uniforms.brightness=t},e.speed.get=function(){return this.uniforms.speed},e.speed.set=function(t){this.uniforms.speed=t},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},Object.defineProperties(t.prototype,e),t}(n.Filter),L=function(i){function t(t,e,r){void 0===e&&(e=0),void 0===r&&(r=1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform sampler2D uLightmap;\nuniform vec4 filterArea;\nuniform vec2 dimensions;\nuniform vec4 ambientColor;\nvoid main() {\n vec4 diffuseColor = texture2D(uSampler, vTextureCoord);\n vec2 lightCoord = (vTextureCoord * filterArea.xy) / dimensions;\n vec4 light = texture2D(uLightmap, lightCoord);\n vec3 ambient = ambientColor.rgb * ambientColor.a;\n vec3 intensity = ambient + light.rgb;\n vec3 finalColor = diffuseColor.rgb * intensity;\n gl_FragColor = vec4(finalColor, diffuseColor.a);\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.uniforms.ambientColor=new Float32Array([0,0,0,r]),this.texture=t,this.color=e}i&&(t.__proto__=i);var e={texture:{configurable:!0},color:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,t.applyFilter(this,e,r,i)},e.texture.get=function(){return this.uniforms.uLightmap},e.texture.set=function(t){this.uniforms.uLightmap=t},e.color.set=function(t){var e=this.uniforms.ambientColor;"number"==typeof t?(l.hex2rgb(t,e),this._color=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],this._color=l.rgb2hex(e))},e.color.get=function(){return this._color},e.alpha.get=function(){return this.uniforms.ambientColor[3]},e.alpha.set=function(t){this.uniforms.ambientColor[3]=t},Object.defineProperties(t.prototype,e),t}(n.Filter),N=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=600),void 0===r&&(r=null),void 0===i&&(i=null),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float blur;\nuniform float gradientBlur;\nuniform vec2 start;\nuniform vec2 end;\nuniform vec2 delta;\nuniform vec2 texSize;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * texSize - start, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture2D(uSampler, vTextureCoord + delta / texSize * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n"),this.uniforms.blur=t,this.uniforms.gradientBlur=e,this.uniforms.start=r||new f.Point(0,window.innerHeight/2),this.uniforms.end=i||new f.Point(600,window.innerHeight/2),this.uniforms.delta=new f.Point(30,30),this.uniforms.texSize=new f.Point(window.innerWidth,window.innerHeight),this.updateDelta()}n&&(t.__proto__=n);var e={blur:{configurable:!0},gradientBlur:{configurable:!0},start:{configurable:!0},end:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.updateDelta=function(){this.uniforms.delta.x=0,this.uniforms.delta.y=0},e.blur.get=function(){return this.uniforms.blur},e.blur.set=function(t){this.uniforms.blur=t},e.gradientBlur.get=function(){return this.uniforms.gradientBlur},e.gradientBlur.set=function(t){this.uniforms.gradientBlur=t},e.start.get=function(){return this.uniforms.start},e.start.set=function(t){this.uniforms.start=t,this.updateDelta()},e.end.get=function(){return this.uniforms.end},e.end.set=function(t){this.uniforms.end=t,this.updateDelta()},Object.defineProperties(t.prototype,e),t}(n.Filter),B=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.updateDelta=function(){var t=this.uniforms.end.x-this.uniforms.start.x,e=this.uniforms.end.y-this.uniforms.start.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.x=t/r,this.uniforms.delta.y=e/r},e}(N),U=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.updateDelta=function(){var t=this.uniforms.end.x-this.uniforms.start.x,e=this.uniforms.end.y-this.uniforms.start.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.x=-e/r,this.uniforms.delta.y=t/r},e}(N),X=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=600),void 0===r&&(r=null),void 0===i&&(i=null),n.call(this),this.tiltShiftXFilter=new B(t,e,r,i),this.tiltShiftYFilter=new U(t,e,r,i)}n&&(t.__proto__=n);var e={blur:{configurable:!0},gradientBlur:{configurable:!0},start:{configurable:!0},end:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.apply=function(t,e,r){var i=t.getFilterTexture();this.tiltShiftXFilter.apply(t,e,i),this.tiltShiftYFilter.apply(t,i,r),t.returnFilterTexture(i)},e.blur.get=function(){return this.tiltShiftXFilter.blur},e.blur.set=function(t){this.tiltShiftXFilter.blur=this.tiltShiftYFilter.blur=t},e.gradientBlur.get=function(){return this.tiltShiftXFilter.gradientBlur},e.gradientBlur.set=function(t){this.tiltShiftXFilter.gradientBlur=this.tiltShiftYFilter.gradientBlur=t},e.start.get=function(){return this.tiltShiftXFilter.start},e.start.set=function(t){this.tiltShiftXFilter.start=this.tiltShiftYFilter.start=t},e.end.get=function(){return this.tiltShiftXFilter.end},e.end.set=function(t){this.tiltShiftXFilter.end=this.tiltShiftYFilter.end=t},Object.defineProperties(t.prototype,e),t}(n.Filter),H=function(i){function t(t,e,r){void 0===t&&(t=200),void 0===e&&(e=4),void 0===r&&(r=20),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 twist(vec2 coord)\n{\n coord -= offset;\n\n float dist = length(coord);\n\n if (dist < radius)\n {\n float ratioDist = (radius - dist) / radius;\n float angleMod = ratioDist * ratioDist * angle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n coord += offset;\n\n return coord;\n}\n\nvoid main(void)\n{\n\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = twist(coord);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord );\n\n}\n"),this.radius=t,this.angle=e,this.padding=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={offset:{configurable:!0},radius:{configurable:!0},angle:{configurable:!0}};return e.offset.get=function(){return this.uniforms.offset},e.offset.set=function(t){this.uniforms.offset=t},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},e.angle.get=function(){return this.uniforms.angle},e.angle.set=function(t){this.uniforms.angle=t},Object.defineProperties(t.prototype,e),t}(n.Filter),q=function(n){function t(t,e,r,i){void 0===t&&(t=.1),void 0===e&&(e=[0,0]),void 0===r&&(r=0),void 0===i&&(i=-1),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform vec2 uCenter;\nuniform float uStrength;\nuniform float uInnerRadius;\nuniform float uRadius;\n\nconst float MAX_KERNEL_SIZE = 32.0;\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand(vec2 co, float seed) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}\n\nvoid main() {\n\n float minGradient = uInnerRadius * 0.3;\n float innerRadius = (uInnerRadius + minGradient * 0.5) / filterArea.x;\n\n float gradient = uRadius * 0.3;\n float radius = (uRadius - gradient * 0.5) / filterArea.x;\n\n float countLimit = MAX_KERNEL_SIZE;\n\n vec2 dir = vec2(uCenter.xy / filterArea.xy - vTextureCoord);\n float dist = length(vec2(dir.x, dir.y * filterArea.y / filterArea.x));\n\n float strength = uStrength;\n\n float delta = 0.0;\n float gap;\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n if (delta > 0.0) {\n float normalCount = gap / filterArea.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n if (countLimit < 1.0)\n {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n float offset = rand(vTextureCoord, 0.0);\n\n float total = 0.0;\n vec4 color = vec4(0.0);\n\n dir *= strength;\n\n for (float t = 0.0; t < MAX_KERNEL_SIZE; t++) {\n float percent = (t + offset) / MAX_KERNEL_SIZE;\n float weight = 4.0 * (percent - percent * percent);\n vec2 p = vTextureCoord + dir * percent;\n vec4 sample = texture2D(uSampler, p);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample * weight;\n total += weight;\n\n if (t > countLimit){\n break;\n }\n }\n\n color /= total;\n // switch back from pre-multiplied alpha\n // color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n"),this.center=e,this.strength=t,this.innerRadius=r,this.radius=i}n&&(t.__proto__=n),(t.prototype=Object.create(n&&n.prototype)).constructor=t;var e={center:{configurable:!0},strength:{configurable:!0},innerRadius:{configurable:!0},radius:{configurable:!0}};return e.center.get=function(){return this.uniforms.uCenter},e.center.set=function(t){this.uniforms.uCenter=t},e.strength.get=function(){return this.uniforms.uStrength},e.strength.set=function(t){this.uniforms.uStrength=t},e.innerRadius.get=function(){return this.uniforms.uInnerRadius},e.innerRadius.set=function(t){this.uniforms.uInnerRadius=t},e.radius.get=function(){return this.uniforms.uRadius},e.radius.set=function(t){(t<0||t===1/0)&&(t=-1),this.uniforms.uRadius=t},Object.defineProperties(t.prototype,e),t}(n.Filter);return t.AdjustmentFilter=e,t.AdvancedBloomFilter=i,t.AsciiFilter=o,t.BevelFilter=a,t.BloomFilter=g,t.BulgePinchFilter=v,t.CRTFilter=w,t.ColorMapFilter=_,t.ColorReplaceFilter=y,t.ConvolutionFilter=b,t.CrossHatchFilter=x,t.DotFilter=T,t.DropShadowFilter=k,t.EmbossFilter=S,t.GlitchFilter=P,t.GlowFilter=C,t.GodrayFilter=A,t.KawaseBlurFilter=d,t.MotionBlurFilter=E,t.MultiColorReplaceFilter=I,t.OldFilmFilter=O,t.OutlineFilter=M,t.PixelateFilter=D,t.RGBSplitFilter=F,t.RadialBlurFilter=z,t.ReflectionFilter=R,t.ShockwaveFilter=j,t.SimpleLightmapFilter=L,t.TiltShiftAxisFilter=N,t.TiltShiftFilter=X,t.TiltShiftXFilter=B,t.TiltShiftYFilter=U,t.TwistFilter=H,t.ZoomBlurFilter=q,t}({},PIXI,PIXI,PIXI,PIXI.utils,PIXI,PIXI.filters,PIXI.filters),pixi_projection,pixi_projection;Object.assign(PIXI.filters,__filters),this.PIXI=this.PIXI||{},function(p,v){"use strict";var e,f,d=function(){function f(t,e,r){this.value=t,this.time=e,this.next=null,this.isStepped=!1,this.ease=r?"function"==typeof r?r:p.ParticleUtils.generateEase(r):null}return f.createList=function(t){if("list"in t){var e=t.list,r=void 0,i=void 0,n=e[0],o=n.value,a=n.time;if(i=r=new f("string"==typeof o?p.ParticleUtils.hexToRGB(o):o,a,t.ease),2a.time;)n=a,a=t[++o];l=(l-n.time)/(a.time-n.time);var u=f.hexToRGB(n.value),h=f.hexToRGB(a.value),c={r:(h.r-u.r)*l+u.r,g:(h.g-u.g)*l+u.g,b:(h.b-u.b)*l+u.b};i.next=new d(c,s/e),i=i.next}return r};var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};function n(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var o=function(){function t(t){void 0===t&&(t=!1),this.current=null,this.next=null,this.isColor=!!t,this.interpolate=null,this.ease=null}return t.prototype.reset=function(t){this.current=t,this.next=t.next,this.next&&1<=this.next.time?this.interpolate=this.isColor?a:r:t.isStepped?this.interpolate=this.isColor?c:u:this.interpolate=this.isColor?l:s,this.ease=this.current.ease},t}();function r(t){return this.ease&&(t=this.ease(t)),(this.next.value-this.current.value)*t+this.current.value}function a(t){this.ease&&(t=this.ease(t));var e=this.current.value,r=this.next.value,i=(r.r-e.r)*t+e.r,n=(r.g-e.g)*t+e.g,o=(r.b-e.b)*t+e.b;return p.ParticleUtils.combineRGBComponents(i,n,o)}function s(t){for(this.ease&&(t=this.ease(t));t>this.next.time;)this.current=this.next,this.next=this.next.next;return t=(t-this.current.time)/(this.next.time-this.current.time),(this.next.value-this.current.value)*t+this.current.value}function l(t){for(this.ease&&(t=this.ease(t));t>this.next.time;)this.current=this.next,this.next=this.next.next;t=(t-this.current.time)/(this.next.time-this.current.time);var e=this.current.value,r=this.next.value,i=(r.r-e.r)*t+e.r,n=(r.g-e.g)*t+e.g,o=(r.b-e.b)*t+e.b;return p.ParticleUtils.combineRGBComponents(i,n,o)}function u(t){for(this.ease&&(t=this.ease(t));this.next&&t>this.next.time;)this.current=this.next,this.next=this.next.next;return this.current.value}function c(t){for(this.ease&&(t=this.ease(t));this.next&&t>this.next.time;)this.current=this.next,this.next=this.next.next;var e=this.current.value;return p.ParticleUtils.combineRGBComponents(e.r,e.g,e.b)}var m,g=function(r){function i(t){var e=r.call(this)||this;return e.emitter=t,e.anchor.x=e.anchor.y=.5,e.velocity=new v.Point,e.rotationSpeed=0,e.rotationAcceleration=0,e.maxLife=0,e.age=0,e.ease=null,e.extraData=null,e.alphaList=new o,e.speedList=new o,e.speedMultiplier=1,e.acceleration=new v.Point,e.maxSpeed=NaN,e.scaleList=new o,e.scaleMultiplier=1,e.colorList=new o(!0),e._doAlpha=!1,e._doScale=!1,e._doSpeed=!1,e._doAcceleration=!1,e._doColor=!1,e._doNormalMovement=!1,e._oneOverLife=0,e.next=null,e.prev=null,e.init=e.init,e.Particle_init=i.prototype.init,e.update=e.update,e.Particle_update=i.prototype.update,e.Sprite_destroy=r.prototype.destroy,e.Particle_destroy=i.prototype.destroy,e.applyArt=e.applyArt,e.kill=e.kill,e}return n(i,r),i.prototype.init=function(){this.age=0,this.velocity.x=this.speedList.current.value*this.speedMultiplier,this.velocity.y=0,p.ParticleUtils.rotatePoint(this.rotation,this.velocity),this.noRotation?this.rotation=0:this.rotation*=p.ParticleUtils.DEG_TO_RADS,this.rotationSpeed*=p.ParticleUtils.DEG_TO_RADS,this.rotationAcceleration*=p.ParticleUtils.DEG_TO_RADS,this.alpha=this.alphaList.current.value,this.scale.x=this.scale.y=this.scaleList.current.value,this._doAlpha=!!this.alphaList.current.next,this._doSpeed=!!this.speedList.current.next,this._doScale=!!this.scaleList.current.next,this._doColor=!!this.colorList.current.next,this._doAcceleration=0!==this.acceleration.x||0!==this.acceleration.y,this._doNormalMovement=this._doSpeed||0!==this.speedList.current.value||this._doAcceleration,this._oneOverLife=1/this.maxLife;var t=this.colorList.current.value;this.tint=p.ParticleUtils.combineRGBComponents(t.r,t.g,t.b),this.visible=!0},i.prototype.applyArt=function(t){this.texture=t||v.Texture.EMPTY},i.prototype.update=function(t){if(this.age+=t,this.age>=this.maxLife||this.age<0)return this.kill(),-1;var e=this.age*this._oneOverLife;if(this.ease&&(e=4==this.ease.length?this.ease(e,0,1,1):this.ease(e)),this._doAlpha&&(this.alpha=this.alphaList.interpolate(e)),this._doScale){var r=this.scaleList.interpolate(e)*this.scaleMultiplier;this.scale.x=this.scale.y=r}if(this._doNormalMovement){var i=void 0,n=void 0;if(this._doSpeed){var o=this.speedList.interpolate(e)*this.speedMultiplier;p.ParticleUtils.normalize(this.velocity),p.ParticleUtils.scaleBy(this.velocity,o),i=this.velocity.x*t,n=this.velocity.y*t}else if(this._doAcceleration){var a=this.velocity.x,s=this.velocity.y;if(this.velocity.x+=this.acceleration.x*t,this.velocity.y+=this.acceleration.y*t,this.maxSpeed){var l=p.ParticleUtils.length(this.velocity);l>this.maxSpeed&&p.ParticleUtils.scaleBy(this.velocity,this.maxSpeed/l)}i=(a+this.velocity.x)/2*t,n=(s+this.velocity.y)/2*t}else i=this.velocity.x*t,n=this.velocity.y*t;this.position.x+=i,this.position.y+=n}if(this._doColor&&(this.tint=this.colorList.interpolate(e)),0!==this.rotationAcceleration){var u=this.rotationSpeed+this.rotationAcceleration*t;this.rotation+=(this.rotationSpeed+u)/2*t,this.rotationSpeed=u}else 0!==this.rotationSpeed?this.rotation+=this.rotationSpeed*t:this.acceleration&&!this.noRotation&&(this.rotation=Math.atan2(this.velocity.y,this.velocity.x));return e},i.prototype.kill=function(){this.emitter.recycle(this)},i.prototype.destroy=function(){this.parent&&this.parent.removeChild(this),this.Sprite_destroy(),this.emitter=this.velocity=this.colorList=this.scaleList=this.alphaList=this.speedList=this.ease=this.next=this.prev=null},i.parseArt=function(t){var e;for(e=t.length;0<=e;--e)"string"==typeof t[e]&&(t[e]=h(t[e]));if(p.ParticleUtils.verbose)for(e=t.length-1;0=this.maxParticles)this._spawnTimer+=this._frequency;else{var l=void 0;if(l=this.minLifetime==this.maxLifetime?this.minLifetime:Math.random()*(this.maxLifetime-this.minLifetime)+this.minLifetime,-this._spawnTimer=this.spawnChance)){var p=void 0;if(this._poolFirst?(p=this._poolFirst,this._poolFirst=this._poolFirst.next,p.next=null):p=new this.particleConstructor(this),1=this.particleImages.length)&&(this._currentImageIndex=0)):p.applyArt(this.particleImages[Math.floor(Math.random()*this.particleImages.length)]):p.applyArt(this.particleImages[0]),p.alphaList.reset(this.startAlpha),1!=this.minimumSpeedMultiplier&&(p.speedMultiplier=Math.random()*(1-this.minimumSpeedMultiplier)+this.minimumSpeedMultiplier),p.speedList.reset(this.startSpeed),p.acceleration.x=this.acceleration.x,p.acceleration.y=this.acceleration.y,p.maxSpeed=this.maxSpeed,1!=this.minimumScaleMultiplier&&(p.scaleMultiplier=Math.random()*(1-this.minimumScaleMultiplier)+this.minimumScaleMultiplier),p.scaleList.reset(this.startScale),p.colorList.reset(this.startColor),this.minRotationSpeed==this.maxRotationSpeed?p.rotationSpeed=this.minRotationSpeed:p.rotationSpeed=Math.random()*(this.maxRotationSpeed-this.minRotationSpeed)+this.minRotationSpeed,p.rotationAcceleration=this.rotationAcceleration,p.noRotation=this.noRotation,p.maxLife=l,p.blendMode=this.particleBlendMode,p.ease=this.customEase,p.extraData=this.extraData,this.applyAdditionalProperties(p),this._spawnFunc(p,u,h,e),p.init(),p.update(-this._spawnTimer),p.parent){var d=this._parent.children;if(d[0]==p)d.shift();else if(d[d.length-1]==p)d.pop();else{var m=d.indexOf(p);d.splice(m,1)}this.addAtBack?d.unshift(p):d.push(p)}else this.addAtBack?this._parent.addChildAt(p,0):this._parent.addChild(p);this._activeParticlesLast?((this._activeParticlesLast.next=p).prev=this._activeParticlesLast,this._activeParticlesLast=p):this._activeParticlesLast=this._activeParticlesFirst=p,++this.particleCount}}this._spawnTimer+=this._frequency}}if(this._posChanged&&(this._prevEmitterPos.x=a,this._prevEmitterPos.y=s,this._prevPosIsValid=!0,this._posChanged=!1),!this._emit&&!this._activeParticlesFirst){if(this._completeCallback){var g=this._completeCallback;this._completeCallback=null,g()}this._destroyWhenComplete&&this.destroy()}}},t.prototype.applyAdditionalProperties=function(t){},t.prototype._spawnPoint=function(t,e,r){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,t.position.x=e,t.position.y=r},t.prototype._spawnRect=function(t,e,r){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,b.x=Math.random()*this.spawnRect.width+this.spawnRect.x,b.y=Math.random()*this.spawnRect.height+this.spawnRect.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),t.position.x=e+b.x,t.position.y=r+b.y},t.prototype._spawnCircle=function(t,e,r){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,b.x=Math.random()*this.spawnCircle.radius,b.y=0,p.ParticleUtils.rotatePoint(360*Math.random(),b),b.x+=this.spawnCircle.x,b.y+=this.spawnCircle.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),t.position.x=e+b.x,t.position.y=r+b.y},t.prototype._spawnRing=function(t,e,r){var i=this.spawnCircle;this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,i.minRadius!==i.radius?b.x=Math.random()*(i.radius-i.minRadius)+i.minRadius:b.x=i.radius,b.y=0;var n=360*Math.random();t.rotation+=n,p.ParticleUtils.rotatePoint(n,b),b.x+=this.spawnCircle.x,b.y+=this.spawnCircle.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),t.position.x=e+b.x,t.position.y=r+b.y},t.prototype._spawnPolygonalChain=function(t,e,r){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,this.spawnPolygonalChain.getRandomPoint(b),0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),t.position.x=e+b.x,t.position.y=r+b.y},t.prototype._spawnBurst=function(t,e,r,i){0===this.particleSpacing?t.rotation=360*Math.random():t.rotation=this.angleStart+this.particleSpacing*i+this.rotation,t.position.x=e,t.position.y=r},t.prototype.cleanup=function(){var t,e;for(t=this._activeParticlesFirst;t;t=e)e=t.next,this.recycle(t),t.parent&&t.parent.removeChild(t);this._activeParticlesFirst=this._activeParticlesLast=null,this.particleCount=0},t.prototype.destroy=function(){var t;this.autoUpdate=!1,this.cleanup();for(var e=this._poolFirst;e;e=t)t=e.next,e.destroy();this._poolFirst=this._parent=this.particleImages=this.spawnPos=this.ownerPos=this.startColor=this.startScale=this.startAlpha=this.startSpeed=this.customEase=this._completeCallback=null},t}(),w=new v.Point,T=["pow","sqrt","abs","floor","round","ceil","E","PI","sin","cos","tan","asin","acos","atan","atan2","log"],k=new RegExp(["[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]"].concat(T).join("|"),"g"),S=function(r){function t(t){var e=r.call(this,t)||this;return e.path=null,e.initialRotation=0,e.initialPosition=new v.Point,e.movement=0,e}return n(t,r),t.prototype.init=function(){this.initialRotation=this.rotation,this.Particle_init(),this.path=this.extraData.path,this._doNormalMovement=!this.path,this.movement=0,this.initialPosition.x=this.position.x,this.initialPosition.y=this.position.y},t.prototype.update=function(t){var e=this.Particle_update(t);if(0<=e&&this.path){var r=this.speedList.interpolate(e)*this.speedMultiplier;this.movement+=r*t,w.x=this.movement,w.y=this.path(this.movement),p.ParticleUtils.rotatePoint(this.initialRotation,w),this.position.x=this.initialPosition.x+w.x,this.position.y=this.initialPosition.y+w.y}return e},t.prototype.destroy=function(){this.Particle_destroy(),this.path=this.initialPosition=null},t.parseArt=function(t){return g.parseArt(t)},t.parseData=function(t){var e={};if(t&&t.path)try{e.path=function(t){for(var e=t.match(k),r=e.length-1;0<=r;--r)0<=T.indexOf(e[r])&&(e[r]="Math."+e[r]);return t=e.join(""),new Function("x","return "+t+";")}(t.path)}catch(t){p.ParticleUtils.verbose&&console.error("PathParticle: error in parsing path expression"),e.path=null}else p.ParticleUtils.verbose&&console.error("PathParticle requires a path string in extraData!"),e.path=null;return e},t}(g),P=function(r){function t(t){var e=r.call(this,t)||this;return e.textures=null,e.duration=0,e.framerate=0,e.elapsed=0,e.loop=!1,e}return n(t,r),t.prototype.init=function(){this.Particle_init(),this.elapsed=0,this.framerate<0&&(this.duration=this.maxLife,this.framerate=this.textures.length/this.duration)},t.prototype.applyArt=function(t){this.textures=t.textures,this.framerate=t.framerate,this.duration=t.duration,this.loop=t.loop},t.prototype.update=function(t){var e=this.Particle_update(t);if(0<=e){this.elapsed+=t,this.elapsed>this.duration&&(this.loop?this.elapsed=this.elapsed%this.duration:this.elapsed=this.duration-1e-6);var r=this.elapsed*this.framerate+1e-7|0;this.texture=this.textures[r]||v.Texture.EMPTY}return e},t.prototype.destroy=function(){this.Particle_destroy(),this.textures=null},t.parseArt=function(t){for(var e,r,i,n,o,a=[],s=0;se[s]&&(i=e[s]),oe[s+1]&&(n=e[s+1]),af[u]){l=c[s];c[s]=c[u],c[u]=l;var h=f[s];f[s]=f[u],f[u]=h}if(e[0]=c[0].x,e[1]=c[0].y,e[2]=c[1].x,e[3]=c[1].y,e[4]=c[2].x,e[5]=c[2].y,e[6]=c[3].x,e[7]=c[3].y,(c[3].x-c[2].x)*(c[1].y-c[2].y)-(c[1].x-c[2].x)*(c[3].y-c[2].y)<0)return e[4]=c[3].x,void(e[5]=c[3].y)}},t}();t.Surface=e}(pixi_projection||(pixi_projection={})),function(t){var k=new PIXI.Matrix,n=new PIXI.Rectangle,S=new PIXI.Point,e=function(e){function t(){var t=e.call(this)||this;return t.distortion=new PIXI.Point,t}return __extends(t,e),t.prototype.clear=function(){this.distortion.set(0,0)},t.prototype.apply=function(t,e){e=e||new PIXI.Point;var r=this.distortion,i=t.x*t.y;return e.x=t.x+r.x*i,e.y=t.y+r.y*i,e},t.prototype.applyInverse=function(t,e){e=e||new PIXI.Point;var r=t.x,i=t.y,n=this.distortion.x,o=this.distortion.y;if(0==n)e.x=r,e.y=i/(1+o*r);else if(0==o)e.y=i,e.x=r/(1+n*i);else{var a=.5*(i*n-r*o+1)/o,s=a*a+r/o;if(s<=1e-5)return void e.set(NaN,NaN);e.x=0 vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * samplerSize[0];\n \n if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n discard;\n }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\n%forloop%\ngl_FragColor = color * rColor;\n}",geometryClass:r.Batch3dGeometry,vertexSize:7},t),i=e.vertex,n=e.fragment,o=e.vertexSize,a=e.geometryClass;return function(r){function t(t){var e=r.call(this,t)||this;return e.defUniforms={worldTransform:new Float32Array([1,0,0,0,1,0,0,0,1]),distortion:new Float32Array([0,0])},e.shaderGenerator=new PIXI.BatchShaderGenerator(i,n),e.geometryClass=a,e.vertexSize=o,e}return __extends(t,r),t.prototype.getUniforms=function(t){var e=t.proj;this._shader;return null!==e.surface?e.uniforms:null!==e._activeProjection?e._activeProjection.uniforms:this.defUniforms},t.prototype.packGeometry=function(t,e,r,i,n,o){for(var a=n/this.vertexSize,s=(t.uvs,t.indices),l=t.vertexData,u=t._texture._frame,h=t.aTrans,c=Math.min(t.worldAlpha,1),f=c<1&&t._texture.baseTexture.premultiplyAlpha?d(t._tintRGB,c):t._tintRGB+(255*c<<24),p=0;p=o.TRANSFORM_STEP.PROJ?(i||this.displayObjectUpdateTransform(),this.proj.affine?this.transform.worldTransform.applyInverse(t,r):this.proj.world.applyInverse(t,r)):(this.parent?r=this.parent.worldTransform.applyInverse(t,r):r.copyFrom(t),n===o.TRANSFORM_STEP.NONE?r:this.transform.localTransform.applyInverse(r,r))},Object.defineProperty(t.prototype,"worldTransform",{get:function(){return this.proj.affine?this.transform.worldTransform:this.proj.world},enumerable:!0,configurable:!0}),t}(PIXI.Container);o.Container2d=t,o.container2dToLocal=t.prototype.toLocal}(pixi_projection||(pixi_projection={})),function(t){var l,e,v=PIXI.Point,r=[1,0,0,0,1,0,0,0,1];(e=l=t.AFFINE||(t.AFFINE={}))[e.NONE=0]="NONE",e[e.FREE=1]="FREE",e[e.AXIS_X=2]="AXIS_X",e[e.AXIS_Y=3]="AXIS_Y",e[e.POINT=4]="POINT",e[e.AXIS_XR=5]="AXIS_XR";var i=function(){function t(t){this.floatArray=null,this.mat3=new Float64Array(t||r)}return Object.defineProperty(t.prototype,"a",{get:function(){return this.mat3[0]/this.mat3[8]},set:function(t){this.mat3[0]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this.mat3[1]/this.mat3[8]},set:function(t){this.mat3[1]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"c",{get:function(){return this.mat3[3]/this.mat3[8]},set:function(t){this.mat3[3]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"d",{get:function(){return this.mat3[4]/this.mat3[8]},set:function(t){this.mat3[4]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tx",{get:function(){return this.mat3[6]/this.mat3[8]},set:function(t){this.mat3[6]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ty",{get:function(){return this.mat3[7]/this.mat3[8]},set:function(t){this.mat3[7]=t*this.mat3[8]},enumerable:!0,configurable:!0}),t.prototype.set=function(t,e,r,i,n,o){var a=this.mat3;return a[0]=t,a[1]=e,a[2]=0,a[3]=r,a[4]=i,a[5]=0,a[6]=n,a[7]=o,a[8]=1,this},t.prototype.toArray=function(t,e){this.floatArray||(this.floatArray=new Float32Array(9));var r=e||this.floatArray,i=this.mat3;return t?(r[0]=i[0],r[1]=i[1],r[2]=i[2],r[3]=i[3],r[4]=i[4],r[5]=i[5],r[6]=i[6],r[7]=i[7]):(r[0]=i[0],r[1]=i[3],r[2]=i[6],r[3]=i[1],r[4]=i[4],r[5]=i[7],r[6]=i[2],r[7]=i[5]),r[8]=i[8],r},t.prototype.apply=function(t,e){e=e||new PIXI.Point;var r=this.mat3,i=t.x,n=t.y,o=1/(r[2]*i+r[5]*n+r[8]);return e.x=o*(r[0]*i+r[3]*n+r[6]),e.y=o*(r[1]*i+r[4]*n+r[7]),e},t.prototype.translate=function(t,e){var r=this.mat3;return r[0]+=t*r[2],r[1]+=e*r[2],r[3]+=t*r[5],r[4]+=e*r[5],r[6]+=t*r[8],r[7]+=e*r[8],this},t.prototype.scale=function(t,e){var r=this.mat3;return r[0]*=t,r[1]*=e,r[3]*=t,r[4]*=e,r[6]*=t,r[7]*=e,this},t.prototype.scaleAndTranslate=function(t,e,r,i){var n=this.mat3;n[0]=t*n[0]+r*n[2],n[1]=e*n[1]+i*n[2],n[3]=t*n[3]+r*n[5],n[4]=e*n[4]+i*n[5],n[6]=t*n[6]+r*n[8],n[7]=e*n[7]+i*n[8]},t.prototype.applyInverse=function(t,e){e=e||new v;var r=this.mat3,i=t.x,n=t.y,o=r[0],a=r[3],s=r[6],l=r[1],u=r[4],h=r[7],c=r[2],f=r[5],p=r[8],d=(p*u-h*f)*i+(-p*a+s*f)*n+(h*a-s*u),m=(-p*l+h*c)*i+(p*o-s*c)*n+(-h*o+s*l),g=(f*l-u*c)*i+(-f*o+a*c)*n+(u*o-a*l);return e.x=d/g,e.y=m/g,e},t.prototype.invert=function(){var t=this.mat3,e=t[0],r=t[1],i=t[2],n=t[3],o=t[4],a=t[5],s=t[6],l=t[7],u=t[8],h=u*o-a*l,c=-u*n+a*s,f=l*n-o*s,p=e*h+r*c+i*f;return p&&(p=1/p,t[0]=h*p,t[1]=(-u*r+i*l)*p,t[2]=(a*r-i*o)*p,t[3]=c*p,t[4]=(u*e-i*s)*p,t[5]=(-a*e+i*n)*p,t[6]=f*p,t[7]=(-l*e+r*s)*p,t[8]=(o*e-r*n)*p),this},t.prototype.identity=function(){var t=this.mat3;return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,this},t.prototype.clone=function(){return new t(this.mat3)},t.prototype.copyTo2dOr3d=function(t){var e=this.mat3,r=t.mat3;return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],t},t.prototype.copyTo=function(t,e,r){var i=this.mat3,n=1/i[8],o=i[6]*n,a=i[7]*n;if(t.a=(i[0]-i[2]*o)*n,t.b=(i[1]-i[2]*a)*n,t.c=(i[3]-i[5]*o)*n,t.d=(i[4]-i[5]*a)*n,t.tx=o,t.ty=a,2<=e){var s=t.a*t.d-t.b*t.c;r||(s=Math.abs(s)),e===l.POINT?(s=0>0,0!==f._cycle&&f._cycle===f._totalTime/a&&m<=t&&f._cycle--,f._time=f._totalTime-f._cycle*a,f._yoyo&&0!=(1&f._cycle)&&(f._time=v-f._time,(c=f._yoyoEase||f.vars.yoyoEase)&&(f._yoyoEase||(!0!==c||f._initted?f._yoyoEase=c=!0===c?f._ease:c instanceof Ease?c:Ease.map[c]:(c=f.vars.ease,f._yoyoEase=c=c?c instanceof Ease?c:"function"==typeof c?new Ease(c,f.vars.easeParams):Ease.map[c]||y.defaultEase:y.defaultEase)),f.ratio=c?1-c.getRatio((v-f._time)/v):0)),f._time>v?f._time=v:f._time<0&&(f._time=0)),f._easeType&&!c?(s=f._time/v,(1===(l=f._easeType)||3===l&&.5<=s)&&(s=1-s),3===l&&(s*=2),1===(u=f._easePower)?s*=s:2===u?s*=s*s:3===u?s*=s*s*s:4===u&&(s*=s*s*s*s),f.ratio=1===l?1-s:2===l?s:f._time/v<.5?s/2:1-s/2):c||(f.ratio=f._ease.getRatio(f._time/v))),d!==f._time||r||g!==f._cycle){if(!f._initted){if(f._init(),!f._initted||f._gc)return;if(!r&&f._firstPT&&(!1!==f.vars.lazy&&f._duration||f.vars.lazy&&!f._duration))return f._time=d,f._totalTime=m,f._rawPrevTime=_,f._cycle=g,x.lazyTweens.push(f),void(f._lazy=[t,e]);!f._time||i||c?i&&this._ease._calcEnd&&!c&&(f.ratio=f._ease.getRatio(0===f._time?0:1)):f.ratio=f._ease.getRatio(f._time/v)}for(!1!==f._lazy&&(f._lazy=!1),f._active||!f._paused&&f._time!==d&&0<=t&&(f._active=!0),0===m&&(2===f._initted&&0t._startTime;l._timeline;)u&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return h},r.remove=function(t){if(t instanceof c){this._remove(t,!1);var e=t._timeline=t.vars.useFrames?c._rootFramesTimeline:c._rootTimeline;return t._startTime=(t._paused?t._pauseTime:e._time)-(t._reversed?t.totalDuration()-t._totalTime:t._totalTime)/t._timeScale,this}if(t instanceof Array||t&&t.push&&p(t)){for(var r=t.length;-1<--r;)this.remove(t[r]);return this}return"string"==typeof t?this.removeLabel(t):this.kill(null,t)},r._remove=function(t,e){return f.prototype._remove.call(this,t,e),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},r.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},r.insert=r.insertMultiple=function(t,e,r,i){return this.add(t,e||0,r,i)},r.appendMultiple=function(t,e,r,i){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),r,i)},r.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},r.addPause=function(t,e,r,i){var n=d.delayedCall(0,o,r,i||this);return n.vars.onComplete=n.vars.onReverseComplete=e,n.data="isPause",this._hasPause=!0,this.add(n,t)},r.removeLabel=function(t){return delete this._labels[t],this},r.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},r._parseTimeOrLabel=function(t,e,r,i){var n,o;if(i instanceof c&&i.timeline===this)this.remove(i);else if(i&&(i instanceof Array||i.push&&p(i)))for(o=i.length;-1<--o;)i[o]instanceof c&&i[o].timeline===this&&this.remove(i[o]);if(n="number"!=typeof t||e?99999999999=t&&!l;)i._duration||"isPause"===i.data&&0c._time;)l.render(l._reversed?l.totalDuration()-(t-l._startTime)*l._timeScale:(t-l._startTime)*l._timeScale,e,r),l=l._prev;l=null,c.pause(),c._pauseTime=h}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}c._onUpdate&&(e||(v.length&&_(),c._callback("onUpdate"))),a&&(c._gc||d!==c._startTime&&m===c._timeScale||(0===c._time||p>=c.totalDuration())&&(n&&(v.length&&_(),c._timeline.autoRemoveChildren&&c._enabled(!1,!1),c._active=!1),!e&&c.vars[a]&&c._callback(a)))}},r._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof m&&t._hasPausedChild())return!0;t=t._next}return!1},r.getChildren=function(t,e,r,i){i=i||-9999999999;for(var n=[],o=this._first,a=0;o;)o._startTime=r&&(n._startTime+=t),n=n._next;if(e)for(i in o)o[i]>=r&&(o[i]+=t);return this._uncache(!0)},r._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var r=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),i=r.length,n=!1;-1<--i;)r[i]._kill(t,e)&&(n=!0);return n},r.clear=function(t){var e=this.getChildren(!1,!0,!0),r=e.length;for(this._time=this._totalTime=0;-1<--r;)e[r]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},r.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return c.prototype.invalidate.call(this)},r._enabled=function(t,e){if(t===this._gc)for(var r=this._first;r;)r._enabled(t,!0),r=r._next;return f.prototype._enabled.call(this,t,e)},r.totalTime=function(t,e,r){this._forcingPlayhead=!0;var i=c.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,i},r.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},r.totalDuration=function(t){if(arguments.length)return t&&this.totalDuration()?this.timeScale(this._totalDuration/t):this;if(this._dirty){for(var e,r,i=0,n=this,o=n._last,a=999999999999;o;)e=o._prev,o._dirty&&o.totalDuration(),o._startTime>a&&n._sortChildren&&!o._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(o,o._startTime-o._delay),n._calculatingDuration=0):a=o._startTime,o._startTime<0&&!o._paused&&(i-=o._startTime,n._timeline.smoothChildTiming&&(n._startTime+=o._startTime/n._timeScale,n._time-=o._startTime,n._totalTime-=o._startTime,n._rawPrevTime-=o._startTime),n.shiftChildren(-o._startTime,!1,-9999999999),a=0),i<(r=o._startTime+o._totalDuration/o._timeScale)&&(i=r),o=e;n._duration=n._totalDuration=i,n._dirty=!1}return this._totalDuration},r.paused=function(t){if(!1===t&&this._paused)for(var e=this._first;e;)e._startTime===this._time&&"isPause"===e.data&&(e._rawPrevTime=0),e=e._next;return c.prototype.paused.apply(this,arguments)},r.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===c._rootFramesTimeline},r.rawTime=function(t){return t&&(this._paused||this._repeat&&0>0,f._cycle&&f._cycle===f._totalTime/l&&g<=t&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=m-f._time),f._time>m?t=(f._time=m)+1e-4:f._time<0?f._time=t=0:t=f._time));if(f._hasPause&&!f._forcingPlayhead&&!e){if(p<(t=f._time)||f._repeat&&x!==f._cycle)for(i=f._first;i&&i._startTime<=t&&!u;)i._duration||"isPause"!==i.data||i.ratio||0===i._startTime&&0===f._rawPrevTime||(u=i),i=i._next;else for(i=f._last;i&&i._startTime>=t&&!u;)i._duration||"isPause"===i.data&&0f._time;)u.render(u._reversed?u.totalDuration()-(t-u._startTime)*u._timeScale:(t-u._startTime)*u._timeScale,e,r),u=u._prev;u=null,f.pause(),f._pauseTime=c}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}f._onUpdate&&(e||(E.length&&I(),f._callback("onUpdate"))),a&&(f._locked||f._gc||v!==f._startTime&&_===f._timeScale||(0===f._time||d>=f.totalDuration())&&(n&&(E.length&&I(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!e&&f.vars[a]&&f._callback(a)))}else g!==f._totalTime&&f._onUpdate&&(e||f._callback("onUpdate"))},n.getActive=function(t,e,r){var i,n,o=[],a=this.getChildren(t||null==t,e||null==t,!!r),s=0,l=a.length;for(i=0;it)return r[e].name;return null},n.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),r=e.length;-1<--r;)if(e[r].time>0||6)-1,c=[],f=[];for(r in t)d(t[r],a,e);for(n=a.length,i=0;i>0]=f,s[o]=u,l=0,f=[]);return{length:u,lengths:s,segments:c}}(this._beziers,this._timeRes);this._length=f.length,this._lengths=f.lengths,this._segments=f.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(c=this._autoRotate)for(this._initialRotations=[],c[0]instanceof Array||(this._autoRotate=c=[c]),o=c.length;-1<--o;){for(a=0;a<3;a++)i=c[o][a],this._func[i]="function"==typeof t[i]&&t[i.indexOf("set")||"function"!=typeof t["get"+i.substr(3)]?i:"get"+i.substr(3)];i=c[o][2],this._initialRotations[o]=(this._func[i]?this._func[i].call(this._target):this._target[i])||0,this._overwriteProps.push(i)}return this._startRatio=r.vars.runBackwards?1:0,!0},set:function(t){var e,r,i,n,o,a,s,l,u,h,c,f=this._segCount,p=this._func,d=this._target,m=t!==this._startRatio;if(this._timeRes){if(u=this._lengths,h=this._curSeg,c=t*this._length,i=this._li,c>this._l2&&i=c;);0===i&&cthis._s2&&i=c;);0===i&&c>0)*(1/f))*f;for(r=1-a,i=this._props.length;-1<--i;)n=this._props[i],s=(a*a*(o=this._beziers[n][e]).da+3*r*(a*o.ca+r*o.ba))*a+o.a,this._mod[n]&&(s=this._mod[n](s,d)),p[n]?d[n](s):d[n]=s;if(this._autoRotate){var g,v,_,y,b,x,w,T=this._autoRotate;for(i=T.length;-1<--i;)n=T[i][2],x=T[i][3]||0,w=!0===T[i][4]?1:k,o=this._beziers[T[i][0]],g=this._beziers[T[i][1]],o&&g&&(o=o[e],g=g[e],v=o.a+(o.b-o.a)*a,v+=((y=o.b+(o.c-o.b)*a)-v)*a,y+=(o.c+(o.d-o.c)*a-y)*a,_=g.a+(g.b-g.a)*a,_+=((b=g.b+(g.c-g.b)*a)-_)*a,b+=(g.c+(g.d-g.c)*a-b)*a,s=m?Math.atan2(b-_,y-v)*w+x:this._initialRotations[i],this._mod[n]&&(s=this._mod[n](s,d)),p[n]?d[n](s):d[n]=s)}}}),t=g.prototype,g.bezierThrough=p,g.cubicToQuadratic=S,g._autoCSS=!0,g.quadraticToCubic=function(t,e,r){return new _(t,(2*e+t)/3,(2*e+r)/3,r)},g._cssRegister=function(){var t=r.CSSPlugin;if(t){var e=t._internals,p=e._parseToProxy,d=e._setPluginRatio,m=e.CSSPropTween;e._registerComplexSpecialProp("bezier",{parser:function(t,e,r,i,n,o){e instanceof Array&&(e={values:e}),o=new g;var a,s,l,u=e.values,h=u.length-1,c=[],f={};if(h<0)return n;for(a=0;a<=h;a++)l=p(t,u[a],i,n,o,h!==a),c[a]=l.end;for(s in e)f[s]=e[s];return f.values=c,(n=new m(t,"bezier",0,0,l.pt,2)).data=l,n.plugin=o,n.setRatio=d,0===f.autoRotate&&(f.autoRotate=!0),!f.autoRotate||f.autoRotate instanceof Array||(a=!0===f.autoRotate?0:Number(f.autoRotate),f.autoRotate=null!=l.end.left?[["left","top","rotation",a,!1]]:null!=l.end.x&&[["x","y","rotation",a,!1]]),f.autoRotate&&(i._transform||i._enableTransforms(!1),l.autoRotate=i._target._gsTransform,l.proxy.rotation=l.autoRotate.rotation||0,i._overwriteProps.push("rotation")),o._onInitTween(l.proxy,f,i._tween),n}})}},t._mod=function(t){for(var e,r=this._overwriteProps,i=r.length;-1<--i;)(e=t[r[i]])&&"function"==typeof e&&(this._mod[r[i]]=e)},t._kill=function(t){var e,r,i=this._props;for(e in this._beziers)if(e in t)for(delete this._beziers[e],delete this._func[e],r=i.length;-1<--r;)i[r]===e&&i.splice(r,1);if(i=this._autoRotate)for(r=i.length;-1<--r;)t[i[r][2]]&&i.splice(r,1);return this._super._kill.call(this,t)},_gsScope._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(o,B){var d,k,S,m,U=function(){o.call(this,"css"),this._overwriteProps.length=0,this.setRatio=U.prototype.setRatio},u=_gsScope._gsDefine.globals,g={},t=U.prototype=new o("css");(t.constructor=U).version="2.1.3",U.API=2,U.defaultTransformPerspective=0,U.defaultSkewType="compensated",U.defaultSmoothOrigin=!0,t="px",U.suffixMap={top:t,right:t,bottom:t,left:t,width:t,height:t,fontSize:t,padding:t,margin:t,perspective:t,lineHeight:""};var C,v,_,j,y,P,A,E,e,r,I=/(?:\-|\.|\b)(\d|\.|e\-)+/g,O=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,b=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,n=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi,h=/(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,M=/(?:\d|\-|\+|=|#|\.)*/g,D=/opacity *= *([^)]*)/i,x=/opacity:([^;]*)/i,a=/alpha\(opacity *=.+?\)/i,w=/^(rgb|hsl)/,s=/([A-Z])/g,l=/-([a-z])/gi,T=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,c=function(t,e){return e.toUpperCase()},p=/(?:Left|Right|Width)/i,f=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,z=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,R=/,(?=[^\)]*(?:\(|$))/gi,F=/[\s,\(]/i,L=Math.PI/180,X=180/Math.PI,N={},i={style:{}},H=_gsScope.document||{createElement:function(){return i}},q=function(t,e){var r=H.createElementNS?H.createElementNS(e||"http://www.w3.org/1999/xhtml",t):H.createElement(t);return r.style?r:H.createElement(t)},W=q("div"),G=q("img"),V=U._internals={_specialProps:g},Y=(_gsScope.navigator||{}).userAgent||"",Z=(e=Y.indexOf("Android"),r=q("a"),_=-1!==Y.indexOf("Safari")&&-1===Y.indexOf("Chrome")&&(-1===e||3>16,t>>8&255,255&t];else{if(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),mt[t])r=mt[t];else if("#"===t.charAt(0))4===t.length&&(t="#"+(i=t.charAt(1))+i+(n=t.charAt(2))+n+(o=t.charAt(3))+o),r=[(t=parseInt(t.substr(1),16))>>16,t>>8&255,255&t];else if("hsl"===t.substr(0,3))if(r=f=t.match(I),e){if(-1!==t.indexOf("="))return t.match(O)}else a=Number(r[0])%360/360,s=Number(r[1])/100,i=2*(l=Number(r[2])/100)-(n=l<=.5?l*(s+1):l+s-l*s),3i--)for(;++ii--)for(;++i>0];return i.parse(t,a,n,o)}},wt=(V._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,r,i,n,o,a=this.data,s=a.proxy,l=a.firstMPT;l;)e=s[l.v],l.r?e=l.r(e):e<1e-6&&-1e-6s.length?l.length:s.length,a=0;ao.pr;)a=a._next;(o._prev=a?a._prev:l)?o._prev._next=o:s=o,(o._next=a)?a._prev=o:l=o,o=u}this._firstPT=s}return!0},t.parse=function(t,e,r,i){var n,o,a,s,l,u,h,c,f,p,d=t.style;for(n in e){if(u=e[n],o=g[n],"function"!=typeof u||o&&o.allowFunc||(u=u(E,A)),o)r=o.parse(t,u,n,this,r,i,e);else{if("--"===n.substr(0,2)){this._tween._propLookup[n]=this._addTween.call(this._tween,t.style,"setProperty",rt(t).getPropertyValue(n)+"",u+"",n,!1,n);continue}l=it(t,n,S)+"",f="string"==typeof u,"color"===n||"fill"===n||"stroke"===n||-1!==n.indexOf("Color")||f&&w.test(u)?(f||(u=(3<(u=vt(u)).length?"rgba(":"rgb(")+u.join(",")+")"),r=St(d,n,l,u,!0,"transparent",r,0,i)):f&&F.test(u)?r=St(d,n,l,u,!0,null,r,0,i):(h=(a=parseFloat(l))||0===a?l.substr((a+"").length):"",""!==l&&"auto"!==l||(h="width"===n||"height"===n?(a=ht(t,n,S),"px"):"left"===n||"top"===n?(a=ot(t,n,S),"px"):(a="opacity"!==n?0:1,"")),""===(c=(p=f&&"="===u.charAt(1))?(s=parseInt(u.charAt(0)+"1",10),u=u.substr(2),s*=parseFloat(u),u.replace(M,"")):(s=parseFloat(u),f?u.replace(M,""):""))&&(c=n in k?k[n]:h),u=s||0===s?(p?s+a:s)+c:e[n],h!==c&&(""===c&&"lineHeight"!==n||(s||0===s)&&a&&(a=nt(t,n,a,h),"%"===c?(a/=nt(t,n,100,"%")/100,!0!==e.strictUnits&&(l=a+"%")):"em"===c||"rem"===c||"vw"===c||"vh"===c?a/=nt(t,n,1,c):"px"!==c&&(s=nt(t,n,s,c),c="px"),p&&(s||0===s)&&(u=s+a+c))),p&&(s+=a),!a&&0!==a||!s&&0!==s?void 0!==d[n]&&(u||u+""!="NaN"&&null!=u)?(r=new Tt(d,n,s||a||0,0,r,-1,n,!1,0,l,u)).xs0="none"!==u||"display"!==n&&-1===n.indexOf("Style")?u:l:K("invalid "+n+" tween value: "+e[n]):(r=new Tt(d,n,a,s-a,r,0,n,!1!==C&&("px"===c||"zIndex"===n),0,l,u)).xs0=c)}i&&r&&!r.plugin&&(r.plugin=i)}return r},t.setRatio=function(t){var e,r,i,n=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;n;){if(e=n.c*t+n.s,n.r?e=n.r(e):e<1e-6&&-1e-6this._p3?this._calcEnd?1===t?0:1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},d.ease=new d(.7,.7),m.config=d.config=function(t,e,r){return new d(t,e,r)},(m=(r=l("easing.SteppedEase",function(t,e){t=t||1,this._p1=1/t,this._p2=t+(e?0:1),this._p3=e?1:0},!0)).prototype=new g).constructor=r,m.getRatio=function(t){return t<0?t=0:1<=t&&(t=.999999999),((this._p2*t|0)+this._p3)*this._p1},m.config=r.config=function(t,e){return new r(t,e)},(m=(i=l("easing.ExpoScaleEase",function(t,e,r){this._p1=Math.log(e/t),this._p2=e-t,this._p3=t,this._ease=r},!0)).prototype=new g).constructor=i,m.getRatio=function(t){return this._ease&&(t=this._ease.getRatio(t)),(this._p3*Math.exp(this._p1*t)-this._p3)/this._p2},m.config=i.config=function(t,e,r){return new i(t,e,r)},(m=(e=l("easing.RoughEase",function(t){for(var e,r,i,n,o,a,s=(t=t||{}).taper||"none",l=[],u=0,h=0|(t.points||20),c=h,f=!1!==t.randomize,p=!0===t.clamp,d=t.template instanceof g?t.template:null,m="number"==typeof t.strength?.4*t.strength:.4;-1<--c;)e=f?Math.random():1/h*c,r=d?d.getRatio(e):e,i="none"===s?m:"out"===s?(n=1-e)*n*m:"in"===s?e*e*m:e<.5?(n=2*e)*n*.5*m:(n=2*(1-e))*n*.5*m,f?r+=Math.random()*i-.5*i:c%2?r+=.5*i:r-=.5*i,p&&(1e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&t<=e.t;)e=e.prev;return(this._prev=e).v+(t-e.t)/e.gap*e.c},m.config=function(t){return new e(t)},e.ease=new e,c("Bounce",u("BounceOut",function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),u("BounceIn",function(t){return(t=1-t)<1/2.75?1-7.5625*t*t:t<2/2.75?1-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),u("BounceInOut",function(t){var e=t<.5;return(t=e?1-2*t:2*t-1)<1/2.75?t*=7.5625*t:t=t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),c("Circ",u("CircOut",function(t){return Math.sqrt(1-(t-=1)*t)}),u("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),u("CircInOut",function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),c("Elastic",(t=function(t,e,r){var i=l("easing."+t,function(t,e){this._p1=1<=t?t:1,this._p2=(e||r)/(t<1?t:1),this._p3=this._p2/a*(Math.asin(1/this._p1)||0),this._p2=a/this._p2},!0),n=i.prototype=new g;return n.constructor=i,n.getRatio=e,n.config=function(t,e){return new i(t,e)},i})("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*this._p2)+1},.3),t("ElasticIn",function(t){return-this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*this._p2)},.3),t("ElasticInOut",function(t){return(t*=2)<1?this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*this._p2)*-.5:this._p1*Math.pow(2,-10*(t-=1))*Math.sin((t-this._p3)*this._p2)*.5+1},.45)),c("Expo",u("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),u("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),u("ExpoInOut",function(t){return(t*=2)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),c("Sine",u("SineOut",function(t){return Math.sin(t*s)}),u("SineIn",function(t){return 1-Math.cos(t*s)}),u("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),l("easing.EaseLookup",{find:function(t){return g.map[t]}},!0),h(n.SlowMo,"SlowMo","ease,"),h(e,"RoughEase","ease,"),h(r,"SteppedEase","ease,"),p},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(f,p){"use strict";var d={},i=f.document,m=f.GreenSockGlobals=f.GreenSockGlobals||f,t=m[p];if(t)return"undefined"!=typeof module&&module.exports&&(module.exports=t);var e,r,n,g,v,o,a,_=function(t){var e,r=t.split("."),i=m;for(e=0;e=r&&tthis._duration?this._duration:t,e)):this._time},n.totalTime=function(t,e,r){if(v||g.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(t<0&&!r&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var i=this._totalDuration,n=this._timeline;if(io;)n=n._prev;return n?(t._next=n._next,n._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=n,this._recent=t,this._timeline&&this._uncache(!0),this},n._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),t._next=t._prev=t.timeline=null,t===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},n.render=function(t,e,r){var i,n=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;n;)i=n._next,(n._active||t>=n._startTime&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,r):n.render((t-n._startTime)*n._timeScale,e,r)),n=i},n.rawTime=function(){return v||g.wake(),this._totalTime};var R=k("TweenLite",function(t,e,r){if(M.call(this,e,r),this.render=R.prototype.render,null==t)throw"Cannot tween a null target.";this.target=t="string"!=typeof t?t:R.selector(t)||t;var i,n,o,a=t.jquery||t.length&&t!==f&&t[0]&&(t[0]===f||t[0].nodeType&&t[0].style&&!t.nodeType),s=this.vars.overwrite;if(this._overwrite=s=null==s?J[R.defaultOverwrite]:"number"==typeof s?s>>0:J[s],(a||t instanceof Array||t.push&&x(t))&&"number"!=typeof t[0])for(this._targets=o=l(t),this._propLookup=[],this._siblings=[],i=0;i=$){for(r in $=g.frame+(parseInt(R.autoSleep,10)||120),V){for(t=(e=V[r].tweens).length;-1<--t;)e[t]._gc&&e.splice(t,1);0===e.length&&delete V[r]}if((!(r=Q._first)||r._paused)&&R.autoSleep&&!K._first&&1===g._listeners.tick.length){for(;r&&r._paused;)r=r._next;r||g.sleep()}}},g.addEventListener("tick",M._updateRoot);var et=function(t,e,r){var i,n,o=t._gsTweenID;if(V[o||(t._gsTweenID=o="t"+Y++)]||(V[o]={target:t,tweens:[]}),e&&((i=V[o].tweens)[n=i.length]=e,r))for(;-1<--n;)i[n]===e&&i.splice(n,1);return V[o].tweens},rt=function(t,e,r,i){var n,o,a=t.vars.onOverwrite;return a&&(n=a(t,e,r,i)),(a=R.onOverwrite)&&(o=a(t,e,r,i)),!1!==n&&!1!==o},it=function(t,e,r,i,n){var o,a,s,l;if(1===i||4<=i){for(l=n.length,o=0;oh&&((p||!s._initted)&&h-s._startTime<=2e-8||(c[f++]=s)));for(o=f;-1<--o;)if(l=(s=c[o])._firstPT,2===i&&s._kill(r,t,e)&&(a=!0),2!==i||!s._firstPT&&s._initted&&l){if(2!==i&&!rt(s,e))continue;s._enabled(!1,!1)&&(a=!0)}return a},nt=function(t,e,r){for(var i=t._timeline,n=i._timeScale,o=t._startTime;i._timeline;){if(o+=i._startTime,n*=i._timeScale,i._paused)return-100;i=i._timeline}return e<(o/=n)?o-e:r&&o===e||!t._initted&&o-e<2e-8?y:(o+=t.totalDuration()/t._timeScale/n)>e+y?0:o-e-y};n._init=function(){var t,e,r,i,n,o,a=this.vars,s=this._overwrittenProps,l=this._duration,u=!!a.immediateRender,h=a.ease,c=this._startAt;if(a.startAt){for(i in c&&(c.render(-1,!0),c.kill()),n={},a.startAt)n[i]=a.startAt[i];if(n.data="isStart",n.overwrite=!1,n.immediateRender=!0,n.lazy=u&&!1!==a.lazy,n.startAt=n.delay=null,n.onUpdate=a.onUpdate,n.onUpdateParams=a.onUpdateParams,n.onUpdateScope=a.onUpdateScope||a.callbackScope||this,this._startAt=R.to(this.target||{},0,n),u)if(0s.pr;)i=i._next;(s._prev=i?i._prev:o)?s._prev._next=s:n=s,(s._next=i)?i._prev=s:o=s,s=a}s=e._firstPT=n}for(;s;)s.pg&&"function"==typeof s.t[t]&&s.t[t]()&&(r=!0),s=s._next;return r},ot.activate=function(t){for(var e=t.length;-1<--e;)t[e].API===ot.API&&(G[(new t[e])._propName]=t[e]);return!0},s.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,r=t.propName,i=t.priority||0,n=t.overwriteProps,o={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_mod",mod:"_mod",initAll:"_onInitAllProps"},a=k("plugins."+r.charAt(0).toUpperCase()+r.substr(1)+"Plugin",function(){ot.call(this,r,i),this._overwriteProps=n||[]},!0===t.global),s=a.prototype=new ot(r);for(e in(s.constructor=a).API=t.API,o)"function"==typeof t[e]&&(s[o[e]]=t[e]);return a.version=t.version,ot.activate([a]),a},e=f._gsQueue){for(r=0;r>0,f._cycle&&f._cycle===f._totalTime/l&&g<=t&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=m-f._time),f._time>m?t=(f._time=m)+1e-4:f._time<0?f._time=t=0:t=f._time));if(f._hasPause&&!f._forcingPlayhead&&!e){if(p<(t=f._time)||f._repeat&&x!==f._cycle)for(i=f._first;i&&i._startTime<=t&&!u;)i._duration||"isPause"!==i.data||i.ratio||0===i._startTime&&0===f._rawPrevTime||(u=i),i=i._next;else for(i=f._last;i&&i._startTime>=t&&!u;)i._duration||"isPause"===i.data&&0f._time;)u.render(u._reversed?u.totalDuration()-(t-u._startTime)*u._timeScale:(t-u._startTime)*u._timeScale,e,r),u=u._prev;u=null,f.pause(),f._pauseTime=c}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}f._onUpdate&&(e||(E.length&&I(),f._callback("onUpdate"))),a&&(f._locked||f._gc||v!==f._startTime&&_===f._timeScale||(0===f._time||d>=f.totalDuration())&&(n&&(E.length&&I(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!e&&f.vars[a]&&f._callback(a)))}else g!==f._totalTime&&f._onUpdate&&(e||f._callback("onUpdate"))},n.getActive=function(t,e,r){var i,n,o=[],a=this.getChildren(t||null==t,e||null==t,!!r),s=0,l=a.length;for(i=0;it)return r[e].name;return null},n.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),r=e.length;-1<--r;)if(e[r].timet._startTime;l._timeline;)u&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return h},r.remove=function(t){if(t instanceof c){this._remove(t,!1);var e=t._timeline=t.vars.useFrames?c._rootFramesTimeline:c._rootTimeline;return t._startTime=(t._paused?t._pauseTime:e._time)-(t._reversed?t.totalDuration()-t._totalTime:t._totalTime)/t._timeScale,this}if(t instanceof Array||t&&t.push&&p(t)){for(var r=t.length;-1<--r;)this.remove(t[r]);return this}return"string"==typeof t?this.removeLabel(t):this.kill(null,t)},r._remove=function(t,e){return f.prototype._remove.call(this,t,e),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},r.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},r.insert=r.insertMultiple=function(t,e,r,i){return this.add(t,e||0,r,i)},r.appendMultiple=function(t,e,r,i){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),r,i)},r.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},r.addPause=function(t,e,r,i){var n=d.delayedCall(0,o,r,i||this);return n.vars.onComplete=n.vars.onReverseComplete=e,n.data="isPause",this._hasPause=!0,this.add(n,t)},r.removeLabel=function(t){return delete this._labels[t],this},r.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},r._parseTimeOrLabel=function(t,e,r,i){var n,o;if(i instanceof c&&i.timeline===this)this.remove(i);else if(i&&(i instanceof Array||i.push&&p(i)))for(o=i.length;-1<--o;)i[o]instanceof c&&i[o].timeline===this&&this.remove(i[o]);if(n="number"!=typeof t||e?99999999999=t&&!l;)i._duration||"isPause"===i.data&&0c._time;)l.render(l._reversed?l.totalDuration()-(t-l._startTime)*l._timeScale:(t-l._startTime)*l._timeScale,e,r),l=l._prev;l=null,c.pause(),c._pauseTime=h}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}c._onUpdate&&(e||(v.length&&_(),c._callback("onUpdate"))),a&&(c._gc||d!==c._startTime&&m===c._timeScale||(0===c._time||p>=c.totalDuration())&&(n&&(v.length&&_(),c._timeline.autoRemoveChildren&&c._enabled(!1,!1),c._active=!1),!e&&c.vars[a]&&c._callback(a)))}},r._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof m&&t._hasPausedChild())return!0;t=t._next}return!1},r.getChildren=function(t,e,r,i){i=i||-9999999999;for(var n=[],o=this._first,a=0;o;)o._startTime=r&&(n._startTime+=t),n=n._next;if(e)for(i in o)o[i]>=r&&(o[i]+=t);return this._uncache(!0)},r._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var r=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),i=r.length,n=!1;-1<--i;)r[i]._kill(t,e)&&(n=!0);return n},r.clear=function(t){var e=this.getChildren(!1,!0,!0),r=e.length;for(this._time=this._totalTime=0;-1<--r;)e[r]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},r.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return c.prototype.invalidate.call(this)},r._enabled=function(t,e){if(t===this._gc)for(var r=this._first;r;)r._enabled(t,!0),r=r._next;return f.prototype._enabled.call(this,t,e)},r.totalTime=function(t,e,r){this._forcingPlayhead=!0;var i=c.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,i},r.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},r.totalDuration=function(t){if(arguments.length)return t&&this.totalDuration()?this.timeScale(this._totalDuration/t):this;if(this._dirty){for(var e,r,i=0,n=this,o=n._last,a=999999999999;o;)e=o._prev,o._dirty&&o.totalDuration(),o._startTime>a&&n._sortChildren&&!o._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(o,o._startTime-o._delay),n._calculatingDuration=0):a=o._startTime,o._startTime<0&&!o._paused&&(i-=o._startTime,n._timeline.smoothChildTiming&&(n._startTime+=o._startTime/n._timeScale,n._time-=o._startTime,n._totalTime-=o._startTime,n._rawPrevTime-=o._startTime),n.shiftChildren(-o._startTime,!1,-9999999999),a=0),i<(r=o._startTime+o._totalDuration/o._timeScale)&&(i=r),o=e;n._duration=n._totalDuration=i,n._dirty=!1}return this._totalDuration},r.paused=function(t){if(!1===t&&this._paused)for(var e=this._first;e;)e._startTime===this._time&&"isPause"===e.data&&(e._rawPrevTime=0),e=e._next;return c.prototype.paused.apply(this,arguments)},r.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===c._rootFramesTimeline},r.rawTime=function(t){return t&&(this._paused||this._repeat&&0+~]|"+F+")"+F+"*"),q=new RegExp("="+F+"*([^\\]'\"]*?)"+F+"*\\]","g"),W=new RegExp(N),G=new RegExp("^"+j+"$"),V={ID:new RegExp("^#("+j+")"),CLASS:new RegExp("^\\.("+j+")"),TAG:new RegExp("^("+j+"|[*])"),ATTR:new RegExp("^"+L),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+F+"*(even|odd|(([+-]|)(\\d*)n|)"+F+"*(?:([+-]|)"+F+"*(\\d+)|))"+F+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+F+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+F+"*((?:-\\d)?\\d*)"+F+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Q=/[+~]/,$=new RegExp("\\\\([\\da-f]{1,6}"+F+"?|("+F+")|.)","ig"),tt=function(t,e,r){var i="0x"+e-65536;return i!=i||r?e:i<0?String.fromCharCode(65536+i):String.fromCharCode(i>>10|55296,1023&i|56320)},et=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,rt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},it=function(){w()},nt=_t(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{M.apply(e=D.call(_.childNodes),_.childNodes),e[_.childNodes.length].nodeType}catch(t){M={apply:e.length?function(t,e){O.apply(t,D.call(e))}:function(t,e){for(var r=t.length,i=0;t[r++]=e[i++];);t.length=r-1}}}function ot(t,e,r,i){var n,o,a,s,l,u,h,c=e&&e.ownerDocument,f=e?e.nodeType:9;if(r=r||[],"string"!=typeof t||!t||1!==f&&9!==f&&11!==f)return r;if(!i&&((e?e.ownerDocument||e:_)!==T&&w(e),e=e||T,k)){if(11!==f&&(l=K.exec(t)))if(n=l[1]){if(9===f){if(!(a=e.getElementById(n)))return r;if(a.id===n)return r.push(a),r}else if(c&&(a=c.getElementById(n))&&v(e,a)&&a.id===n)return r.push(a),r}else{if(l[2])return M.apply(r,e.getElementsByTagName(t)),r;if((n=l[3])&&p.getElementsByClassName&&e.getElementsByClassName)return M.apply(r,e.getElementsByClassName(n)),r}if(p.qsa&&!C[t+" "]&&(!g||!g.test(t))){if(1!==f)c=e,h=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(et,rt):e.setAttribute("id",s=S),o=(u=d(t)).length;o--;)u[o]="#"+s+" "+vt(u[o]);h=u.join(","),c=Q.test(t)&&mt(e.parentNode)||e}if(h)try{return M.apply(r,c.querySelectorAll(h)),r}catch(t){}finally{s===S&&e.removeAttribute("id")}}}return m(t.replace(U,"$1"),e,r,i)}function at(){var i=[];return function t(e,r){return i.push(e+" ")>b.cacheLength&&delete t[i.shift()],t[e+" "]=r}}function st(t){return t[S]=!0,t}function lt(t){var e=T.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function ut(t,e){for(var r=t.split("|"),i=r.length;i--;)b.attrHandle[r[i]]=e}function ht(t,e){var r=e&&t,i=r&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(r)for(;r=r.nextSibling;)if(r===e)return-1;return t?1:-1}function ct(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function ft(r){return function(t){var e=t.nodeName.toLowerCase();return("input"===e||"button"===e)&&t.type===r}}function pt(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&nt(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function dt(a){return st(function(o){return o=+o,st(function(t,e){for(var r,i=a([],t.length,o),n=i.length;n--;)t[r=i[n]]&&(t[r]=!(e[r]=t[r]))})})}function mt(t){return t&&void 0!==t.getElementsByTagName&&t}for(t in p=ot.support={},n=ot.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},w=ot.setDocument=function(t){var e,r,i=t?t.ownerDocument||t:_;return i!==T&&9===i.nodeType&&i.documentElement&&(a=(T=i).documentElement,k=!n(T),_!==T&&(r=T.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",it,!1):r.attachEvent&&r.attachEvent("onunload",it)),p.attributes=lt(function(t){return t.className="i",!t.getAttribute("className")}),p.getElementsByTagName=lt(function(t){return t.appendChild(T.createComment("")),!t.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=lt(function(t){return a.appendChild(t).id=S,!T.getElementsByName||!T.getElementsByName(S).length}),p.getById?(b.filter.ID=function(t){var e=t.replace($,tt);return function(t){return t.getAttribute("id")===e}},b.find.ID=function(t,e){if(void 0!==e.getElementById&&k){var r=e.getElementById(t);return r?[r]:[]}}):(b.filter.ID=function(t){var r=t.replace($,tt);return function(t){var e=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return e&&e.value===r}},b.find.ID=function(t,e){if(void 0!==e.getElementById&&k){var r,i,n,o=e.getElementById(t);if(o){if((r=o.getAttributeNode("id"))&&r.value===t)return[o];for(n=e.getElementsByName(t),i=0;o=n[i++];)if((r=o.getAttributeNode("id"))&&r.value===t)return[o]}return[]}}),b.find.TAG=p.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):p.qsa?e.querySelectorAll(t):void 0}:function(t,e){var r,i=[],n=0,o=e.getElementsByTagName(t);if("*"!==t)return o;for(;r=o[n++];)1===r.nodeType&&i.push(r);return i},b.find.CLASS=p.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&k)return e.getElementsByClassName(t)},s=[],g=[],(p.qsa=J.test(T.querySelectorAll))&&(lt(function(t){a.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+F+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||g.push("\\["+F+"*(?:value|"+R+")"),t.querySelectorAll("[id~="+S+"-]").length||g.push("~="),t.querySelectorAll(":checked").length||g.push(":checked"),t.querySelectorAll("a#"+S+"+*").length||g.push(".#.+[+~]")}),lt(function(t){t.innerHTML="";var e=T.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&g.push("name"+F+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),a.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),g.push(",.*:")})),(p.matchesSelector=J.test(h=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&<(function(t){p.disconnectedMatch=h.call(t,"*"),h.call(t,"[s!='']:x"),s.push("!=",N)}),g=g.length&&new RegExp(g.join("|")),s=s.length&&new RegExp(s.join("|")),e=J.test(a.compareDocumentPosition),v=e||J.test(a.contains)?function(t,e){var r=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(r.contains?r.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},A=e?function(t,e){if(t===e)return u=!0,0;var r=!t.compareDocumentPosition-!e.compareDocumentPosition;return r||(1&(r=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!p.sortDetached&&e.compareDocumentPosition(t)===r?t===T||t.ownerDocument===_&&v(_,t)?-1:e===T||e.ownerDocument===_&&v(_,e)?1:l?z(l,t)-z(l,e):0:4&r?-1:1)}:function(t,e){if(t===e)return u=!0,0;var r,i=0,n=t.parentNode,o=e.parentNode,a=[t],s=[e];if(!n||!o)return t===T?-1:e===T?1:n?-1:o?1:l?z(l,t)-z(l,e):0;if(n===o)return ht(t,e);for(r=t;r=r.parentNode;)a.unshift(r);for(r=e;r=r.parentNode;)s.unshift(r);for(;a[i]===s[i];)i++;return i?ht(a[i],s[i]):a[i]===_?-1:s[i]===_?1:0}),T},ot.matches=function(t,e){return ot(t,null,null,e)},ot.matchesSelector=function(t,e){if((t.ownerDocument||t)!==T&&w(t),e=e.replace(q,"='$1']"),p.matchesSelector&&k&&!C[e+" "]&&(!s||!s.test(e))&&(!g||!g.test(e)))try{var r=h.call(t,e);if(r||p.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace($,tt),t[3]=(t[3]||t[4]||t[5]||"").replace($,tt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||ot.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&ot.error(t[0]),t},PSEUDO:function(t){var e,r=!t[6]&&t[2];return V.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":r&&W.test(r)&&(e=d(r,!0))&&(e=r.indexOf(")",r.length-e)-r.length)&&(t[0]=t[0].slice(0,e),t[2]=r.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace($,tt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=f[t+" "];return e||(e=new RegExp("(^|"+F+")"+t+"("+F+"|$)"))&&f(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(r,i,n){return function(t){var e=ot.attr(t,r);return null==e?"!="===i:!i||(e+="","="===i?e===n:"!="===i?e!==n:"^="===i?n&&0===e.indexOf(n):"*="===i?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function E(t,r,i){return _(r)?S.grep(t,function(t,e){return!!r.call(t,e,t)!==i}):r.nodeType?S.grep(t,function(t){return t===r!==i}):"string"!=typeof r?S.grep(t,function(t){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(t,e,r){var i,n;if(!t)return this;if(r=r||I,"string"!=typeof t)return t.nodeType?(this[0]=t,this.length=1,this):_(t)?void 0!==r.ready?r.ready(t):t(S):S.makeArray(t,this);if(!(i="<"===t[0]&&">"===t[t.length-1]&&3<=t.length?[null,t,null]:O.exec(t))||!i[1]&&e)return!e||e.jquery?(e||r).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof S?e[0]:e,S.merge(this,S.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:k,!0)),A.test(i[1])&&S.isPlainObject(e))for(i in e)_(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(n=k.getElementById(i[2]))&&(this[0]=n,this.length=1),this}).prototype=S.fn,I=S(k);var M=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};function z(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}S.fn.extend({has:function(t){var e=S(t,this),r=e.length;return this.filter(function(){for(var t=0;t\x20\t\r\n\f]+)/i,ht=/^$|^module$|\/(?:java|ecma)script/i,ct={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ft(t,e){var r;return r=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&C(t,e)?S.merge([t],r):r}function pt(t,e){for(var r=0,i=t.length;rx",v.noCloneChecked=!!dt.cloneNode(!0).lastChild.defaultValue;var _t=k.documentElement,yt=/^key/,bt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,xt=/^([^.]*)(?:\.(.+)|)/;function wt(){return!0}function Tt(){return!1}function kt(){try{return k.activeElement}catch(t){}}function St(t,e,r,i,n,o){var a,s;if("object"==typeof e){for(s in"string"!=typeof r&&(i=i||r,r=void 0),e)St(t,s,r,i,e[s],o);return t}if(null==i&&null==n?(n=r,i=r=void 0):null==n&&("string"==typeof r?(n=i,i=void 0):(n=i,i=r,r=void 0)),!1===n)n=Tt;else if(!n)return t;return 1===o&&(a=n,(n=function(t){return S().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),t.each(function(){S.event.add(this,e,n,i,r)})}S.event={global:{},add:function(e,t,r,i,n){var o,a,s,l,u,h,c,f,p,d,m,g=Z.get(e);if(g)for(r.handler&&(r=(o=r).handler,n=o.selector),n&&S.find.matchesSelector(_t,n),r.guid||(r.guid=S.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return void 0!==S&&S.event.triggered!==t.type?S.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(R)||[""]).length;u--;)p=m=(s=xt.exec(t[u])||[])[1],d=(s[2]||"").split(".").sort(),p&&(c=S.event.special[p]||{},p=(n?c.delegateType:c.bindType)||p,c=S.event.special[p]||{},h=S.extend({type:p,origType:m,data:i,handler:r,guid:r.guid,selector:n,needsContext:n&&S.expr.match.needsContext.test(n),namespace:d.join(".")},o),(f=l[p])||((f=l[p]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,i,d,a)||e.addEventListener&&e.addEventListener(p,a)),c.add&&(c.add.call(e,h),h.handler.guid||(h.handler.guid=r.guid)),n?f.splice(f.delegateCount++,0,h):f.push(h),S.event.global[p]=!0)},remove:function(t,e,r,i,n){var o,a,s,l,u,h,c,f,p,d,m,g=Z.hasData(t)&&Z.get(t);if(g&&(l=g.events)){for(u=(e=(e||"").match(R)||[""]).length;u--;)if(p=m=(s=xt.exec(e[u])||[])[1],d=(s[2]||"").split(".").sort(),p){for(c=S.event.special[p]||{},f=l[p=(i?c.delegateType:c.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=f.length;o--;)h=f[o],!n&&m!==h.origType||r&&r.guid!==h.guid||s&&!s.test(h.namespace)||i&&i!==h.selector&&("**"!==i||!h.selector)||(f.splice(o,1),h.selector&&f.delegateCount--,c.remove&&c.remove.call(t,h));a&&!f.length&&(c.teardown&&!1!==c.teardown.call(t,d,g.handle)||S.removeEvent(t,p,g.handle),delete l[p])}else for(p in l)S.event.remove(t,p+e[u],r,i,!0);S.isEmptyObject(l)&&Z.remove(t,"handle events")}},dispatch:function(t){var e,r,i,n,o,a,s=S.event.fix(t),l=new Array(arguments.length),u=(Z.get(this,"events")||{})[s.type]||[],h=S.event.special[s.type]||{};for(l[0]=s,e=1;e\x20\t\r\n\f]*)[^>]*)\/>/gi,Ct=/\s*$/g;function It(t,e){return C(t,"table")&&C(11!==e.nodeType?e:e.firstChild,"tr")&&S(t).children("tbody")[0]||t}function Ot(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Mt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Dt(t,e){var r,i,n,o,a,s,l,u;if(1===e.nodeType){if(Z.hasData(t)&&(o=Z.access(t),a=Z.set(e,o),u=o.events))for(n in delete a.handle,a.events={},u)for(r=0,i=u[n].length;r")},clone:function(t,e,r){var i,n,o,a,s,l,u,h=t.cloneNode(!0),c=S.contains(t.ownerDocument,t);if(!(v.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||S.isXMLDoc(t)))for(a=ft(h),i=0,n=(o=ft(t)).length;i").prop({charset:r.scriptCharset,src:r.url}).on("load error",n=function(t){i.remove(),n=null,t&&e("error"===t.type?404:200,t.type)}),k.head.appendChild(i[0])},abort:function(){n&&n()}}});var Xe,He=[],qe=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=He.pop()||S.expando+"_"+be++;return this[t]=!0,t}}),S.ajaxPrefilter("json jsonp",function(t,e,r){var i,n,o,a=!1!==t.jsonp&&(qe.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&qe.test(t.data)&&"data");if(a||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=_(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(qe,"$1"+i):!1!==t.jsonp&&(t.url+=(xe.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return o||S.error(i+" was not called"),o[0]},t.dataTypes[0]="json",n=T[i],T[i]=function(){o=arguments},r.always(function(){void 0===n?S(T).removeProp(i):T[i]=n,t[i]&&(t.jsonpCallback=e.jsonpCallback,He.push(i)),o&&_(n)&&n(o[0]),o=n=void 0}),"script"}),v.createHTMLDocument=((Xe=k.implementation.createHTMLDocument("").body).innerHTML="
",2===Xe.childNodes.length),S.parseHTML=function(t,e,r){return"string"!=typeof t?[]:("boolean"==typeof e&&(r=e,e=!1),e||(v.createHTMLDocument?((i=(e=k.implementation.createHTMLDocument("")).createElement("base")).href=k.location.href,e.head.appendChild(i)):e=k),o=!r&&[],(n=A.exec(t))?[e.createElement(n[1])]:(n=vt([t],e,o),o&&o.length&&S(o).remove(),S.merge([],n.childNodes)));var i,n,o},S.fn.load=function(t,e,r){var i,n,o,a=this,s=t.indexOf(" ");return-1").append(S.parseHTML(t)).find(i):t)}).always(r&&function(t,e){a.each(function(){r.apply(this,o||[t.responseText,e,t])})}),this},S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){S.fn[e]=function(t){return this.on(e,t)}}),S.expr.pseudos.animated=function(e){return S.grep(S.timers,function(t){return e===t.elem}).length},S.offset={setOffset:function(t,e,r){var i,n,o,a,s,l,u=S.css(t,"position"),h=S(t),c={};"static"===u&&(t.style.position="relative"),s=h.offset(),o=S.css(t,"top"),l=S.css(t,"left"),n=("absolute"===u||"fixed"===u)&&-1<(o+l).indexOf("auto")?(a=(i=h.position()).top,i.left):(a=parseFloat(o)||0,parseFloat(l)||0),_(e)&&(e=e.call(t,r,S.extend({},s))),null!=e.top&&(c.top=e.top-s.top+a),null!=e.left&&(c.left=e.left-s.left+n),"using"in e?e.using.call(t,c):h.css(c)}},S.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){S.offset.setOffset(this,e,t)});var t,r,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),r=i.ownerDocument.defaultView,{top:t.top+r.pageYOffset,left:t.left+r.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,r,i=this[0],n={top:0,left:0};if("fixed"===S.css(i,"position"))e=i.getBoundingClientRect();else{for(e=this.offset(),r=i.ownerDocument,t=i.offsetParent||r.documentElement;t&&(t===r.body||t===r.documentElement)&&"static"===S.css(t,"position");)t=t.parentNode;t&&t!==i&&1===t.nodeType&&((n=S(t).offset()).top+=S.css(t,"borderTopWidth",!0),n.left+=S.css(t,"borderLeftWidth",!0))}return{top:e.top-n.top-S.css(i,"marginTop",!0),left:e.left-n.left-S.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===S.css(t,"position");)t=t.offsetParent;return t||_t})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var o="pageYOffset"===n;S.fn[e]=function(t){return X(this,function(t,e,r){var i;if(y(t)?i=t:9===t.nodeType&&(i=t.defaultView),void 0===r)return i?i[n]:t[e];i?i.scrollTo(o?i.pageXOffset:r,o?r:i.pageYOffset):t[e]=r},e,t,arguments.length)}}),S.each(["top","left"],function(t,r){S.cssHooks[r]=Bt(v.pixelPosition,function(t,e){if(e)return e=Nt(t,r),Ft.test(e)?S(t).position()[r]+"px":e})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(i,o){S.fn[o]=function(t,e){var r=arguments.length&&(i||"boolean"!=typeof t),n=i||(!0===t||!0===e?"margin":"border");return X(this,function(t,e,r){var i;return y(t)?0===o.indexOf("outer")?t["inner"+a]:t.document.documentElement["client"+a]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+a],i["scroll"+a],t.body["offset"+a],i["offset"+a],i["client"+a])):void 0===r?S.css(t,e,n):S.style(t,e,r,n)},s,r?t:void 0,r)}})}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,r){S.fn[r]=function(t,e){return 0>>0,i=(r*=i)>>>0,i+=4294967296*(r-=i)}return 2.3283064365386963e-10*(i>>>0)}}();e.next=function(){var t=2091639*e.s0+2.3283064365386963e-10*e.c;return e.s0=e.s1,e.s1=e.s2,e.s2=t-(e.c=0|t)},e.c=1,e.s0=r(" "),e.s1=r(" "),e.s2=r(" "),e.s0-=r(t),e.s0<0&&(e.s0+=1),e.s1-=r(t),e.s1<0&&(e.s1+=1),e.s2-=r(t),e.s2<0&&(e.s2+=1),r=null}function a(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function i(t,e){var r=new o(t),i=e&&e.state,n=r.next;return n.int32=function(){return 4294967296*r.next()|0},n.double=function(){return n()+11102230246251565e-32*(2097152*n()|0)},n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.alea=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],16:[function(t,e,r){!function(t,e,r){function o(t){var n=this,e="";n.next=function(){var t=n.b,e=n.c,r=n.d,i=n.a;return t=t<<25^t>>>7^e,e=e-r|0,r=r<<24^r>>>8^i,i=i-t|0,n.b=t=t<<20^t>>>12^e,n.c=e=e-r|0,n.d=r<<16^e>>>16^i,n.a=i-t|0},n.a=0,n.b=0,n.c=-1640531527,n.d=1367130551,t===Math.floor(t)?(n.a=t/4294967296|0,n.b=0|t):e+=t;for(var r=0;r>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.tychei=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],17:[function(t,e,r){!function(t,e,r){function o(t){var e=this,r="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:r+=t;for(var i=0;i>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xor128=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],18:[function(t,e,r){!function(t,e,r){function o(t){var o=this;o.next=function(){var t,e,r=o.w,i=o.X,n=o.i;return o.w=r=r+1640531527|0,e=i[n+34&127],t=i[n=n+1&127],e^=e<<13,t^=t<<17,e^=e>>>15,t^=t>>>12,e=i[n]=e^t,o.i=n,e+(r^r>>>16)|0},function(t,e){var r,i,n,o,a,s=[],l=128;for(e===(0|e)?(i=e,e=null):(e+="\0",i=0,l=Math.max(l,e.length)),n=0,o=-32;o>>15,i^=i<<4,i^=i>>>13,0<=o&&(a=a+1640531527|0,n=0==(r=s[127&o]^=i+a)?n+1:0);for(128<=n&&(s[127&(e&&e.length||0)]=-1),n=127,o=512;0>>15,r^=r>>>12,s[n]=i^r;t.w=a,t.X=s,t.i=n}(o,t)}function a(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function i(t,e){null==t&&(t=+new Date);var r=new o(t),i=e&&e.state,n=function(){return(r.next()>>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&(i.X&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xor4096=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],19:[function(t,e,r){!function(t,e,r){function o(t){var n=this;n.next=function(){var t,e,r=n.x,i=n.i;return t=r[i],e=(t^=t>>>7)^t<<24,e^=(t=r[i+1&7])^t>>>10,e^=(t=r[i+3&7])^t>>>3,e^=(t=r[i+4&7])^t<<7,t=r[i+7&7],e^=(t^=t<<13)^t<<9,r[i]=e,n.i=i+1&7,e},function(t,e){var r,i=[];if(e===(0|e))i[0]=e;else for(e=""+e,r=0;r>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&(i.x&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xorshift7=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],20:[function(t,e,r){!function(t,e,r){function o(t){var e=this,r="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,t===((e.v=0)|t)?e.x=t:r+=t;for(var i=0;i>>4),e.next()}function a(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function i(t,e){var r=new o(t),i=e&&e.state,n=function(){return(r.next()>>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xorwow=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],21:[function(e,r,t){!function(s,l){var u,h=this,c=256,f=6,p="random",d=l.pow(c,f),m=l.pow(2,52),g=2*m,v=c-1;function t(t,e,r){var i=[],n=b(function t(e,r){var i,n=[],o=typeof e;if(r&&"object"==o)for(i in e)try{n.push(t(e[i],r-1))}catch(t){}return n.length?n:"string"==o?e:e+"\0"}((e=1==e?{entropy:!0}:e||{}).entropy?[t,x(s)]:null==t?function(){try{var t;return u&&(t=u.randomBytes)?t=t(c):(t=new Uint8Array(c),(h.crypto||h.msCrypto).getRandomValues(t)),x(t)}catch(t){var e=h.navigator,r=e&&e.plugins;return[+new Date,h,r,h.screen,x(s)]}}():t,3),i),o=new _(i),a=function(){for(var t=o.g(f),e=d,r=0;t>>=1;return(t+r)/e};return a.int32=function(){return 0|o.g(4)},a.quick=function(){return o.g(4)/4294967296},a.double=a,b(x(o.S),s),(e.pass||r||function(t,e,r,i){return i&&(i.S&&y(i,o),t.state=function(){return y(o,{})}),r?(l[p]=t,e):t})(a,n,"global"in e?e.global:this==l,e.state)}function _(t){var e,r=t.length,a=this,i=0,n=a.i=a.j=0,o=a.S=[];for(r||(t=[r++]);iMath.PI?c-r:r}function g(t){return t-c*Math.floor(t/c)}e.exports={UP:o,DOWN:a,LEFT:s,RIGHT:0,NORTH:l,SOUTH:u,WEST:h,EAST:0,PI_2:c,PI_QUARTER:f,PI_HALF:p,toDegrees:function(t){return t*i},toRadians:function(t){return t*n},isAngleBetween:function(t,e,r){if(((r-e)%c+c)%c>=Math.PI){var i=e;e=r,r=i}return e<=r?e<=t&&t<=r:e<=t||t<=r},differenceAnglesSign:d,differenceAngles:m,shortestAngle:function(t,e){return m(e,t)*d(e,t)+t},normalize:g,angleTwoPoints:function(){return 4===arguments.length?Math.atan2(arguments[3]-arguments[1],arguments[2]-arguments[0]):Math.atan2(arguments[1].y-arguments[0].y,arguments[1].x-arguments[0].x)},distanceTwoPoints:function(){return 2===arguments.length?Math.sqrt(Math.pow(arguments[1].x-arguments[0].x,2)+Math.pow(arguments[1].y-arguments[0].y,2)):Math.sqrt(Math.pow(arguments[2]-arguments[0],2)+Math.pow(arguments[3]-arguments[1],2))},distanceTwoPointsSquared:function(){return 2===arguments.length?Math.pow(arguments[1].x-arguments[0].x,2)+Math.pow(arguments[1].y-arguments[0].y,2):Math.pow(arguments[2]-arguments[0],2)+Math.pow(arguments[3]-arguments[1],2)},closestAngle:function(t){var e=m(t,s),r=m(t,0),i=m(t,o),n=m(t,a);return e<=r&&e<=i&&e<=n?s:r<=i&&r<=n?0:i<=n?o:a},equals:function(t,e,r){return r?m(t,e)>16)+t*(r>>16)<<16|i*(e>>8&255)+t*(r>>8&255)<<8|i*(255&e)+t*(255&r)},random:function(t,e){function r(){return s.range(t,e)}var i=s.pick([{r:1,g:1,b:1},{r:1,g:1,b:0},{r:1,g:0,b:1},{r:0,g:1,b:1},{r:1,g:0,b:0},{r:0,g:1,b:0},{r:0,g:0,b:1}]);return t=t||0,e=e||255,this.rgbToHex(i.r?r():0,i.g?r():0,i.b?r():0)},randomHSL:function(t,e,r,i,n,o){var a={h:s.range(t,e),s:s.range(r,i,!0),l:s.range(n,o,!0)};return this.hslToHex(a)},randomGoldenRatioHSL:function(t,e,r){for(var i=s.get(1,!0),n=[],o=0;o=this.time?(this.parent.x=e.end,this.toX=null,this.parent.emit("bounce-x-end",this.parent)):this.parent.x=this.ease(e.time,e.start,e.delta,this.time),this.parent.dirty=!0}if(this.toY){var r=this.toY;r.time+=t,this.parent.emit("moved",{viewport:this.parent,type:"bounce-y"}),r.time>=this.time?(this.parent.y=r.end,this.toY=null,this.parent.emit("bounce-y-end",this.parent)):this.parent.y=this.ease(r.time,r.start,r.delta,this.time),this.parent.dirty=!0}}}},{key:"calcUnderflowX",value:function(){var t=void 0;switch(this.underflowX){case-1:t=0;break;case 1:t=this.parent.screenWidth-this.parent.screenWorldWidth;break;default:t=(this.parent.screenWidth-this.parent.screenWorldWidth)/2}return t}},{key:"calcUnderflowY",value:function(){var t=void 0;switch(this.underflowY){case-1:t=0;break;case 1:t=this.parent.screenHeight-this.parent.screenWorldHeight;break;default:t=(this.parent.screenHeight-this.parent.screenWorldHeight)/2}return t}},{key:"bounce",value:function(){if(!this.paused){var t=void 0,e=this.parent.plugins.decelerate;e&&(e.x||e.y)&&(e.x&&e.percentChangeX===e.friction||e.y&&e.percentChangeY===e.friction)&&(((t=this.parent.OOB()).left&&this.left||t.right&&this.right)&&(e.percentChangeX=this.friction),(t.top&&this.top||t.bottom&&this.bottom)&&(e.percentChangeY=this.friction));var r=this.parent.plugins.drag||{},i=this.parent.plugins.pinch||{};if(e=e||{},!(r.active||i.active||this.toX&&this.toY||e.x&&e.y)){var n=(t=t||this.parent.OOB()).cornerPoint;if(!this.toX&&!e.x){var o=null;t.left&&this.left?o=this.parent.screenWorldWidththis.maxWidth&&(this.parent.fitWidth(this.maxWidth),t=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})),this.minHeight&&ethis.maxHeight&&(this.parent.fitHeight(this.maxHeight),this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"}))}}}]),i}()},{"./plugin":9}],3:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r(!0===this.right?this.parent.worldWidth:this.right)&&(this.parent.x=-(!0===this.right?this.parent.worldWidth:this.right)*this.parent.scale.x+this.parent.screenWidth,e=!(t.x=0));e&&this.parent.emit("moved",{viewport:this.parent,type:"clamp-x"})}if(null!==this.top||null!==this.bottom){var r=void 0;if(this.parent.screenWorldHeight(!0===this.bottom?this.parent.worldHeight:this.bottom)&&(this.parent.y=-(!0===this.bottom?this.parent.worldHeight:this.bottom)*this.parent.scale.y+this.parent.screenHeight,r=!(t.y=0));r&&this.parent.emit("moved",{viewport:this.parent,type:"clamp-y"})}}}}]),i}()},{"./plugin":9,"./utils":12}],4:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=t-100){var s=t-a.time;this.x=(this.parent.x-a.x)/s,this.y=(this.parent.y-a.y)/s,this.percentChangeX=this.percentChangeY=this.friction;break}}}catch(t){r=!0,i=t}finally{try{!e&&o.return&&o.return()}finally{if(r)throw i}}}}},{key:"activate",value:function(t){void 0!==(t=t||{}).x&&(this.x=t.x,this.percentChangeX=this.friction),void 0!==t.y&&(this.y=t.y,this.percentChangeY=this.friction)}},{key:"update",value:function(t){if(!this.paused){var e=void 0;this.x&&(this.parent.x+=this.x*t,this.x*=this.percentChangeX,Math.abs(this.x)this.parent.worldWidth&&(this.parent.x=-this.parent.worldWidth*this.parent.scale.x+this.parent.screenWidth,t.x=0);if("x"!==this.clampWheel)if(this.parent.screenWorldHeightthis.parent.worldHeight&&(this.parent.y=-this.parent.worldHeight*this.parent.scale.y+this.parent.screenHeight,t.y=0)}},{key:"active",get:function(){return this.moved}}]),i}()},{"./plugin":9,"./utils":12}],6:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;rthis.radius))return;var i=Math.atan2(this.target.y-t.y,this.target.x-t.x);e=this.target.x-Math.cos(i)*this.radius,r=this.target.y-Math.sin(i)*this.radius}if(this.speed){var n=e-t.x,o=r-t.y;if(n||o){var a=Math.atan2(r-t.y,e-t.x),s=Math.cos(a)*this.speed,l=Math.sin(a)*this.speed,u=Math.abs(s)>Math.abs(n)?e:t.x+s,h=Math.abs(l)>Math.abs(o)?r:t.y+l;this.parent.moveCenter(u,h),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}else this.parent.moveCenter(e,r),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}}]),n}()},{"./plugin":9}],7:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=this.radiusSquared){var n=Math.atan2(i.y-r,i.x-e);this.linear?(this.horizontal=Math.round(Math.cos(n))*this.speed*this.reverse*.06,this.vertical=Math.round(Math.sin(n))*this.speed*this.reverse*.06):(this.horizontal=Math.cos(n)*this.speed*this.reverse*.06,this.vertical=Math.sin(n)*this.speed*this.reverse*.06)}else this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=0}else o.exists(this.left)&&ethis.right?this.horizontal=-1*this.reverse*this.speed*.06:(this.decelerateHorizontal(),this.horizontal=0),o.exists(this.top)&&rthis.bottom?this.vertical=-1*this.reverse*this.speed*.06:(this.decelerateVertical(),this.vertical=0)}}},{key:"decelerateHorizontal",value:function(){var t=this.parent.plugins.decelerate;this.horizontal&&t&&!this.noDecelerate&&t.activate({x:this.horizontal*this.speed*this.reverse/(1e3/60)})}},{key:"decelerateVertical",value:function(){var t=this.parent.plugins.decelerate;this.vertical&&t&&!this.noDecelerate&&t.activate({y:this.vertical*this.speed*this.reverse/(1e3/60)})}},{key:"up",value:function(){this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=null}},{key:"update",value:function(){if(!this.paused&&(this.horizontal||this.vertical)){var t=this.parent.center;this.horizontal&&(t.x+=this.horizontal*this.speed),this.vertical&&(t.y+=this.vertical*this.speed),this.parent.moveCenter(t),this.parent.emit("moved",{viewport:this.parent,type:"mouse-edges"})}}}]),i}()},{"./plugin":9,"./utils":12}],8:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=this.time)this.parent.scale.set(this.x_scale,this.y_scale),this.removeOnComplete&&this.parent.removePlugin("snap-zoom"),this.parent.emit("snap-zoom-end",this.parent),this.snapping=null;else{var i=this.snapping;this.parent.scale.x=this.ease(i.time,i.startX,i.deltaX,this.time),this.parent.scale.y=this.ease(i.time,i.startY,i.deltaY,this.time)}var n=this.parent.plugins["clamp-zoom"];n&&n.clamp(),this.noMove||(this.center?this.parent.moveCenter(this.center):this.parent.moveCenter(e))}}else this.parent.scale.x===this.x_scale&&this.parent.scale.y===this.y_scale||this.createSnapping()}}},{key:"resume",value:function(){this.snapping=null,function t(e,r,i){null===e&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,r);if(void 0===n){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,r,i)}if("value"in n)return n.value;var a=n.get;return void 0!==a?a.call(i):void 0}(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"resume",this).call(this)}}]),i}()},{"./plugin":9,"./utils":12}],11:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;rthis.time)r=!0,i=this.startX+this.deltaX,n=this.startY+this.deltaY;else{var o=this.ease(e.time,0,1,this.time);i=this.startX+this.deltaX*o,n=this.startY+this.deltaY*o}this.topLeft?this.parent.moveCorner(i,n):this.parent.moveCenter(i,n),this.parent.emit("moved",{viewport:this.parent,type:"snap"}),r&&(this.removeOnComplete&&this.parent.removePlugin("snap"),this.parent.emit("snap-end",this.parent),this.snapping=null)}else{var a=this.topLeft?this.parent.corner:this.parent.center;a.x===this.x&&a.y===this.y||this.snapStart()}}}]),o}()},{"./plugin":9,"./utils":12}],12:[function(t,e,r){"use strict";var i=t("penner");function n(t){return null!=t}e.exports={exists:n,defaults:function(t,e){return null!=t?t:e},ease:function(t,e){return n(t)?"function"==typeof t?t:"string"==typeof t?i[t]:void 0:i[e]}}},{penner:15}],13:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;r=this.threshold}},{key:"move",value:function(t){if(!this.pause){var e=!0,r=!1,i=void 0;try{for(var n,o=this.pluginsList[Symbol.iterator]();!(e=(n=o.next()).done);e=!0){n.value.move(t)}}catch(t){r=!0,i=t}finally{try{!e&&o.return&&o.return()}finally{if(r)throw i}}if(this.clickedAvailable){var a=t.data.global.x-this.last.x,s=t.data.global.y-this.last.y;(this.checkThreshold(a)||this.checkThreshold(s))&&(this.clickedAvailable=!1)}}}},{key:"up",value:function(t){if(!this.pause){if(t.data.originalEvent instanceof MouseEvent&&0==t.data.originalEvent.button&&(this.leftDown=!1),"mouse"!==t.data.pointerType)for(var e=0;ethis._worldWidth,t.top=this.top<0,t.bottom=this.bottom>this._worldHeight,t.cornerPoint={x:this._worldWidth*this.scale.x-this._screenWidth,y:this._worldHeight*this.scale.y-this._screenHeight},t}},{key:"countDownPointers",value:function(){return(this.leftDown?1:0)+this.touches.length}},{key:"getTouchPointers",value:function(){var t=[],e=this.trackedPointers;for(var r in e){var i=e[r];-1!==this.touches.indexOf(i.pointerId)&&t.push(i)}return t}},{key:"getPointers",value:function(){var t=[],e=this.trackedPointers;for(var r in e)t.push(e[r]);return t}},{key:"_reset",value:function(){this.plugins.bounce&&(this.plugins.bounce.reset(),this.plugins.bounce.bounce()),this.plugins.decelerate&&this.plugins.decelerate.reset(),this.plugins.snap&&this.plugins.snap.reset(),this.plugins.clamp&&this.plugins.clamp.update(),this.plugins["clamp-zoom"]&&this.plugins["clamp-zoom"].clamp(),this.dirty=!0}},{key:"removePlugin",value:function(t){this.plugins[t]&&(this.plugins[t]=null,this.emit(t+"-remove"),this.pluginsSort())}},{key:"pausePlugin",value:function(t){this.plugins[t]&&this.plugins[t].pause()}},{key:"resumePlugin",value:function(t){this.plugins[t]&&this.plugins[t].resume()}},{key:"pluginsSort",value:function(){var t=!0,e=!(this.pluginsList=[]),r=void 0;try{for(var i,n=g[Symbol.iterator]();!(t=(i=n.next()).done);t=!0){var o=i.value;this.plugins[o]&&this.pluginsList.push(this.plugins[o])}}catch(t){e=!0,r=t}finally{try{!t&&n.return&&n.return()}finally{if(e)throw r}}}},{key:"drag",value:function(t){return this.plugins.drag=new o(this,t),this.pluginsSort(),this}},{key:"clamp",value:function(t){return this.plugins.clamp=new s(this,t),this.pluginsSort(),this}},{key:"decelerate",value:function(t){return this.plugins.decelerate=new u(this,t),this.pluginsSort(),this}},{key:"bounce",value:function(t){return this.plugins.bounce=new h(this,t),this.pluginsSort(),this}},{key:"pinch",value:function(t){return this.plugins.pinch=new a(this,t),this.pluginsSort(),this}},{key:"snap",value:function(t,e,r){return this.plugins.snap=new c(this,t,e,r),this.pluginsSort(),this}},{key:"follow",value:function(t,e){return this.plugins.follow=new p(this,t,e),this.pluginsSort(),this}},{key:"wheel",value:function(t){return this.plugins.wheel=new d(this,t),this.pluginsSort(),this}},{key:"clampZoom",value:function(t){return this.plugins["clamp-zoom"]=new l(this,t),this.pluginsSort(),this}},{key:"mouseEdges",value:function(t){return this.plugins["mouse-edges"]=new m(this,t),this.pluginsSort(),this}},{key:"screenWidth",get:function(){return this._screenWidth},set:function(t){this._screenWidth=t}},{key:"screenHeight",get:function(){return this._screenHeight},set:function(t){this._screenHeight=t}},{key:"worldWidth",get:function(){return this._worldWidth?this._worldWidth:this.width},set:function(t){this._worldWidth=t,this.resizePlugins()}},{key:"worldHeight",get:function(){return this._worldHeight?this._worldHeight:this.height},set:function(t){this._worldHeight=t,this.resizePlugins()}},{key:"worldScreenWidth",get:function(){return this._screenWidth/this.scale.x}},{key:"worldScreenHeight",get:function(){return this._screenHeight/this.scale.y}},{key:"screenWorldWidth",get:function(){return this._worldWidth*this.scale.x}},{key:"screenWorldHeight",get:function(){return this._worldHeight*this.scale.y}},{key:"center",get:function(){return{x:this.worldScreenWidth/2-this.x/this.scale.x,y:this.worldScreenHeight/2-this.y/this.scale.y}},set:function(t){this.moveCenter(t)}},{key:"corner",get:function(){return{x:-this.x/this.scale.x,y:-this.y/this.scale.y}},set:function(t){this.moveCorner(t)}},{key:"right",get:function(){return-this.x/this.scale.x+this.worldScreenWidth},set:function(t){this.x=-t*this.scale.x+this.screenWidth,this._reset()}},{key:"left",get:function(){return-this.x/this.scale.x},set:function(t){this.x=-t*this.scale.x,this._reset()}},{key:"top",get:function(){return-this.y/this.scale.y},set:function(t){this.y=-t*this.scale.y,this._reset()}},{key:"bottom",get:function(){return-this.y/this.scale.y+this.worldScreenHeight},set:function(t){this.y=-t*this.scale.y+this.screenHeight,this._reset()}},{key:"dirty",get:function(){return this._dirty},set:function(t){this._dirty=t}},{key:"forceHitArea",get:function(){return this._forceHitArea},set:function(t){t?(this._forceHitArea=t,this.hitArea=t):(this._forceHitArea=!1,this.hitArea=new PIXI.Rectangle(0,0,this.worldWidth,this.worldHeight))}},{key:"pause",get:function(){return this._pause},set:function(t){(this._pause=t)&&(this.touches=[],this.leftDown=!1)}}]),r}();PIXI.extras.Viewport=v,e.exports=v},{"./bounce":1,"./clamp":3,"./clamp-zoom":2,"./decelerate":4,"./drag":5,"./follow":6,"./mouse-edges":7,"./pinch":8,"./snap":11,"./snap-zoom":10,"./utils":12,"./wheel":14}],14:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;re&&(r[i]=this.hyphenate(r[i]).join("­"));return r.join("")},e.prototype.hyphenate=function(t){var e,r,i,n,o,a,s,l,u,h=[],c=[],f=t.toLowerCase(),p=Math.max,d=this.trie,m=[""];if(this.exceptions.hasOwnProperty(f))return t.match(this.exceptions[f]).slice(1);if(-1!==t.indexOf("­"))return[t];for(e=(t="_"+t+"_").toLowerCase().split(""),r=t.split(""),s=e.length,i=0;ithis.leftMin&&i element, no mouseup gets dispatched! So we listen for a "change" event instead. _dispatchEvent(self, "pressInit", "onPressInit"); @@ -3689,7 +3689,7 @@ var _gsScope = (typeof(module) !== "undefined" && module.exports && typeof(globa p.constructor = Draggable; p.pointerX = p.pointerY = p.startX = p.startY = p.deltaX = p.deltaY = 0; p.isDragging = p.isPressed = false; - Draggable.version = "0.17.0"; + Draggable.version = "0.17.1"; Draggable.zIndex = 1000; _addListener(_doc, "touchcancel", function() { diff --git a/lib/3rdparty/gsap/src/bonus-files-for-npm-users/umd/MorphSVGPlugin.js b/lib/3rdparty/gsap/src/bonus-files-for-npm-users/umd/MorphSVGPlugin.js index b0a8aa2..a676f32 100644 --- a/lib/3rdparty/gsap/src/bonus-files-for-npm-users/umd/MorphSVGPlugin.js +++ b/lib/3rdparty/gsap/src/bonus-files-for-npm-users/umd/MorphSVGPlugin.js @@ -1,6 +1,6 @@ /*! - * VERSION: 0.9.0 - * DATE: 2019-02-07 + * VERSION: 0.9.1 + * DATE: 2019-02-21 * UPDATES AND DOCS AT: http://greensock.com * * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. @@ -906,12 +906,12 @@ var _gsScope = (typeof(module) !== "undefined" && module.exports && typeof(globa propName: "morphSVG", API: 2, global: true, - version: "0.9.0", + version: "0.9.1", overwriteProps: ["morphSVG"], //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run. init: function(target, value, tween, index) { - var cs = window.getComputedStyle(target), + var cs = target.nodeType ? window.getComputedStyle(target) : {}, fill = cs.fill + "", fillSafe = !(fill === "none" || (fill.match(_numbersExp) || [])[3] === "0" || cs.fillRule === "evenodd"), origins = (value.origin || "50 50").split(","), diff --git a/lib/3rdparty/gsap/src/esm/BezierPlugin.js b/lib/3rdparty/gsap/src/esm/BezierPlugin.js index c7013b0..fd4f67b 100644 --- a/lib/3rdparty/gsap/src/esm/BezierPlugin.js +++ b/lib/3rdparty/gsap/src/esm/BezierPlugin.js @@ -1,6 +1,6 @@ /*! - * VERSION: 1.3.8 - * DATE: 2018-05-30 + * VERSION: 1.3.9 + * DATE: 2019-05-17 * UPDATES AND DOCS AT: http://greensock.com * * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. @@ -312,7 +312,7 @@ import { _gsScope } from "./TweenLite.js"; BezierPlugin = _gsScope._gsDefine.plugin({ propName: "bezier", priority: -1, - version: "1.3.8", + version: "1.3.9", API: 2, global:true, @@ -389,26 +389,26 @@ import { _gsScope } from "./TweenLite.js"; func = this._func, target = this._target, notStart = (v !== this._startRatio), - curIndex, inv, i, p, b, t, val, l, lengths, curSeg; + curIndex, inv, i, p, b, t, val, l, lengths, curSeg, v1; if (!this._timeRes) { curIndex = (v < 0) ? 0 : (v >= 1) ? segments - 1 : (segments * v) >> 0; t = (v - (curIndex * (1 / segments))) * segments; } else { lengths = this._lengths; curSeg = this._curSeg; - v *= this._length; + v1 = v * this._length; i = this._li; //find the appropriate segment (if the currently cached one isn't correct) - if (v > this._l2 && i < segments - 1) { + if (v1 > this._l2 && i < segments - 1) { l = segments - 1; - while (i < l && (this._l2 = lengths[++i]) <= v) { } + while (i < l && (this._l2 = lengths[++i]) <= v1) { } this._l1 = lengths[i-1]; this._li = i; this._curSeg = curSeg = this._segments[i]; this._s2 = curSeg[(this._s1 = this._si = 0)]; - } else if (v < this._l1 && i > 0) { - while (i > 0 && (this._l1 = lengths[--i]) >= v) { } - if (i === 0 && v < this._l1) { + } else if (v1 < this._l1 && i > 0) { + while (i > 0 && (this._l1 = lengths[--i]) >= v1) { } + if (i === 0 && v1 < this._l1) { this._l1 = 0; } else { i++; @@ -421,16 +421,16 @@ import { _gsScope } from "./TweenLite.js"; } curIndex = i; //now find the appropriate sub-segment (we split it into the number of pieces that was defined by "precision" and measured each one) - v -= this._l1; + v1 -= this._l1; i = this._si; - if (v > this._s2 && i < curSeg.length - 1) { + if (v1 > this._s2 && i < curSeg.length - 1) { l = curSeg.length - 1; - while (i < l && (this._s2 = curSeg[++i]) <= v) { } + while (i < l && (this._s2 = curSeg[++i]) <= v1) { } this._s1 = curSeg[i-1]; this._si = i; - } else if (v < this._s1 && i > 0) { - while (i > 0 && (this._s1 = curSeg[--i]) >= v) { } - if (i === 0 && v < this._s1) { + } else if (v1 < this._s1 && i > 0) { + while (i > 0 && (this._s1 = curSeg[--i]) >= v1) { } + if (i === 0 && v1 < this._s1) { this._s1 = 0; } else { i++; @@ -438,7 +438,7 @@ import { _gsScope } from "./TweenLite.js"; this._s2 = curSeg[i]; this._si = i; } - t = ((i + (v - this._s1) / (this._s2 - this._s1)) * this._prec) || 0; + t = (v === 1) ? 1 : ((i + (v1 - this._s1) / (this._s2 - this._s1)) * this._prec) || 0; } inv = 1 - t; diff --git a/lib/3rdparty/gsap/src/esm/CSSPlugin.js b/lib/3rdparty/gsap/src/esm/CSSPlugin.js index a02f3e4..3d3bf17 100644 --- a/lib/3rdparty/gsap/src/esm/CSSPlugin.js +++ b/lib/3rdparty/gsap/src/esm/CSSPlugin.js @@ -1,6 +1,6 @@ /*! - * VERSION: 2.1.0 - * DATE: 2019-02-15 + * VERSION: 2.1.3 + * DATE: 2019-05-17 * UPDATES AND DOCS AT: http://greensock.com * * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. @@ -30,7 +30,7 @@ import TweenLite, { _gsScope, globals, TweenPlugin } from "./TweenLite.js"; p = CSSPlugin.prototype = new TweenPlugin("css"); p.constructor = CSSPlugin; - CSSPlugin.version = "2.1.0"; + CSSPlugin.version = "2.1.3"; CSSPlugin.API = 2; CSSPlugin.defaultTransformPerspective = 0; CSSPlugin.defaultSkewType = "compensated"; @@ -42,6 +42,7 @@ import TweenLite, { _gsScope, globals, TweenPlugin } from "./TweenLite.js"; var _numExp = /(?:\-|\.|\b)(\d|\.|e\-)+/g, _relNumExp = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g, _valuesExp = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi, //finds all the values that begin with numbers or += or -= and then a number. Includes suffixes. We use this to split complex values apart like "1px 5px 20px rgb(255,102,51)" + _valuesExpWithCommas = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi, //finds all the values that begin with numbers or += or -= and then a number. Includes suffixes. We use this to split complex values apart like "1px 5px 20px rgb(255,102,51)" _NaNExp = /(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g, //also allows scientific notation and doesn't kill the leading -/+ in -= and += _suffixExp = /(?:\d|\-|\+|=|#|\.)*/g, _opacityExp = /opacity *= *([^)]*)/i, @@ -63,7 +64,8 @@ import TweenLite, { _gsScope, globals, TweenPlugin } from "./TweenLite.js"; _dummyElement = {style:{}}, _doc = _gsScope.document || {createElement: function() {return _dummyElement;}}, _createElement = function(type, ns) { - return (ns && _doc.createElementNS) ? _doc.createElementNS(ns, type) : _doc.createElement(type); + var e = _doc.createElementNS ? _doc.createElementNS(ns || "http://www.w3.org/1999/xhtml", type) : _doc.createElement(type); + return e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/). }, _tempDiv = _createElement("div"), _tempImg = _createElement("img"), @@ -643,14 +645,14 @@ import TweenLite, { _gsScope, globals, TweenPlugin } from "./TweenLite.js"; } return a.join(","); } - vals = v.match(_valuesExp) || []; + vals = v.match(delim === "," ? _valuesExp : _valuesExpWithCommas) || []; i = vals.length; if (numVals > i--) { while (++i < numVals) { vals[i] = collapsible ? vals[(((i - 1) / 2) | 0)] : dVals[i]; } } - return pfx + vals.join(delim) + sfx; + return ((pfx && v !== "none") ? v.substr(0, v.indexOf(vals[0])) || pfx : pfx) + vals.join(delim) + sfx; //note: prefix might be different, like for clipPath it could start with inset( or polygon( }; return formatter; }, @@ -1233,7 +1235,7 @@ import TweenLite, { _gsScope, globals, TweenPlugin } from "./TweenLite.js"; //IE and Android stock don't support CSS transforms on SVG elements, so we must write them to the "transform" attribute. We populate this variable in the _parseTransform() method, and only if/when we come across an SVG element var force = _ieVers || (/Android/i.test(_agent) && !_gsScope.chrome), svg, rect, width; - if (_doc.createElementNS && !force) { //IE8 and earlier doesn't support SVG anyway + if (_doc.createElementNS && _docElement.appendChild && !force) { //IE8 and earlier doesn't support SVG anyway svg = _createSVG("svg", _docElement); rect = _createSVG("rect", svg, {width:100, height:50, x:100}); width = rect.getBoundingClientRect().width; @@ -1351,7 +1353,7 @@ import TweenLite, { _gsScope, globals, TweenPlugin } from "./TweenLite.js"; s = (s && s.length === 4) ? [s[0].substr(4), Number(s[2].substr(4)), Number(s[1].substr(4)), s[3].substr(4), (tm.x || 0), (tm.y || 0)].join(",") : ""; } isDefault = (!s || s === "none" || s === "matrix(1, 0, 0, 1, 0, 0)"); - if (_transformProp && isDefault && !e.offsetParent) { //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397 + if (_transformProp && isDefault && !e.offsetParent && e !== _docElement) { //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397 //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not "none". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px). n = style.display; style.display = "block"; @@ -2113,7 +2115,7 @@ import TweenLite, { _gsScope, globals, TweenPlugin } from "./TweenLite.js"; }, allowFunc:true, prefix:true}); _registerComplexSpecialProp("boxShadow", {defaultValue:"0px 0px 0px 0px #999", prefix:true, color:true, multi:true, keyword:"inset"}); - _registerComplexSpecialProp("clipPath", {defaultValue:"inset(0px)", prefix:true, multi:true, formatter:_getFormatter("inset(0px 0px 0px 0px)", false, true)}); + _registerComplexSpecialProp("clipPath", {defaultValue:"inset(0%)", prefix:true, multi:true, formatter:_getFormatter("inset(0% 0% 0% 0%)", false, true)}); _registerComplexSpecialProp("borderRadius", {defaultValue:"0px", parser:function(t, e, p, cssp, pt, plugin) { e = this.format(e); @@ -2367,7 +2369,9 @@ import TweenLite, { _gsScope, globals, TweenPlugin } from "./TweenLite.js"; difData = _cssDif(t, bs, _getAllStyles(t), vars, cnptLookup); t.setAttribute("class", b); pt.data = difData.firstMPT; - t.style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity). + if (t.style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/. + t.style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity). + } pt = pt.xfirst = cssp.parse(t, difData.difs, pt, plugin); //we record the CSSPropTween as the xfirst so that we can handle overwriting propertly (if "className" gets overwritten, we must kill all the properties associated with the className part of the tween, so we can loop through from xfirst to the pt itself) return pt; }}); diff --git a/lib/3rdparty/gsap/src/esm/CSSRulePlugin.js b/lib/3rdparty/gsap/src/esm/CSSRulePlugin.js index 06c628a..ff91122 100644 --- a/lib/3rdparty/gsap/src/esm/CSSRulePlugin.js +++ b/lib/3rdparty/gsap/src/esm/CSSRulePlugin.js @@ -1,6 +1,6 @@ /*! - * VERSION: 0.6.7 - * DATE: 2018-08-27 + * VERSION: 0.6.8 + * DATE: 2019-02-22 * UPDATES AND DOCS AT: http://greensock.com * * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. @@ -27,7 +27,7 @@ _gsScope._gsDefine("plugins.CSSRulePlugin", ["plugins.TweenPlugin","TweenLite"," p._propName = "cssRule"; p.constructor = CSSRulePlugin; - CSSRulePlugin.version = "0.6.7"; + CSSRulePlugin.version = "0.6.8"; CSSRulePlugin.API = 2; /** @@ -93,7 +93,12 @@ _gsScope._gsDefine("plugins.CSSRulePlugin", ["plugins.TweenPlugin","TweenLite"," // @private gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1. p.setRatio = function(v) { _superSetRatio.call(this, v); - this._ss.cssText = this._proxy.cssText; + var proxy = this._proxy, + ss = this._ss, + i = proxy.length; + while (--i > -1) { + ss[proxy[i]] = proxy[proxy[i]]; + } }; diff --git a/lib/3rdparty/gsap/src/esm/Draggable.js b/lib/3rdparty/gsap/src/esm/Draggable.js index 3c5e8cf..0713804 100644 --- a/lib/3rdparty/gsap/src/esm/Draggable.js +++ b/lib/3rdparty/gsap/src/esm/Draggable.js @@ -1,6 +1,6 @@ /*! - * VERSION: 0.17.0 - * DATE: 2019-02-07 + * VERSION: 0.17.1 + * DATE: 2019-02-28 * UPDATES AND DOCS AT: http://greensock.com * * Requires TweenLite and CSSPlugin version 1.17.0 or later (TweenMax contains both TweenLite and CSSPlugin). ThrowPropsPlugin is required for momentum-based continuation of movement after the mouse/touch is released (ThrowPropsPlugin is a membership benefit of Club GreenSock - http://greensock.com/club/). @@ -1695,7 +1695,7 @@ import CSSPlugin from "./CSSPlugin.js"; if (e && e.target) { _addListener(e.target, "mouseup", onRelease); //we also have to listen directly on the element because some browsers don't bubble up the event to the _doc on elements with contentEditable="true" } - isClicking = (isClickable.call(self, e.target) && vars.dragClickables !== false && !force); + isClicking = (isClickable.call(self, e.target) && vars.dragClickables === false && !force); if (isClicking) { _addListener(e.target, "change", onRelease); //in some browsers, when you mousedown on a