diff --git a/platfomer/appmanifest.json b/platfomer/appmanifest.json new file mode 100644 index 00000000..6d1f9be3 --- /dev/null +++ b/platfomer/appmanifest.json @@ -0,0 +1,28 @@ +{ + "name": "New project", + "short_name": "New project", + "start_url": "index.html", + "display": "fullscreen", + "orientation": "any", + "icons": [{ + "src": "icon-16.png", + "sizes": "16x16", + "type": "image/png" + }, { + "src": "icon-32.png", + "sizes": "32x32", + "type": "image/png" + }, { + "src": "icon-128.png", + "sizes": "128x128", + "type": "image/png" + }, { + "src": "icon-256.png", + "sizes": "144x144", + "type": "image/png" + }, { + "src": "icon-256.png", + "sizes": "256x256", + "type": "image/png" + }] +} diff --git a/platfomer/c2runtime.js b/platfomer/c2runtime.js new file mode 100644 index 00000000..0215eaed --- /dev/null +++ b/platfomer/c2runtime.js @@ -0,0 +1,469 @@ +// Generated by Construct 2, the HTML5 game and app creator :: https://www.construct.net +'use strict';var ba,ca,da,C,ea,ha,ia,V,ja,ka,la,na,oa,pa,qa,ra,sa,ta,ua,va,wa,ya,W,za,Aa,Ba,Ca,Ea,Y,Fa,Ga,Ha,Ia,Ka,La,Ma,Na,Oa,Pa,Qa,Ra,Ua,Va,Wa,Xa,Ya,Za,$a,ab,bb,cb,db,eb,fb,gb,hb,ib,jb,kb,nb,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Cb,Db,Eb,Fb,Gb,Hb,Ib,Jb,Kb,Lb,Mb,Nb,Ob,Pb,Qb,Rb,Sb,Tb,Ub,Vb,Wb,Xb,Yb,Zb,$b,ac,bc,cc={},dc={};"function"!==typeof Object.getPrototypeOf&&(Object.getPrototypeOf="object"===typeof"test".__proto__?function(c){return c.__proto__}:function(c){return c.constructor.prototype}); +(function(){function c(a,d,e,l){this.set(a,d,e,l)}function h(){this.Wa=this.Va=this.Ya=this.Xa=this.eb=this.cb=this.Ka=this.Ja=0}function m(a,d,e,l){al?d:l):(q=ae?d:e):el?a:l):(q=de?a:e)}function n(){this.items=this.Ld=null;this.ji=0;H&&(this.Ld=new Set);this.sh=[];this.Ie=!0}function p(a){A[L++]=a}function t(){this.da=this.nl=this.y=this.Ql=0}function b(a){this.wb=[];this.uj=this.wj=this.xj=this.vj=0;this.Ti(a)}function a(a,d){this.Ul= +a;this.Tl=d;this.cells={}}function k(a,d){this.Ul=a;this.Tl=d;this.cells={}}function v(a,d,e){var l;return O.length?(l=O.pop(),l.zm=a,l.x=d,l.y=e,l):new ba(a,d,e)}function d(a,d,e){this.zm=a;this.x=d;this.y=e;this.Bb=new ca}function e(a,d,e){var l;return w.length?(l=w.pop(),l.zm=a,l.x=d,l.y=e,l):new da(a,d,e)}function g(a,d,e){this.zm=a;this.x=d;this.y=e;this.Bb=[];this.Rg=!0;this.Jd=new ca;this.zh=!1}function f(a,d){return a.ud-d.ud}C=function(a){window.console&&window.console.log&&window.console.log(a)}; +ea=function(a){window.console&&window.console.error&&window.console.error(a)};ha=function(a){return"undefined"===typeof a};ia=function(a){return"number"===typeof a};V=function(a){return"string"===typeof a};ja=function(a){return 0d;d<<=1)a=a|a>>d;return a+1};la=function(a){return 0>a?-a:a};na=function(a,d){return a>d?a:d};oa=function(a,d){return ax)return!1;dx)return!1;r=b-a+k-e;z=f-d+g-l;a=e-a;d=l-d;b=k-b;f=g-f;g=la(d*b-f*a);return la(b*z-f*r)>g?!1:la(a*z-d*r)<=g};c.prototype.set=function(a,d,e,l){this.left=a;this.top=d;this.right=e;this.bottom=l};c.prototype.Eh=function(a){this.left=a.left;this.top=a.top;this.right=a.right;this.bottom=a.bottom};c.prototype.width=function(){return this.right- +this.left};c.prototype.height=function(){return this.bottom-this.top};c.prototype.offset=function(a,d){this.left+=a;this.top+=d;this.right+=a;this.bottom+=d;return this};c.prototype.normalize=function(){var a=0;this.left>this.right&&(a=this.left,this.left=this.right,this.right=a);this.top>this.bottom&&(a=this.top,this.top=this.bottom,this.bottom=a)};c.prototype.hv=function(a){return!(a.rightthis.right||a.top>this.bottom)};c.prototype.jv=function(a,d,e){return!(a.right+ +dthis.right||a.top+e>this.bottom)};c.prototype.oc=function(a,d){return a>=this.left&&a<=this.right&&d>=this.top&&d<=this.bottom};c.prototype.Jh=function(a){return this.left===a.left&&this.top===a.top&&this.right===a.right&&this.bottom===a.bottom};ta=c;h.prototype.Si=function(a){this.Ja=a.left;this.Ka=a.top;this.cb=a.right;this.eb=a.top;this.Xa=a.right;this.Ya=a.bottom;this.Va=a.left;this.Wa=a.bottom};h.prototype.Uq=function(a,d){if(0===d)this.Si(a);else{var e= +Math.sin(d),l=Math.cos(d),b=a.left*e,f=a.top*e,k=a.right*e,e=a.bottom*e,g=a.left*l,r=a.top*l,z=a.right*l,l=a.bottom*l;this.Ja=g-f;this.Ka=r+b;this.cb=z-f;this.eb=r+k;this.Xa=z-e;this.Ya=l+k;this.Va=g-e;this.Wa=l+b}};h.prototype.offset=function(a,d){this.Ja+=a;this.Ka+=d;this.cb+=a;this.eb+=d;this.Xa+=a;this.Ya+=d;this.Va+=a;this.Wa+=d;return this};var q=0,N=0;h.prototype.Io=function(a){m(this.Ja,this.cb,this.Xa,this.Va);a.left=q;a.right=N;m(this.Ka,this.eb,this.Ya,this.Wa);a.top=q;a.bottom=N};h.prototype.oc= +function(a,d){var e=this.Ja,l=this.Ka,b=this.cb-e,f=this.eb-l,k=this.Xa-e,g=this.Ya-l,r=a-e,z=d-l,x=b*b+f*f,E=b*k+f*g,f=b*r+f*z,c=k*k+g*g,v=k*r+g*z,q=1/(x*c-E*E),b=(c*f-E*v)*q,x=(x*v-E*f)*q;if(0<=b&&0b+x)return!0;b=this.Va-e;f=this.Wa-l;x=b*b+f*f;E=b*k+f*g;f=b*r+f*z;q=1/(x*c-E*E);b=(c*f-E*v)*q;x=(x*v-E*f)*q;return 0<=b&&0b+x};h.prototype.Ge=function(a,d){if(d)switch(a){case 0:return this.Ja;case 1:return this.cb;case 2:return this.Xa;case 3:return this.Va;case 4:return this.Ja;default:return this.Ja}else switch(a){case 0:return this.Ka; +case 1:return this.eb;case 2:return this.Ya;case 3:return this.Wa;case 4:return this.Ka;default:return this.Ka}};h.prototype.aq=function(){return(this.Ja+this.cb+this.Xa+this.Va)/4};h.prototype.bq=function(){return(this.Ka+this.eb+this.Ya+this.Wa)/4};h.prototype.tp=function(a){var d=a.aq(),e=a.bq();if(this.oc(d,e))return!0;d=this.aq();e=this.bq();if(a.oc(d,e))return!0;var l,b,f,k,g,r,z,x;for(z=0;4>z;z++)for(x=0;4>x;x++)if(d=this.Ge(z,!0),e=this.Ge(z,!1),l=this.Ge(z+1,!0),b=this.Ge(z+1,!1),f=a.Ge(x, +!0),k=a.Ge(x,!1),g=a.Ge(x+1,!0),r=a.Ge(x+1,!1),sa(d,e,l,b,f,k,g,r))return!0;return!1};ua=h;va=function(a,d){for(var e in d)d.hasOwnProperty(e)&&(a[e]=d[e]);return a};wa=function(a,d){var e,l;d=qa(d);if(!(0>d||d>=a.length)){e=d;for(l=a.length-1;ee?e:a};Y=function(a){return a/(180/pa)};Fa=function(a){return 180/pa*a};Ga=function(a){a%=360;0>a&&(a+=360);return a};Ha=function(a){a%=2*pa;0>a&&(a+=2*pa);return a};Ia=function(a){return Ga(Fa(a))};Ka=function(a){return Ha(Y(a))};La=function(a,d,e,l){return Math.atan2(l-d,e-a)};Ma=function(a,d){if(a===d)return 0;var e=Math.sin(a),l=Math.cos(a),b=Math.sin(d),f=Math.cos(d),e=e*b+l*f;return 1<=e?0:-1>=e?pa:Math.acos(e)}; +Na=function(a,d,e){var l=Math.sin(a),b=Math.cos(a),f=Math.sin(d),k=Math.cos(d);return Math.acos(l*f+b*k)>e?0=l*b-e*f};Pa=function(a,d,e,l,b,f){if(0===e)return f?a:d;var k=Math.sin(e);e=Math.cos(e);a-=l;d-=b;var g=a*k;a=a*e-d*k;d=d*e+g;return f?a+l:d+b};Qa=function(a,d,e,l){a=e-a;d=l-d;return Math.sqrt(a*a+d*d)};Ra=function(a,d){return!a!==!d};Ua=function(a){for(var d in a)if(a.hasOwnProperty(d))return!0; +return!1};Va=function(a){for(var d in a)a.hasOwnProperty(d)&&delete a[d]};var B=+new Date;Wa=function(){if("undefined"!==typeof window.performance){var a=window.performance;if("undefined"!==typeof a.now)return a.now();if("undefined"!==typeof a.webkitNow)return a.webkitNow();if("undefined"!==typeof a.mozNow)return a.mozNow();if("undefined"!==typeof a.msNow)return a.msNow()}return Date.now()-B};var l=!1,r=l=!1,y=!1;"undefined"!==typeof window&&(l=/chrome/i.test(navigator.userAgent)||/chromium/i.test(navigator.userAgent), +l=!l&&/safari/i.test(navigator.userAgent),r=/(iphone|ipod|ipad)/i.test(navigator.userAgent),y=window.c2ejecta);var H=!l&&!y&&!r&&"undefined"!==typeof Set&&"undefined"!==typeof Set.prototype.forEach;n.prototype.contains=function(a){return this.ae()?!1:H?this.Ld.has(a):this.items&&this.items.hasOwnProperty(a)};n.prototype.add=function(a){if(H)this.Ld.has(a)||(this.Ld.add(a),this.Ie=!1);else{var d=a.toString(),e=this.items;e?e.hasOwnProperty(d)||(e[d]=a,this.ji++,this.Ie=!1):(this.items={},this.items[d]= +a,this.ji=1,this.Ie=!1)}};n.prototype.remove=function(a){if(!this.ae())if(H)this.Ld.has(a)&&(this.Ld["delete"](a),this.Ie=!1);else if(this.items){a=a.toString();var d=this.items;d.hasOwnProperty(a)&&(delete d[a],this.ji--,this.Ie=!1)}};n.prototype.clear=function(){this.ae()||(H?this.Ld.clear():(this.items=null,this.ji=0),W(this.sh),this.Ie=!0)};n.prototype.ae=function(){return 0===this.count()};n.prototype.count=function(){return H?this.Ld.size:this.ji};var A=null,L=0;n.prototype.Cw=function(){if(!this.Ie){if(H)W(this.sh), +A=this.sh,L=0,this.Ld.forEach(p),A=null,L=0;else{var a=this.sh;W(a);var d,e=0,l=this.items;if(l)for(d in l)l.hasOwnProperty(d)&&(a[e++]=l[d])}this.Ie=!0}};n.prototype.xe=function(){this.Cw();return this.sh};ca=n;new ca;Xa=function(a,d){H?Ya(a,d.Ld):Za(a,d.xe())};Ya=function(a,d){var e,l,b,f;l=e=0;for(b=a.length;ee&&(e=f), +kb&&(b=k);this.vj=d;this.wj=e;this.xj=l;this.uj=b};b.prototype.Si=function(a,d,e){this.wb.length=8;this.md=4;var l=this.wb;l[0]=a.left-d;l[1]=a.top-e;l[2]=a.right-d;l[3]=a.top-e;l[4]=a.right-d;l[5]=a.bottom-e;l[6]=a.left-d;l[7]=a.bottom-e;this.Aj=a.right-a.left;this.zj=a.bottom-a.top;this.Da()};b.prototype.nh=function(a,d,e,l,b){this.wb.length=8;this.md=4;var f=this.wb;f[0]=a.Ja-d;f[1]=a.Ka-e;f[2]=a.cb-d;f[3]=a.eb-e;f[4]=a.Xa-d;f[5]=a.Ya-e;f[6]=a.Va-d;f[7]=a.Wa-e;this.Aj=l;this.zj=b;this.Da()}; +b.prototype.Tq=function(a){this.md=a.md;za(this.wb,a.wb);this.vj=a.vj;this.xj=a.xj;this.wj=a.wj;this.uj=a.uj};b.prototype.yg=function(a,d,e){if(this.Aj!==a||this.zj!==d||this.Lo!==e){this.Aj=a;this.zj=d;this.Lo=e;var l,b,f,k,g,r=0,z=1,x=this.Gq,E=this.wb;0!==e&&(r=Math.sin(e),z=Math.cos(e));e=0;for(f=this.md;eO.length&&O.push(g), +this.cells[l][f]=null);if(e)for(l=e.left,b=e.right;l<=b;++l)for(f=e.top,k=e.bottom;f<=k;++f)d&&d.oc(l,f)||this.Te(l,f,!0).Fm(a)};a.prototype.Xk=function(a,d){var e,l,f,b,k,g;e=this.$b(a.left);f=this.ac(a.top);l=this.$b(a.right);for(k=this.ac(a.bottom);e<=l;++e)for(b=f;b<=k;++b)(g=this.Te(e,b,!1))&&g.dump(d)};cb=a;k.prototype.Te=function(a,d,l){var b;b=this.cells[a];return b?(b=b[d])?b:l?(b=e(this,a,d),this.cells[a][d]=b):null:l?(b=e(this,a,d),this.cells[a]={},this.cells[a][d]=b):null};k.prototype.$b= +function(a){return qa(a/this.Ul)};k.prototype.ac=function(a){return qa(a/this.Tl)};k.prototype.update=function(a,d,e){var l,b,f,k,g;if(d)for(l=d.left,b=d.right;l<=b;++l)for(f=d.top,k=d.bottom;f<=k;++f)if(!e||!e.oc(l,f))if(g=this.Te(l,f,!1))g.remove(a),g.ae()&&(g.reset(),1E3>w.length&&w.push(g),this.cells[l][f]=null);if(e)for(l=e.left,b=e.right;l<=b;++l)for(f=e.top,k=e.bottom;f<=k;++f)d&&d.oc(l,f)||this.Te(l,f,!0).Fm(a)};k.prototype.Xk=function(a,d,e,l,b){var f,k;a=this.$b(a);d=this.ac(d);e=this.$b(e); +for(f=this.ac(l);a<=e;++a)for(l=d;l<=f;++l)(k=this.Te(a,l,!1))&&k.dump(b)};k.prototype.xv=function(a){var d,e,l,b,f;d=a.left;l=a.top;e=a.right;for(b=a.bottom;d<=e;++d)for(a=l;a<=b;++a)if(f=this.Te(d,a,!1))f.Rg=!1};db=k;var O=[];d.prototype.ae=function(){return this.Bb.ae()};d.prototype.Fm=function(a){this.Bb.add(a)};d.prototype.remove=function(a){this.Bb.remove(a)};d.prototype.dump=function(a){Aa(a,this.Bb.xe())};ba=d;var w=[];g.prototype.ae=function(){if(!this.Bb.length)return!0;if(this.Bb.length> +this.Jd.count())return!1;this.km();return!0};g.prototype.Fm=function(a){this.Jd.contains(a)?(this.Jd.remove(a),this.Jd.ae()&&(this.zh=!1)):this.Bb.length?(this.Bb[this.Bb.length-1].Cd()>a.Cd()&&(this.Rg=!1),this.Bb.push(a)):(this.Bb.push(a),this.Rg=!0)};g.prototype.remove=function(a){this.Jd.add(a);this.zh=!0;30<=this.Jd.count()&&this.km()};g.prototype.km=function(){this.zh&&(this.Jd.count()===this.Bb.length?this.reset():(Xa(this.Bb,this.Jd),this.Jd.clear(),this.zh=!1))};g.prototype.Lt=function(){this.Rg|| +(this.Bb.sort(f),this.Rg=!0)};g.prototype.reset=function(){W(this.Bb);this.Rg=!0;this.Jd.clear();this.zh=!1};g.prototype.dump=function(a){this.km();this.Lt();this.Bb.length&&a.push(this.Bb)};da=g;var G="lighter xor copy destination-over source-in destination-in source-out destination-out source-atop destination-atop".split(" ");eb=function(a){return 0>=a||11<=a?"source-over":G[a-1]};fb=function(a,d,e){if(e)switch(a.Sb=e.ONE,a.Pb=e.ONE_MINUS_SRC_ALPHA,d){case 1:a.Sb=e.ONE;a.Pb=e.ONE;break;case 3:a.Sb= +e.ONE;a.Pb=e.ZERO;break;case 4:a.Sb=e.ONE_MINUS_DST_ALPHA;a.Pb=e.ONE;break;case 5:a.Sb=e.DST_ALPHA;a.Pb=e.ZERO;break;case 6:a.Sb=e.ZERO;a.Pb=e.SRC_ALPHA;break;case 7:a.Sb=e.ONE_MINUS_DST_ALPHA;a.Pb=e.ZERO;break;case 8:a.Sb=e.ZERO;a.Pb=e.ONE_MINUS_SRC_ALPHA;break;case 9:a.Sb=e.DST_ALPHA;a.Pb=e.ONE_MINUS_SRC_ALPHA;break;case 10:a.Sb=e.ONE_MINUS_DST_ALPHA,a.Pb=e.SRC_ALPHA}};gb=function(a){return Math.round(1E6*a)/1E6};hb=function(a,d){return"string"!==typeof a||"string"!==typeof d||a.length!==d.length? +!1:a===d?!0:a.toLowerCase()===d.toLowerCase()};ib=function(a){a=a.target;return!a||a===document||a===window||document&&document.body&&a===document.body||hb(a.tagName,"canvas")?!0:!1}})();var ec="undefined"!==typeof Float32Array?Float32Array:Array;function fc(c){var h=new ec(3);c&&(h[0]=c[0],h[1]=c[1],h[2]=c[2]);return h} +function gc(c){var h=new ec(16);c&&(h[0]=c[0],h[1]=c[1],h[2]=c[2],h[3]=c[3],h[4]=c[4],h[5]=c[5],h[6]=c[6],h[7]=c[7],h[8]=c[8],h[9]=c[9],h[10]=c[10],h[11]=c[11],h[12]=c[12],h[13]=c[13],h[14]=c[14],h[15]=c[15]);return h}function hc(c,h){h[0]=c[0];h[1]=c[1];h[2]=c[2];h[3]=c[3];h[4]=c[4];h[5]=c[5];h[6]=c[6];h[7]=c[7];h[8]=c[8];h[9]=c[9];h[10]=c[10];h[11]=c[11];h[12]=c[12];h[13]=c[13];h[14]=c[14];h[15]=c[15]} +function ic(c,h){var m=h[0],n=h[1];h=h[2];c[0]*=m;c[1]*=m;c[2]*=m;c[3]*=m;c[4]*=n;c[5]*=n;c[6]*=n;c[7]*=n;c[8]*=h;c[9]*=h;c[10]*=h;c[11]*=h} +function jc(c,h,m,n){n||(n=gc());var p,t,b,a,k,v,d,e,g=c[0],f=c[1];c=c[2];t=m[0];b=m[1];p=m[2];m=h[1];v=h[2];g===h[0]&&f===m&&c===v?(c=n,c[0]=1,c[1]=0,c[2]=0,c[3]=0,c[4]=0,c[5]=1,c[6]=0,c[7]=0,c[8]=0,c[9]=0,c[10]=1,c[11]=0,c[12]=0,c[13]=0,c[14]=0,c[15]=1):(m=g-h[0],v=f-h[1],d=c-h[2],e=1/Math.sqrt(m*m+v*v+d*d),m*=e,v*=e,d*=e,h=b*d-p*v,p=p*m-t*d,t=t*v-b*m,(e=Math.sqrt(h*h+p*p+t*t))?(e=1/e,h*=e,p*=e,t*=e):t=p=h=0,b=v*t-d*p,a=d*h-m*t,k=m*p-v*h,(e=Math.sqrt(b*b+a*a+k*k))?(e=1/e,b*=e,a*=e,k*=e):k=a=b=0, +n[0]=h,n[1]=b,n[2]=m,n[3]=0,n[4]=p,n[5]=a,n[6]=v,n[7]=0,n[8]=t,n[9]=k,n[10]=d,n[11]=0,n[12]=-(h*g+p*f+t*c),n[13]=-(b*g+a*f+k*c),n[14]=-(m*g+v*f+d*c),n[15]=1)} +(function(){function c(a,b,c){this.be=/msie/i.test(navigator.userAgent)||/trident/i.test(navigator.userAgent);this.height=this.width=0;this.Ha=!!c;this.lk=this.ai=!1;this.cm=0;this.Al=1;this.po=1E3;this.Iw=(this.po-this.Al)/32768;this.Rl=fc([0,0,100]);this.Kp=fc([0,0,0]);this.or=fc([0,1,0]);this.hj=fc([1,1,1]);this.So=!0;this.Fk=gc();this.Gc=gc();this.Vm=gc();this.$l=gc();this.C=a;this.version=0===this.C.getParameter(this.C.VERSION).indexOf("WebGL 2")?2:1;this.pp()}function h(a,b,c){this.C=a;this.Ui= +b;this.name=c;this.Rc=a.getAttribLocation(b,"aPos");this.kf=a.getAttribLocation(b,"aTex");this.Ip=a.getUniformLocation(b,"matP");this.Bk=a.getUniformLocation(b,"matMV");this.ah=a.getUniformLocation(b,"opacity");this.an=a.getUniformLocation(b,"colorFill");this.Jp=a.getUniformLocation(b,"samplerFront");this.ti=a.getUniformLocation(b,"samplerBack");this.bg=a.getUniformLocation(b,"destStart");this.ag=a.getUniformLocation(b,"destEnd");this.wi=a.getUniformLocation(b,"seconds");this.cn=a.getUniformLocation(b, +"pixelWidth");this.bn=a.getUniformLocation(b,"pixelHeight");this.si=a.getUniformLocation(b,"layerScale");this.ri=a.getUniformLocation(b,"layerAngle");this.xi=a.getUniformLocation(b,"viewOrigin");this.vi=a.getUniformLocation(b,"scrollPos");this.av=!!(this.cn||this.bn||this.wi||this.ti||this.bg||this.ag||this.si||this.ri||this.xi||this.vi);this.Sp=this.Tp=-999;this.Ek=1;this.Op=this.Np=0;this.Qp=this.Mp=this.Lp=1;this.Wp=this.Vp=this.Up=this.Yp=this.Xp=this.Pp=0;this.Um=[];this.Rp=gc();this.ah&&a.uniform1f(this.ah, +1);this.an&&a.uniform4f(this.an,1,1,1,1);this.Jp&&a.uniform1i(this.Jp,0);this.ti&&a.uniform1i(this.ti,1);this.bg&&a.uniform2f(this.bg,0,0);this.ag&&a.uniform2f(this.ag,1,1);this.si&&a.uniform1f(this.si,1);this.ri&&a.uniform1f(this.ri,0);this.xi&&a.uniform2f(this.xi,0,0);this.vi&&a.uniform2f(this.vi,0,0);this.wi&&a.uniform1f(this.wi,0);this.Pf=!1}function m(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]&&a[4]===b[4]&&a[5]===b[5]&&a[6]===b[6]&&a[7]===b[7]&&a[8]===b[8]&&a[9]===b[9]&& +a[10]===b[10]&&a[11]===b[11]&&a[12]===b[12]&&a[13]===b[13]&&a[14]===b[14]&&a[15]===b[15]}function n(a,b){this.type=a;this.A=b;this.C=b.C;this.Dd=this.Zb=this.sq=0;this.Y=this.Wc=null;this.Vq=[]}var p=gc();c.prototype.pp=function(){var a=this.C,b;this.Dp=1;this.Wf=this.cf=null;this.Jj=1;a.clearColor(0,0,0,0);a.clear(a.COLOR_BUFFER_BIT);a.enable(a.BLEND);a.blendFunc(a.ONE,a.ONE_MINUS_SRC_ALPHA);a.disable(a.CULL_FACE);a.disable(a.STENCIL_TEST);a.disable(a.DITHER);this.Ha?(a.enable(a.DEPTH_TEST),a.depthFunc(a.LEQUAL)): +a.disable(a.DEPTH_TEST);this.Ep=a.ONE;this.Cp=a.ONE_MINUS_SRC_ALPHA;this.yl=new Float32Array(8E3*(this.Ha?3:2));this.ol=new Float32Array(16E3);this.Cq=new Float32Array(32E3);this.xn=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,this.xn);a.bufferData(a.ARRAY_BUFFER,this.Cq.byteLength,a.DYNAMIC_DRAW);this.gj=Array(4);this.aj=Array(4);for(b=0;4>b;b++)this.gj[b]=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,this.gj[b]),a.bufferData(a.ARRAY_BUFFER,this.yl.byteLength,a.DYNAMIC_DRAW),this.aj[b]=a.createBuffer(), +a.bindBuffer(a.ARRAY_BUFFER,this.aj[b]),a.bufferData(a.ARRAY_BUFFER,this.ol.byteLength,a.DYNAMIC_DRAW);this.Td=0;this.dv=a.createBuffer();a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.dv);for(var c=new Uint16Array(12E3),d=b=0;12E3>b;)c[b++]=d,c[b++]=d+1,c[b++]=d+2,c[b++]=d,c[b++]=d+2,c[b++]=d+3,d+=4;a.bufferData(a.ELEMENT_ARRAY_BUFFER,c,a.STATIC_DRAW);this.yn=this.ph=this.ye=0;this.Ua=[];b=this.Ha?"attribute highp vec3 aPos;\nattribute mediump vec2 aTex;\nvarying mediump vec2 vTex;\nuniform highp mat4 matP;\nuniform highp mat4 matMV;\nvoid main(void) {\n\tgl_Position = matP * matMV * vec4(aPos.x, aPos.y, aPos.z, 1.0);\n\tvTex = aTex;\n}": +"attribute highp vec2 aPos;\nattribute mediump vec2 aTex;\nvarying mediump vec2 vTex;\nuniform highp mat4 matP;\nuniform highp mat4 matMV;\nvoid main(void) {\n\tgl_Position = matP * matMV * vec4(aPos.x, aPos.y, 0.0, 1.0);\n\tvTex = aTex;\n}";c=this.Fh({src:"varying mediump vec2 vTex;\nuniform lowp float opacity;\nuniform lowp sampler2D samplerFront;\nvoid main(void) {\n\tgl_FragColor = texture2D(samplerFront, vTex);\n\tgl_FragColor *= opacity;\n}"},b,"");this.Ua.push(c);c=this.Fh({src:"uniform mediump sampler2D samplerFront;\nvarying lowp float opacity;\nvoid main(void) {\n\tgl_FragColor = texture2D(samplerFront, gl_PointCoord);\n\tgl_FragColor *= opacity;\n}"}, +"attribute vec4 aPos;\nvarying float opacity;\nuniform mat4 matP;\nuniform mat4 matMV;\nvoid main(void) {\n\tgl_Position = matP * matMV * vec4(aPos.x, aPos.y, 0.0, 1.0);\n\tgl_PointSize = aPos.z;\n\topacity = aPos.w;\n}","");this.Ua.push(c);c=this.Fh({src:"varying mediump vec2 vTex;\nuniform lowp sampler2D samplerFront;\nvoid main(void) {\n\tif (texture2D(samplerFront, vTex).a < 1.0)\n\t\tdiscard;\n}"},b,"");this.Ua.push(c);c=this.Fh({src:"uniform lowp vec4 colorFill;\nvoid main(void) {\n\tgl_FragColor = colorFill;\n}"}, +b,"");this.Ua.push(c);for(var e in kc)kc.hasOwnProperty(e)&&this.Ua.push(this.Fh(kc[e],b,e));a.activeTexture(a.TEXTURE0);a.bindTexture(a.TEXTURE_2D,null);this.He=[];this.Rd=0;this.Rb=!1;this.Po=this.mi=-1;this.Cg=null;this.im=a.createFramebuffer();this.Oj=this.Yk=null;this.Go=!1;this.Ha&&(this.Oj=a.createRenderbuffer());this.uf=fc([0,0,0]);this.Zp=a.getParameter(a.ALIASED_POINT_SIZE_RANGE)[1];2048"===b.name&&a.vertexAttribPointer(b.Rc,4,a.FLOAT,!1,0,0));if(0"!==b.name&& +a.vertexAttribPointer(b.Rc,this.Ha?3:2,a.FLOAT,!1,0,0);a.bindBuffer(a.ARRAY_BUFFER,this.aj[this.Td]);a.bufferSubData(a.ARRAY_BUFFER,0,this.ol.subarray(0,this.ph));b&&0<=b.kf&&""!==b.name&&a.vertexAttribPointer(b.kf,2,a.FLOAT,!1,0,0)}for(var c,a=0,b=this.Rd;ac||0>d)){var e=this.xc();e.type=7;e.Zb=1;e.Y||(e.Y=gc());e.Y[0]=a;e.Y[1]=b;e.Y[2]=c;e.Y[3]=d;this.Rb=!1}};c.prototype.Pq=function(a){if(this.Ha&&(a=!!a,this.ai!==a)){var b=this.xc();b.type=14;b.Zb=a?1:0;this.Rb=!1;this.ai=a;this.Yk=null;this.ai?this.ic(2): +this.ic(0)}};c.prototype.Oq=function(a){if(this.Ha){var b=this.xc();b.type=13;b.Zb=a?1:0;this.Rb=!1}};c.prototype.$o=function(){hc(this.Vm,p);this.Tc();this.Lc();var a=this.width/2,b=this.height/2;this.Mi(-a,b,a,b,a,-b,-a,-b);hc(p,this.Gc);this.Lc()};c.prototype.Nq=function(a,b,c){this.ic(3);var d=this.xc();d.type=12;d.Y||(d.Y=gc());d.Y[0]=a;d.Y[1]=b;d.Y[2]=c;d.Y[3]=1;this.Rb=!1};c.prototype.ow=function(){this.ic(0)};c.prototype.Yv=function(){this.ic(2)};c.prototype.Ov=function(){this.Re();this.C.flush()}; +var t=[],b={};c.prototype.$s=function(){W(t);b={}};c.prototype.gf=function(a,c,h,d){c=!!c;h=!!h;var e=a.src+","+c+","+h+(c?",undefined":""),g=null;if("undefined"!==typeof a.src&&b.hasOwnProperty(e))return g=b[e],g.yj++,g;this.Re();var f=this.C,q=ja(a.width)&&ja(a.height),g=f.createTexture();f.bindTexture(f.TEXTURE_2D,g);f.pixelStorei(f.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);var p=f.RGBA,m=f.RGBA,l=f.UNSIGNED_BYTE;if(d&&!this.be)switch(d){case 1:m=p=f.RGB;break;case 2:l=f.UNSIGNED_SHORT_4_4_4_4;break; +case 3:l=f.UNSIGNED_SHORT_5_5_5_1;break;case 4:m=p=f.RGB,l=f.UNSIGNED_SHORT_5_6_5}if(1===this.version&&!q&&c){d=document.createElement("canvas");d.width=ka(a.width);d.height=ka(a.height);var r=d.getContext("2d");"undefined"!==typeof r.imageSmoothingEnabled?r.imageSmoothingEnabled=h:(r.webkitImageSmoothingEnabled=h,r.mozImageSmoothingEnabled=h,r.msImageSmoothingEnabled=h);r.drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);f.texImage2D(f.TEXTURE_2D,0,p,m,l,d)}else f.texImage2D(f.TEXTURE_2D,0, +p,m,l,a);c?(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,f.REPEAT),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,f.REPEAT)):(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE));h?(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,f.LINEAR),(q||2<=this.version)&&this.So?(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,f.LINEAR_MIPMAP_LINEAR),f.generateMipmap(f.TEXTURE_2D)):f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER, +f.LINEAR)):(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,f.NEAREST),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,f.NEAREST));f.bindTexture(f.TEXTURE_2D,null);this.cf=null;g.Bf=a.width;g.Af=a.height;g.yj=1;g.Ko=e;t.push(g);return b[e]=g};c.prototype.Ac=function(a,b,c,d){this.Re();var e=this.C;this.be&&(d=!1);var g=e.createTexture();e.bindTexture(e.TEXTURE_2D,g);e.texImage2D(e.TEXTURE_2D,0,e.RGBA,a,b,0,e.RGBA,d?e.UNSIGNED_SHORT_4_4_4_4:e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S, +e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,c?e.LINEAR:e.NEAREST);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,c?e.LINEAR:e.NEAREST);e.bindTexture(e.TEXTURE_2D,null);this.cf=null;g.Bf=a;g.Af=b;t.push(g);return g};c.prototype.Gw=function(a,b,c){this.Re();var d=this.C;this.be&&(c=!1);d.bindTexture(d.TEXTURE_2D,b);d.pixelStorei(d.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);try{d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA, +c?d.UNSIGNED_SHORT_4_4_4_4:d.UNSIGNED_BYTE,a)}catch(e){console&&console.error&&console.error("Error updating WebGL texture: ",e)}d.bindTexture(d.TEXTURE_2D,null);this.cf=null};c.prototype.deleteTexture=function(a){a&&("undefined"!==typeof a.yj&&1= +d?a[3]:256>=d?a[2]:512>=d?a[1]:a[0]}function m(){try{return!!window.indexedDB}catch(a){return!1}}function n(a){a.target.result.createObjectStore("saves",{keyPath:"slot"})}function p(a,d,e,b){try{var l=indexedDB.open("_C2SaveStates");l.onupgradeneeded=n;l.onerror=b;l.onsuccess=function(l){l=l.target.result;l.onerror=b;l.transaction(["saves"],"readwrite").objectStore("saves").put({slot:a,data:d}).onsuccess=e}}catch(c){b(c)}}function t(a,d,e){try{var b=indexedDB.open("_C2SaveStates");b.onupgradeneeded= +n;b.onerror=e;b.onsuccess=function(b){b=b.target.result;b.onerror=e;var l=b.transaction(["saves"]).objectStore("saves").get(a);l.onsuccess=function(){l.result?d(l.result.data):d(null)}}}catch(l){e(l)}}function b(){C("Reloading for continuous preview");window.c2cocoonjs?CocoonJS.App.reload():-1c?(c*=d,5===g?(f=c*e/this.ub,1f&&(f=1/Math.ceil(1/f)),c=this.ub*f/e,f=this.tb*f/e,b=(a-c)/2,l=(d-f)/2,a=c,d=f):(b=(a-c)/2,a=c)):(f=a/c,5===g?(f=f*e/this.tb,1f&&(f=1/Math.ceil(1/f)),c=this.ub*f/e,f=this.tb*f/e,b=(a-c)/2,l=(d-f)/2,a=c):l=(d-f)/2,d=f)):c&&0===g&&(b=Math.floor((a-this.ub)/2),l=Math.floor((d-this.tb)/2),a=this.ub,d=this.tb),2>g&&(this.Bh=e),this.Ij=Math.round(a),this.Hh=Math.round(d),this.width= +Math.round(a*e),this.height=Math.round(d*e),this.ma=!0,this.yr?(this.L=this.width,this.K=this.height,this.Bc=!0):this.widthc&&(this.K=this.L/g)):3===g&&(c=this.ub/this.tb,g=this.Zg/this.Yg,g>c?this.L=this.K*g:ge;)e++,a=g.shift(),this.gl(a[0],a[1])};c.prototype.mo=function(a,b){a.cocoonLazyLoad=!0;a.onerror=function(b){d=a.Jo=!0;console&&console.error&&console.error("Error loading image '"+a.src+"': ",b)};this.fd?a.src=b:a.src||("undefined"!==typeof XAPKReader?XAPKReader.get(b,function(d){a.src=d},function(e){d=a.Jo=!0;console&&console.error&&console.error("Error extracting image '"+ +b+"' from expansion file: ",e)}):(a.crossOrigin="anonymous",this.Sv(a,b)));this.vh.push(a)};c.prototype.ru=function(a){var d,b;d=0;for(b=this.vh.length;d=g)g=5E4;a+=g;c.src&&(c.complete||c.loaded)&&!c.Jo?d+=g:e=!1}e&&this.Mv&&this.xg&&(q||(this.xg.uw(), +q=!0),b=this.xg.Gu(),d+=b,bthis.jf&&(this.Qc||500<=e&&this.Fp!=this.ld)){a.clearRect(0,0,c,f);var e=c/2,f=f/2, +c=0===this.jf&&this.hf.Dk.complete,g=40*b,r=0,q=80*b,h;if(c){var p=this.hf.Dk,q=p.width*b;h=p.height*b;g=q/2;r=h/2;a.drawImage(p,qa(e-g),qa(f-r),q,h)}1>=this.jf?(e=qa(e-g)+.5,f=qa(f+(r+(c?12*b:0)))+.5,a.fillStyle=d?"red":"DodgerBlue",a.fillRect(e,f,Math.floor(q*this.ld),6*b),a.strokeStyle="black",a.strokeRect(e,f,q,6*b),a.strokeStyle="white",a.strokeRect(e-1*b,f-1*b,q+2*b,8*b)):2===this.jf&&(a.font=this.fd?"12pt ArialMT":"12pt Arial",a.fillStyle=d?"#f00":"#999",a.by="middle",b=Math.round(100*this.ld)+ +"%",c=a.measureText?a.measureText(b):null,a.fillText(b,e-(c?c.width:0)/2,f));this.Fp=this.ld}else if(4===this.jf){this.Ht(a);k?k(function(){l.go()}):setTimeout(function(){l.go()},16);return}}setTimeout(function(){l.go()},this.Qc?10:100)}}};var B=-1,l="undefined"===typeof cr_is_preview?200:0,r=!0,y=!1,H=0,A=0,L="undefined"===typeof cr_is_preview?3E3:0,O=null,w=null,G=0;c.prototype.Ht=function(a){if(!N){for(var b=Math.ceil(this.width),e=Math.ceil(this.height),c=this.hf.Dk,f=this.hf.Lv,g=this.hf.Hw, +q=0;4>q;++q)if(!c[q].complete||!f[q].complete||!g[q].complete)return;0===G&&(B=Date.now());var q=Date.now(),p=!1,k=a,m,n;r||y?(a.clearRect(0,0,b,e),O&&O.width===b&&O.height===e||(O=document.createElement("canvas"),O.width=b,O.height=e,w=O.getContext("2d")),k=w,p=!0,r&&1===G&&(B=Date.now())):a.globalAlpha=1;k.fillStyle="#333333";k.fillRect(0,0,b,e);256=L&&!y&&1<=this.ld&&(y=!0,A=q);if(y&&q-A>=300+l||"undefined"!==typeof cr_is_preview&&1<=this.ld&&500>Date.now()-B)N=!0,y=r=!1,this.hf=w=O=null;++G}};c.prototype.Zu=function(){this.Jb&&(this.canvas.parentNode.removeChild(this.Jb),this.Jb=this.vn=null);this.ml=Date.now();this.Yf=Wa();var a,d,b;if(this.ko)for(a=0,d=this.B.length;aa||2===this.rc&&dd&&(d=0),this.Jf=d/=1E3,.51/this.cq&&(this.Jf=1/this.cq));this.tk= +a;this.If=this.Jf*this.rg;this.Ab.add(this.If);this.ze.add(d);a=(document.mozFullScreen||document.webkitIsFullScreen||document.fullScreen||!!document.msFullscreenElement||this.nk)&&!this.ed;2<=this.rc||a&&0d||2===e&&b +a++;)this.Ro(this.Cf);a=0;for(d=this.Vd.length;ad.Mj.length&&d.Mj.push(a)};var R=[];c.prototype.Ef=function(a,d,b,e,l,c){var f,g,r,q;if(!a)return null;var h=this.B[a[1]],p=h.za.We;if(this.Ug&&p&&!h.Mm||p&&!this.A&&11===a[0][11])return null;var y=d;p||(d=null);var k;h.Mj.length?(k=h.Mj.pop(), +k.yc=!0,h.za.M.call(k,h)):(k=new h.za.M(h),k.yc=!1);!b||c||this.he.hasOwnProperty(a[2].toString())?k.uid=this.Di++:k.uid=a[2];this.he[k.uid.toString()]=k;k.Hq=this.iq++;k.Rf=h.e.length;f=0;for(g=this.cd.length;fa&&(a=0);a>=this.xa.U.length&&(a=this.xa.U.length-1);return this.xa.U[a]};c.prototype.Xl=function(a){var d,b;d=0;for(b=a.length;dq;++q)if(k=2*q-1,a.x=l+d*r*k,a.y=f+b*r*k,a.D(),!this.Kc(a,c))if(c=this.jc(a))g=c;else return g&&this.Wk(a,d*k,b*k,g),!0;a.x=l;a.y=f;a.D();return!1};c.prototype.Wk=function(a,d,b,e){var l=2,f,c=!1;f=!1;for(var g=a.x,r=a.y;16>= +l;)f=1/l,l*=2,a.x+=d*f*(c?1:-1),a.y+=b*f*(c?1:-1),a.D(),this.Kc(a,e)?f=c=!0:(f=c=!1,g=a.x,r=a.y);f&&(a.x=g,a.y=r,a.D())};c.prototype.Rv=function(a,d){var b=ha(d)?100:d,e=0,l=a.x,f=a.y,c=0,g=0,r=0,q=this.jc(a);if(!q)return!0;for(;e<=b;){switch(c){case 0:g=0;r=-1;e++;break;case 1:g=1;r=-1;break;case 2:g=1;r=0;break;case 3:r=g=1;break;case 4:g=0;r=1;break;case 5:g=-1;r=1;break;case 6:g=-1;r=0;break;case 7:r=g=-1}c=(c+1)%8;a.x=qa(l+g*e);a.y=qa(f+r*e);a.D();if(!this.Kc(a,q)&&(q=this.jc(a),!q))return!0}a.x= +l;a.y=f;a.D();return!1};c.prototype.of=function(a,d){a.Sd&&d.Sd&&this.kg.push([a,d])};c.prototype.Os=function(a,d,b){var e,l,f;e=0;for(l=this.kg.length;e=this.dn.length&&this.dn.push([])};c.prototype.Jv=function(){this.Ck--};c.prototype.fp=function(){return this.dn[this.Ck]};c.prototype.Vk=function(a){this.Sj++; +this.Sj>=this.gm.length&&this.gm.push(new Pb);var d=this.Qb();d.reset(a);return d};c.prototype.Pk=function(){this.Sj--};c.prototype.Qb=function(){return this.gm[this.Sj]};c.prototype.gp=function(a,d){for(var b,e,l,f,c,g;d;){b=0;for(e=d.Vc.length;bf||f>=a.pb.length||(c=l[e],null===c&&(c=NaN),a.pb[f]=c));if(r.We){f=d.w;a.j.ca!==f.l&&(l=a.j,a.j=this.xa.dk(f.l),a.j?(l.jh(a,!0),a.j.Ah(a,!0),a.D(),a.j.Ri(0)):(a.j=l,b||this.wf(a)));a.x=f.x;a.y=f.y;a.width=f.w;a.height=f.h;a.ud=f.zi;a.u=f.hasOwnProperty("a")?f.a:0;a.opacity=f.hasOwnProperty("o")?f.o:1;a.Ub=f.hasOwnProperty("hX")?f.hX:.5;a.Vb=f.hasOwnProperty("hY")?f.hY:.5;a.visible=f.hasOwnProperty("v")? +f.v:!0;a.Sd=f.hasOwnProperty("ce")?f.ce:!0;a.Ci=f.hasOwnProperty("mts")?f.mts:-1;a.Nb=f.hasOwnProperty("bm")?f.bm:0;a.Dh=eb(a.Nb);this.C&&fb(a,a.Nb,this.C);a.D();if(f.hasOwnProperty("fx"))for(b=0,l=f.fx.length;bc||(a.De[c]=f.fx[b].active,a.Qa[c]=f.fx[b].params);a.td()}if(g=d.behs)for(e in g)g.hasOwnProperty(e)&&(b=this.wu(a,parseInt(e,10)),0>b||a.N[b].rb(g[e]));d.data&&a.rb(d.data)};c.prototype.Wo=function(a,d,b){window.resolveLocalFileSystemURL(cordova.file.applicationDirectory+ +"www/"+a,function(a){a.file(d,b)},b)};c.prototype.pu=function(a,d){this.Wo("data.js",function(b){var e=new FileReader;e.onload=function(d){a(d.target.result)};e.onerror=d;e.readAsText(b)},d)};var I=[],u=0;c.prototype.hn=function(){if(I.length&&!(8<=u)){u++;var a=I.shift();this.lt(a.filename,a.ww,a.Mt)}};c.prototype.Xo=function(a,d,b){var e=this;I.push({filename:a,ww:function(a){u--;e.hn();d(a)},Mt:function(a){u--;e.hn();b(a)}});this.hn()};c.prototype.lt=function(a,d,b){this.Wo(a,function(a){var b= +new FileReader;b.onload=function(a){d(a.target.result)};b.readAsArrayBuffer(a)},b)};c.prototype.qu=function(a,d,b){var e="",l=a.toLowerCase(),f=l.substr(l.length-4),l=l.substr(l.length-5);".mp4"===f?e="video/mp4":".webm"===l?e="video/webm":".m4a"===f?e="audio/mp4":".mp3"===f&&(e="audio/mpeg");this.Xo(a,function(a){a=URL.createObjectURL(new Blob([a],{type:e}));d(a)},b)};c.prototype.kv=function(a){return/^(?:[a-z]+:)?\/\//.test(a)||"data:"===a.substr(0,5)||"blob:"===a.substr(0,5)};c.prototype.gl=function(a, +d){this.ok&&!this.kv(d)?this.qu(d,function(d){a.src=d},function(a){alert("Failed to load image: "+a)}):a.src=d};c.prototype.el=function(a,d){"undefined"!==typeof a.imageSmoothingEnabled?a.imageSmoothingEnabled=d:(a.webkitImageSmoothingEnabled=d,a.mozImageSmoothingEnabled=d,a.msImageSmoothingEnabled=d)};Rb=function(a){return new c(document.getElementById(a))};Sb=function(a,d){return new c({dc:!0,width:a,height:d})};window.cr_createRuntime=Rb;window.cr_createDCRuntime=Sb;window.createCocoonJSRuntime= +function(){window.c2cocoonjs=!0;var a=document.createElement("screencanvas")||document.createElement("canvas");a.tj=!0;document.body.appendChild(a);a=new c(a);window.c2runtime=a;window.addEventListener("orientationchange",function(){window.c2runtime.setSize(window.innerWidth,window.innerHeight)});window.c2runtime.setSize(window.innerWidth,window.innerHeight);return a};window.createEjectaRuntime=function(){var a=new c(document.getElementById("canvas"));window.c2runtime=a;window.c2runtime.setSize(window.innerWidth, +window.innerHeight);return a}})();window.cr_getC2Runtime=function(){var c=document.getElementById("c2canvas");return c?c.c2runtime:window.c2runtime?window.c2runtime:null};window.cr_getSnapshot=function(c,h){var m=window.cr_getC2Runtime();m&&m.ht(c,h)};window.cr_sizeCanvas=function(c,h){if(0!==c&&0!==h){var m=window.cr_getC2Runtime();m&&m.setSize(c,h)}};window.cr_setSuspended=function(c){var h=window.cr_getC2Runtime();h&&h.setSuspended(c)}; +(function(){function c(a,b){this.b=a;this.Lf=null;this.scrollX=this.b.ub/2;this.scrollY=this.b.tb/2;this.scale=1;this.u=0;this.Hg=!0;this.name=b[0];this.Fv=b[1];this.Ev=b[2];this.width=b[1];this.height=b[2];this.nr=b[3];this.Wq=b[4];this.ca=b[5];var c=b[6],f,q;this.U=[];this.Xh=[];f=0;for(q=c.length;f=this.U.length&&(l=this.U.length-1);k.j=this.U[l];-1===k.j.e.indexOf(k)&&k.j.e.push(k);k.j.sg=!0}if(!b)for(a=0,c=this.U.length;ac?k.siblings.push(p.e[c]):p.zd&&(q=this.b.Ef(p.zd,k.j,!0,k.x,k.y,!0),this.b.Lb(),p.ul(),k.siblings.push(q),t.push(q)));a=0;for(c= +this.Ve.length;athis.width-b&&(a=this.width-b);athis.height-b&&(a=this.height-b);ax&&(x=0);0>P&&(P=0);T>J&&(T=J);U>M&&(U=M);0>E&&(E=0);0>Q&&(Q=0);aa>J&&(aa=J);fa>M&&(fa=M);u.left=x/J;u.top=1-P/M;u.right=T/J;u.bottom=1-U/M}else u.left=z.left=0,u.top=z.top=0,u.right=z.right=1,u.bottom=z.bottom=1;ga=c&&(a.Ji(k[0].lb)||0!==v||0!== +ga||1!==c.opacity||c.type.za.dq)||b&&!c&&1!==b.opacity;a.Mq();if(ga){A[S]||(A[S]=a.Ac(J,M,this.b.Ca));if(A[S].Bf!==J||A[S].Af!==M)a.deleteTexture(A[S]),A[S]=a.Ac(J,M,this.b.Ca);a.ic(0);a.Uc(A[S]);D=fa-Q;a.clearRect(E,M-Q-D,aa-E,D);c?c.Fb(a):(a.gc(this.b.qb),a.sf(b.opacity),a.Tc(),a.translate(-F,-I),a.Lc(),a.od(x,U,T,U,T,P,x,P,u));z.left=z.top=0;z.right=z.bottom=1;c&&(G=u.top,u.top=u.bottom,u.bottom=G);S=1;R=0}a.sf(1);v=k.length-1;var xa=a.Bn(k[v].lb)||!b&&!c&&!this.b.Bc;n=G=0;for(t=k.length;nc||(b&&this.Mc&&a.ec&&a.ec.right>=a.ec.left&&(a.Da(),this.Kb.update(a,a.ec,null),a.ec.set(0,0,-1,-1)),c===this.e.length-1?this.e.pop():(wa(this.e,c),this.Ri(c)),this.pd=!0)}; +m.prototype.Ah=function(a,b){a.ud=this.e.length;this.e.push(a);b&&this.Mc&&a.ec&&a.D();this.pd=!0};m.prototype.Nv=function(a){this.e.unshift(a);this.Ri(0)};m.prototype.zv=function(a,b,c){var f=a.Cd();b=b.Cd();wa(this.e,f);fthis.Ba||c.top>this.Aa||(b.globalCompositeOperation=a.Dh,a.qc(b))}};m.prototype.xl=function(){this.Ud=!0;var a=this.Je(!0),b=this.Je(!1);this.Ud=!1;this.b.Hc&&(a=Math.round(a),b=Math.round(b)); +this.Zk(a,b,null)};m.prototype.Zk=function(a,b,c){var f=this.Tb();this.qa=a;this.ra=b;this.Ba=a+1/f*this.b.L;this.Aa=b+1/f*this.b.K;this.qa>this.Ba&&(a=this.qa,this.qa=this.Ba,this.Ba=a);this.ra>this.Aa&&(a=this.ra,this.ra=this.Aa,this.Aa=a);a=this.nb();0!==a&&(c&&(c.translate(this.b.L/2,this.b.K/2),c.rotate(-a),c.translate(this.b.L/-2,this.b.K/-2)),this.ue.set(this.qa,this.ra,this.Ba,this.Aa),this.ue.offset((this.qa+this.Ba)/-2,(this.ra+this.Aa)/-2),this.jr.Uq(this.ue,a),this.jr.Io(this.ue),this.ue.offset((this.qa+ +this.Ba)/2,(this.ra+this.Aa)/2),this.qa=this.ue.left,this.ra=this.ue.top,this.Ba=this.ue.right,this.Aa=this.ue.bottom)};m.prototype.Hf=function(a){if(this.Kd=this.$j){this.b.qb||(this.b.qb=a.Ac(this.b.L,this.b.K,this.b.Ca));if(this.b.qb.Bf!==this.b.L||this.b.qb.Af!==this.b.K)a.deleteTexture(this.b.qb),this.b.qb=a.Ac(this.b.L,this.b.K,this.b.Ca);a.Uc(this.b.qb)}this.Ud=!0;var b=this.Je(!0),c=this.Je(!1);this.Ud=!1;this.b.Hc&&(b=Math.round(b),c=Math.round(c));this.Zk(b,c,null);b=this.Tb();a.Tc();a.scale(b, +b);a.$k(-this.nb());a.translate((this.qa+this.Ba)/-2,(this.ra+this.Aa)/-2);a.Lc();this.Mc?(this.Eb.left=this.Kb.$b(this.qa),this.Eb.top=this.Kb.ac(this.ra),this.Eb.right=this.Kb.$b(this.Ba),this.Eb.bottom=this.Kb.ac(this.Aa),this.pd||!this.Eb.Jh(this.$g)?(p(this.fe),b=this.wm(),this.pd=!1,this.$g.Eh(this.Eb)):b=this.fe):b=this.e;for(var f,k=null,c=b.length-1;0<=c;--c)f=b[c],f!==k&&(this.Ft(b[c],a),k=f);this.Mc&&(this.fe=b);this.sd||(this.Yl=this.b.Kf++,a.fl(this.Yl),a.Nq(1,1,1),a.$o(),a.Yv())};m.prototype.Fb= +function(a){var b=0,c=0;if(this.Kd=this.$j||1!==this.opacity||0this.Ba||c.top>this.Aa||(b.fl(a.Kf),a.tr?this.Gt(a,b):(b.ic(0),b.rf(a.Sb,a.Pb),a.Fb(b)))}};m.prototype.Ft=function(a,b){if(a.visible&&0!==a.width&&0!==a.height){a.Da();var c=a.La;c.rightthis.Ba||c.top>this.Aa||(a.Kf=this.b.Kf++,0===a.Nb&&1===a.opacity&&a.me&& +a.Hf&&(b.fl(a.Kf),a.Hf(b)))}};m.prototype.Gt=function(a,b){var c=a.na[0].lb,f=a.na[0].index,k=this.Tb();if(1!==a.na.length||b.Bn(c)||b.Pv(c)||(a.u||a.j.nb())&&b.Ji(c)||1!==a.opacity||a.type.za.dq)this.hb.Gn(b,this,a,this.Kd?this.b.qb:this.hb.Rh()),b.Tc(),b.scale(k,k),b.$k(-this.nb()),b.translate((this.qa+this.Ba)/-2,(this.ra+this.Aa)/-2),b.Lc();else{b.ic(c);b.rf(a.Sb,a.Pb);b.Tk(c)&&(this.b.ma=!0);var h=0,p=0,l=0,r=0;b.Ji(c)&&(r=a.La,h=this.Z(r.left,r.top,!0,!0),p=this.Z(r.left,r.top,!1,!0),l=this.Z(r.right, +r.bottom,!0,!0),r=this.Z(r.right,r.bottom,!1,!0),h=h/windowWidth,p=1-p/windowHeight,l=l/windowWidth,r=1-r/windowHeight);var m;a.fb&&a.fb.G?(m=a.fb.G,c=1/m.width,m=1/m.height):(c=1/a.width,m=1/a.height);b.mh(this.Kd?this.b.qb:this.hb.Rh(),c,m,h,p,l,r,k,this.nb(),this.qa,this.ra,(this.qa+this.Ba)/2,(this.ra+this.Aa)/2,this.b.Ab.da,a.Qa[f]);a.Fb(b)}};m.prototype.Je=function(a){var b=0,c=0,f=this.b.devicePixelRatio;this.b.Uf&&(b*=f,c*=f);var f=this.b.zq,k=this.b.Aq,f=(this.hb.scrollX-f)*this.ie+f,k=(this.hb.scrollY- +k)*this.je+k,h,p,l=1/this.Tb(!1);h=f-this.b.L*l/2;p=k-this.b.K*l/2;h+=b*l;p+=c*l;c=this.nb();0!==c&&(h-=f,p-=k,b=Math.cos(c),c=Math.sin(c),l=h*b-p*c,p=p*b+h*c,h=l+f,p+=k);return a?h:p};m.prototype.Z=function(a,b,c,f){var k=this.b.zq,h=this.b.Aq,p=(this.hb.scrollX-k)*this.ie+k,l=(this.hb.scrollY-h)*this.je+h,h=p,k=l,r=this.nb();if(0!==r){a-=p;b-=l;var m=Math.cos(-r),r=Math.sin(-r),n=a*m-b*r;b=b*m+a*r;a=n+p;b+=l}p=1/this.Tb(!f);f?(h-=this.b.L*p/2,k-=this.b.K*p/2):(h-=this.b.width*p/2,k-=this.b.height* +p/2);h=(a-h)/p;k=(b-k)/p;a=this.b.devicePixelRatio;this.b.Uf&&!f&&(h/=a,k/=a);return c?h:k};m.prototype.bb=function(){var a,b,c,f={s:this.scale,a:this.u,vl:this.qa,vt:this.ra,vr:this.Ba,vb:this.Aa,v:this.visible,bc:this.ad,t:this.sd,px:this.ie,py:this.je,o:this.opacity,zr:this.jj,fx:[],cg:this.Gh,instances:[]};a=0;for(b=this.S.length;aa[1].index&&(b=a[0],a[0]=a[1],a[1]=b):2=q.length&&(q.length=a.length+1);q[a.length]||(q[a.length]=[]);e=q[a.length];b=0;for(d=e.length;b=b.length&&(b.length=this.dg+1),b[this.dg]=a):this.data=a};e.prototype.Lu=function(){var a=this.b.fp();return!this.parent||this.hi||!a||this.pk?this.data:this.dg>=a.length||"undefined"===typeof a[this.dg]?this.Em:a[this.dg]};e.prototype.kb=function(){!this.parent||this.hi||this.pk||this.pw(this.Em)};Qb=e;g.prototype.toString=function(){return"include:"+this.Wh.toString()};g.prototype.ab=function(){this.Wh= +this.b.hm[this.cv];this.sheet.op.add(this);this.Fa=m(this.Fa);for(var a=this.parent;a;)a.group&&a.Fj.push(this),a=a.parent;this.pr()};g.prototype.kb=function(){this.parent&&this.b.Li(this.b.B);this.Wh.Am||this.Wh.kb(!0);this.parent&&this.b.jg(this.b.B)};g.prototype.pr=function(){for(var a=this.parent;a;){if(a.group&&!a.Th){this.Mb=!1;return}a=a.parent}this.Mb=!0};$b=g;f.prototype.reset=function(a){this.pc=a;this.lc=this.xb=0;W(this.fr);this.fm=this.Xf=!1};Pb=f})(); +(function(){function c(b,a){this.Sc=b;this.b=b.b;this.type=a[0];this.get=[this.bu,this.Yt,this.ku,this.nu,this.Nt,this.lu,this.fu,this.Vt,this.eu,this.ju,this.Ot,this.iu,this.Wt,this.gu,this.cu,this.du,this.Zt,this.$t,this.Ut,this.mu,this.hu,this.au,this.Tt,this.Xt][this.type];var c=null;this.ge=this.V=this.Ta=this.Gb=this.ql=this.second=this.first=this.value=null;this.bd=-1;this.dd=null;this.ur=-1;this.Mf=this.fj=null;this.kh=!1;switch(this.type){case 0:case 1:case 2:this.value=a[1];break;case 3:this.first= +new Yb(b,a[1]);break;case 18:this.first=new Yb(b,a[1]);this.second=new Yb(b,a[2]);this.ql=new Yb(b,a[3]);break;case 19:this.Gb=this.b.Ce(a[1]);this.Gb!==Z.prototype.Sa.random&&this.Gb!==Z.prototype.Sa.Zs||this.Sc.Sq();this.Ta=[];this.V=[];3===a.length?(c=a[2],this.Ta.length=c.length+1):this.Ta.length=1;break;case 20:this.ge=this.b.B[a[1]];this.bd=-1;this.Gb=this.b.Ce(a[2]);this.kh=a[3];cc.Function&&this.Gb===cc.Function.prototype.Sa.Pw&&this.Sc.Sq();a[4]?this.dd=new Yb(b,a[4]):this.dd=null;this.Ta= +[];this.V=[];6===a.length?(c=a[5],this.Ta.length=c.length+1):this.Ta.length=1;break;case 21:this.ge=this.b.B[a[1]];this.kh=a[2];a[3]?this.dd=new Yb(b,a[3]):this.dd=null;this.ur=a[4];break;case 22:this.ge=this.b.B[a[1]];this.ge.ck(a[2]);this.bd=this.ge.om(a[2]);this.Gb=this.b.Ce(a[3]);this.kh=a[4];a[5]?this.dd=new Yb(b,a[5]):this.dd=null;this.Ta=[];this.V=[];7===a.length?(c=a[6],this.Ta.length=c.length+1):this.Ta.length=1;break;case 23:this.fj=a[1],this.Mf=null}this.Sc.yv(this.ge);4<=this.type&&17>= +this.type&&(this.first=new Yb(b,a[1]),this.second=new Yb(b,a[2]));if(c){var h,d;h=0;for(d=c.length;h=a||g<=-a)g%=a;0>g&&(g+=a);e.apply(q[g],c)};c.prototype.Tt=function(b){var a=this.ge,c=this.Ta,p=this.V,d=this.dd,e=this.bd,g=this.Gb,f=this.Sc.ne,q=a.ya(),n=q.Dc();if(!n.length)if(q.pa.length)n=q.pa;else{this.kh?b.Db(""):b.Ea(0);return}c[0]=b;b.fg=a;b=h();m(p,c,b);d&&(d.get(b),b.zb()&&(f=b.data,n=a.e));--t;p=n.length;if(f>=p||f<=-p)f%=p;0>f&&(f+=p);f=n[f];n=0;a.J&&(n=f.type.Gg[a.Wd]);g.apply(f.N[e+n],c)};c.prototype.au=function(b){var a=this.dd,c=this.ge,p=this.ur,d=this.Sc.ne, +e=c.ya(),g=e.Dc();if(!g.length)if(e.pa.length)g=e.pa;else{this.kh?b.Db(""):b.Ea(0);return}if(a){e=h();a.get(e);if(e.zb()){d=e.data;g=c.e;0!==g.length&&(d%=g.length,0>d&&(d+=g.length));d=c.um(d);c=d.pb[p];V(c)?b.Db(c):b.ba(c);--t;return}--t}a=g.length;if(d>=a||d<=-a)d%=a;0>d&&(d+=a);d=g[d];g=0;c.J&&(g=d.type.Uj[c.Wd]);c=d.pb[p+g];V(c)?b.Db(c):b.ba(c)};c.prototype.bu=function(b){b.type=ac.ug;b.data=this.value};c.prototype.Yt=function(b){b.type=ac.tg;b.data=this.value};c.prototype.ku=function(b){b.type= +ac.String;b.data=this.value};c.prototype.nu=function(b){this.first.get(b);b.zb()&&(b.data=-b.data)};c.prototype.Nt=function(b){this.first.get(b);var a=h();this.second.get(a);b.zb()&&a.zb()&&(b.data+=a.data,a.Pg()&&b.bh());--t};c.prototype.lu=function(b){this.first.get(b);var a=h();this.second.get(a);b.zb()&&a.zb()&&(b.data-=a.data,a.Pg()&&b.bh());--t};c.prototype.fu=function(b){this.first.get(b);var a=h();this.second.get(a);b.zb()&&a.zb()&&(b.data*=a.data,a.Pg()&&b.bh());--t};c.prototype.Vt=function(b){this.first.get(b); +var a=h();this.second.get(a);b.zb()&&a.zb()&&(b.data/=a.data,b.bh());--t};c.prototype.eu=function(b){this.first.get(b);var a=h();this.second.get(a);b.zb()&&a.zb()&&(b.data%=a.data,a.Pg()&&b.bh());--t};c.prototype.ju=function(b){this.first.get(b);var a=h();this.second.get(a);b.zb()&&a.zb()&&(b.data=Math.pow(b.data,a.data),a.Pg()&&b.bh());--t};c.prototype.Ot=function(b){this.first.get(b);var a=h();this.second.get(a);a.Sg()||b.Sg()?this.Qt(b,a):this.Pt(b,a);--t};c.prototype.Qt=function(b,a){b.Sg()&& +a.Sg()?this.St(b,a):this.Rt(b,a)};c.prototype.St=function(b,a){b.data+=a.data};c.prototype.Rt=function(b,a){b.Sg()?b.data+=(Math.round(1E10*a.data)/1E10).toString():b.Db(b.data.toString()+a.data)};c.prototype.Pt=function(b,a){b.Ea(b.data&&a.data?1:0)};c.prototype.iu=function(b){this.first.get(b);var a=h();this.second.get(a);b.zb()&&a.zb()&&(b.data||a.data?b.Ea(1):b.Ea(0));--t};c.prototype.Ut=function(b){this.first.get(b);b.data?this.second.get(b):this.ql.get(b)};c.prototype.Wt=function(b){this.first.get(b); +var a=h();this.second.get(a);b.Ea(b.data===a.data?1:0);--t};c.prototype.gu=function(b){this.first.get(b);var a=h();this.second.get(a);b.Ea(b.data!==a.data?1:0);--t};c.prototype.cu=function(b){this.first.get(b);var a=h();this.second.get(a);b.Ea(b.dataa.data?1:0);--t};c.prototype.$t=function(b){this.first.get(b); +var a=h();this.second.get(a);b.Ea(b.data>=a.data?1:0);--t};c.prototype.Xt=function(b){var a=this.Mf.Lu();ia(a)?b.ba(a):b.Db(a)};Yb=c;n.prototype.Pg=function(){return this.type===ac.tg};n.prototype.zb=function(){return this.type===ac.ug||this.type===ac.tg};n.prototype.Sg=function(){return this.type===ac.String};n.prototype.bh=function(){this.Pg()||(this.Sg()&&(this.data=parseFloat(this.data)),this.type=ac.tg)};n.prototype.Ea=function(b){this.type=ac.ug;this.data=Math.floor(b)};n.prototype.ba=function(b){this.type= +ac.tg;this.data=b};n.prototype.Db=function(b){this.type=ac.String;this.data=b};n.prototype.qw=function(b){ia(b)?(this.type=ac.tg,this.data=b):V(b)?(this.type=ac.String,this.data=b.toString()):(this.type=ac.ug,this.data=0)};Xb=n;ac={ug:0,tg:1,String:2}})();function Z(c){this.b=c;this.kc=[]} +Z.prototype.bb=function(){var c={},h,m,n,p,t,b,a,k;c.waits=[];var v=c.waits,d;h=0;for(m=this.kc.length;hb)){var a,c,h,d=this.b.Qb(),e;p.length?e=p.pop():e={Yb:{},Fa:[]};e.em=!1;e.time=this.b.Ab.da+b;e.Zq="";e.Tn=!1;e.Eg=d.pc;e.lc=d.lc+1;b=0;for(a=this.b.B.length;bd&&(a=d);b.ba(a)};m.prototype.If=function(b){b.ba(this.b.If)};m.prototype.rg=function(b){b.ba(this.b.rg)};m.prototype.time=function(b){b.ba(this.b.Ab.da)};m.prototype.Od=function(b){b.Ea(this.b.Od)};m.prototype.Kk=function(b){b.Ea(this.b.Kk)};m.prototype.lm=function(b){b.Ea(this.b.lm)};m.prototype.u=function(b,a,c,h,d){b.ba(Fa(La(a,c,h,d)))};m.prototype.uv=function(b){b.Ea(this.b.xa.height)};m.prototype.left=function(b,a,c){b.Db(V(a)?a.substr(0,c):"")};m.prototype.right=function(b, +a,c){b.Db(V(a)?a.substr(a.length-c):"")};m.prototype.replace=function(b,a,c,h){V(a)&&V(c)&&V(h)?b.Db(a.replace(new RegExp(ab(c),"gi"),h)):b.Db(V(a)?a:"")};m.prototype.trim=function(b,a){b.Db(V(a)?a.trim():"")};m.prototype.Zs=function(b){var a=qa(Math.random()*(arguments.length-1));b.qw(arguments[a+1])};m.prototype.Zl=function(b){b.ba(this.b.Zl/1E3)};m.prototype.Ak=function(b){b.ba(this.b.Ak)};n.Sa=new m;n.bw=function(){var b,a,c,h,d,e,g=this.b.Qb();b=0;for(c=this.kc.length;bthis.b.Ab.da)continue;g.pc=h.Eg;g.lc=h.lc;g.xb=0;for(a in h.Yb)h.Yb.hasOwnProperty(a)&&(d=this.b.B[parseInt(a,10)].ya(),e=h.Yb[a],d.Ia=e.bl,za(d.e,e.$d),d=e,W(d.$d),t.push(d));h.Eg.$v();this.b.Xl(h.Fa);h.em=!0}a=b=0;for(c=this.kc.length;ba.Ba||b.top>a.Aa)},d.bx=function(){this.Da();var a=this.La,b=this.b.xa;return 0>a.right||0>a.bottom||a.left>b.width||a.top>b.height},d.ox=function(a,b,d){var c=this.ya(), +e=c.Dc();if(!e.length)return!1;var g=e[0],k=g,h=Qa(g.x,g.y,b,d),p,m,n;p=1;for(m=e.length;ph)h=n,k=g;c.Ii(k);return!0},e.Ix=function(a){this.x!==a&&(this.x=a,this.D())},e.Jx=function(a){this.y!==a&&(this.y=a,this.D())},e.Ex=function(a,b){if(this.x!==a||this.y!==b)this.x=a,this.y=b,this.D()},e.Fx=function(a,b){var d=a.Fu(this);if(d){var c;d.tm?(c=d.tm(b,!0),d=d.tm(b,!1)):(c=d.x,d=d.y);if(this.x!==c||this.y!==d)this.x=c,this.y=d,this.D()}},e.jx= +function(a){0!==a&&(this.x+=Math.cos(this.u)*a,this.y+=Math.sin(this.u)*a,this.D())},e.ix=function(a,b){0!==b&&(this.x+=Math.cos(Y(a))*b,this.y+=Math.sin(Y(a))*b,this.D())},g.Ox=function(a){a.ba(this.x)},g.Px=function(a){a.ba(this.y)},g.If=function(a){a.ba(this.b.Qh(this))});t&&(d.Tw=function(a,b){return bc(this.width,a,b)},d.Qw=function(a,b){return bc(this.height,a,b)},e.Hs=function(a){this.width!==a&&(this.width=a,this.D())},e.Bx=function(a){this.height!==a&&(this.height=a,this.D())},e.Gx=function(a, +b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.D()},g.Nx=function(a){a.ba(this.width)},g.Xw=function(a){a.ba(this.height)},g.Mw=function(a){this.Da();a.ba(this.La.left)},g.Ow=function(a){this.Da();a.ba(this.La.top)},g.Nw=function(a){this.Da();a.ba(this.La.right)},g.Lw=function(a){this.Da();a.ba(this.La.bottom)});b&&(d.Br=function(a,b){return Ma(this.u,Y(b))<=Y(a)},d.Nr=function(a){return Oa(this.u,Y(a))},d.Lr=function(a,b){var d=Ka(a),c=Ka(b),e=Ha(this.u);return Oa(c,d)?Oa(e, +d)&&!Oa(e,c):!(!Oa(e,d)&&Oa(e,c))},e.yx=function(a){a=Y(Ga(a));isNaN(a)||this.u===a||(this.u=a,this.D())},e.ux=function(a){0===a||isNaN(a)||(this.u+=Y(a),this.u=Ha(this.u),this.D())},e.vx=function(a){0===a||isNaN(a)||(this.u-=Y(a),this.u=Ha(this.u),this.D())},e.wx=function(a,b){var d=Na(this.u,Y(b),Y(a));isNaN(d)||this.u===d||(this.u=d,this.D())},e.xx=function(a,b,d){a=Na(this.u,Math.atan2(d-this.y,b-this.x),Y(a));isNaN(a)||this.u===a||(this.u=a,this.D())},e.Hx=function(a,b){var d=Math.atan2(b-this.y, +a-this.x);isNaN(d)||this.u===d||(this.u=d,this.D())},g.Kw=function(a){a.ba(Ia(this.u))});n||(d.Rw=function(a,b,d){return bc(this.pb[a],b,d)},d.Zw=function(a){return this.pb[a]},d.qx=function(a,b){var d=this.ya(),c=d.Dc();if(!c.length)return!1;var e=c[0],g=e,k=e.pb[b],h,p,m;h=1;for(p=c.length;hk)k=m,g=e;d.Ii(g);return!0},d.nx=function(a){var b,d,c,e,g;if(this.b.ep().Hm){g=this.ya();if(g.Ia)for(g.Ia=!1,W(g.e),W(g.pa),c=this.e,b=0,d=c.length;ba?a=0:1e.j.index||c.j.index===e.j.index&&c.Cd()>e.Cd())e=c}else if(c.j.indexd)){var c=1===a;this.De[d]!==c&&(this.De[d]=c,this.td(),this.b.ma=!0)}}},e.Ax=function(a,b,d){if(this.b.A){var c=this.type.rm(a);0>c||(a=this.type.S[c],c=this.Qa[c],b=Math.floor(b),0>b||b>=c.length||(1===this.b.A.Ju(a.lb,b)&&(d/=100),c[b]!==d&&(c[b]=d,a.Mb&&(this.b.ma=!0))))}})};Hb=function(){this.Sl=this.Ol=!0;this.type.rj=!0;this.b.ma=!0;var c,m,n=this.Pl;c=0;for(m= +n.length;cn;case 5:return c>=n;default:return!1}}})(); +var kc={exclusion:{src:"varying mediump vec2 vTex;\nuniform lowp sampler2D samplerFront;\nuniform lowp sampler2D samplerBack;\nuniform mediump vec2 destStart;\nuniform mediump vec2 destEnd;\nvoid main(void)\n{\nlowp vec4 front = texture2D(samplerFront, vTex);\nlowp vec4 back = texture2D(samplerBack, mix(destStart, destEnd, vTex));\nfront.rgb = 1.0 - (((1.0 - back.rgb * front.a) * (1.0 - front.rgb)) + (back.rgb * front.a * front.rgb));\ngl_FragColor = front;\n}",Mh:0,Nh:0,Hj:!0,Ic:!1,qj:!1,V:[]},hardlight:{src:"varying mediump vec2 vTex;\nuniform lowp sampler2D samplerFront;\nuniform lowp sampler2D samplerBack;\nuniform mediump vec2 destStart;\nuniform mediump vec2 destEnd;\nvoid main(void)\n{\nlowp vec4 front = texture2D(samplerFront, vTex);\nlowp vec4 back = texture2D(samplerBack, mix(destStart, destEnd, vTex));\nif (front.r * 0.299 + front.g * 0.587 + front.b * 0.114 <= 0.5)\n{\nfront *= back * 2.0;\n}\nelse\n{\nfront.rgb = 1.0 - ((1.0 - (2.0 * front.rgb - 1.0)) * (1.0 - back.rgb * front.a));\n}\ngl_FragColor = front;\n}", +Mh:0,Nh:0,Hj:!0,Ic:!1,qj:!1,V:[]}};function pc(c){this.b=c} +(function(){function c(a){-1===lb.indexOf(a)&&lb.push(a)}function h(a){var b=a.n,d;try{d=b.play()}catch(e){c(a);return}d?d.catch(function(){c(a)}):Fc&&!D.gd&&c(a)}function m(){var a,b,d,e;Gc||ga||!u||(n(),"running"===u.state&&(Gc=!0));var f=lb.slice(0);W(lb);if(!T)for(a=0,b=f.length;aa&&(a=0);1a&&(a=.01);this.Rk.gain.value=a;this.Qk.gain.value=Math.pow(1/a,.6)*b};y.prototype.shape=function(a,b,c){var d=1.05*c*b-b;c=0>a?-1:1;a=0>a?-a:a;b=af;++f)e=f/32768,e=this.shape(e,c,d),this.Kj[32768+f]=e,this.Kj[32768-f-1]=-e};y.prototype.Nc=function(a){this.P.disconnect();this.P.connect(a);this.O.disconnect();this.O.connect(a)};y.prototype.remove=function(){this.fa.disconnect();this.Rk.disconnect();this.zl.disconnect();this.Qk.disconnect();this.P.disconnect();this.O.disconnect()};y.prototype.Cc=function(){return this.fa};H.prototype.Nc=function(a){this.la.disconnect();this.la.connect(a)};H.prototype.remove= +function(){this.la.disconnect()};H.prototype.Cc=function(){return this.la};A.prototype.Ga=function(){this.la.getFloatFrequencyData(this.su);this.la.getByteTimeDomainData(this.Xq);for(var a=this.la.fftSize,b=0,c=this.Hi=0,d=0;bd&&(d=-d),this.Hib&&(c=b);return c};w.prototype.di=function(){return!this.sc&&!this.Bd&&!this.hc&&!this.Qf()};w.prototype.rw=function(){return!this.Bd&&!this.hc&&!this.Qf()};w.prototype.Bw= +function(){var a=this.volume*aa;isFinite(a)||(a=0);switch(this.aa){case 0:"undefined"!==typeof this.n.volume&&this.n.volume!==a&&(this.n.volume=a);break;case 1:1===this.buffer.aa?this.mb.gain.value=a*this.gh:"undefined"!==typeof this.n.volume&&this.n.volume!==a&&(this.n.volume=a)}};w.prototype.Qj=function(a){switch(this.aa){case 0:this.n.muted!==!!a&&(this.n.muted=!!a);break;case 1:1===this.buffer.aa?(this.gh=a?0:1,this.mb.gain.value=aa*this.volume*this.gh):this.n.muted!==!!a&&(this.n.muted=!!a)}}; +w.prototype.kw=function(){this.Qg=!0;this.Qj(this.Qg||this.gi)};w.prototype.Rq=function(a){this.gi=!!a;this.Qj(this.Qg||this.gi)};w.prototype.wl=function(){var a=this.playbackRate;this.Ng&&(a*=D.rg);switch(this.aa){case 0:this.n.playbackRate!==a&&(this.n.playbackRate=a);break;case 1:1===this.buffer.aa?this.n.playbackRate.value!==a&&(this.n.playbackRate.value=a):this.n.playbackRate!==a&&(this.n.playbackRate=a)}};w.prototype.mw=function(a){switch(this.aa){case 0:a?this.di()?(this.Jc=!0,this.n.pause()): +this.Jc=!1:this.Jc&&(this.n.play(),this.Jc=!1);break;case 1:a?this.di()?(this.Jc=!0,1===this.buffer.aa?(this.fc=this.vm(!0),this.Fd&&(this.fc=this.fc%this.Of()),d(this.n)):this.n.pause()):this.Jc=!1:this.Jc&&(1===this.buffer.aa?(this.n=u.createBufferSource(),this.n.buffer=this.buffer.ka,this.n.connect(this.mb),this.n.onended=this.sn,this.oj=this.n,this.n.loop=this.Fd,this.mb.gain.value=aa*this.volume*this.gh,this.wl(),this.startTime=(this.Ng?D.Ab.da:D.ze.da)-this.fc/(this.playbackRate||.001),v(this.n, +this.fc,this.Of())):this.n.play(),this.Jc=!1);break;case 2:a?this.di()?(this.n.pause(),this.Jc=!0):this.Jc=!1:this.Jc&&(this.Jc=!1,this.n.play())}};K.M=function(a){this.type=a;D=this.b=a.b;J=this;this.uc=null;this.oi=-600;this.b.ok&&(mb=!0);!(this.b.Tg||this.b.Mg&&(this.b.Jm||this.b.kk))||this.b.$h||this.b.ja||this.b.jk||mb||(Fc=!0);u=null;"undefined"!==typeof AudioContext?(I=1,u=new AudioContext):"undefined"!==typeof webkitAudioContext&&(I=1,u=new webkitAudioContext);this.b.Tg&&u&&(u.close&&u.close(), +"undefined"!==typeof AudioContext?u=new AudioContext:"undefined"!==typeof webkitAudioContext&&(u=new webkitAudioContext));1!==I&&(this.b.ed&&"undefined"!==typeof window.Media?I=2:this.b.up&&(I=3));2===I&&(F=location.href,a=F.lastIndexOf("/"),-1"!==b&&(a.Nk=b,a.gn=d,a.lo=e),null;g=new w(a,b);x.push(g);return g};var Ja=[];S.prototype.mj=function(a){return hb(M,a)};K.m=new S;R.prototype.Play= +function(a,b,c,d){!T&&(c=Math.pow(10,c/20),isFinite(c)||(c=0),0>c&&(c=0),1=a||0>=k||h>=m||b>=d?(this.Ra||jQuery(this.k).hide(),this.Ra=!0):(1>h&&(h=1),1>b&&(b=1),a>=m&&(a=m-1),k>=d&&(k=d-1),m=window.innerWidth,d=window.innerHeight, +c||this.$e!==h||this.df!==b||this.bf!==a||this.Xe!==k||this.ff!==m||this.ef!==d?(this.$e=h,this.df=b,this.bf=a,this.Xe=k,this.ff=m,this.ef=d,this.Ra&&(jQuery(this.k).show(),this.Ra=!1),c=Math.round(h)+jQuery(this.b.canvas).offset().left,m=Math.round(b)+jQuery(this.b.canvas).offset().top,jQuery(this.k).css("position","absolute"),jQuery(this.k).offset({left:c,top:m}),jQuery(this.k).width(Math.round(a-h)),jQuery(this.k).height(Math.round(k-b)),this.Nl&&jQuery(this.k).css("font-size",this.j.Tb(!0)/this.b.devicePixelRatio- +.2+"em")):this.Ra&&(jQuery(this.k).show(),this.Ra=!1))}};n.qc=function(){};n.Fb=function(){};c.prototype.lj=function(){return!0};m.m=new c;h.prototype.Fl=function(c){this.b.ja||(this.visible=0!==c)};h.prototype.El=function(c,h){this.b.ja||jQuery(this.k).css(c,h)};m.R=new h;m.Sa=new function(){}})();function sc(c){this.b=c} +(function(){function c(){}function h(){}function m(){}var n=sc.prototype;n.T=function(c){this.za=c;this.b=c.b};n.T.prototype.F=function(){};n.M=function(c){this.type=c;this.b=c.b};var p=n.M.prototype;p.F=function(){this.Gf={}};p.bb=function(){return this.Gf};p.rb=function(c){this.Gf=c;for(var b in this.Gf);};c.prototype.Kr=function(c){return this.Gf.hasOwnProperty(c)};n.m=new c;h.prototype.Ar=function(c,b){this.Gf[c]=b};h.prototype.Cr=function(){Va(this.Gf)};n.R=new h;m.prototype.qo=function(c){c.Db(JSON.stringify({c2dictionary:!0, +data:this.Gf}))};n.Sa=new m})();function tc(c){this.b=c} +(function(){function c(){}var h=tc.prototype;h.T=function(c){this.za=c;this.b=c.b};h.T.prototype.F=function(){};h.M=function(c){this.type=c;this.b=c.b;this.Xg=Array(256);this.cj=Array(256);this.ve=0};var m=h.M.prototype;m.F=function(){var c=this;this.b.ja||(jQuery(document).keydown(function(h){c.qn(h)}),jQuery(document).keyup(function(h){c.rn(h)}))};var n=[32,33,34,35,36,37,38,39,40,44];m.qn=function(c){var h=!1;window!=window.top&&-1c;++c)if(this.Xg[c]){this.Xg[c]=!1;this.ve=c;this.b.trigger(tc.prototype.m.so,this);var h=this.b.trigger(tc.prototype.m.xo,this),b=this.b.trigger(tc.prototype.m.wo,this);if(h||b)this.cj[c]=!0}};m.bb=function(){return{triggerKey:this.ve}};m.rb=function(c){this.ve=c.triggerKey};c.prototype.Or=function(c){return this.Xg[c]};c.prototype.vo=function(c){return c===this.ve};c.prototype.Xr=function(){return!0}; +c.prototype.so=function(){return!0};c.prototype.xo=function(c){return c===this.ve};c.prototype.hs=function(c){return c===this.ve};c.prototype.wo=function(c){return c===this.ve};h.m=new c;h.R=new function(){};h.Sa=new function(){}})();function oc(c){this.b=c} +(function(){function c(){if(0===this.Lj.length){var a=document.createElement("canvas");a.width=this.width;a.height=this.height;var b=a.getContext("2d");this.mg?b.drawImage(this.G,this.gg,this.hg,this.width,this.height,0,0,this.width,this.height):b.drawImage(this.G,0,0,this.width,this.height);this.Lj=a.toDataURL("image/png")}return this.Lj}function h(){}function m(a){a[0]=0;a[1]=0;a[2]=0;g.push(a)}function n(a,b){return athis.I&&(this.I=0);this.I>=this.Na.frames.length&&(this.I=this.Na.frames.length-1);var a=this.Na.frames[this.I];this.ta.Ti(a.Ok);this.Ub=a.Ub;this.Vb=a.Vb;this.Bg=this.Na.speed;this.Qe=this.Na.In;1===this.type.mc.length&&1===this.type.mc[0].frames.length||0===this.Bg||this.b.qg(this);this.yc?this.wd.reset():this.wd=new $a;this.Xd=this.wd.da;this.yf=!0;this.Pd=0;this.xf=!0;this.Wl=this.Eo="";this.Xs=0;this.Vl=-1;this.type.$m();var b,c,d,e,f,g,k,a=0;for(b=this.type.mc.length;athis.I&&(this.I=0);this.I>=this.Na.frames.length&&(this.I=this.Na.frames.length-1);this.Bg=a.cas;this.Xd=a.fs;this.Pd=a.ar;this.wd.reset();this.wd.da=a.at;this.yf=a.hasOwnProperty("ap")?a.ap:!0;this.xf=a.hasOwnProperty("af")?a.af:!0;a.hasOwnProperty("rt")?this.Qe=a.rt:this.Qe=this.Na.In;this.fb=this.Na.frames[this.I];this.Ag=this.fb.H;this.ta.Ti(this.fb.Ok);this.Ub=this.fb.Ub;this.Vb=this.fb.Vb};e.Ml=function(a){this.I= +a?0:this.Na.frames.length-1;this.yf=!1;this.Eo=this.Na.name;this.b.trigger(oc.prototype.m.Wr,this);this.b.trigger(oc.prototype.m.Vr,this);this.Pd=0};e.tj=function(){return this.wd.da};e.Ga=function(){this.wd.add(this.b.Qh(this));this.Wl.length&&this.it();0<=this.Vl&&this.jt();var a=this.wd.da,b=this.Na,c=b.frames[this.I],d=c.duration/this.Bg;this.yf&&a>=this.Xd+d&&(this.xf?this.I++:this.I--,this.Xd+=d,this.I>=b.frames.length&&(b.Bq?(this.xf=!1,this.I=b.frames.length-2):b.loop?this.I=this.Qe:(this.Pd++, +this.Pd>=b.Hn?this.Ml(!1):this.I=this.Qe)),0>this.I&&(b.Bq?(this.I=1,this.xf=!0,b.loop||(this.Pd++,this.Pd>=b.Hn&&this.Ml(!0))):b.loop?this.I=this.Qe:(this.Pd++,this.Pd>=b.Hn?this.Ml(!0):this.I=this.Qe)),0>this.I?this.I=0:this.I>=b.frames.length&&(this.I=b.frames.length-1),a>this.Xd+b.frames[this.I].duration/this.Bg&&(this.Xd=a),a=b.frames[this.I],this.vg(c,a),this.b.ma=!0)};e.bp=function(a){var b,c,d;b=0;for(c=this.type.mc.length;bthis.I&&(this.I=0),this.I>=this.Na.frames.length&&(this.I=this.Na.frames.length-1),1===this.Xs&&(this.I=0),this.yf=!0,this.Xd=this.wd.da,this.xf=!0,this.vg(a,this.Na.frames[this.I]),this.b.ma=!0)};e.jt=function(){var a=this.Na.frames[this.I], +b=this.I;this.I=qa(this.Vl);0>this.I&&(this.I=0);this.I>=this.Na.frames.length&&(this.I=this.Na.frames.length-1);b!==this.I&&(this.vg(a,this.Na.frames[this.I]),this.Xd=this.wd.da,this.b.ma=!0);this.Vl=-1};e.vg=function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;c!=e&&(this.width*=e/c);d!=f&&(this.height*=f/d);this.Ub=b.Ub;this.Vb=b.Vb;this.ta.Ti(b.Ok);this.D();this.fb=b;this.Ag=b.H;c=0;for(d=this.N.length;ce||e>=d.length)return b?this.x:this.y;var f=(d[e][1]-c.Ub)*this.width,d=d[e][2],d=(d-c.Vb)*this.height,c=Math.cos(this.u);e=Math.sin(this.u);var g=f*c-d*e,d=d*c+f*e,f=g+this.x,d=d+this.y;return b?f:d};var g=[],f=-2,q=[];h.prototype.Zr=function(a){if(!a)return!1;var c=this.b,d=c.ep(),e=d.type,g=null;d.X.collmemory?g=d.X.collmemory:(g={},d.X.collmemory=g); +d.X.spriteCreatedDestroyCallback||(d.X.spriteCreatedDestroyCallback=!0,c.Kl(function(a){var b=d.X.collmemory;a=a.uid;var c,e;for(c in b)b.hasOwnProperty(c)&&(e=b[c],e[0]===a||e[1]===a)&&(m(b[c]),delete b[c])}));var k=e.ya(),h=a.ya(),k=k.Dc(),n,v,B,N,K,D,J,M=this.b.Od,F=M-1,I=c.Qb().pc;for(v=0;v=k.length&&k.push(c(b,Object));d=k[d];d.text=f;d.width=a.jn(f);a.re=na(a.re,d.width)}var n=uc.prototype;n.F=function(){};n.T=function(a){this.za=a;this.b=a.b};var p=n.T.prototype;p.F=function(){this.J|| +(this.G=new Image,this.b.mo(this.G,this.pl),this.H=null)};p.Gi=function(){this.J||(this.H=null)};p.Lk=function(){if(!this.J&&this.e.length){this.H||(this.H=this.b.A.gf(this.G,!1,this.b.Ca,this.bj));var a,b;a=0;for(b=this.e.length;a=d*f);n++){var t=n%d,v=Math.floor(n/d),A=l.charAt(n);if(this.b.A){var L=this.Dj,O=t*m,w=v*p,t=(t+1)*m,v=(v+1)*p;void 0===L[A]&&(L[A]=c(k,ta));L[A].left=O;L[A].top=w;L[A].right=t;L[A].bottom=v}else L=this.Cj,t=t*b,v=v*h,O=b,w=h,void 0===L[A]&&(L[A]=c(a,Object)),L[A].x=t,L[A].y=v,L[A].xr=O,L[A].kp=w}};var v= +[];n.Gl=function(a){W(v);for(var b="",c,d=0;d=k)h(b,f,!0);else{var m=a.Me,p=a.zg;if(d.length*(a.Bj*m+p)-p<=k&&-1===d.indexOf("\n")&&(p=a.jn(d),p<=k)){h(b,f,!0);f.push(c(b, +Object));f[0].text=d;f[0].width=p;a.re=p;a.Nd=a.Le*m+a.lineHeight;return}this.Il(a);a.Nd=f.length*(a.Le*m+a.lineHeight)}}else h(b,f,!0)};n.Il=function(a){var c=a.ij,d=a.text,k=a.Xb,h=a.width;c&&(this.Gl(d),d=v);var p="",l,n,y,H=0,A=!1;for(y=0;yh&&(""===l?(m(a,H,p),p="",A=!0):(m(a,H,l),p=d[y]),H++,c||" "!==p||(p="")));p.replace(/\s\s*$/,"").length&&(m(a,H,p),H++);for(y=H;ythis.width+1E-5)break;void 0!==u&&(D=K,J=R,0===m&&1===n&&(D=Math.round(D),J=Math.round(J)),a.drawImage(this.G,u.x,u.y,u.xr,u.kp,D,J,u.xr*n,u.kp*n));K+=G*n+O;if(0===m&&b+K>h)break}}R+=t;if(0===m&&(R+t+v>this.height||c+R>l))break}}a.restore()}};var d=new ua;p.Fb=function(a){a.gc(this.H);a.sf(this.opacity);if(this.text&&(this.Iq(),!(this.heightthis.width+1E-5)break;if(void 0!== +z){var x=this.Bj*L,E=this.Le*L;F=M;I=v;0===n&&1===L&&(F=Math.round(F),I=Math.round(I));d.Ja=F;d.Ka=I;d.cb=F+x;d.eb=I;d.Va=F;d.Wa=I+E;d.Xa=F+x;d.Ya=I+E;0!==n&&(F=d,I=D,x=J,E=void 0,E=F.Ja*I-F.Ka*x,F.Ka=F.Ka*I+F.Ja*x,F.Ja=E,E=F.cb*I-F.eb*x,F.eb=F.eb*I+F.cb*x,F.cb=E,E=F.Va*I-F.Wa*x,F.Wa=F.Wa*I+F.Va*x,F.Va=E,E=F.Xa*I-F.Ya*x,F.Ya=F.Ya*I+F.Xa*x,F.Xa=E);d.offset(c,b);a.od(d.Ja,d.Ka,d.cb,d.eb,d.Xa,d.Ya,d.Va,d.Wa,z)}M+=K*L+G;if(0===n&&c+M>l)break}}v+=O;if(0===n&&(v+O+w>this.height||b+v>p))break}}};n.m=new function(){}; +p.tj=function(a,b){var c=parseInt(b,10);this.Ne[a]!==c&&(this.Ne[a]=c,this.rd=!0,this.b.ma=!0)};n.R=new function(){};n.Sa=new function(){}})();function vc(c){this.b=c} +(function(){function c(){return b.length?b.pop():{}}function h(a){var c,h;c=0;for(h=a.length;ca.Ba||b.top>a.Aa)this.b.A.deleteTexture(this.vc),this.Gd=this.eg=this.vc=null}};p.Hd=function(){this.Gd=this.eg=null;this.b.A&&this.vc&&this.b.A.deleteTexture(this.vc); +this.vc=null};p.tj=function(){this.font=this.Zj+" "+this.Ki.toString()+"pt "+this.Fg;this.rd=!0;this.b.ma=!0};p.qc=function(a,b){a.font=this.font;a.textBaseline="top";a.fillStyle=this.color;a.globalAlpha=b?1:this.opacity;var c=1;b&&(c=Math.abs(this.j.Tb()),a.save(),a.scale(c,c));if(this.rd||this.width!==this.$f)this.type.za.Hl(this.text,this.Xb,a,this.width,this.ij),this.rd=!1,this.$f=this.width;this.Da();var c=b?0:this.Ob.Ja,d=b?0:this.Ob.Ka;this.b.Hc&&(c=c+.5|0,d=d+.5|0);0===this.u||b||(a.save(), +a.translate(c,d),a.rotate(this.u),d=c=0);var e=d+this.height,g=this.Dn,g=g+this.Xm,f,h;1===this.we?d+=Math.max(this.height/2-this.Xb.length*g/2,0):2===this.we&&(d+=Math.max(this.height-this.Xb.length*g-2,0));for(h=0;h=e-g);h++);(0!==this.u||b)&&a.restore();this.Zf=this.b.Od};p.Fb=function(a){if(!(1>this.width||1>this.height)){var b=this.rd|| +this.gq;this.gq=!1;var c=this.j.Tb(),d=this.j.nb(),e=this.nf,g=c*this.width,f=c*this.height,h=Math.ceil(g),m=Math.ceil(f),p=Math.abs(h),l=Math.abs(m),n=this.b.L/2,t=this.b.K/2;this.eg||(this.Gd=document.createElement("canvas"),this.Gd.width=p,this.Gd.height=l,this.vk=p,this.uk=l,b=!0,this.eg=this.Gd.getContext("2d"));if(p!==this.vk||l!==this.uk)this.Gd.width=p,this.Gd.height=l,this.vc&&(a.deleteTexture(this.vc),this.vc=null),b=!0;b&&(this.eg.clearRect(0,0,p,l),this.qc(this.eg,!0),this.vc||(this.vc= +a.Ac(p,l,this.b.Ca,this.b.Tf)),a.Gw(this.Gd,this.vc,this.b.Tf));this.vk=p;this.uk=l;a.gc(this.vc);a.sf(this.opacity);a.Tc();a.translate(-n,-t);a.Lc();var H=this.Ob,b=this.j.Z(H.Ja,H.Ka,!0,!0),p=this.j.Z(H.Ja,H.Ka,!1,!0),l=this.j.Z(H.cb,H.eb,!0,!0),n=this.j.Z(H.cb,H.eb,!1,!0),t=this.j.Z(H.Xa,H.Ya,!0,!0),A=this.j.Z(H.Xa,H.Ya,!1,!0),L=this.j.Z(H.Va,H.Wa,!0,!0),H=this.j.Z(H.Va,H.Wa,!1,!0);if(this.b.Hc||0===this.u&&0===d)var O=(b+.5|0)-b,w=(p+.5|0)-p,b=b+O,p=p+w,l=l+O,n=n+w,t=t+O,A=A+w,L=L+O,H=H+w;0=== +this.u&&0===d?(l=b+h,n=p,t=l,A=p+m,L=b,H=A,e.right=1,e.bottom=1):(e.right=g/h,e.bottom=f/m);a.od(b,p,l,n,t,A,L,H,e);a.Tc();a.scale(c,c);a.$k(-this.j.nb());a.translate((this.j.qa+this.j.Ba)/-2,(this.j.ra+this.j.Aa)/-2);a.Lc();this.Zf=this.b.Od}};var t=[];n.Gl=function(a){W(t);for(var b="",c,d=0;d=d)h(b);else{if(100>=a.length&&-1===a.indexOf("\n")){var g=m.measureText(a).width;if(g<=d){h(b);b.push(c());b[0].text=a;b[0].width=g;return}}this.Il(a,b,m,d,e)}else h(b)};n.Il=function(a,k,h,d,e){e&&(this.Gl(a),a=t);var g="",f,p,n,B=0;for(n=0;n=k.length&&k.push(c()),g=m(g),p=k[B],p.text=g,p.width=h.measureText(g).width,B++,g=""):(f=g,g+=a[n],p=h.measureText(g).width, +p>=d&&(B>=k.length&&k.push(c()),f=m(f),p=k[B],p.text=f,p.width=h.measureText(f).width,B++,g=a[n],e||" "!==g||(g="")));g.length&&(B>=k.length&&k.push(c()),g=m(g),p=k[B],p.text=g,p.width=h.measureText(g).width,B++);for(n=B;n=k||0>=h||b>=d||a>=e?(this.Ra||jQuery(this.k).hide(),this.Ra=!0):(1>b&&(b=1),1>a&&(a=1),k>=d&&(k=d-1),h>=e&&(h=e-1),d=window.innerWidth,e=window.innerHeight,c||this.$e!==b||this.df!==a||this.bf!==k||this.Xe!==h||this.ff!==d||this.ef!==e?(this.$e=b,this.df=a,this.bf=k,this.Xe=h,this.ff=d,this.ef=e,this.Ra&&(jQuery(this.k).show(),this.Ra=!1),c=Math.round(b)+jQuery(this.b.canvas).offset().left, +d=Math.round(a)+jQuery(this.b.canvas).offset().top,jQuery(this.k).css("position","absolute"),jQuery(this.k).offset({left:c,top:d}),jQuery(this.k).width(Math.round(k-b)),jQuery(this.k).height(Math.round(h-a)),this.Nl&&jQuery(this.k).css("font-size",this.j.Tb(!0)/this.b.devicePixelRatio-.2+"em")):this.Ra&&(jQuery(this.k).show(),this.Ra=!1))}};n.qc=function(){};n.Fb=function(){};c.prototype.As=function(){return!0};c.prototype.lj=function(){return!0};c.prototype.as=function(){return!0};m.m=new c;h.prototype.Fl= +function(c){this.b.ja||(this.visible=0!==c)};h.prototype.El=function(c,b){this.b.ja||jQuery(this.k).css(c,b)};m.R=new h;m.Sa=new function(){}})();function xc(c){this.b=c} +(function(){function c(){}function h(){}var m=xc.prototype;m.T=function(c){this.za=c;this.b=c.b};var n=m.T.prototype;n.F=function(){this.J||(this.G=new Image,this.G.Oo=this.Wn,this.b.mo(this.G,this.pl),this.H=this.pattern=null)};n.Gi=function(){this.J||(this.H=null)};n.Lk=function(){if(!this.J&&this.e.length){this.H||(this.H=this.b.A.gf(this.G,!0,this.b.Ca,this.bj));var c,h;c=0;for(h=this.e.length;cm&&(m+=this.G.width);0>d&&(d+=this.G.height);c.translate(h,b);c.rotate(this.u);c.translate(m,d);c.fillRect(a-m,k-d,this.width,this.height);c.restore()};n.Hf=function(c){this.Fb(c)}; +n.Fb=function(c){c.gc(this.H);c.sf(this.opacity);var h=this.nf;h.right=this.width/this.G.width;h.bottom=this.height/this.G.height;var b=this.Ob;if(this.b.Hc){var a=Math.round(this.x)-this.x,k=Math.round(this.y)-this.y;c.od(b.Ja+a,b.Ka+k,b.cb+a,b.eb+k,b.Xa+a,b.Ya+k,b.Va+a,b.Wa+k,h)}else c.od(b.Ja,b.Ka,b.cb,b.eb,b.Xa,b.Ya,b.Va,b.Wa,h)};c.prototype.Cl=function(){return!0};m.m=new c;h.prototype.ro=function(c,h){var b=new Image,a=this;b.onload=function(){a.G=b;a.b.A?(a.hk&&a.H&&a.b.A.deleteTexture(a.H), +a.H=a.b.A.gf(b,!0,a.b.Ca)):a.pattern=a.b.Ma.createPattern(b,"repeat");a.hk=!0;a.b.ma=!0;a.b.trigger(xc.prototype.m.Cl,a)};"data:"!==c.substr(0,5)&&0===h&&(b.crossOrigin="anonymous");this.b.gl(b,c)};m.R=new h;m.Sa=new function(){}})();function yc(c){this.b=c} +(function(){function c(){}function h(){}function m(){}var n=yc.prototype;n.T=function(b){this.za=b;this.b=b.b};n.T.prototype.F=function(){};n.M=function(b){this.type=b;this.b=b.b};var p=n.M.prototype,t=window.URL||window.webkitURL||window.mozURL||window.msURL;p.F=function(){if(this.b.ja)C("[Construct 2] File Chooser plugin not supported on this platform - the object will not be created");else{this.k=document.createElement("input");this.k.type="file";this.k.setAttribute("accept",this.q[0]);0!==this.q[1]&& +this.k.setAttribute("multiple","");this.k.id=this.q[3];jQuery(this.k).appendTo(this.b.Ke?this.b.Ke:"body");this.Ra=!1;0===this.q[2]&&(jQuery(this.k).hide(),this.visible=!1,this.Ra=!0);var b=this;this.k.onchange=function(){b.b.trigger(yc.prototype.m.to,b)};this.ef=this.ff=this.Xe=this.bf=this.df=this.$e=0;this.vf(!0);this.b.qg(this)}};p.Hd=function(){this.b.ja||(jQuery(this.k).remove(),this.k=null)};p.Ga=function(){this.vf()};p.vf=function(b){if(!this.b.ja){var a=this.j.Z(this.x,this.y,!0),c=this.j.Z(this.x, +this.y,!1),h=this.j.Z(this.x+this.width,this.y+this.height,!0),d=this.j.Z(this.x+this.width,this.y+this.height,!1),e=this.b.width/this.b.devicePixelRatio,g=this.b.height/this.b.devicePixelRatio;!this.visible||!this.j.visible||0>=h||0>=d||a>=e||c>=g?(this.Ra||jQuery(this.k).hide(),this.Ra=!0):(1>a&&(a=1),1>c&&(c=1),h>=e&&(h=e-1),d>=g&&(d=g-1),e=window.innerWidth,g=window.innerHeight,b||this.$e!==a||this.df!==c||this.bf!==h||this.Xe!==d||this.ff!==e||this.ef!==g?(this.$e=a,this.df=c,this.bf=h,this.Xe= +d,this.ff=e,this.ef=g,this.Ra&&(jQuery(this.k).show(),this.Ra=!1),b=Math.round(a)+jQuery(this.b.canvas).offset().left,e=Math.round(c)+jQuery(this.b.canvas).offset().top,jQuery(this.k).css("position","absolute"),jQuery(this.k).offset({left:b,top:e}),jQuery(this.k).width(Math.round(h-a)),jQuery(this.k).height(Math.round(d-c))):this.Ra&&(jQuery(this.k).show(),this.Ra=!1))}};p.qc=function(){};p.Fb=function(){};c.prototype.to=function(){return!0};n.m=new c;h.prototype.Fl=function(b){this.b.ja||(this.visible= +0!==b)};h.prototype.El=function(b,a){this.b.ja||jQuery(this.k).css(b,a)};n.R=new h;m.prototype.Ir=function(b,a){var c;if(this.b.ja)c=null;else{c=this.k.files;var h=a;c?(h=Math.floor(h),c=0>h||h>=c.length?null:c[h]):c=null}c?c.c2url?b.Db(c.c2url):t&&t.createObjectURL?(c.c2url=t.createObjectURL(c),b.Db(c.c2url)):b.Db(""):b.Db("")};n.Sa=new m})();function zc(c){this.b=c} +(function(){function c(a){var b;if(!d[a])for(d[a]=Array(20),b=0;20>b;++b)d[a][b]=0;return d[a]}function h(a){var b;if(!e[a])for(e[a]=Array(20),b=0;20>b;++b)e[a][b]=0;return e[a]}function m(a,b){return b?4<=a?-1:a+16:16<=a?-1:a}function n(b){v[b.gamepad.index]=b.gamepad;a.trigger(zc.prototype.m.ds,k)}function p(b){a.trigger(zc.prototype.m.es,k);v[b.gamepad.index]=null}function t(){}var b=zc.prototype;b.T=function(a){this.za=a;this.b=a.b};b.T.prototype.F=function(){};var a=null,k=null,v=Array(16),d= +Array(16),e=Array(16),g="",f="",q=null,N={windows:{}};N.windows.firefox={};var B=[0,1,2,3,4,5,8,9,10,11],l=[0,1,[7,6],2,3,[14,15],[12,13]];N.windows.firefox.xbox360=function(a,b){return b?a>=l.length?-1:ia(l[a])?l[a]+16:l[a]:a>=B.length?-1:B[a]};var r=[2,0,1,3,4,6,5,7,8,9],y=[0,1,2,3,[14,15],[12,13]];N.windows.firefox.logitechdualaction=function(a,b){return b?a>=y.length?-1:ia(y[a])?y[a]+16:y[a]:a>=r.length?-1:r[a]};b.M=function(b){this.type=b;a=this.b=b.b;k=this};var H=b.M.prototype;H.F=function(){this.sk= +0;var a=navigator.userAgent;g="windows";/mac/i.test(a)&&(g="mac");q=N[g];f="chrome";/firefox/i.test(a)&&(f="firefox");q&&(q=q[f]);window.addEventListener("webkitgamepadconnected",n,!1);window.addEventListener("webkitgamepaddisconnected",p,!1);window.addEventListener("MozGamepadConnected",n,!1);window.addEventListener("MozGamepadDisconnected",p,!1);window.addEventListener("gamepadconnected",n,!1);window.addEventListener("gamepaddisconnected",p,!1);this.b.qg(this);this.Jl=[]};H.Ga=function(){this.Jl.length= +0;var a=null,b=!1;navigator.getGamepads?a=navigator.getGamepads():navigator.webkitGetGamepads?a=navigator.webkitGetGamepads():navigator.mozGetGamepads?a=navigator.mozGetGamepads():navigator.msGetGamepads?a=navigator.msGetGamepads():this.b.yp&&window.cr_getGamepads?(a=window.cr_getGamepads(),b=!0):a=navigator.gamepads||navigator.webkitGamepads||navigator.MozGamepads||v;if(a){var f,g,k,l,p,n,r;f=0;for(g=a.length;fp;++p)l[p]= +k[p];b?k=m:q?(k="",l=t.id.toLowerCase(),-1n&&(y[n]=100*r,50<=y[n]&&50>B[n]&&(this.sk=n));k=0;for(l=t.axes.length;kn&&(y[n]=100*r):(y[n[0]]=0,y[n[1]]=0,0>=r?y[n[0]]=Math.abs(100*r):y[n[1]]=Math.abs(100*r));this.Jl.push(t)}else t= +f,d[t]=null,e[t]=null}for(;20>f;++f)a=f,d[a]=null,e[a]=null}};H.bb=function(){return{lastButton:this.sk}};H.rb=function(a){this.sk=a.lastButton};t.prototype.ds=function(){return!0};t.prototype.es=function(){return!0};t.prototype.Mr=function(a,b){a=Math.floor(a);if(0>a||a>=this.Jl.length)return!1;var d=c(a);if(!d)return!1;if(d=50<=d[b])this.sk=b;return d};b.m=new t;b.R=new function(){};b.Sa=new function(){}})();function Ac(c){this.b=c} +(function(){function c(){}var h=Ac.prototype;h.T=function(c){this.behavior=c;this.b=c.b};h.T.prototype.F=function(){};h.M=function(c,h){this.type=c;this.behavior=c.behavior;this.d=h;this.b=c.b};var m=h.M.prototype;m.F=function(){this.te=this.pe=this.Yi=this.mn=this.tn=0};m.bb=function(){return{ontime:this.tn,offtime:this.mn,stage:this.Yi,stagetimeleft:this.pe,timeleft:this.te}};m.rb=function(c){this.tn=c.ontime;this.mn=c.offtime;this.Yi=c.stage;this.pe=c.stagetimeleft;this.te=c.timeleft;null===this.te&& +(this.te=Infinity)};m.Ga=function(){if(!(0>=this.te)){var c=this.b.Qh(this.d);this.te-=c;0>=this.te?(this.te=0,this.d.visible=!0,this.b.ma=!0,this.b.trigger(Ac.prototype.m.cs,this.d)):(this.pe-=c,0>=this.pe&&(0===this.Yi?(this.d.visible=!1,this.Yi=1,this.pe+=this.mn):(this.d.visible=!0,this.Yi=0,this.pe+=this.tn),this.b.ma=!0))}};c.prototype.cs=function(){return!0};h.m=new c;h.R=new function(){};h.Sa=new function(){}})();function Dc(c){this.b=c} +(function(){function c(){}function h(){}var m=Dc.prototype;m.T=function(c){this.behavior=c;this.b=c.b};m.T.prototype.F=function(){};m.M=function(c,h){this.type=c;this.behavior=c.behavior;this.d=h;this.b=c.b;this.Wi=this.kl=this.jl=this.Cm=this.Ch=this.Ih=this.Vg=this.Wg=this.Oi=this.ni=!1;this.Hb=null;this.Ym=-1;this.Ze=this.Ye=0;this.Ph=!1;this.Nf=this.$c=0;this.Yj=!0;this.ua=this.W=0};var n=m.M.prototype;n.rr=function(){this.Za=Math.cos(this.Jg);this.$a=Math.sin(this.Jg);this.pf=Math.cos(this.Jg- +Math.PI/2);this.qf=Math.sin(this.Jg-Math.PI/2);this.Za=gb(this.Za);this.$a=gb(this.$a);this.pf=gb(this.pf);this.qf=gb(this.qf);this.nm=this.Yd;0>this.Yd&&(this.Za*=-1,this.$a*=-1,this.Yd=Math.abs(this.Yd))};n.F=function(){this.dh=this.q[0];this.wg=this.q[1];this.Dg=this.q[2];this.ki=this.q[3];this.nm=this.Yd=this.q[4];this.Gk=this.q[5];this.Rj=0!==this.q[6];this.Tm=this.q[7]/1E3;this.et=1===this.q[8];this.enabled=0!==this.q[9];this.wh=!1;this.xh=this.b.qe(this.d);this.Zm=-1;this.pg=0;this.Jg=Y(90); +this.rr();var c=this;this.et&&!this.b.ja&&(jQuery(document).keydown(function(h){c.qn(h)}),jQuery(document).keyup(function(h){c.rn(h)}));this.yc||(this.fq=function(h){c.pn(h)});this.b.Kl(this.fq);this.d.X.isPlatformBehavior=!0};n.bb=function(){return{ii:this.Cm,lfx:this.Ye,lfy:this.Ze,lfo:this.Hb?this.Hb.uid:-1,am:this.$c,en:this.enabled,fall:this.Nf,ft:this.Yj,dx:this.W,dy:this.ua,ms:this.dh,acc:this.wg,dec:this.Dg,js:this.ki,g:this.Yd,g1:this.nm,mf:this.Gk,wof:this.wh,woj:this.xh?this.xh.uid:-1, +ga:this.Jg,edj:this.Rj,cdj:this.Ch,dj:this.Ih,sus:this.Tm}};n.rb=function(c){this.Cm=c.ii;this.Ye=c.lfx;this.Ze=c.lfy;this.Ym=c.lfo;this.$c=c.am;this.enabled=c.en;this.Nf=c.fall;this.Yj=c.ft;this.W=c.dx;this.ua=c.dy;this.dh=c.ms;this.wg=c.acc;this.Dg=c.dec;this.ki=c.js;this.Yd=c.g;this.nm=c.g1;this.Gk=c.mf;this.wh=c.wof;this.Zm=c.woj;this.Jg=c.ga;this.Rj=c.edj;this.Ch=c.cdj;this.Ih=c.dj;this.Tm=c.sus;this.Wi=this.kl=this.jl=this.Vg=this.Wg=this.Oi=this.ni=!1;this.pg=0;this.rr()};n.vd=function(){-1=== +this.Ym?this.Hb=null:this.Hb=this.b.Kg(this.Ym);-1===this.Zm?this.xh=null:this.xh=this.b.Kg(this.Zm)};n.pn=function(c){this.Hb==c&&(this.Hb=null)};n.Hd=function(){this.Hb=null;this.b.Wv(this.fq)};n.qn=function(c){switch(c.which){case 38:c.preventDefault();this.Wg=!0;break;case 37:c.preventDefault();this.ni=!0;break;case 39:c.preventDefault(),this.Oi=!0}};n.rn=function(c){switch(c.which){case 38:c.preventDefault();this.Vg=this.Wg=!1;break;case 37:c.preventDefault();this.ni=!1;break;case 39:c.preventDefault(), +this.Oi=!1}};n.ig=function(){this.Wg=this.Oi=this.ni=!1};n.tj=function(){return 0>this.Yd?-1:1};n.xp=function(){var c=null,h=null,b,a;b=this.d.x;a=this.d.y;this.d.x+=this.Za;this.d.y+=this.$a;this.d.D();if(this.Hb&&this.b.Kc(this.d,this.Hb)&&(!this.b.bo(this.Hb.type,mc)||this.Hb.X.solidEnabled))return this.d.x=b,this.d.y=a,this.d.D(),this.Hb;(c=this.b.jc(this.d))||0!==this.Nf||(h=this.b.qe(this.d,!0));this.d.x=b;this.d.y=a;this.d.D();if(c){if(this.b.Kc(this.d,c))return null;this.Ph=!1;return c}if(h&& +h.length){a=c=0;for(b=h.length;cthis.Gk&&(this.ua=this.Gk)),N&&(this.Vg=!0));this.wh=!!B;n==a&&(0>this.W?(this.W+=this.Dg*c,0this.W&&(this.W=0)));n&&!a&&(this.W=0this.W?this.W+(this.wg+this.Dg)*c:this.W+this.wg*c);this.W>this.dh?this.W=this.dh:this.W<-this.dh&&(this.W=-this.dh);n=!1;0!==this.W&&(g=this.d.x,f=this.d.y,h=this.W*c*this.pf,b=this.W*c*this.qf,this.d.x+=this.pf*(1this.W?1:-1),this.qf*(0>this.W?1:-1),h,!1)?!B||k||this.Ph||(g=this.d.x,f=this.d.y,this.d.x+=this.Za,this.d.y+=this.$a,this.b.jc(this.d)?this.b.nd(this.d,-this.Za,-this.$a,3,!1)||(this.d.x=g,this.d.y=f,this.d.D()):(this.d.x=g,this.d.y= +f,this.d.D())):(this.d.x=g,this.d.y=f,this.d.D()),k||(this.W=0)):!m&&!N&&Math.abs(this.ua)this.ua?1:-1),this.$a*(0>this.ua?1:-1),h,k,b)?(this.Hb=b,this.Ye=b.x,this.Ze=b.y,(this.Ph=k)&&(n=!0),this.ua=0):(this.d.x=g,this.d.y=f,this.d.D(),this.wh=!0,k||(this.ua=0)))}3!==this.$c&&0this.d.opacity?this.d.opacity=0:1=this.behavior.Vi&&bb?(c.x=t+1-(m.right-c.x),c.D()):m.bottomk&& +(c.y=a+1-(m.bottom-c.y),c.D())}})(); +function lc(){return[pc,sc,qc,rc,yc,tc,zc,oc,xc,uc,vc,wc,Dc,Ic,mc,Hc,nc,Ac,Jc,tc.prototype.m.vo,sc.prototype.m.Kr,Dc.prototype.R.Hr,tc.prototype.m.Or,Dc.prototype.R.Is,oc.prototype.R.Gs,oc.prototype.m.Fr,Z.prototype.Sa.uv,Z.prototype.R.Cs,oc.prototype.m.Zr,Z.prototype.R.Jr,rc.prototype.m.lj,pc.prototype.R.Play,sc.prototype.R.Ar,zc.prototype.m.Mr,sc.prototype.R.Cr,Z.prototype.R.Ds,vc.prototype.R.Ls,vc.prototype.R.Ur,Z.prototype.R.Ks,vc.prototype.R.Tr,Z.prototype.R.Sr,Dc.prototype.R.Es,Z.prototype.m.Pr, +rc.prototype.R.El,vc.prototype.R.Fs,yc.prototype.m.to,oc.prototype.R.ro,yc.prototype.Sa.Ir]}; diff --git a/platfomer/data.js b/platfomer/data.js new file mode 100644 index 00000000..ffd2d325 --- /dev/null +++ b/platfomer/data.js @@ -0,0 +1 @@ +{"project": [null,null,[[0,true,false,false,false,false,false,false,false,false],[1,false,false,false,false,false,false,false,false,false],[2,true,false,false,false,false,false,false,false,false],[3,false,true,true,true,false,false,false,false,false],[4,false,true,true,true,false,false,false,false,false],[5,true,false,false,false,false,false,false,false,false],[6,true,false,false,false,false,false,false,false,false],[7,false,true,true,true,true,true,true,true,false],[8,false,true,true,true,true,true,true,true,true],[9,false,true,true,true,true,true,true,true,true],[10,false,true,true,true,true,true,true,true,false],[11,false,true,true,true,false,false,false,false,false]],[["t0",8,false,[],0,0,["images/backgroundtile.png",100,1],null,[],false,false,974175178923433,[],null],["t1",7,false,[],2,0,null,[["Default",5,false,1,0,false,199337410584272,[["images/player-sheet0.png",140,0,0,32,32,1,0.5,1,[],[],1]]]],[["Platform",12,214701572890416],["ScrollTo",13,415103656925179]],false,false,331539777390260,[],null],["t2",8,false,[],1,0,["images/solidtile.png",100,1],null,[["Solid",14,599585694257168]],false,false,708973261151148,[],null],["t3",8,false,[],2,0,["images/solidtile.png",100,1],null,[["Solid",14,931257032372835],["Sine",15,764341034361465]],false,false,464149400725616,[],null],["t4",8,false,[],1,0,["images/jumpthrutile.png",100,1],null,[["Jumpthru",16,232017771557375]],false,false,193047308458890,[],null],["t5",5,false,[],0,0,null,null,[],false,false,260202108918534,[],null,[]],["t6",10,false,[],0,1,null,null,[],false,false,372699996461885,[["exclusion","Exclusion"]],null],["t7",7,false,[],0,0,null,[["Default",5,false,1,0,false,606881471786350,[["images/nextlev-sheet0.png",155,0,0,250,250,1,0.5,0.5,[],[],1]]]],[],false,false,561646871186390,[],null],["t8",7,false,[],0,0,null,[["Default",5,false,1,0,false,780632398932944,[["images/lev-sheet0.png",155,0,0,250,250,1,0.5,0.5,[],[],1]]]],[],false,false,157761609397984,[],null],["t9",7,false,[],0,0,null,[["Default",5,false,1,0,false,702795703518917,[["images/sprite-sheet0.png",155,0,0,250,250,1,0.5,0.5,[],[],1]]]],[],false,false,769772692023826,[],null],["t10",9,false,[],1,0,["images/spritefont.png",1427,3],null,[["Flash",17,142916947579516]],false,false,353168054272763,[],null],["t11",7,false,[],0,0,null,[["Default",5,false,1,0,false,356487417087938,[["images/sprite2-sheet0.png",168,0,0,250,250,1,0.5,0.5,[],[],3],["images/sprite2-sheet1.png",168,0,0,250,250,1,0.5,0.5,[],[],3],["images/sprite2-sheet1.png",168,0,0,250,250,1,0.5,0.5,[],[],3],["images/sprite2-sheet1.png",168,0,0,250,250,1,0.5,0.5,[],[],3]]]],[],false,false,269334172375579,[],null],["t12",9,false,[],1,0,["images/spritefont.png",1427,3],null,[["Flash",17,388527626645916]],false,false,596341619643736,[],null],["t13",9,false,[],1,0,["images/spritefont.png",1427,3],null,[["Flash",17,596490089038171]],false,false,810082827003488,[],null],["t14",3,false,[],1,0,null,null,[["Wrap",18,653180577057467]],false,false,724449311548528,[],null],["t15",9,false,[],0,1,["images/spritefont.png",1427,3],null,[],false,false,509881863086075,[["hardlight","HardLight"]],null],["t16",8,false,[],0,0,["images/backgroundtile2.png",100,1],null,[],false,false,589588475458344,[],null],["t17",7,false,[],0,0,null,[["Default",5,false,1,0,false,716120238881055,[["images/sprite3-sheet0.png",155,0,0,250,250,1,0.5,0.5,[],[],1]]]],[],false,false,822003764201616,[],null],["t18",3,false,[],0,0,null,null,[],false,false,559176432818402,[],null],["t19",7,false,[],0,0,null,[["Default",5,false,1,0,false,534417024202188,[["images/sprite4-sheet0.png",374,0,0,250,250,1,0.5,0.5,[],[],0]]]],[],false,false,854824372041563,[],null],["t20",3,false,[],0,0,null,null,[],false,false,123955218704003,[],null],["t21",0,false,[],0,0,null,null,[],false,false,611170239216762,[],null,[0,0,0,1,1,600,600,10000,1]],["t22",1,false,[],0,0,null,null,[],true,false,625636585076500,[],null],["t23",6,false,[],0,0,null,null,[],false,false,173677751407616,[],null,[25]],["t24",7,false,[],0,0,null,[["Default",5,false,1,0,false,333671974951851,[["images/sprite5-sheet0.png",155,0,0,250,250,1,0.5,0.5,[],[],1]]]],[],false,false,175766118917468,[],null],["t25",4,false,[],0,0,null,null,[],false,false,318099670386893,[],null],["t26",10,false,[],0,0,null,null,[],false,false,893281216730531,[],null],["t27",7,false,[],0,0,null,[["Default",5,false,1,0,false,993809036208183,[["images/sprite6-sheet0.png",155,0,0,250,250,1,0.5,0.5,[],[],1]]]],[],false,false,762979639348096,[],null],["t28",2,false,[],0,0,null,null,[],false,false,175777503787089,[],null,[]],["t29",3,false,[],0,0,null,null,[],false,false,576180520323950,[],null],["t30",3,false,[],0,0,null,null,[],false,false,501737961513303,[],null],["t31",11,false,[],0,0,null,null,[],false,false,165259828916659,[],null]],[],[["Layout 1",1708,960,false,"Event sheet 1",987044908640839,[["Layer 0",0,219511657923269,true,[255,255,255],false,1,1,1,false,false,1,0,0,[[[1,10,0,1280,1024,0,0,1,0,0,0,0,[]],0,52,[],[],[0,0]],[[246,348,0,72,24,0,0,1,0,0,0,0,[]],14,51,[],[[0]],[0,"start","",1,1,1,"",0]],[[134,236,0,625,34,0,0,1,0,0,0,0,[[]]],15,53,[],[],[16,16,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>","PLAATFOMER 200000m DEMO",1,0,0,0,0,1,0,0]],[[395,346,0,72,24,0,0,1,0,0,0,0,[]],18,67,[],[],[0,"lode","",1,1,1,"",0]],[[252,430,0,200,25,0,0,1,0,0,0,0,[]],25,81,[],[],["",0,1,""]],[[327,150,0,104,97,0,0,1,0.5,1,0,0,[]],1,82,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[227,156,0,219,32,0,-3.316999936942011e-006,1,0,0,0,0,[]],2,83,[],[[1]],[0,0]],[[173,264,0,262,61,0,0,1,0,0,0,0,[]],26,85,[],[],["you cansave by giting the esc key",0,"12pt Arial","rgb(0,0,0)",0,0,0,0,0]]],[]]],[[null,22,65,[],[],[]]],[]],["IDK",1280,1024,false,"Event sheet 1",502478209867130,[["Background",0,223458695243897,true,[255,255,255],false,0.5,0.5,1,false,false,1,0,0,[[[-16,0,0,1280,1024,0,0,1,0,0,0,0,[]],0,0,[],[],[0,0]]],[]],["Game",1,874365787904593,true,[255,255,255],true,1,1,1,false,false,1,0,0,[[[128,684,0,32,32,0,0,1,0.5,1,0,0,[]],1,1,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[64,752,0,320,128,0,0,1,0,0,0,0,[]],2,2,[],[[1]],[0,0]],[[864,800,0,96,32,0,0,1,0,0,0,0,[]],2,3,[],[[1]],[0,0]],[[1088,736,0,96,32,0,0,1,0,0,0,0,[]],2,4,[],[[1]],[0,0]],[[992,928,0,128,32,0,0,1,0,0,0,0,[]],2,5,[],[[1]],[0,0]],[[544,800,0,128,32,0,0,1,0,0,0,0,[]],3,6,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[1056,624,0,160,16,0,0,0.800000011920929,0,0,0,0,[]],4,7,[],[[1]],[0,0]],[[1056,528,0,160,16,0,0,0.800000011920929,0,0,0,0,[]],4,8,[],[[1]],[0,0]],[[624.1590576171875,432.0670776367188,0,372.0345458984375,32,0,0.1745329201221466,1,0,0,0,0,[]],2,9,[],[[1]],[0,0]],[[528,432,0,96,32,0,0,1,0,0,0,0,[]],2,10,[],[[1]],[0,0]],[[346,339,0,219,32,0,0.4535962343215942,1,0,0,0,0,[]],2,11,[],[[1]],[0,0]],[[160,224,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,12,[],[[1]],[0,0]],[[160,336,0,96,32,0,0,1,0,0,0,0,[]],2,13,[],[[1]],[0,0]],[[320,160,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,14,[],[[1]],[0,0]],[[512,128,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,15,[],[[1]],[0,0]],[[752,160,0,128,32,0,0,1,0,0,0,0,[]],3,16,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[1056,192,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,17,[],[[1]],[0,0]],[[928,288,0,96,16,0,0,1,0,0,0,0,[]],3,18,[],[[1],[1,1,0,4,0,0,0,50,0]],[0,0]],[[1104,144,0,48,48,0,0,1,0.5,0.5,0,0,[]],7,21,[],[],[0,"Default",0,1]]],[]],["UI",2,492068384196230,true,[255,255,255],true,0,0,1,false,false,1,0,0,[],[]]],[],[]],["Layout 2",1708,960,false,"Event sheet 1",392275521936766,[["platfomes",0,840250907224139,true,[255,255,255],false,1,1,1,false,false,1,0,0,[],[]],["bak",1,579657839874090,true,[255,255,255],true,1,1,1,false,false,1,0,0,[[[-2,1,0,1280,1024,0,0,1,0,0,0,0,[]],0,22,[],[],[0,0]]],[]],["Layer 0",2,582908115434475,true,[255,255,255],true,1,1,1,false,false,1,0,0,[[[108,575,0,32,32,0,0,1,0.5,1,0,0,[]],1,23,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[62,581,0,227,110,0,0,1,0,0,0,0,[]],2,24,[],[[1]],[0,0]],[[383,580,0,128,32,0,0,1,0,0,0,0,[]],3,25,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[633,577,0,187,107,0,0,1,0,0,0,0,[]],2,26,[],[[1]],[0,0]],[[739,439,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,27,[],[[1]],[0,0]],[[644,332,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,28,[],[[1]],[0,0]],[[512,307,0,96,32,0,0,1,0,0,0,0,[]],2,29,[],[[1]],[0,0]],[[351,321,0,96,32,0,0,1,0,0,0,0,[]],2,30,[],[[1]],[0,0]],[[193,295,0,96,32,0,0,1,0,0,0,0,[]],2,31,[],[[1]],[0,0]],[[385,193,0,28,28,0,0,1,0,0,0,0,[]],2,32,[],[[1]],[0,0]],[[474,189,0,28,28,0,0,1,0,0,0,0,[]],2,33,[],[[1]],[0,0]],[[579,175,0,28,28,0,0,1,0,0,0,0,[]],2,34,[],[[1]],[0,0]],[[675,164,0,28,28,0,0,1,0,0,0,0,[]],2,35,[],[[1]],[0,0]],[[762,143,0,28,28,0,0,1,0,0,0,0,[]],2,36,[],[[1]],[0,0]],[[947,143,0,28,28,0,0,1,0,0,0,0,[]],2,37,[],[[1]],[0,0]],[[1044,142,0,227,110,0,0,1,0,0,0,0,[]],2,41,[],[[1]],[0,0]],[[1093,102,0,24,27,0,0,1,0.5,0.5,0,0,[]],8,42,[],[],[0,"Default",0,1]]],[]]],[],[]],["Layout 3",1708,960,false,"Event sheet 1",403959185604933,[["bakrowedn",0,955113377008222,true,[255,255,255],false,1,1,1,false,false,1,0,0,[[[0,-1,0,1280,1024,0,0,1,0,0,0,0,[]],0,38,[],[],[0,0]]],[]],["platfoming",1,212739767185800,true,[255,255,255],true,1,1,1,false,false,1,0,0,[[[40,629,0,227,110,0,0,1,0,0,0,0,[]],2,39,[],[[1]],[0,0]],[[123,596,0,32,32,0,0,1,0.5,1,0,0,[]],1,40,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[355,644,0,128,32,0,0,1,0,0,0,0,[]],3,43,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[672,639,0,187,107,0,0,1,0,0,0,0,[]],2,44,[],[[1]],[0,0]],[[790,593,0,41,41,0,0,1,0.5,0.5,0,0,[]],9,45,[],[],[0,"Default",0,1]]],[]]],[],[]],["end",1708,960,false,"Event sheet 1",380346803635820,[["Layer 0",0,494808384597818,true,[255,255,255],false,1,1,1,false,false,1,0,0,[[[-1,-9,0,1280,1024,0,0,1,0,0,0,0,[]],0,46,[],[],[0,0]],[[133,152,0,1503,215,0,0,1,0,0,0,0,[]],2,47,[],[[1]],[0,0]],[[281,142,0,32,32,0,0,1,0.5,1,0,0,[]],1,48,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[240,163,0,137,30,0,0.2730038464069367,1,0,0,0,0,[]],10,19,[],[[]],[16,16,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>","BY MILES",1,0,0,0,0,0,0,0]],[[230,223,0,199,30,0,0.2730038464069367,1,0,0,0,0,[]],12,50,[],[[]],[16,16,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>","COMING SOON",1,0,0,0,0,0,0,0]],[[217,250.9999694824219,0,343,30,0,0.2525443136692047,1,0,0,0,0,[]],13,49,[],[[]],[16,16,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>","coming to fun miles have fun",1,0,0,0,0,0,0,0]],[[1542,120,0,72,24,0,0,1,0,0,0,0,[]],14,68,[],[[0]],[0,"start","",1,1,1,"",0]],[[1445,119,0,72,24,0,0,1,0,0,0,0,[]],20,69,[],[],[0,"OK","",1,1,1,"",0]]],[]]],[],[]],["net lev",1708,960,false,"Event sheet 1",726874795183342,[["Layer 0",0,829876288995039,true,[255,255,255],false,1,1,1,false,false,1,0,0,[[[1,28,0,1707,955,0,0,1,0,0,0,0,[]],16,55,[],[],[0,0]],[[35,366,0,159,95,0,0,1,0,0,0,0,[]],2,56,[],[[1]],[0,0]],[[105,324,0,32,32,0,0,1,0.5,1,0,0,[]],1,57,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[281,359,0,128,32,0,0,1,0,0,0,0,[]],3,58,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[681,368,0,162,112,0,0,1,0,0,0,0,[]],2,59,[],[[1]],[0,0]],[[859,273,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,60,[],[[1]],[0,0]],[[254,83,0,128,98,0,0,1,0,0,0,0,[]],2,61,[],[[1]],[0,0]],[[632,79,0,128,32,0,0,1,0,0,0,0,[]],3,62,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[864,139,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,63,[],[[1]],[0,0]],[[284,58,0,22,23,0,0,1,0.5,0.5,0,0,[]],17,64,[],[],[0,"Default",0,1]]],[]]],[],[]],["4",1708,960,false,"Event sheet 1",636765174276852,[["Layer 0",0,570930586559406,true,[255,255,255],false,1,1,1,false,false,1,0,0,[[[323,411,0,143,44,0,0,1,0,0,0,0,[]],26,84,[],[],["saving...",0,"12pt Arial","rgb(0,0,0)",0,0,0,0,0]],[[-1,-2,0,1280,1024,0,0,1,0,0,0,0,[]],0,80,[],[],[0,0]],[[66,731,0,190,158,0,0,1,0,0,0,0,[]],2,71,[],[[1]],[0,0]],[[139,695,0,32,32,0,0,1,0.5,1,0,0,[]],1,72,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[369,745,0,96,16,0,0,1,0,0,0,0,[]],3,73,[],[[1],[1,1,0,4,0,0,0,50,0]],[0,0]],[[634,738,0,190,158,0,0,1,0,0,0,0,[]],2,74,[],[[1]],[0,0]],[[805,628,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,75,[],[[1]],[0,0]],[[668,556,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,76,[],[[1]],[0,0]],[[230,485,0,161,62,0,0,1,0,0,0,0,[]],2,77,[],[[1]],[0,0]],[[279,354,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,70,[],[[1]],[0,0]],[[869,182,0,59,58,0,-0.7140958309173584,1,0.5,0.5,0,0,[]],24,78,[],[],[0,"Default",0,1]],[[580,307,0,96,16,0,0,0.800000011920929,0,0,0,0,[]],4,79,[],[[1]],[0,0]]],[]]],[],[]],["Layout 4",1708,960,false,"Event sheet 1",622908175851528,[["Layer 0",0,332961654400326,true,[255,255,255],false,1,1,1,false,false,1,0,0,[[[2,-72,0,1280,1024,0,0,1,0,0,0,0,[]],0,95,[],[],[0,0]],[[194.5,776,0,29,32,0,0,1,0.5,1,0,0,[]],1,86,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[133,813,0,117,32,0,2.034499993897043e-005,1,0,0,0,0,[]],2,87,[],[[1]],[0,0]],[[524,793,0,128,32,0,0,1,0,0,0,0,[]],3,88,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[907,709,0,160,16,0,0,0.800000011920929,0,0,0,0,[]],4,89,[],[[1]],[0,0]],[[1343,701,0,128,32,0,0,1,0,0,0,0,[]],3,90,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[1436,566,0,160,16,0,0,0.800000011920929,0,0,0,0,[]],4,91,[],[[1]],[0,0]],[[1138,469,0,128,32,0,0,1,0,0,0,0,[]],3,92,[],[[1],[1,0,0,4,0,0,0,50,0]],[0,0]],[[679,532,0,219,32,0,-0.347745954990387,1,0,0,0,0,[]],2,93,[],[[1]],[0,0]],[[688,501,0,36,28,0,0,1,0.5,0.5,0,0,[]],27,94,[],[],[0,"Default",0,1]]],[]]],[],[]],["Layout 5",1708,960,false,"Event sheet 1",936176061897816,[["Layer 0",0,204761877549028,true,[255,255,255],false,1,1,1,false,false,1,0,0,[[[29,-41,0,1280,1024,0,0,1,0,0,0,0,[]],0,98,[],[],[0,0]],[[715,490,0,32,32,0,0,1,0.5,1,0,0,[]],1,99,[],[[330,1500,1500,650,1500,1000,0,0,1,1],[1]],[0,"Default",0,1]],[[204,496,0,1138,396,0,0,1,0,0,0,0,[]],2,100,[],[[1]],[0,0]]],[]]],[],[]],["Layout 6",1708,960,false,"Event sheet 1",817442321825353,[["Layer 0",0,444129079952944,true,[255,255,255],false,1,1,1,false,false,1,0,0,[[[2,0,0,1280,1024,0,0,1,0,0,0,0,[]],0,102,[],[],[0,0]],[[407,228,0,164,41,0,0,1,0,0,0,0,[]],31,103,[],[],["","","",1,1,0,0,0,1,""]]],[]]],[],[]]],[["Event sheet 1",[[0,null,false,null,756389252554735,[[5,19,null,1,false,false,false,891771441529049,false,[[9,40]]],[22,20,null,0,false,false,false,261620347711391,false,[[1,[2,"move"]]]]],[[1,21,"Platform",481313591695542,false]]],[0,null,false,null,439710307203334,[[5,22,null,0,false,false,false,963207943607997,false,[[9,87]]],[22,20,null,0,false,false,false,526798063573429,false,[[1,[2,"move"]]]]],[[1,23,"Platform",809679597795327,false,[[3,2]]]]],[0,null,false,null,573719578998107,[[5,22,null,0,false,false,false,578754065662811,false,[[9,65]]],[22,20,null,0,false,false,false,334529816862301,false,[[1,[2,"move"]]]]],[[1,23,"Platform",964779574292193,false,[[3,0]]]]],[0,null,false,null,604404035521838,[[5,22,null,0,false,false,false,480048333287650,false,[[9,83]]],[22,20,null,0,false,false,false,532579874097995,false,[[1,[2,"move"]]]]],[[1,21,"Platform",830975056644674,false]]],[0,null,false,null,931810985897467,[[5,22,null,0,false,false,false,356247757900100,false,[[9,68]]],[22,20,null,0,false,false,false,356025092728170,false,[[1,[2,"move"]]]]],[[1,23,"Platform",789429316151081,false,[[3,1]]]]],[0,null,true,null,509985682191580,[[5,19,null,1,false,false,false,844771264058811,false,[[9,37]]],[5,19,null,1,false,false,false,535433068012907,false,[[9,65]]]],[[1,24,null,278435349175723,false,[[3,0]]]]],[0,null,true,null,508216756113042,[[5,19,null,1,false,false,false,554665231923090,false,[[9,39]]],[5,19,null,1,false,false,false,546439165906786,false,[[9,68]]]],[[1,24,null,396826489550859,false,[[3,1]]]]],[0,null,false,null,910708279649689,[[1,25,null,0,false,false,false,432270868530886,false,[[8,4],[0,[19,26]]]]],[[-1,27,null,306875488287801,false]]],[0,null,false,null,987205063741976,[[7,28,null,0,false,false,true,230529196388776,false,[[4,1]]]],[[-1,29,null,397797339317826,false,[[6,"Layout 2"]]]]],[0,null,false,null,868982267325339,[[8,28,null,0,false,false,true,658298775427561,false,[[4,1]]]],[[-1,29,null,506339301091028,false,[[6,"Layout 3"]]]]],[0,null,false,null,470037204686717,[[9,28,null,0,false,false,true,406208554809397,false,[[4,1]]]],[[-1,29,null,208409216971660,false,[[6,"net lev"]]]]],[0,null,false,null,511072283374118,[[14,30,null,1,false,false,false,972242417318389,false]],[[-1,29,null,576610815116208,false,[[6,"IDK"]]],[21,31,null,889197412961676,false,[[2,["untitled-video-made-with-clipchamp",true]],[3,0],[0,[0,0]],[1,[2,""]]]],[22,32,null,334475104872955,false,[[1,[2,"move"]],[7,[0,1]]]]]],[0,null,false,null,829156870874669,[[17,28,null,0,false,false,true,197979389782840,false,[[4,1]]]],[[-1,29,null,992837380465415,false,[[6,"4"]]]]],[0,null,true,null,704577285860106,[[5,22,null,0,false,false,false,906038867243513,false,[[9,27]]],[23,33,null,0,false,false,false,413619371798036,false,[[0,[0,0]],[3,3]]]],[[22,34,null,507156936036148,false],[-1,35,null,836806008777419,false,[[1,[2,"mysave"]]]],[26,36,null,933988856990719,false,[[3,0],[4,1]]],[26,37,null,909909686740992,false],[-1,38,null,383574089632095,false,[[0,[1,1]]]],[26,39,null,905540604870425,false]]],[0,null,false,null,645471338255048,[[18,30,null,1,false,false,false,118206238156794,false]],[[-1,40,null,958302712872130,false,[[1,[2,"mysave"]]]]]],[0,null,false,null,738834764438175,[[20,30,null,1,false,false,false,706610646189872,false]],[[1,41,"Platform",138749800262879,false,[[3,1]]],[22,32,null,498502011454100,false,[[1,[2,"idk"]],[7,[0,1]]]]]],[0,null,false,null,134282191093289,[[22,20,null,0,false,false,false,453541565606888,false,[[1,[2,"idk"]]]]],[[1,41,"Platform",205250405306748,false,[[3,1]]]]],[0,null,false,null,280516638180645,[[23,33,null,0,false,false,false,921433159304825,false,[[0,[0,0]],[3,2]]]],[[22,32,null,203074674780621,false,[[1,[2,"idk"]],[7,[0,1]]]]]],[0,null,false,null,843567531208078,[[24,28,null,0,false,false,true,245037493035494,false,[[4,1]]]],[[-1,29,null,284624040756959,false,[[6,"Layout 4"]]]]],[0,null,false,null,502127722654291,[[-1,42,null,0,false,false,false,549658972746310,false,[[3,0]]]],[[14,43,null,176431698442384,false,[[1,[2,"color"]],[1,[2,"red"]]]],[18,43,null,926288083007477,false,[[1,[2,"color"]],[1,[2,"red"]]]],[20,43,null,563880737493936,false,[[1,[2,"color"]],[1,[2,"red"]]]],[6,44,null,441303841093344,false,[[3,1],[1,[2,"Exclusion"]]]]]],[0,null,false,null,371875800131390,[[25,45,null,1,false,false,false,401271561299828,false]],[[1,46,null,412459017893265,false,[[1,[20,25,47,true,null,[[0,0]]]],[3,0],[3,1]]]]],[0,null,false,null,376127676985968,[[23,33,null,0,false,false,false,454789938252398,false,[[0,[0,0]],[3,0]]],[22,20,null,0,false,false,false,963960341621432,false,[[1,[2,"move"]]]]],[[1,23,"Platform",280803762795885,false,[[3,2]]]]],[0,null,false,null,308709917043176,[[23,33,null,0,false,false,false,594485515979758,false,[[0,[0,0]],[3,13]]],[22,20,null,0,false,false,false,578158221524928,false,[[1,[2,"move"]]]]],[[1,21,"Platform",401196255901723,false]]],[0,null,false,null,566581199822905,[[23,33,null,0,false,false,false,631373998599829,false,[[0,[0,0]],[3,14]]],[22,20,null,0,false,false,false,634117553850394,false,[[1,[2,"move"]]]]],[[1,23,"Platform",564342334004129,false,[[3,0]]],[1,24,null,117910827779062,false,[[3,0]]]]],[0,null,false,null,764432177616281,[[23,33,null,0,false,false,false,285782842065167,false,[[0,[0,0]],[3,15]]],[22,20,null,0,false,false,false,175386672077574,false,[[1,[2,"move"]]]]],[[1,23,"Platform",406761114974029,false,[[3,1]]],[1,24,null,961256573515166,false,[[3,1]]]]],[0,null,false,null,377524861993637,[[27,28,null,0,false,false,true,186455880266828,false,[[4,1]]]],[[-1,29,null,380716009630349,false,[[6,"end"]]]]],[0,null,false,null,318815855631014,[[29,30,null,1,false,false,false,233687472606539,false]],[[-1,29,null,572685150489006,false,[[6,"Layout 5"]]]]],[0,null,false,null,321441972603650,[[30,30,null,1,false,false,false,687950816903655,false]],[[-1,29,null,617062618628899,false,[[6,"Layout 1"]]]]]]]],[],"media/",false,640,480,4,true,true,true,"1.0",true,false,4,0,106,false,true,1,true,"New project",0,[]]} \ No newline at end of file diff --git a/platfomer/icon-114.png b/platfomer/icon-114.png new file mode 100644 index 00000000..bf56364d Binary files /dev/null and b/platfomer/icon-114.png differ diff --git a/platfomer/icon-128.png b/platfomer/icon-128.png new file mode 100644 index 00000000..523ffd0f Binary files /dev/null and b/platfomer/icon-128.png differ diff --git a/platfomer/icon-16.png b/platfomer/icon-16.png new file mode 100644 index 00000000..e1b785cc Binary files /dev/null and b/platfomer/icon-16.png differ diff --git a/platfomer/icon-256.png b/platfomer/icon-256.png new file mode 100644 index 00000000..0916f573 Binary files /dev/null and b/platfomer/icon-256.png differ diff --git a/platfomer/icon-32.png b/platfomer/icon-32.png new file mode 100644 index 00000000..02edf8c2 Binary files /dev/null and b/platfomer/icon-32.png differ diff --git a/platfomer/images/backgroundtile.png b/platfomer/images/backgroundtile.png new file mode 100644 index 00000000..f0c72517 Binary files /dev/null and b/platfomer/images/backgroundtile.png differ diff --git a/platfomer/images/backgroundtile2.png b/platfomer/images/backgroundtile2.png new file mode 100644 index 00000000..f69e6229 Binary files /dev/null and b/platfomer/images/backgroundtile2.png differ diff --git a/platfomer/images/jumpthrutile.png b/platfomer/images/jumpthrutile.png new file mode 100644 index 00000000..8abb575c Binary files /dev/null and b/platfomer/images/jumpthrutile.png differ diff --git a/platfomer/images/lev-sheet0.png b/platfomer/images/lev-sheet0.png new file mode 100644 index 00000000..5982baac Binary files /dev/null and b/platfomer/images/lev-sheet0.png differ diff --git a/platfomer/images/nextlev-sheet0.png b/platfomer/images/nextlev-sheet0.png new file mode 100644 index 00000000..b66491e1 Binary files /dev/null and b/platfomer/images/nextlev-sheet0.png differ diff --git a/platfomer/images/player-sheet0.png b/platfomer/images/player-sheet0.png new file mode 100644 index 00000000..9384702f Binary files /dev/null and b/platfomer/images/player-sheet0.png differ diff --git a/platfomer/images/solidtile.png b/platfomer/images/solidtile.png new file mode 100644 index 00000000..774f3264 Binary files /dev/null and b/platfomer/images/solidtile.png differ diff --git a/platfomer/images/sprite-sheet0.png b/platfomer/images/sprite-sheet0.png new file mode 100644 index 00000000..d692929d Binary files /dev/null and b/platfomer/images/sprite-sheet0.png differ diff --git a/platfomer/images/sprite2-sheet0.png b/platfomer/images/sprite2-sheet0.png new file mode 100644 index 00000000..84a62753 Binary files /dev/null and b/platfomer/images/sprite2-sheet0.png differ diff --git a/platfomer/images/sprite2-sheet1.png b/platfomer/images/sprite2-sheet1.png new file mode 100644 index 00000000..7de39d49 Binary files /dev/null and b/platfomer/images/sprite2-sheet1.png differ diff --git a/platfomer/images/sprite3-sheet0.png b/platfomer/images/sprite3-sheet0.png new file mode 100644 index 00000000..acc92bc0 Binary files /dev/null and b/platfomer/images/sprite3-sheet0.png differ diff --git a/platfomer/images/sprite4-sheet0.png b/platfomer/images/sprite4-sheet0.png new file mode 100644 index 00000000..cbf551e8 Binary files /dev/null and b/platfomer/images/sprite4-sheet0.png differ diff --git a/platfomer/images/sprite5-sheet0.png b/platfomer/images/sprite5-sheet0.png new file mode 100644 index 00000000..1866e3c5 Binary files /dev/null and b/platfomer/images/sprite5-sheet0.png differ diff --git a/platfomer/images/sprite6-sheet0.png b/platfomer/images/sprite6-sheet0.png new file mode 100644 index 00000000..0876fb80 Binary files /dev/null and b/platfomer/images/sprite6-sheet0.png differ diff --git a/platfomer/images/spritefont.png b/platfomer/images/spritefont.png new file mode 100644 index 00000000..30d69c17 Binary files /dev/null and b/platfomer/images/spritefont.png differ diff --git a/platfomer/index.html b/platfomer/index.html new file mode 100644 index 00000000..71f85740 --- /dev/null +++ b/platfomer/index.html @@ -0,0 +1,136 @@ + + + + + + New project + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +

Your browser does not appear to support HTML5. Try upgrading your browser to the latest version. What is a browser? +

Microsoft Internet Explorer
+ Mozilla Firefox
+ Google Chrome
+ Apple Safari

+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/platfomer/jquery-3.4.1.min.js b/platfomer/jquery-3.4.1.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/platfomer/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.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(e,n){k.fn[n]=function(e,t){return 0 this._OnBroadcastChannelMessage(e)); + } + + _OnBroadcastChannelMessage(e) + { + // Have a message callback set: just forward the call. + if (this._onMessageCallback) + { + this._onMessageCallback(e); + return; + } + + // Otherwise the app hasn't loaded far enough to set a message callback. + // Buffer the incoming messages to replay when the app sets a callback. + this._queuedMessages.push(e); + } + + SetMessageCallback(f) + { + this._onMessageCallback = f; + + // Replay any queued messages through the handler, then clear the queue. + for (let e of this._queuedMessages) + this._onMessageCallback(e); + + this._queuedMessages.length = 0; + } + }; + + // Create the offline client ASAP so we receive and start queueing any messages the SW broadcasts. + window.OfflineClientInfo = new OfflineClient(); + +}()); + diff --git a/platfomer/sw.js b/platfomer/sw.js new file mode 100644 index 00000000..dfe699a5 --- /dev/null +++ b/platfomer/sw.js @@ -0,0 +1,403 @@ +"use strict"; + +const OFFLINE_DATA_FILE = "offline.js"; +const CACHE_NAME_PREFIX = "c2offline"; +const BROADCASTCHANNEL_NAME = "offline"; +const CONSOLE_PREFIX = "[SW] "; +const LAZYLOAD_KEYNAME = ""; + +// Create a BroadcastChannel if supported. +const broadcastChannel = (typeof BroadcastChannel === "undefined" ? null : new BroadcastChannel(BROADCASTCHANNEL_NAME)); + +////////////////////////////////////// +// Utility methods +function PostBroadcastMessage(o) +{ + if (!broadcastChannel) + return; // not supported + + // Impose artificial (and arbitrary!) delay of 3 seconds to make sure client is listening by the time the message is sent. + // Note we could remove the delay on some messages, but then we create a race condition where sometimes messages can arrive + // in the wrong order (e.g. "update ready" arrives before "started downloading update"). So to keep the consistent ordering, + // delay all messages by the same amount. + setTimeout(() => broadcastChannel.postMessage(o), 3000); +}; + +function Broadcast(type) +{ + PostBroadcastMessage({ + "type": type + }); +}; + +function BroadcastDownloadingUpdate(version) +{ + PostBroadcastMessage({ + "type": "downloading-update", + "version": version + }); +} + +function BroadcastUpdateReady(version) +{ + PostBroadcastMessage({ + "type": "update-ready", + "version": version + }); +} + +function IsUrlInLazyLoadList(url, lazyLoadList) +{ + if (!lazyLoadList) + return false; // presumably lazy load list failed to load + + try { + for (const lazyLoadRegex of lazyLoadList) + { + if (new RegExp(lazyLoadRegex).test(url)) + return true; + } + } + catch (err) + { + console.error(CONSOLE_PREFIX + "Error matching in lazy-load list: ", err); + } + + return false; +}; + +function WriteLazyLoadListToStorage(lazyLoadList) +{ + if (typeof localforage === "undefined") + return Promise.resolve(); // bypass if localforage not imported + else + return localforage.setItem(LAZYLOAD_KEYNAME, lazyLoadList) +}; + +function ReadLazyLoadListFromStorage() +{ + if (typeof localforage === "undefined") + return Promise.resolve([]); // bypass if localforage not imported + else + return localforage.getItem(LAZYLOAD_KEYNAME); +}; + +function GetCacheBaseName() +{ + // Include the scope to avoid name collisions with any other SWs on the same origin. + // e.g. "c2offline-https://example.com/foo/" (won't collide with anything under bar/) + return CACHE_NAME_PREFIX + "-" + self.registration.scope; +}; + +function GetCacheVersionName(version) +{ + // Append the version number to the cache name. + // e.g. "c2offline-https://example.com/foo/-v2" + return GetCacheBaseName() + "-v" + version; +}; + +// Return caches.keys() filtered down to just caches we're interested in (with the right base name). +// This filters out caches from unrelated scopes. +async function GetAvailableCacheNames() +{ + const cacheNames = await caches.keys(); + const cacheBaseName = GetCacheBaseName(); + return cacheNames.filter(n => n.startsWith(cacheBaseName)); +}; + +// Identify if an update is pending, which is the case when we have 2 or more available caches. +// One must be an update that is waiting, since the next navigate that does an upgrade will +// delete all the old caches leaving just one currently-in-use cache. +async function IsUpdatePending() +{ + const availableCacheNames = await GetAvailableCacheNames(); + return (availableCacheNames.length >= 2); +}; + +// Automatically deduce the main page URL (e.g. index.html or main.aspx) from the available browser windows. +// This prevents having to hard-code an index page in the file list, implicitly caching it like AppCache did. +async function GetMainPageUrl() +{ + const allClients = await clients.matchAll({ + includeUncontrolled: true, + type: "window" + }); + + for (const c of allClients) + { + // Parse off the scope from the full client URL, e.g. https://example.com/index.html -> index.html + let url = c.url; + if (url.startsWith(self.registration.scope)) + url = url.substring(self.registration.scope.length); + + if (url && url !== "/") // ./ is also implicitly cached so don't bother returning that + { + // If the URL is solely a search string, prefix it with / to ensure it caches correctly. + // e.g. https://example.com/?foo=bar needs to cache as /?foo=bar, not just ?foo=bar. + if (url.startsWith("?")) + url = "/" + url; + + return url; + } + } + + return ""; // no main page URL could be identified +}; + +// Hack to fetch optionally bypassing HTTP cache until fetch cache options are supported in Chrome (crbug.com/453190) +function fetchWithBypass(request, bypassCache) +{ + if (typeof request === "string") + request = new Request(request); + + if (bypassCache) + { + // bypass enabled: add a random search parameter to avoid getting a stale HTTP cache result + const url = new URL(request.url); + url.search += Math.floor(Math.random() * 1000000); + + return fetch(url, { + headers: request.headers, + mode: request.mode, + credentials: request.credentials, + redirect: request.redirect, + cache: "no-store" + }); + } + else + { + // bypass disabled: perform normal fetch which is allowed to return from HTTP cache + return fetch(request); + } +}; + +// Effectively a cache.addAll() that only creates the cache on all requests being successful (as a weak attempt at making it atomic) +// and can optionally cache-bypass with fetchWithBypass in every request +async function CreateCacheFromFileList(cacheName, fileList, bypassCache) +{ + // Kick off all requests and wait for them all to complete + const responses = await Promise.all(fileList.map(url => fetchWithBypass(url, bypassCache))); + + // Check if any request failed. If so don't move on to opening the cache. + // This makes sure we only open a cache if all requests succeeded. + let allOk = true; + + for (const response of responses) + { + if (!response.ok) + { + allOk = false; + console.error(CONSOLE_PREFIX + "Error fetching '" + response.url + "' (" + response.status + " " + response.statusText + ")"); + } + } + + if (!allOk) + throw new Error("not all resources were fetched successfully"); + + // Can now assume all responses are OK. Open a cache and write all responses there. + // TODO: ideally we can do this transactionally to ensure a complete cache is written as one atomic operation. + // This needs either new transactional features in the spec, or at the very least a way to rename a cache + // (so we can write to a temporary name that won't be returned by GetAvailableCacheNames() and then rename it when ready). + const cache = await caches.open(cacheName); + + try { + return await Promise.all(responses.map( + (response, i) => cache.put(fileList[i], response) + )); + } + catch (err) + { + // Not sure why cache.put() would fail (maybe if storage quota exceeded?) but in case it does, + // clean up the cache to try to avoid leaving behind an incomplete cache. + console.error(CONSOLE_PREFIX + "Error writing cache entries: ", err); + caches.delete(cacheName); + throw err; + } +}; + +async function UpdateCheck(isFirst) +{ + try { + // Always bypass cache when requesting offline.js to make sure we find out about new versions. + const response = await fetchWithBypass(OFFLINE_DATA_FILE, true); + + if (!response.ok) + throw new Error(OFFLINE_DATA_FILE + " responded with " + response.status + " " + response.statusText); + + const data = await response.json(); + + const version = data.version; + const fileList = data.fileList; + const lazyLoadList = data.lazyLoad; + const currentCacheName = GetCacheVersionName(version); + + const cacheExists = await caches.has(currentCacheName); + + // Don't recache if there is already a cache that exists for this version. Assume it is complete. + if (cacheExists) + { + // Log whether we are up-to-date or pending an update. + const isUpdatePending = await IsUpdatePending(); + if (isUpdatePending) + { + console.log(CONSOLE_PREFIX + "Update pending"); + Broadcast("update-pending"); + } + else + { + console.log(CONSOLE_PREFIX + "Up to date"); + Broadcast("up-to-date"); + } + return; + } + + // Implicitly add the main page URL to the file list, e.g. "index.html", so we don't have to assume a specific name. + const mainPageUrl = await GetMainPageUrl(); + + // Prepend the main page URL to the file list if we found one and it is not already in the list. + // Also make sure we request the base / which should serve the main page. + fileList.unshift("./"); + + if (mainPageUrl && fileList.indexOf(mainPageUrl) === -1) + fileList.unshift(mainPageUrl); + + console.log(CONSOLE_PREFIX + "Caching " + fileList.length + " files for offline use"); + + if (isFirst) + Broadcast("downloading"); + else + BroadcastDownloadingUpdate(version); + + // Note we don't bypass the cache on the first update check. This is because SW installation and the following + // update check caching will race with the normal page load requests. For any normal loading fetches that have already + // completed or are in-flight, it is pointless and wasteful to cache-bust the request for offline caching, since that + // forces a second network request to be issued when a response from the browser HTTP cache would be fine. + if (lazyLoadList) + await WriteLazyLoadListToStorage(lazyLoadList); // dump lazy load list to local storage# + + await CreateCacheFromFileList(currentCacheName, fileList, !isFirst); + const isUpdatePending = await IsUpdatePending(); + + if (isUpdatePending) + { + console.log(CONSOLE_PREFIX + "All resources saved, update ready"); + BroadcastUpdateReady(version); + } + else + { + console.log(CONSOLE_PREFIX + "All resources saved, offline support ready"); + Broadcast("offline-ready"); + } + } + catch (err) + { + // Update check fetches fail when we're offline, but in case there's any other kind of problem with it, log a warning. + console.warn(CONSOLE_PREFIX + "Update check failed: ", err); + } +}; + +self.addEventListener("install", event => +{ + // On install kick off an update check to cache files on first use. + // If it fails we can still complete the install event and leave the SW running, we'll just + // retry on the next navigate. + event.waitUntil( + UpdateCheck(true) // first update + .catch(() => null) + ); +}); + +async function GetCacheNameToUse(availableCacheNames, doUpdateCheck) +{ + // Prefer the oldest cache available. This avoids mixed-version responses by ensuring that if a new cache + // is created and filled due to an update check while the page is running, we keep returning resources + // from the original (oldest) cache only. + if (availableCacheNames.length === 1 || !doUpdateCheck) + return availableCacheNames[0]; + + // We are making a navigate request with more than one cache available. Check if we can expire any old ones. + const allClients = await clients.matchAll(); + + // If there are other clients open, don't expire anything yet. We don't want to delete any caches they + // might be using, which could cause mixed-version responses. + if (allClients.length > 1) + return availableCacheNames[0]; + + // Identify newest cache to use. Delete all the others. + const latestCacheName = availableCacheNames[availableCacheNames.length - 1]; + console.log(CONSOLE_PREFIX + "Updating to new version"); + + await Promise.all( + availableCacheNames.slice(0, -1) + .map(c => caches.delete(c)) + ); + + return latestCacheName; +}; + +async function HandleFetch(event, doUpdateCheck) +{ + const availableCacheNames = await GetAvailableCacheNames(); + + // No caches available: go to network + if (!availableCacheNames.length) + return fetch(event.request); + + const useCacheName = await GetCacheNameToUse(availableCacheNames, doUpdateCheck); + const cache = await caches.open(useCacheName); + const cachedResponse = await cache.match(event.request); + + if (cachedResponse) + return cachedResponse; // use cached response + + // We need to check if this request is to be lazy-cached. Send the request and load the lazy-load list + // from storage simultaneously. + const result = await Promise.all([fetch(event.request), ReadLazyLoadListFromStorage()]); + const fetchResponse = result[0]; + const lazyLoadList = result[1]; + + if (IsUrlInLazyLoadList(event.request.url, lazyLoadList)) + { + // Handle failure writing to the cache. This can happen if the storage quota is exceeded, which is particularly + // likely in Safari 11.1, which appears to have very tight storage limits. Make sure even in the event of an error + // we continue to return the response from the fetch. + try { + // Note clone response since we also respond with it + await cache.put(event.request, fetchResponse.clone()); + } + catch (err) + { + console.warn(CONSOLE_PREFIX + "Error caching '" + event.request.url + "': ", err); + } + } + + return fetchResponse; +}; + +self.addEventListener("fetch", event => +{ + /** NOTE (iain) + * This check is to prevent a bug with XMLHttpRequest where if its + * proxied with "FetchEvent.prototype.respondWith" no upload progress + * events are triggered. By returning we allow the default action to + * occur instead. Currently all cross-origin requests fall back to default. + */ + if (new URL(event.request.url).origin !== location.origin) + return; + + // Check for an update on navigate requests + const doUpdateCheck = (event.request.mode === "navigate"); + + const responsePromise = HandleFetch(event, doUpdateCheck); + + if (doUpdateCheck) + { + // allow the main request to complete, then check for updates + event.waitUntil( + responsePromise + .then(() => UpdateCheck(false)) // not first check + ); + } + + event.respondWith(responsePromise); +}); \ No newline at end of file diff --git a/platfomermiles.html b/platfomermiles.html index 5ed0c878..4244cc7f 100644 --- a/platfomermiles.html +++ b/platfomermiles.html @@ -9,5 +9,6 @@ old demo 1 old demo 2 new vrshen demo + new platfomer test \ No newline at end of file