diff --git a/Chrome/manifest.json b/Chrome/manifest.json index a6413fab1d..dd43c03b02 100644 --- a/Chrome/manifest.json +++ b/Chrome/manifest.json @@ -25,7 +25,7 @@ "jquery-fieldselection.min.js", "tinycon.js", "jquery.tokeninput.js", - "snuownd.js", + "emsnudown.js", "reddit_enhancement_suite.user.js" ], "css": [ diff --git a/OperaBlink/manifest.json b/OperaBlink/manifest.json index aa86c0e280..ebba61c7e0 100644 --- a/OperaBlink/manifest.json +++ b/OperaBlink/manifest.json @@ -25,7 +25,7 @@ "jquery-fieldselection.min.js", "tinycon.js", "jquery.tokeninput.js", - "snuownd.js", + "emsnudown.js", "reddit_enhancement_suite.user.js" ], "css": [ diff --git a/RES.safariextension/Info.plist b/RES.safariextension/Info.plist index 5c2d733626..3236956d9a 100644 --- a/RES.safariextension/Info.plist +++ b/RES.safariextension/Info.plist @@ -35,7 +35,7 @@ jquery-fieldselection.min.js tinycon.js jquery.tokeninput.js - snuownd.js + emsnudown.js reddit_enhancement_suite.user.js diff --git a/XPI/lib/main.js b/XPI/lib/main.js index 7e7cac3809..624160880e 100644 --- a/XPI/lib/main.js +++ b/XPI/lib/main.js @@ -152,7 +152,7 @@ pageMod.PageMod({ self.data.url('jquery-fieldselection.min.js'), self.data.url('tinycon.js'), self.data.url('jquery.tokeninput.js'), - self.data.url('snuownd.js'), + self.data.url('emsnudown.js'), self.data.url('reddit_enhancement_suite.user.js') ], /* contentStyleFile: [ @@ -335,4 +335,4 @@ pageMod.PageMod({ }); } -}); \ No newline at end of file +}); diff --git a/lib/emsnudown.js b/lib/emsnudown.js new file mode 100644 index 0000000000..fbf3fe1572 --- /dev/null +++ b/lib/emsnudown.js @@ -0,0 +1,136 @@ +// Commit f152c2f91b306c51aa9b097c77b630c3f7b6eacb +function j(C){throw C;}var q=void 0,r=!0,s=null,z=!1;function H(){return function(){}} +this.emsnudown=function(){var C={Lc:function(){function Aa(a){eval.call(s,a)}function n(a,b){a||S("Assertion failed: "+b)}function Ba(a){try{var b=d["_"+a];b||(b=eval("_"+a))}catch(c){}n(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return b}function Ca(a,b,c,m){function e(a,b){if("string"==b){if(a===s||a===q||0===a)return 0;d||(d=l.Ka());var c=l.Ja(a.length+1);Da(a,c);return c}return"array"==b?(d||(d=l.Ka()),c=l.Ja(a.length),Ea(a,c),c):a}var d=0,k=0, +m=m?m.map(function(a){return e(a,c[k++])}):[];a=a.apply(s,m);"string"==b?b=X(a):(n("array"!=b),b=a);d&&l.ub(d);return b}function Fa(a,b,c){c=c||"i8";"*"===c.charAt(c.length-1)&&(c="i32");switch(c){case "i1":y[a]=b;break;case "i8":y[a]=b;break;case "i16":aa[a>>1]=b;break;case "i32":A[a>>2]=b;break;case "i64":la=[b>>>0,(tempDouble=b,1<=+Math.abs(tempDouble)?0>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)]; +A[a>>2]=la[0];A[a+4>>2]=la[1];break;case "float":ba[a>>2]=b;break;case "double":Y[a>>3]=b;break;default:S("invalid type for setValue: "+c)}}function K(a,b,c,m){var e,d;"number"===typeof a?(e=r,d=a):(e=z,d=a.length);var k="string"===typeof b?b:s,c=c==ma?m:[na,l.Ja,l.Yb,l.va][c===q?U:c](Math.max(d,k?1:b.length));if(e){m=c;n(0==(c&3));for(a=c+(d&-4);m>2]=0;for(a=c+d;m=b?2*Math.abs(1<=a)return a;var c=32>=b?Math.abs(1<=c&&(32>=b||a>c))a=-2*c+a;return a}function qa(a){O++;d.monitorRunDependencies&&d.monitorRunDependencies(O);a?(n(!ca[a]),ca[a]=1):d.V("warning: run dependency added without ID")}function da(a){O--;d.monitorRunDependencies&&d.monitorRunDependencies(O);a?(n(ca[a]),delete ca[a]):d.V("warning: run dependency removed without ID");0==O&&(ra!==s&&(clearInterval(ra),ra=s),!Ka&&sa&&ta())}function L(a){return A[ea>>2]=a}function La(a,b,c){a=e.L(a);if(!a)return L(h.u),-1;if(a.Xb.readyState===WebSocket.Cd|| +a.Xb.readyState===WebSocket.CLOSED)return L(h.gc),-1;if(a.Xb.readyState===WebSocket.CONNECTING)return L(h.Ma),-1;a.sender(F.subarray(b,b+c));return c}function Ma(a,b,c){var m=e.L(a);if(!m)return L(h.u),-1;if(m&&"socket"in m)return La(a,b,c);try{return e.write(m,y,b,c)}catch(d){return e.Ob(d),-1}}function Na(a,b,c,m){c*=b;if(0==c)return 0;a=Ma(m,a,c);if(-1==a){if(b=e.L(m))b.error=r;return 0}return Math.floor(a/b)}function Oa(a){return 0>a||0===a&&-Infinity===1/a}function ua(a,b){function c(a){var c; +"double"===a?c=Y[b+e>>3]:"i64"==a?(c=[A[b+e>>2],A[b+(e+8)>>2]],e+=8):(a="i32",c=A[b+e>>2]);e+=Math.max(l.Mb(a),l.bb(a,s,r));return c}for(var m=a,e=0,d=[],k,u;;){var x=m;k=y[m];if(0===k)break;u=y[m+1|0];if(37==k){var h=z,g=z,B=z,E=z;a:for(;;){switch(u){case 43:h=r;break;case 45:g=r;break;case 35:B=r;break;case 48:if(E)break a;else{E=r;break}default:break a}m++;u=y[m+1|0]}var P=0;if(42==u)P=c("i32"),m++,u=y[m+1|0];else for(;48<=u&&57>=u;)P=10*P+(u-48),m++,u=y[m+1|0];var v=z;if(46==u){var p=0,v=r;m++; +u=y[m+1|0];if(42==u)p=c("i32"),m++;else for(;;){u=y[m+1|0];if(48>u||57=n&&(k=(x?Ja:pa)(k&Math.pow(256,n)-1,8*n));var t=Math.abs(k),x="";if(100==u||105==u)w=Ja(k,8*n).toString(10);else if(117==u)w=pa(k,8*n).toString(10),k=Math.abs(k);else if(111==u)w=(B?"0":"")+t.toString(8);else if(120==u||88==u){x=B&&0!=k?"0x":"";if(0>k){k=-k;w=(t-1).toString(16);t=[];for(B=0;Bk?"-"+x:"+"+x);x.length+w.lengthn&&-4<=n?(u=(103==u?"f":"F").charCodeAt(0),p-=n+1):(u=(103==u?"e":"E").charCodeAt(0),p--), +n=Math.min(p,20);if(101==u||69==u)w=k.toExponential(n),/[eE][-+]\d$/.test(w)&&(w=w.slice(0,-1)+"0"+w.slice(-1));else if(102==u||70==u)w=k.toFixed(n),0===k&&Oa(k)&&(w="-"+w);x=w.split("e");if(v&&!B)for(;1n++;)x[0]+="0";w=x[0]+(1k?"-":"")+"inf",E=z;for(;w.lengthu&&(w=w.toUpperCase());w.split("").forEach(function(a){d.push(a.charCodeAt(0))});break;case "s":E=(h=c("i8*"))?Pa(h):6;v&&(E=Math.min(E,p));if(!g)for(;E>2]=d.length;break;case "%":d.push(k);break;default:for(B= +x;Bi?1:-1}return 0}function Ta(a,b,c,e){c=ua(c,e);e=b===q?c.length:Math.min(c.length,Math.max(b-1,0));if(0>a)var a=-a,d=na(e+1),a=A[a>>2]=d;for(d=0;d>12<<12,b.tc=r,n(l.va),b.pc=l.va,l.va=function(){S("cannot dynamically allocate, sbrk now has control")});var c=M;0!=a&&b.pc(a);return c}function va(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}function ta(a){function b(){fa||(fa=r,V(W));V(wa);Ka=r;d._main&&sa&&d.callMain(a);if(d.postRun)for("function"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;)Ha(d.postRun.shift());V(Ia)}a=a||d.arguments;ga===s&&(ga=Date.now());if(0< +O)d.V("run() called, but dependencies remain, so not running");else{if(d.preRun)for("function"==typeof d.preRun&&(d.preRun=[d.preRun]);d.preRun.length;)Ga(d.preRun.shift());V(oa);0>"+c+")<<"+c+")"}return"Math.ceil(("+a+")/"+b+")*"+b},Xc:function(a){return a in l.lc||a in l.jc},Yc:function(a){return"*"==a[a.length-1]},Zc:function(a){return isPointerType(a)?z:isArrayType(a)||/?/.test(a)?r:"%"==a[0]},lc:{i1:0,i8:0,i16:0,i32:0,i64:0},jc:{"float":0,"double":0},wg:function(a,b){return(a| +0|b|0)+4294967296*(Math.round(a/4294967296)|Math.round(b/4294967296))},Jf:function(a,b){return((a|0)&(b|0))+4294967296*(Math.round(a/4294967296)&Math.round(b/4294967296))},Mg:function(a,b){return((a|0)^(b|0))+4294967296*(Math.round(a/4294967296)^Math.round(b/4294967296))},eb:function(a){if(1==l.D)return 1;var b={"%i1":1,"%i8":1,"%i16":2,"%i32":4,"%i64":8,"%float":4,"%double":8}["%"+a];b||("*"==a.charAt(a.length-1)?b=l.D:"i"==a[0]&&(a=parseInt(a.substr(1)),n(0==a%8),b=a/8));return b},Mb:function(a){return Math.max(l.eb(a), +l.D)},Ic:function(a,b){var c={};return b?a.filter(function(a){return c[a[b]]?z:c[a[b]]=r}):a.filter(function(a){return c[a]?z:c[a]=r})},set:function(){for(var a="object"===typeof arguments[0]?arguments[0]:arguments,b={},c=0;c>3<<3; +return b},Yb:function(a){var b=T;T=T+a|0;T=T+7>>3<<3;return b},va:function(a){var b=M;M=M+a|0;M=M+7>>3<<3;M>=ja&&S("Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, or (2) set Module.TOTAL_MEMORY before the program runs.");return b},ba:function(a,b){return Math.ceil(a/(b?b:8))*(b?b:8)},$c:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},kc:8,D:4,zf:0},Q=z,la;d.ccall=function(a,b,c,e){return Ca(Ba(a), +b,c,e)};d.cwrap=function(a,b,c){var e=Ba(a);return function(){return Ca(e,b,c,Array.prototype.slice.call(arguments))}};d.setValue=Fa;d.getValue=function(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return y[a];case "i8":return y[a];case "i16":return aa[a>>1];case "i32":return A[a>>2];case "i64":return A[a>>2];case "float":return ba[a>>2];case "double":return Y[a>>3];default:S("invalid type for setValue: "+b)}return s};var Ra=1,U=2,ma=4;d.ALLOC_NORMAL=0;d.ALLOC_STACK=Ra; +d.ALLOC_STATIC=U;d.ALLOC_DYNAMIC=3;d.ALLOC_NONE=ma;d.allocate=K;d.Pointer_stringify=X;var y,F,aa,A,ka,ba,Y,T=0,J=R=0,Za=R=0,M=0,ja=d.TOTAL_MEMORY||4194304;n(!!Int32Array&&!!Float64Array&&!!(new Int32Array(1)).subarray&&!!(new Int32Array(1)).set,"Cannot fallback to non-typed array case: Code is too specialized");D=new ArrayBuffer(ja);y=new Int8Array(D);aa=new Int16Array(D);A=new Int32Array(D);F=new Uint8Array(D);G=new Uint16Array(D);ka=new Uint32Array(D);ba=new Float32Array(D);Y=new Float64Array(D); +A[0]=255;n(255===F[0]&&0===F[3],"Typed arrays 2 must be run on a little-endian system");d.HEAP=q;d.HEAP8=y;d.HEAP16=aa;d.HEAP32=A;d.HEAPU8=F;d.HEAPU16=G;d.HEAPU32=ka;d.HEAPF32=ba;d.HEAPF64=Y;var oa=[],W=[],wa=[],ha=[],Ia=[],fa=z;d.addOnPreRun=d.Hf=Ga;d.addOnInit=d.Ef=function(a){W.unshift(a)};d.addOnPreMain=d.Gf=function(a){wa.unshift(a)};d.addOnExit=d.Df=function(a){ha.unshift(a)};d.addOnPostRun=d.Ff=Ha;d.intArrayFromString=N;d.intArrayToString=function(a){for(var b=[],c=0;cc?[]:a.slice(b,c-b+1)}for(var a=v.X(a).substr(1),b=v.X(b).substr(1),e=c(a.split("/")),d=c(b.split("/")),i=Math.min(e.length,d.length),k=i,u=0;uc.length;)c.push(0)}},ga:function(){j(new e.b(h.Oa))},n:function(a,b,c,e){return t.Ua(a,b,c,e)},rename:function(a,b,c){if(e.k(a.mode)){var d;try{d= +e.A(b,c)}catch(f){}if(d)for(var i in d.f)j(new e.b(h.Pa))}delete a.parent.f[a.name];a.name=c;b.f[c]=a},Z:function(a,b){delete a.f[b]},na:function(a,b){var c=e.A(a,b),d;for(d in c.f)j(new e.b(h.Pa));delete a.f[b]},la:function(a){var b=[".",".."],c;for(c in a.f)a.f.hasOwnProperty(c)&&b.push(c);return b},C:function(a,b,c){a=t.Ua(a,b,41471,0);a.link=c;return a},W:function(a){e.ea(a.mode)||j(new e.b(h.i));return a.link}},e:{t:function(a,b,c,e,d){a=a.d.f;e=Math.min(a.length-d,e);if(8b&&j(new e.b(h.i));a.Ad=[];return a.position=b},da:function(a, +b,c){t.Xa(a.d);a=a.d.f;for(b+=c;b>a.length;)a.push(0)},ha:function(a,b,c,d,f,i,k){e.isFile(a.d.mode)||j(new e.b(h.pa));a=a.d.f;if(!(k&2)&&(a.buffer===b||a.buffer===b.buffer))f=z,d=a.byteOffset;else{if(0>>0)%e.G.length},Pb:function(a){var b=e.fb(a.parent.id,a.name);a.T=e.G[b];e.G[b]=a},Qb:function(a){var b=e.fb(a.parent.id,a.name);if(e.G[b]===a)e.G[b]=a.T;else for(b=e.G[b];b;){if(b.T===a){b.T=a.T;break}b=b.T}},A:function(a,b){var c=e.ad(a);c&&j(new e.b(c));for(c=e.G[e.fb(a.id,b)];c;c=c.T)if(c.parent.id=== +a.id&&c.name===b)return c;return e.ga(a,b)},createNode:function(a,b,c,d){var f={id:e.gd++,name:b,mode:c,c:{},e:{},Ia:d,parent:s,j:s};a||(a=f);f.parent=a;f.j=a.j;Object.defineProperties(f,{t:{get:function(){return 365===(f.mode&365)},set:function(a){a?f.mode|=365:f.mode&=-366}},write:{get:function(){return 146===(f.mode&146)},set:function(a){a?f.mode|=146:f.mode&=-147}},Wc:{get:function(){return e.k(f.mode)}},gb:{get:function(){return e.Ca(f.mode)}}});e.Pb(f);return f},Fb:function(a){e.Qb(a)},Da:function(a){return a=== +a.parent},fa:function(a){return a.ed},isFile:function(a){return 32768===(a&61440)},k:function(a){return 16384===(a&61440)},ea:function(a){return 40960===(a&61440)},Ca:function(a){return 8192===(a&61440)},Uc:function(a){return 24576===(a&61440)},Vc:function(a){return 4096===(a&61440)},Hc:function(){return e.Va},g:function(a,b){a=v.X(e.Va,a);b=b||{ob:0};8>8},pg:function(a){return a&255},M:function(a,b){return a<<8|b},pb:function(a,b){e.Gb[a]={e:b}},Pc:function(a){return e.Gb[a]},mc:4096,hd:function(a, +b){for(var b=b||e.mc,c=a||1;c<=b;c++)if(!e.Y[c])return c;j(new e.b(h.ec))},L:function(a){return e.Y[a]},Gc:function(a,b,c){b=e.hd(b,c);a.p=b;Object.defineProperties(a,{object:{get:function(){return a.d},set:function(b){a.d=b}},hg:{get:function(){return 1!==(a.v&3)}},ig:{get:function(){return 0!==(a.v&3)}},gg:{get:function(){return a.v&8}}});return e.Y[b]=a},wc:function(a){e.Y[a]=s},ya:function(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c},jg:function(a,b){var c=v.join.apply(s,a);b&&"/"==c[0]&&(c= +c.substr(1));return c},Bf:function(a,b){return v.X(b,a)},Hg:function(a){return v.normalize(a)},Zf:function(a,b){var c=e.Ra(a,b);if(c.Za)return c.object;L(c.error);return s},Ra:function(a,b){try{var c=e.g(a,{m:!b}),a=c.path}catch(d){}var f={Da:z,Za:z,error:0,name:s,path:s,object:s,kd:z,md:s,ld:s};try{c=e.g(a,{parent:r}),f.kd=r,f.md=c.path,f.ld=c.d,f.name=v.F(a),c=e.g(a,{m:!b}),f.Za=r,f.path=c.path,f.object=c.d,f.name=c.d.name,f.Da="/"===c.path}catch(i){f.error=i.Ya}return f},Ac:function(a,b,c,d){a= +v.join("string"===typeof a?a:e.K(a),b);return e.Q(a,e.ya(c,d))},Dc:function(a,b){for(var a="string"===typeof a?a:e.K(a),c=b.split("/").reverse();c.length;){var d=c.pop();if(d){var f=v.join(a,d);try{e.Q(f,511)}catch(i){}a=f}}return f},zc:function(a,b,c,d,f){a=v.join("string"===typeof a?a:e.K(a),b);return e.create(a,e.ya(d,f))},Ta:function(a,b,c,d,f,i){a=b?v.join("string"===typeof a?a:e.K(a),b):a;d=e.ya(d,f);f=e.create(a,d);if(c){if("string"===typeof c){for(var b=Array(c.length),k=0,h=c.length;kthis.length-1||0>a)){var b=a%this.vc;return this.Sc(Math.floor(a/this.vc))[b]}};i.prototype.ud=function(a){this.Sc= +a};i.prototype.Cb=function(){var a=new XMLHttpRequest;a.open("HEAD",c,z);a.send(s);200<=a.status&&300>a.status||304===a.status||j(Error("Couldn't load "+c+". Status: "+a.status));var b=Number(a.getResponseHeader("Content-length")),e,d=1048576;if(!((e=a.getResponseHeader("Accept-Ranges"))&&"bytes"===e))d=b;var m=this;m.ud(function(a){var e=a*d,f=(a+1)*d-1,f=Math.min(f,b-1);if("undefined"===typeof m.ta[a]){var k=m.ta;e>f&&j(Error("invalid range ("+e+", "+f+") or no bytes requested!"));f>b-1&&j(Error("only "+ +b+" bytes available! programmer error!"));var i=new XMLHttpRequest;i.open("GET",c,z);b!==d&&i.setRequestHeader("Range","bytes="+e+"-"+f);"undefined"!=typeof Uint8Array&&(i.responseType="arraybuffer");i.overrideMimeType&&i.overrideMimeType("text/plain; charset=x-user-defined");i.send(s);200<=i.status&&300>i.status||304===i.status||j(Error("Couldn't load "+c+". Status: "+i.status));e=i.response!==q?new Uint8Array(i.response||[]):N(i.responseText||"",r);k[a]=e}"undefined"===typeof m.ta[a]&&j(Error("doXHR failed!")); +return m.ta[a]});this.oc=b;this.nc=d;this.ib=r};i=new i;Object.defineProperty(i,"length",{get:function(){this.ib||this.Cb();return this.oc}});Object.defineProperty(i,"chunkSize",{get:function(){this.ib||this.Cb();return this.nc}});i={gb:z,f:i}}else i={gb:z,url:c};var k=e.zc(a,b,i,d,f);i.f?k.f=i.f:i.url&&(k.f=s,k.url=i.url);var g={};Object.keys(k.e).forEach(function(a){var b=k.e[a];g[a]=function(){e.Kb(k)||j(new e.b(h.H));return b.apply(s,arguments)}});g.t=function(a,b,c,d,m){e.Kb(k)||j(new e.b(h.H)); +a=a.d.f;d=Math.min(a.length-m,d);if(a.slice)for(var f=0;f>2]=a.p;n(1===a.p,"invalid handle for stdin ("+a.p+")");a=e.open("/dev/stdout","w");A[$a>>2]=a.p;n(2===a.p,"invalid handle for stdout ("+a.p+")");a=e.open("/dev/stderr","w");A[fb>>2]=a.p;n(3===a.p,"invalid handle for stderr ("+a.p+")")},zd:function(){e.G=Array(4096);e.root=e.createNode(s,"/",16895,0);e.j(t,{},"/");e.yc();e.xc()},s:function(a,b,c){n(!e.s.Ba,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"); +e.s.Ba=r;d.stdin=a||d.stdin;d.stdout=b||d.stdout;d.stderr=c||d.stderr;e.Fc()},od:function(){e.s.Ba=z;for(var a=0;ab&&j(new e.b(h.i));var c;c="string"===typeof a?e.g(a,{m:r}).d:a;c.c.h||j(new e.b(h.l));e.k(c.mode)&&j(new e.b(h.O)); +e.isFile(c.mode)||j(new e.b(h.i));var d=e.U(c,"w");d&&j(new e.b(d));c.c.h(c,{size:b,timestamp:Date.now()})},ag:function(a,b){var c=e.L(a);c||j(new e.b(h.u));0===(c.v&3)&&j(new e.b(h.i));e.truncate(c.d,b)},Kg:function(a,b,c){a=e.g(a,{m:r}).d;a.c.h(a,{timestamp:Math.max(b,c)})},open:function(a,b,c,d,f){var a=v.normalize(a),b="string"===typeof b?e.cd(b):b,c=b&512?("undefined"===typeof c?438:c)&4095|32768:0,i;try{var g=e.g(a,{m:!(b&65536)});i=g.d;a=g.path}catch(l){}b&512&&(i?b&2048&&j(new e.b(h.zb)): +i=e.n(a,c,0));i||j(new e.b(h.Oa));e.Ca(i.mode)&&(b&=-1025);(c=e.bd(i,b))&&j(new e.b(c));b&1024&&e.truncate(i,0);a=e.Gc({path:a,d:i,v:b,seekable:r,position:0,e:i.e,Ad:[],error:z},d,f);a.e.open&&a.e.open(a);return a},close:function(a){try{a.e.close&&a.e.close(a)}catch(b){j(b)}finally{e.wc(a.p)}},z:function(a,b,c){(!a.seekable||!a.e.z)&&j(new e.b(h.qa));return a.e.z(a,b,c)},t:function(a,b,c,d,f){(0>d||0>f)&&j(new e.b(h.i));1===(a.v&3)&&j(new e.b(h.u));e.k(a.d.mode)&&j(new e.b(h.O));a.e.t||j(new e.b(h.i)); +var i=r;"undefined"===typeof f?(f=a.position,i=z):a.seekable||j(new e.b(h.qa));b=a.e.t(a,b,c,d,f);i||(a.position+=b);return b},write:function(a,b,c,d,f,i){(0>d||0>f)&&j(new e.b(h.i));0===(a.v&3)&&j(new e.b(h.u));e.k(a.d.mode)&&j(new e.b(h.O));a.e.write||j(new e.b(h.i));var g=r;"undefined"===typeof f?(f=a.position,g=z):a.seekable||j(new e.b(h.qa));a.v&8&&e.z(a,0,2);b=a.e.write(a,b,c,d,f,i);g||(a.position+=b);return b},da:function(a,b,c){(0>b||0>=c)&&j(new e.b(h.i));0===(a.v&3)&&j(new e.b(h.u));!e.isFile(a.d.mode)&& +!e.k(node.mode)&&j(new e.b(h.pa));a.e.da||j(new e.b(h.hc));a.e.da(a,b,c)},ha:function(a,b,c,d,f,i,g){1===(a.v&3)&&j(new e.b(h.yb));a.e.ha||j(new e.Tf(h.pa));return a.e.ha(a,b,c,d,f,i,g)}};d._strncasecmp=gb;d._memmove=hb;var g={B:{sd:s,Wb:z,paused:z,zg:[],pause:function(){g.B.Wb=r},qd:function(){g.B.paused&&(g.B.paused=z,g.B.sd());g.B.Wb=z},updateStatus:function(){if(d.setStatus){var a=d.statusMessage||"Please wait...",b=g.B.Ag,c=g.B.Vf;b?b>e-6&63,e=e-6,c=c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[i]}2==e?(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(d&3)<<4],c+="=="):4==e&&(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(d&15)<<2],c+="=");t.src="data:audio/x-"+b.substr(-3)+";base64,"+c;h(t)}};t.src=p;g.rd(function(){h(t)},1E4)}else return l()}});var c=d.canvas;c.rb=c.requestPointerLock||c.mozRequestPointerLock|| +c.webkitRequestPointerLock;c.Hb=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||H();c.Hb=c.Hb.bind(document);document.addEventListener("pointerlockchange",a,z);document.addEventListener("mozpointerlockchange",a,z);document.addEventListener("webkitpointerlockchange",a,z);d.elementPointerLock&&c.addEventListener("click",function(a){!g.mb&&c.rb&&(c.rb(),a.preventDefault())},z)}},Of:function(a,b,c){var e;try{(e=b?a.getContext("experimental-webgl",{alpha:z}):a.getContext("2d"))|| +j(":(")}catch(f){return d.print("Could not create canvas - "+f),s}b&&(a.style.backgroundColor="black",a.addEventListener("webglcontextlost",function(){alert("WebGL context lost. You will need to reload the page.")},z));c&&(d.Qf=e,d.Jg=b,g.dd.forEach(function(a){a()}),g.s());return e},Rf:H(),Lb:z,Ea:q,ma:q,qb:function(a,b){function c(){g.hb=z;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement|| +document.fullscreenElement)===e?(e.Db=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen,e.Db=e.Db.bind(document),g.Ea&&e.rb(),g.hb=r,g.ma&&g.vd()):g.ma&&g.wd();if(d.onFullScreen)d.onFullScreen(g.hb)}g.Ea=a;g.ma=b;"undefined"===typeof g.Ea&&(g.Ea=r);"undefined"===typeof g.ma&&(g.ma=z);var e=d.canvas;g.Lb||(g.Lb=r,document.addEventListener("fullscreenchange",c,z),document.addEventListener("mozfullscreenchange",c,z),document.addEventListener("webkitfullscreenchange", +c,z));e.qb=e.requestFullScreen||e.mozRequestFullScreen||(e.webkitRequestFullScreen?function(){e.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:s);e.qb()},requestAnimationFrame:function(a){window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||window.setTimeout);window.requestAnimationFrame(a)},Dg:function(a){return function(){if(!Q)return a.apply(s, +arguments)}},Eg:function(a){return g.requestAnimationFrame(function(){Q||a()})},rd:function(a,b){return setTimeout(function(){Q||a()},b)},Fg:function(a,b){return setInterval(function(){Q||a()},b)},cb:function(a){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".")+1)]},za:function(a){window.za||(window.za=navigator.getUserMedia||navigator.mozGetUserMedia);window.za(a)},Qc:function(a){return a.movementX|| +a.mozMovementX||a.webkitMovementX||0},Rc:function(a){return a.movementY||a.mozMovementY||a.webkitMovementY||0},R:0,S:0,ia:0,ja:0,Mf:function(a){if(g.mb)"mousemove"!=a.type&&"mozMovementX"in a?g.ia=g.ja=0:(g.ia=g.Qc(a),g.ja=g.Rc(a)),"undefined"!=typeof SDL?(g.R=SDL.R+g.ia,g.S=SDL.S+g.ja):(g.R+=g.ia,g.S+=g.ja);else{var b=d.canvas.getBoundingClientRect(),c;if("touchstart"==a.type||"touchend"==a.type||"touchmove"==a.type)if(a=a.touches.item(0))c=a.pageX-(window.scrollX+b.left),a=a.pageY-(window.scrollY+ +b.top);else return;else c=a.pageX-(window.scrollX+b.left),a=a.pageY-(window.scrollY+b.top);var e=d.canvas.height;c*=d.canvas.width/b.width;a*=e/b.height;g.ia=c-g.R;g.ja=a-g.S;g.R=c;g.S=a}},Bd:function(a,b,c){var d=new XMLHttpRequest;d.open("GET",a,r);d.responseType="arraybuffer";d.onload=function(){200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(s)},qc:function(a,b,c,d){g.Bd(a,function(c){n(c,'Loading data file "'+a+'" failed (no arrayBuffer).');b(new Uint8Array(c));d|| +da("al "+a)},function(){c?c():j('Loading data file "'+a+'" failed.')});d||qa("al "+a)},pd:[],vb:function(){var a=d.canvas;g.pd.forEach(function(b){b(a.width,a.height)})},td:function(a,b,c){var e=d.canvas;e.width=a;e.height=b;c||g.vb()},bc:0,ac:0,vd:function(){var a=d.canvas;this.bc=a.width;this.ac=a.height;a.width=screen.width;a.height=screen.height;"undefined"!=typeof SDL&&(a=ka[SDL.screen+0*l.D>>2],A[SDL.screen+0*l.D>>2]=a|8388608);g.vb()},wd:function(){var a=d.canvas;a.width=this.bc;a.height=this.ac; +"undefined"!=typeof SDL&&(a=ka[SDL.screen+0*l.D>>2],A[SDL.screen+0*l.D>>2]=a&-8388609);g.vb()}};e.zd();W.unshift({P:function(){!d.noFSInit&&!e.s.Ba&&e.s()}});wa.push({P:function(){e.Rb=z}});ha.push({P:function(){e.od()}});d.FS_createFolder=e.Ac;d.FS_createPath=e.Dc;d.FS_createDataFile=e.Ta;d.FS_createPreloadedFile=e.Ec;d.FS_createLazyFile=e.Bc;d.FS_createLink=e.Cc;d.FS_createDevice=e.I;ea=l.Yb(4);A[ea>>2]=0;W.unshift({P:function(){I.s()}});ha.push({P:function(){I.xd()}});I.$b=new l.Qa;d.requestFullScreen= +function(a,b){g.qb(a,b)};d.requestAnimationFrame=function(a){g.requestAnimationFrame(a)};d.setCanvasSize=function(a,b,c){g.td(a,b,c)};d.pauseMainLoop=function(){g.B.pause()};d.resumeMainLoop=function(){g.B.qd()};d.getUserMedia=function(){g.za()};R=J=l.ba(T);R+=2097152;Za=M=l.ba(R);n(Za>3<<3;return b|0}function a0(){return i|0}function a1(a){a=a|0;i=a}function a2(a,b){a=a|0;b=b|0;if((o|0)==0){o=a;p=b}}function a3(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0]}function a4(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0];a[k+4|0]=a[b+4|0];a[k+5|0]=a[b+5|0];a[k+6|0]=a[b+6|0];a[k+7|0]=a[b+7|0]}function a5(a){a=a|0;B=a}function a6(a){a=a|0;C=a}function a7(a){a=a|0;D=a}function a8(a){a=a|0;E=a}function a9(a){a=a|0;F=a}function ba(a){a=a|0;G=a}function bb(a){a=a|0;H=a}function bc(a){a=a|0;I=a}function bd(a){a=a|0;J=a}function be(a){a=a|0;K=a}function bf(){}function bg(){var a=0;a=ci(16)|0;if((a|0)!=0){c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;c[a+12>>2]=128}c[1150]=a;a=ci(16)|0;if((a|0)!=0){c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;c[a+12>>2]=128}c[1152]=a;aN(4640,3088,0);cm(4296,0,16);c[1078]=805;cn(4192,112,104)|0;c[1063]=0;c[1050]=0;c[1081]=2;c[1079]=664;c[1080]=704;c[1084]=bV(4192,4296)|0;cm(4152,0,16);c[1042]=65;cn(4048,8,104)|0;c[1045]=2;c[1043]=664;c[1044]=704;c[1085]=bV(4048,4152)|0;c[1086]=4192;c[1087]=4048;aN(4640,3072,1);cm(4008,0,16);c[1006]=1825;cn(3904,112,104)|0;c[978]=0;c[1009]=2;c[1007]=664;c[1008]=704;c[1088]=bV(3904,4008)|0;cm(3864,0,16);c[970]=65;cn(3760,8,104)|0;c[973]=2;c[971]=664;c[972]=704;c[1089]=bV(3760,3864)|0;c[1090]=3904;c[1091]=3760;aO(4640,1768,1664);cm(4480,0,16);c[1124]=1825;cn(4376,560,104)|0;c[1127]=2;c[1125]=280;c[1126]=448;c[1092]=bV(4376,4480)|0;return 0}function bh(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0;c[(c[1152]|0)+4>>2]=0;m=c[1150]|0;c[m+4>>2]=0;bT(m,a);c[1148]=b;c[1144]=d;c[1142]=e;c[1140]=f;c[1138]=g;c[1136]=h;c[1134]=i;c[1132]=j;c[1130]=k;c[1146]=l;bi();return bQ(c[1152]|0)|0}function bi(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a=i;b=c[1150]|0;d=c[b>>2]|0;e=c[b+4>>2]|0;b=(c[1138]|0)==0?0:c[1136]|0;f=(c[1134]|0)==0?0:c[1132]|0;if(f>>>0>1){at(2160,(g=i,i=i+8|0,c[g>>2]=2136,g)|0)|0;i=g;i=a;return}g=(c[1130]|0)==0;h=c[1146]|0;j=(c[1142]|0)==0?0:c[1140]|0;k=c[4336+(f<<4)>>2]|0;l=c[4340+(f<<4)>>2]|0;m=c[4344+(f<<4)>>2]|0;n=c[4348+(f<<4)>>2]|0;c[m+136>>2]=(c[1148]|0)==0?0:c[1144]|0;c[m+140>>2]=j;j=ci(16)|0;f=j;o=(j|0)==0;if(!o){c[j>>2]=0;c[j+8>>2]=0;c[j+4>>2]=0;c[j+12>>2]=128}p=m+120|0;q=c[p>>2]|0;if(!(g|(h|0)==0)){h=n+116|0;c[h>>2]=b;bW(f,d,e,l);c[h>>2]=0;c[p>>2]=c[p>>2]|64}h=m+116|0;c[h>>2]=b;bW(f,d,e,k);c[h>>2]=0;c[p>>2]=q;q=j;p=c[q>>2]|0;bS(c[1152]|0,(p|0)==0?4648:p,c[j+4>>2]|0);if(o){i=a;return}cj(c[q>>2]|0);cj(j);i=a;return}function bj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;g=e+4|0;h=c[g>>2]|0;if((h|0)==0){bS(a,2336,18);j=d-1|0;c[e+8>>2]=j;k=c[g>>2]|0;l=j}else{k=h;l=c[e+8>>2]|0}h=d-l|0;do{if((h|0)>(k|0)){do{bS(a,2320,10);l=(c[g>>2]|0)+1|0;c[g>>2]=l;}while((h|0)>(l|0))}else{if((h|0)>=(k|0)){bS(a,2272,11);break}bS(a,2832,6);if((h|0)<(c[g>>2]|0)){do{bS(a,2296,12);l=(c[g>>2]|0)-1|0;c[g>>2]=l;}while((h|0)<(l|0))}bS(a,2288,5)}}while(0);bS(a,2248,10);h=c[e+12>>2]|0;if((h|0)!=0){bT(a,h)}h=e;e=c[h>>2]|0;c[h>>2]=e+1;bR(a,2688,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h;if((b|0)==0){bS(a,2240,5);i=f;return}bO(a,c[b>>2]|0,c[b+4>>2]|0);bS(a,2240,5);i=f;return}function bk(a,b,d){a=a|0;b=b|0;d=d|0;bS(a,2368,6);if((b|0)==0){bS(a,2360,7);return 1}bO(a,c[b>>2]|0,c[b+4>>2]|0);bS(a,2360,7);return 1}function bl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)==0){e=0;return e|0}d=b+4|0;if((c[d>>2]|0)==0){e=0;return e|0}bS(a,2400,8);bS(a,c[b>>2]|0,c[d>>2]|0);bS(a,2376,9);e=1;return e|0}function bm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)==0){e=0;return e|0}d=b+4|0;if((c[d>>2]|0)==0){e=0;return e|0}bS(a,2440,4);bS(a,c[b>>2]|0,c[d>>2]|0);bS(a,2416,5);e=1;return e|0}function bn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if((e|0)==0){return 1}f=c[e+4>>2]|0;if((f|0)==0){return 1}bS(a,c[e>>2]|0,f);return 1}function bo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)==0){e=0;return e|0}d=b+4|0;if((c[d>>2]|0)==0){e=0;return e|0}bS(a,2464,12);bS(a,c[b>>2]|0,c[d>>2]|0);bS(a,2448,14);e=1;return e|0}function bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)==0){e=0;return e|0}d=b+4|0;if((c[d>>2]|0)==0){e=0;return e|0}bS(a,2496,5);bS(a,c[b>>2]|0,c[d>>2]|0);bS(a,2488,6);e=1;return e|0}function bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)==0){e=0;return e|0}d=b+4|0;if((c[d>>2]|0)==0){e=0;return e|0}bS(a,2512,5);bS(a,c[b>>2]|0,c[d>>2]|0);bS(a,2504,6);e=1;return e|0}function br(a,b){a=a|0;b=b|0;var d=0,e=0;d=b+4|0;if((c[d>>2]|0)<=0){cm(b|0,0,12);return}do{bS(a,2536,12);e=(c[d>>2]|0)-1|0;c[d>>2]=e;}while((e|0)>0);bS(a,2520,7);cm(b|0,0,12);return}function bs(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if((c[b+4>>2]|0)!=0){bU(b,10)}do{if((f|0)==0){h=109}else{g=f+4|0;if((c[g>>2]|0)==0){h=109;break}bS(b,2600,18);i=c[g>>2]|0;if((i|0)!=0){j=f|0;k=0;l=0;m=i;while(1){i=k;n=m;while(1){if(i>>>0>=n>>>0){o=n;break}if((aF(d[(c[j>>2]|0)+i|0]|0)|0)==0){h=99;break}i=i+1|0;n=c[g>>2]|0}if((h|0)==99){h=0;o=c[g>>2]|0}if(i>>>0>>0){n=i;p=o;while(1){if(n>>>0>=p>>>0){break}if((aF(d[(c[j>>2]|0)+n|0]|0)|0)!=0){break}n=n+1|0;p=c[g>>2]|0}p=c[j>>2]|0;q=((a[p+i|0]|0)==46)+i|0;if((l|0)==0){r=p}else{bU(b,32);r=c[j>>2]|0}bO(b,r+q|0,n-q|0);s=n;t=c[g>>2]|0}else{s=i;t=o}q=s+1|0;if(q>>>0>>0){k=q;l=l+1|0;m=t}else{break}}}bS(b,1272,2)}}while(0);if((h|0)==109){bS(b,2584,11)}if((e|0)==0){bS(b,2552,14);return}bO(b,c[e>>2]|0,c[e+4>>2]|0);bS(b,2552,14);return}function bt(a,b,d){a=a|0;b=b|0;d=d|0;if((c[a+4>>2]|0)!=0){bU(a,10)}bS(a,2656,13);if((b|0)==0){bS(a,2624,14);return}bS(a,c[b>>2]|0,c[b+4>>2]|0);bS(a,2624,14);return}function bu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if((d|0)==0){return}e=d|0;f=c[d+4>>2]|0;while(1){if((f|0)==0){g=0;break}d=f-1|0;if((a[(c[e>>2]|0)+d|0]|0)==10){f=d}else{g=f;break}}f=0;while(1){if(f>>>0>=g>>>0){h=134;break}i=c[e>>2]|0;if((a[i+f|0]|0)==10){f=f+1|0}else{break}}if((h|0)==134){return}if((c[b+4>>2]|0)==0){j=i}else{bU(b,10);j=c[e>>2]|0}bS(b,j+f|0,g-f|0);bU(b,10);return}function bv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if((c[a+4>>2]|0)!=0){bU(a,10)}if((c[e+16>>2]&64|0)==0){bR(a,2680,(g=i,i=i+8|0,c[g>>2]=d,g)|0);i=g}else{bR(a,2704,(g=i,i=i+8|0,c[g>>2]=d,g)|0);i=g;h=c[e+12>>2]|0;if((h|0)!=0){bT(a,h)}h=e;e=c[h>>2]|0;c[h>>2]=e+1;bR(a,2688,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g}if((b|0)==0){bR(a,2672,(g=i,i=i+8|0,c[g>>2]=d,g)|0);i=g;i=f;return}bS(a,c[b>>2]|0,c[b+4>>2]|0);bR(a,2672,(g=i,i=i+8|0,c[g>>2]=d,g)|0);i=g;i=f;return}function bw(a,b){a=a|0;b=b|0;if((c[a+4>>2]|0)!=0){bU(a,10)}bT(a,(c[b+16>>2]&256|0)!=0?2744:2736);return}function bx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[a+4>>2]|0)!=0){bU(a,10)}e=(d&1|0)!=0;bS(a,e?2800:2784,5);if((b|0)==0){f=e?2768:2760;bS(a,f,6);return}bS(a,c[b>>2]|0,c[b+4>>2]|0);f=e?2768:2760;bS(a,f,6);return}function by(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;bS(b,2840,4);if((d|0)==0){bS(b,2832,6);return}f=d|0;e=c[d+4>>2]|0;while(1){if((e|0)==0){g=161;break}d=e-1|0;h=c[f>>2]|0;if((a[h+d|0]|0)==10){e=d}else{i=e;j=h;break}}if((g|0)==161){i=0;j=c[f>>2]|0}bS(b,j,i);bS(b,2832,6);return}function bz(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((c[b+4>>2]|0)!=0){bU(b,10)}if((e|0)==0){return}g=e+4|0;h=c[g>>2]|0;if((h|0)==0){return}i=e|0;e=0;j=h;while(1){if(e>>>0>=j>>>0){k=j;break}if((aF(d[(c[i>>2]|0)+e|0]|0)|0)==0){l=175;break}e=e+1|0;j=c[g>>2]|0}if((l|0)==175){k=c[g>>2]|0}if((e|0)==(k|0)){return}bS(b,2856,3);k=f+16|0;L227:do{if((c[k>>2]&128|0)==0){bS(b,(c[i>>2]|0)+e|0,(c[g>>2]|0)-e|0)}else{f=c[g>>2]|0;if(e>>>0>>0){m=e;n=f}else{break}do{f=m;while(1){if(f>>>0>=n>>>0){break}if((a[(c[i>>2]|0)+f|0]|0)==10){break}else{f=f+1|0}}if(f>>>0>m>>>0){bS(b,(c[i>>2]|0)+m|0,f-m|0);o=c[g>>2]|0}else{o=n}if(f>>>0>=(o-1|0)>>>0){break L227}bT(b,(c[k>>2]&256|0)!=0?1240:1232);m=f+1|0;n=c[g>>2]|0;}while(m>>>0>>0)}}while(0);bS(b,2848,5);return}function bA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((c[a+4>>2]|0)!=0){bU(a,10)}bS(a,2928,15);if((b|0)!=0){bS(a,c[b>>2]|0,c[b+4>>2]|0)}bS(a,2896,16);if((d|0)==0){bS(a,2872,17);return}bS(a,c[d>>2]|0,c[d+4>>2]|0);bS(a,2872,17);return}function bB(a,b,d){a=a|0;b=b|0;d=d|0;bS(a,2952,5);if((b|0)==0){bS(a,2944,6);return}bS(a,c[b>>2]|0,c[b+4>>2]|0);bS(a,2944,6);return}function bC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=(d&4|0)!=0;if(e){bS(a,1168,3)}else{bS(a,3056,3)}f=d&3;if((f|0)==1){bS(a,3008,14)}else if((f|0)==2){bS(a,2992,15)}else if((f|0)==3){bS(a,3032,16)}else{bS(a,2984,1)}if((b|0)!=0){bS(a,c[b>>2]|0,c[b+4>>2]|0)}if(e){bS(a,2976,6);return}else{bS(a,2968,6);return}}function bD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;if((b|0)==0){g=0;return g|0}h=b+4|0;if((c[h>>2]|0)==0){g=0;return g|0}bS(a,1216,10);bN(a,c[b>>2]|0,c[h>>2]|0);bS(a,1208,7);do{if((e|0)!=0){h=c[e+4>>2]|0;if((h|0)==0){break}bO(a,c[e>>2]|0,h)}}while(0);do{if((d|0)!=0){e=d+4|0;if((c[e>>2]|0)==0){break}bS(a,1280,9);bO(a,c[d>>2]|0,c[e>>2]|0)}}while(0);bT(a,(c[f+16>>2]&256|0)!=0?1184:1272);g=1;return g|0}function bE(a,b){a=a|0;b=b|0;bT(a,(c[b+16>>2]&256|0)!=0?1240:1232);return 1}function bF(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;do{if((e|0)==0){bS(b,1304,9)}else{do{if((c[h+16>>2]&32|0)==0){bS(b,1304,9);i=e+4|0}else{j=c[e>>2]|0;k=e+4|0;l=c[k>>2]|0;m=0;L299:while(1){n=c[224+(m<<2)>>2]|0;o=cq(n|0)|0;do{if(o>>>0>>0){if((cr(j|0,n|0,o|0)|0)!=0){break}p=j+o|0;if((ay(d[p]|0|0)|0)!=0){q=246;break L299}r=a[p]|0;if((r<<24>>24|0)==35|(r<<24>>24|0)==47|(r<<24>>24|0)==63){q=246;break L299}}}while(0);o=m+1|0;if(o>>>0<14){m=o}else{s=0;q=261;break}}if((q|0)==246){bS(b,1304,9);i=k;break}else if((q|0)==261){return s|0}}}while(0);m=c[i>>2]|0;if((m|0)==0){break}bN(b,c[e>>2]|0,m)}}while(0);do{if((f|0)!=0){i=f+4|0;if((c[i>>2]|0)==0){break}bS(b,1280,9);bO(b,c[f>>2]|0,c[i>>2]|0)}}while(0);f=h+28|0;if((c[f>>2]|0)==0){bS(b,1272,2)}else{bU(b,34);aW[c[f>>2]&15](b,e,h);bU(b,62)}do{if((g|0)!=0){h=c[g+4>>2]|0;if((h|0)==0){break}bS(b,c[g>>2]|0,h)}}while(0);bS(b,1248,4);s=1;return s|0}function bG(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((e|0)==0){h=0;return h|0}i=e+4|0;j=c[i>>2]|0;if((j|0)==0){h=0;return h|0}L334:do{if((c[g+16>>2]&32|0)==0){k=274}else{l=c[e>>2]|0;m=0;do{n=c[224+(m<<2)>>2]|0;o=cq(n|0)|0;do{if(o>>>0>>0){if((cr(l|0,n|0,o|0)|0)!=0){break}p=l+o|0;if((ay(d[p]|0)|0)!=0){k=274;break L334}q=a[p]|0;if((q<<24>>24|0)==35|(q<<24>>24|0)==47|(q<<24>>24|0)==63){k=274;break L334}}}while(0);m=m+1|0;}while(m>>>0<14);if((f|0)==2){bS(b,1304,9);k=275;break}else{h=0;return h|0}}}while(0);if((k|0)==274){bS(b,1304,9);if((f|0)==2){k=275}}if((k|0)==275){bS(b,1176,7)}f=e|0;bN(b,c[f>>2]|0,c[i>>2]|0);j=g+28|0;if((c[j>>2]|0)==0){bS(b,1272,2)}else{bU(b,34);aW[c[j>>2]&15](b,e,g);bU(b,62)}if((c[e+12>>2]|0)==0){aI(2192,38,3184,2808);return 0}e=c[i>>2]|0;i=0;while(1){if(i>>>0>=e>>>0|(i|0)==7){k=284;break}r=c[f>>2]|0;if((d[r+i|0]|0)==(a[1176+i|0]|0)){i=i+1|0}else{k=285;break}}if((k|0)==285){bO(b,r,e)}else if((k|0)==284){bO(b,(c[f>>2]|0)+7|0,e-7|0)}bS(b,1248,4);h=1;return h|0}function bH(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;g=c[f+20>>2]|0;h=f+16|0;i=c[h>>2]|0;do{if((i&1024|0)==0|(g|0)==0){j=i}else{k=c[g>>2]|0;if((k|0)==0){j=i;break}l=e|0;m=e+4|0;n=1;o=g;p=k;L371:while(1){k=c[l>>2]|0;q=c[m>>2]|0;L373:do{if(q>>>0>=3){if((a[k]|0)!=60){break}r=(a[k+1|0]|0)==47;s=r?2:1;L376:do{if(s>>>0>>0){t=p;u=s;while(1){v=a[t]|0;if(v<<24>>24==0){w=u;break L376}if((d[k+u|0]|0)!=(v<<24>>24|0)){break L373}v=u+1|0;if(v>>>0>>0){t=t+1|0;u=v}else{w=v;break}}}else{w=s}}while(0);if((w|0)==(q|0)){break}s=k+w|0;if((aF(d[s]|0)|0)!=0){break L371}if((a[s]|0)==62){break L371}}}while(0);k=g+(n<<2)|0;q=c[k>>2]|0;if((q|0)==0){x=339;break}n=n+1|0;o=k;p=q}if((x|0)==339){j=c[h>>2]|0;break}p=c[o>>2]|0;n=c[f+24>>2]|0;q=ci(16)|0;k=q;s=(q|0)==0;if(!s){c[q>>2]=0;c[q+8>>2]=0;c[q+4>>2]=0;c[q+12>>2]=16}bU(b,60);do{if(r){bU(b,47);bT(b,p)}else{u=cq(p|0)|0;bT(b,p);t=u+1|0;if(t>>>0>=(c[m>>2]|0)>>>0){break}u=q+4|0;v=q;y=q+8|0;z=0;A=0;B=t;while(1){t=a[(c[l>>2]|0)+B|0]|0;do{if((t|0)==39|(t|0)==34){if((z|0)==0){C=t;D=A;x=333;break}C=(z|0)==(t|0)?0:z;D=A;x=333}else if((t|0)==62){if((A|0)!=0&(z|0)==0){x=328}else{x=330}}else{if((z|0)!=0){C=z;D=A;x=333;break}if((t|0)==32){if((A|0)==0){x=330;break}else{x=328;break}}else if((t|0)!=61){C=0;D=A;x=333;break}if((A|0)!=0){x=330;break}E=c[n>>2]|0;if((E|0)==0){x=330;break}F=0;G=0;H=n;I=E;E=c[u>>2]|0;while(1){if((cq(I|0)|0)==(E|0)){L410:do{if((E|0)==0){J=0;K=0}else{L=0;M=I;while(1){N=co(a[M+L|0]|0)|0;if((N|0)!=(co(d[(c[v>>2]|0)+L|0]|0)|0)){break}N=L+1|0;O=c[u>>2]|0;if(N>>>0>=O>>>0){J=O;K=N;break L410}L=N;M=c[H>>2]|0}J=c[u>>2]|0;K=L}}while(0);P=(K|0)==(J|0)?1:G;Q=J}else{P=G;Q=E}M=F+1|0;N=n+(M<<2)|0;O=c[N>>2]|0;if((O|0)==0){break}else{F=M;G=P;H=N;I=O;E=Q}}if((P|0)==0){x=330}else{C=0;D=P;x=333}}}while(0);if((x|0)==328){x=0;bU(b,32);bS(b,c[v>>2]|0,c[u>>2]|0);x=330}else if((x|0)==333){x=0;bU(k,t);R=D;S=C}do{if((x|0)==330){x=0;if(s){R=0;S=0;break}cj(c[v>>2]|0);c[v>>2]=0;c[y>>2]=0;c[u>>2]=0;R=0;S=0}}while(0);t=B+1|0;if(t>>>0<(c[m>>2]|0)>>>0){z=S;A=R;B=t}else{break}}}}while(0);if(!s){cj(c[q>>2]|0);cj(q)}bU(b,62);return 1}}while(0);if((j&512|0)!=0){bO(b,c[e>>2]|0,c[e+4>>2]|0);return 1}if((j&1|0)!=0){return 1}L442:do{if((j&2|0)==0){T=j}else{R=c[e>>2]|0;S=c[e+4>>2]|0;if(S>>>0<3){T=j;break}if((a[R]|0)!=60){T=j;break}x=(a[R+1|0]|0)==47?2:1;L446:do{if(x>>>0>>0){C=2032;D=x;while(1){P=a[C]|0;if(P<<24>>24==0){U=D;break L446}if((d[R+D|0]|0)!=(P<<24>>24|0)){T=j;break L442}P=D+1|0;if(P>>>0>>0){C=C+1|0;D=P}else{U=P;break}}}else{U=x}}while(0);if((U|0)==(S|0)){T=j;break}x=R+U|0;if((aF(d[x]|0)|0)!=0){return 1}if((a[x]|0)==62){return 1}else{T=c[h>>2]|0;break}}}while(0);U=e|0;L460:do{if((T&8|0)==0){V=T;W=U}else{j=c[U>>2]|0;x=c[e+4>>2]|0;if(x>>>0<3){V=T;W=U;break}if((a[j]|0)!=60){V=T;W=U;break}q=(a[j+1|0]|0)==47?2:1;L464:do{if(q>>>0>>0){s=1712;D=q;while(1){C=a[s]|0;if(C<<24>>24==0){X=D;break L464}if((d[j+D|0]|0)!=(C<<24>>24|0)){V=T;W=U;break L460}C=D+1|0;if(C>>>0>>0){s=s+1|0;D=C}else{X=C;break}}}else{X=q}}while(0);if((X|0)==(x|0)){V=T;W=U;break}q=j+X|0;if((aF(d[q]|0)|0)!=0){return 1}if((a[q]|0)==62){return 1}else{V=c[h>>2]|0;W=U;break}}}while(0);L478:do{if((V&4|0)==0){Y=e+4|0}else{U=c[W>>2]|0;h=e+4|0;X=c[h>>2]|0;if(X>>>0<3){Y=h;break}if((a[U]|0)!=60){Y=h;break}T=(a[U+1|0]|0)==47?2:1;L483:do{if(T>>>0>>0){q=1704;R=T;while(1){S=a[q]|0;if(S<<24>>24==0){Z=R;break L483}if((d[U+R|0]|0)!=(S<<24>>24|0)){Y=h;break L478}S=R+1|0;if(S>>>0>>0){q=q+1|0;R=S}else{Z=S;break}}}else{Z=T}}while(0);if((Z|0)==(X|0)){Y=h;break}T=U+Z|0;if((aF(d[T]|0)|0)!=0){return 1}if((a[T]|0)!=62){Y=h;break}return 1}}while(0);bS(b,c[W>>2]|0,c[Y>>2]|0);return 1}function bI(a,b,d){a=a|0;b=b|0;d=d|0;if((b|0)==0){return}bO(a,c[b>>2]|0,c[b+4>>2]|0);return}function bJ(a,b){a=a|0;b=b|0;cm(b|0,0,12);return}function bK(a){a=a|0;var b=0;c[(c[1152]|0)+4>>2]=0;b=c[1150]|0;c[b+4>>2]=0;bT(b,a);c[1148]=0;c[1142]=0;c[1138]=0;c[1134]=0;c[1130]=0;a=c[1084]|0;b=c[1086]|0;c[1084]=c[1092];c[1086]=4376;bi();c[1084]=a;c[1086]=b;return bQ(c[1152]|0)|0}function bL(a,b,d){a=a|0;b=b|0;d=d|0;d=c[b+4>>2]|0;if((d|0)==0){return}bS(a,c[b>>2]|0,d);return}function bM(a,b,d){a=a|0;b=b|0;d=d|0;if((c[d+32>>2]|0)!=0){bS(a,1440,15)}b=d+36|0;if((c[b>>2]|0)==0){return}bS(a,1424,9);bT(a,c[b>>2]|0);bU(a,34);return}function bN(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+8|0;h=g|0;j=f*12|0;k=(j>>>0)/10|0;if((b|0)==0){aI(2192,58,3200,2808)}l=c[b+12>>2]|0;if((l|0)==0){aI(2192,58,3200,2808)}do{if(j>>>0<=167772169){m=b+8|0;n=c[m>>2]|0;if(n>>>0>=k>>>0){break}o=n+l|0;if(o>>>0>>0){n=o;while(1){p=l+n|0;if(p>>>0>>0){n=p}else{q=p;break}}}else{q=o}n=b|0;p=ck(c[n>>2]|0,q)|0;if((p|0)==0){break}c[n>>2]=p;c[m>>2]=q}}while(0);q=h|0;a[q]=37;if((f|0)==0){i=g;return}k=h+1|0;l=h+2|0;h=0;while(1){j=h;while(1){if(j>>>0>=f>>>0){r=0;break}if((a[3504+(d[e+j|0]|0)|0]|0)==0){r=1;break}else{j=j+1|0}}if(j>>>0>h>>>0){bS(b,e+h|0,j-h|0)}if(!r){s=434;break}m=d[e+j|0]|0;do{if((a[3504+m|0]|0)!=2){if((m|0)==38){bS(b,1568,5);break}else if((m|0)==39){bS(b,1480,6);break}else{a[k]=a[728+(m>>>4)|0]|0;a[l]=a[728+(m&15)|0]|0;bS(b,q,3);break}}}while(0);m=j+1|0;if(m>>>0>>0){h=m}else{s=433;break}}if((s|0)==433){i=g;return}else if((s|0)==434){i=g;return}}function bO(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=f*12|0;h=(g>>>0)/10|0;if((b|0)==0){aI(2192,58,3200,2808)}i=c[b+12>>2]|0;if((i|0)==0){aI(2192,58,3200,2808)}do{if(g>>>0<=167772169){j=b+8|0;k=c[j>>2]|0;if(k>>>0>=h>>>0){break}l=k+i|0;if(l>>>0>>0){k=l;while(1){m=i+k|0;if(m>>>0>>0){k=m}else{n=m;break}}}else{n=l}k=b|0;m=ck(c[k>>2]|0,n)|0;if((m|0)==0){break}c[k>>2]=m;c[j>>2]=n}}while(0);if((f|0)==0){return}else{o=0;p=0}while(1){n=p;h=o;while(1){if(h>>>0>=f>>>0){q=n;r=0;break}i=a[3216+(d[e+h|0]|0)|0]|0;g=i<<24>>24;if(i<<24>>24==0){n=g;h=h+1|0}else{q=g;r=1;break}}if(h>>>0>o>>>0){bS(b,e+o|0,h-o|0)}if(!r){s=462;break}n=a[e+h|0]|0;do{if(n<<24>>24==47){bU(b,47)}else{if((a[3216+(n&255)|0]|0)==7){break}bT(b,c[3472+(q<<2)>>2]|0)}}while(0);n=h+1|0;if(n>>>0>>0){o=n;p=q}else{s=460;break}}if((s|0)==460){return}else if((s|0)==462){return}}function bP(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;e=0;while(1){if(e>>>0>=c>>>0){f=c;break}if((a[b+e|0]|0)==60){f=e;break}else{e=e+1|0}}if((f|0)==0){g=0;return g|0}else{h=f}L598:while(1){i=h-1|0;j=a[b+i|0]|0;k=j&255;do{if((aQ(1984,k|0,5)|0)==0){if(j<<24>>24!=59){break L598}f=h-2|0;e=f;while(1){if((e|0)==0){l=0;break}if((aE(d[b+e|0]|0)|0)==0){l=e;break}else{e=e-1|0}}if(l>>>0>>0){if((a[b+l|0]|0)==38){m=l;break}}m=i}else{m=i}}while(0);if((m|0)==0){g=0;n=488;break}else{h=m}}if((n|0)==488){return g|0}switch(k|0){case 41:{o=40;break};case 93:{o=91;break};case 125:{o=123;break};case 34:case 39:{o=k;break};default:{g=h;return g|0}}if((h|0)==0){p=0;q=0;r=(p|0)==(q|0);s=r?h:i;return s|0}else{t=0;u=0;v=0}while(1){g=a[b+v|0]|0;if((g&255|0)==(o|0)){w=u+1|0;x=t}else{w=u;x=(g<<24>>24==j<<24>>24)+t|0}g=v+1|0;if(g>>>0>>0){t=x;u=w;v=g}else{p=x;q=w;break}}r=(p|0)==(q|0);s=r?h:i;return s|0}function bQ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((b|0)==0){aI(2192,99,3208,2808);return 0}d=c[b+12>>2]|0;if((d|0)==0){aI(2192,99,3208,2808);return 0}e=b+4|0;f=c[e>>2]|0;g=b+8|0;h=c[g>>2]|0;do{if(f>>>0>>0){i=c[b>>2]|0;if((a[i+f|0]|0)==0){j=i}else{break}return j|0}}while(0);i=f+1|0;do{if(i>>>0>h>>>0){if(i>>>0>16777216){j=0;return j|0}k=d+h|0;if(k>>>0>>0){l=k;while(1){m=l+d|0;if(m>>>0>>0){l=m}else{n=m;break}}}else{n=k}l=b|0;m=ck(c[l>>2]|0,n)|0;if((m|0)==0){j=0;return j|0}else{c[l>>2]=m;c[g>>2]=n;o=c[e>>2]|0;p=m;break}}else{o=f;p=c[b>>2]|0}}while(0);a[p+o|0]=0;j=c[b>>2]|0;return j|0}function bR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=i;i=i+16|0;f=e|0;if((a|0)==0){aI(2192,119,3168,2808)}g=a+12|0;h=c[g>>2]|0;if((h|0)==0){aI(2192,119,3168,2808)}j=a+4|0;k=c[j>>2]|0;l=a+8|0;m=c[l>>2]|0;do{if(k>>>0>=m>>>0){n=k+1|0;if(n>>>0>16777216){i=e;return}if(m>>>0>=n>>>0){break}o=m+h|0;if(o>>>0>>0){p=o;while(1){q=p+h|0;if(q>>>0>>0){p=q}else{r=q;break}}}else{r=o}p=a|0;n=ck(c[p>>2]|0,r)|0;if((n|0)==0){i=e;return}else{c[p>>2]=n;c[l>>2]=r;break}}}while(0);r=f|0;h=f;c[h>>2]=d;c[h+4>>2]=0;f=a|0;a=c[j>>2]|0;m=ap((c[f>>2]|0)+a|0,(c[l>>2]|0)-a|0,b|0,r|0)|0;if((m|0)<0){i=e;return}a=c[l>>2]|0;k=c[j>>2]|0;do{if(m>>>0<(a-k|0)>>>0){s=m;t=k}else{n=m+1+k|0;p=c[g>>2]|0;if((p|0)==0){aI(2192,58,3200,2808)}if(n>>>0>16777216){i=e;return}do{if(a>>>0>>0){q=p+a|0;if(q>>>0>>0){u=q;while(1){v=u+p|0;if(v>>>0>>0){u=v}else{w=v;break}}}else{w=q}u=ck(c[f>>2]|0,w)|0;if((u|0)==0){i=e;return}else{c[f>>2]=u;c[l>>2]=w;break}}}while(0);c[h>>2]=d;c[h+4>>2]=0;n=c[j>>2]|0;p=ap((c[f>>2]|0)+n|0,(c[l>>2]|0)-n|0,b|0,r|0)|0;if((p|0)<0){i=e;return}else{s=p;t=c[j>>2]|0;break}}}while(0);c[j>>2]=t+s;i=e;return}function bS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((a|0)==0){aI(2192,155,3160,2808)}e=c[a+12>>2]|0;if((e|0)==0){aI(2192,155,3160,2808)}f=a+4|0;g=c[f>>2]|0;h=g+d|0;i=a+8|0;j=c[i>>2]|0;do{if(h>>>0>j>>>0){if(h>>>0>16777216){return}k=j+e|0;if(k>>>0>>0){l=k;while(1){m=l+e|0;if(m>>>0>>0){l=m}else{n=m;break}}}else{n=k}l=a|0;m=ck(c[l>>2]|0,n)|0;if((m|0)==0){return}else{c[l>>2]=m;c[i>>2]=n;o=c[f>>2]|0;p=m;break}}else{o=g;p=c[a>>2]|0}}while(0);a=p+o|0;cn(a|0,b|0,d)|0;c[f>>2]=(c[f>>2]|0)+d;return}function bT(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=cq(b|0)|0;if((a|0)==0){aI(2192,155,3160,2808)}e=c[a+12>>2]|0;if((e|0)==0){aI(2192,155,3160,2808)}f=a+4|0;g=c[f>>2]|0;h=g+d|0;i=a+8|0;j=c[i>>2]|0;do{if(h>>>0>j>>>0){if(h>>>0>16777216){return}k=j+e|0;if(k>>>0>>0){l=k;while(1){m=l+e|0;if(m>>>0>>0){l=m}else{n=m;break}}}else{n=k}l=a|0;m=ck(c[l>>2]|0,n)|0;if((m|0)==0){return}else{c[l>>2]=m;c[i>>2]=n;o=c[f>>2]|0;p=m;break}}else{o=g;p=c[a>>2]|0}}while(0);a=p+o|0;cn(a|0,b|0,d)|0;c[f>>2]=(c[f>>2]|0)+d;return}function bU(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((b|0)==0){aI(2192,176,3152,2808)}e=c[b+12>>2]|0;if((e|0)==0){aI(2192,176,3152,2808)}f=b+4|0;g=c[f>>2]|0;h=g+1|0;i=b+8|0;j=c[i>>2]|0;do{if(h>>>0>j>>>0){if(h>>>0>16777216){return}k=j+e|0;if(k>>>0>>0){l=k;while(1){m=l+e|0;if(m>>>0>>0){l=m}else{n=m;break}}}else{n=k}l=b|0;m=ck(c[l>>2]|0,n)|0;if((m|0)==0){return}else{c[l>>2]=m;c[i>>2]=n;o=c[f>>2]|0;p=m;break}}else{o=g;p=c[b>>2]|0}}while(0);a[p+o|0]=d&255;c[f>>2]=(c[f>>2]|0)+1;return}function bV(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)==0){aI(1928,2431,3136,1888);return 0}e=ci(432)|0;f=e;if((e|0)==0){g=0;return g|0}h=b;cn(e|0,h|0,104)|0;h=e+396|0;c[h>>2]=0;b=e+400|0;c[b>>2]=0;i=e+404|0;c[i>>2]=0;j=ci(16)|0;k=j;do{if((j|0)!=0){l=c[i>>2]|0;cm(k+(l<<2)|0,0,4-l<<2|0);c[h>>2]=k;c[i>>2]=4;if((c[b>>2]|0)>>>0<=4){break}c[b>>2]=4}}while(0);b=e+408|0;c[b>>2]=0;i=e+412|0;c[i>>2]=0;k=e+416|0;c[k>>2]=0;h=ci(32)|0;j=h;do{if((h|0)!=0){l=c[k>>2]|0;cm(j+(l<<2)|0,0,8-l<<2|0);c[b>>2]=j;c[k>>2]=8;if((c[i>>2]|0)>>>0<=8){break}c[i>>2]=8}}while(0);cm(e+140|0,0,256);do{if((c[e+56>>2]|0)==0){if((c[e+52>>2]|0)!=0){m=608;break}if((c[e+76>>2]|0)!=0){m=608}}else{m=608}}while(0);if((m|0)==608){a[e+182|0]=1;a[e+235|0]=1;a[e+266|0]=1}if((c[e+48>>2]|0)!=0){a[e+236|0]=2}if((c[e+64>>2]|0)!=0){a[e+150|0]=3}if((c[e+60>>2]|0)==0){if((c[e+68>>2]|0)!=0){m=615}}else{m=615}if((m|0)==615){a[e+231|0]=4}a[e+200|0]=5;a[e+232|0]=6;a[e+178|0]=7;a[e+198|0]=8;a[e+204|0]=9;a[e+259|0]=10;a[e+187|0]=11;a[e+234|0]=12;c[e+420>>2]=155;c[e+104>>2]=d;c[e+424>>2]=16;c[e+428>>2]=0;g=f;return g|0}function bW(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0;h=ci(16)|0;i=h;if((h|0)==0){return}j=h;c[j>>2]=0;k=h+8|0;c[k>>2]=0;l=h+4|0;c[l>>2]=0;c[h+12>>2]=64;do{if(f>>>0>16777216){m=g+108|0;cm(m|0,0,32);n=m;o=630}else{if((f|0)==0){m=g+108|0;cm(m|0,0,32);p=0;q=m;break}if(f>>>0>64){m=64;while(1){r=m+64|0;if(r>>>0>>0){m=r}else{s=r;break}}}else{s=64}m=ck(0,s)|0;if((m|0)!=0){c[j>>2]=m;c[k>>2]=s}m=g+108|0;cm(m|0,0,32);if(f>>>0>2){n=m;o=630}else{p=0;q=m}}}while(0);if((o|0)==630){p=(cp(e|0,216,3)|0)==0?3:0;q=n}if(p>>>0>>0){n=(q|0)==0;q=p;while(1){p=q+3|0;L825:do{if(p>>>0>>0){do{if((a[e+q|0]|0)==32){if((a[e+(q+1)|0]|0)!=32){t=1;break}if((a[e+(q+2)|0]|0)!=32){t=2;break}if((a[e+p|0]|0)==32){o=692;break L825}else{t=3}}else{t=0}}while(0);s=t+q|0;if((a[e+s|0]|0)!=91){o=692;break}k=s+1|0;if(k>>>0>>0){u=k}else{o=692;break}while(1){s=a[e+u|0]|0;if((s<<24>>24|0)==10|(s<<24>>24|0)==13){o=692;break L825}else if((s<<24>>24|0)==93){break}s=u+1|0;if(s>>>0>>0){u=s}else{o=692;break L825}}s=u+1|0;if(s>>>0>=f>>>0){o=692;break}if((a[e+s|0]|0)!=58){o=692;break}s=u+2|0;L839:do{if(s>>>0>>0){m=s;while(1){v=a[e+m|0]|0;if((v<<24>>24|0)==10|(v<<24>>24|0)==13){break}else if((v<<24>>24|0)!=32){w=m;break L839}r=m+1|0;if(r>>>0>>0){m=r}else{w=r;break L839}}r=m+1|0;if(r>>>0>=f>>>0){w=r;break}if((a[e+r|0]|0)!=13){w=r;break}w=v<<24>>24==10?m+2|0:r}else{w=s}}while(0);while(1){if(w>>>0>=f>>>0){o=692;break L825}x=a[e+w|0]|0;if(x<<24>>24==32){w=w+1|0}else{break}}s=(x<<24>>24==60)+w|0;L850:do{if(s>>>0>>0){r=s;while(1){y=a[e+r|0]|0;if((y<<24>>24|0)==32|(y<<24>>24|0)==10|(y<<24>>24|0)==13){z=r;break L850}y=r+1|0;if(y>>>0>>0){r=y}else{z=y;break}}}else{z=s}}while(0);r=z-1|0;m=(a[e+r|0]|0)==62?r:z;L855:do{if(z>>>0>>0){r=z;L856:while(1){switch(a[e+r|0]|0){case 32:{break};case 13:case 10:{A=r;break L856;break};case 34:case 39:case 40:{B=0;C=r;break L855;break};default:{o=692;break L825}}y=r+1|0;if(y>>>0>>0){r=y}else{A=y;break}}B=A;C=A}else{B=z;C=z}}while(0);r=C+1|0;do{if(r>>>0>>0){if((a[e+C|0]|0)!=10){D=B;break}D=(a[e+r|0]|0)==13?r:B}else{D=B}}while(0);L865:do{if((D|0)==0){E=C}else{r=D;while(1){y=r+1|0;if(y>>>0>=f>>>0){E=y;break L865}if((a[e+y|0]|0)==32){r=y}else{E=y;break}}}}while(0);r=E+1|0;L870:do{if(r>>>0>>0){y=a[e+E|0]|0;if((y<<24>>24|0)==39|(y<<24>>24|0)==34|(y<<24>>24|0)==40){F=r}else{G=D;H=0;I=0;break}while(1){if(F>>>0>=f>>>0){o=668;break}y=a[e+F|0]|0;J=F+1|0;if((y<<24>>24|0)==13|(y<<24>>24|0)==10){K=J;break}else{F=J}}if((o|0)==668){o=0;K=F+1|0}do{if(K>>>0>>0){if((a[e+F|0]|0)!=10){o=673;break}if((a[e+K|0]|0)==13){L=K}else{o=673}}else{o=673}}while(0);if((o|0)==673){o=0;L=F}J=F;while(1){y=J-1|0;if(y>>>0<=r>>>0){break}M=a[e+y|0]|0;if((M<<24>>24|0)==39|(M<<24>>24|0)==34|(M<<24>>24|0)==41){G=L;H=y;I=r;break L870}else if((M<<24>>24|0)==32){J=y}else{break}}G=D;H=L;I=r}else{G=D;H=0;I=0}}while(0);if((G|0)==0|(m|0)==(s|0)){o=692;break}if(n){N=G;break}r=u-k|0;J=ci(16)|0;if((J|0)==0){o=692;break}if((c[J-4>>2]&3|0)!=0){cm(J|0,0,16)}y=J;if((u|0)==(k|0)){O=0}else{M=0;P=0;while(1){Q=(co(d[e+(M+k)|0]|0)|0)-P+(P*65600|0)|0;R=M+1|0;if(R>>>0>>0){M=R;P=Q}else{O=Q;break}}}c[J>>2]=O;P=g+108+((O&7)<<2)|0;c[J+12>>2]=c[P>>2];c[P>>2]=y;P=m-s|0;M=ci(16)|0;r=M;if((M|0)!=0){c[M>>2]=0;c[M+8>>2]=0;c[M+4>>2]=0;c[M+12>>2]=P}c[J+4>>2]=r;bS(r,e+s|0,P);if(H>>>0<=I>>>0){N=G;break}P=H-I|0;r=ci(16)|0;M=r;if((r|0)!=0){c[r>>2]=0;c[r+8>>2]=0;c[r+4>>2]=0;c[r+12>>2]=P}c[J+8>>2]=M;bS(M,e+I|0,P);N=G}else{o=692}}while(0);L906:do{if((o|0)==692){o=0;L908:do{if(q>>>0>>0){p=q;while(1){P=a[e+p|0]|0;if((P<<24>>24|0)==13|(P<<24>>24|0)==10){S=p;break}P=p+1|0;if(P>>>0>>0){p=P}else{S=P;break}}if(S>>>0<=q>>>0){T=S;break}p=S-q|0;if((S|0)==(q|0)){T=q;break}else{U=0;V=0}while(1){if(V>>>0

>>0){W=U;X=V}else{T=S;break L908}while(1){if((a[e+(X+q)|0]|0)==9){Y=W;Z=X;_=1;break}P=X+1|0;M=W+1|0;if(P>>>0

>>0){W=M;X=P}else{Y=M;Z=P;_=0;break}}if(Z>>>0>V>>>0){bS(i,e+(V+q)|0,Z-V|0);if(_){$=Y}else{T=S;break L908}}else{if(_){$=Y}else{T=S;break L908}}do{bU(i,32);$=$+1|0;}while(($&3|0)!=0);P=Z+1|0;if(P>>>0

>>0){U=$;V=P}else{T=S;break}}}else{T=q}}while(0);if(T>>>0>>0){aa=T}else{N=T;break}while(1){J=a[e+aa|0]|0;do{if((J<<24>>24|0)==10){ab=aa+1|0;o=710}else if((J<<24>>24|0)==13){s=aa+1|0;if(s>>>0>=f>>>0){ac=s;break}if((a[e+s|0]|0)==10){ac=s}else{ab=s;o=710}}else{N=aa;break L906}}while(0);if((o|0)==710){o=0;bU(i,10);ac=ab}if(ac>>>0>>0){aa=ac}else{N=ac;break}}}}while(0);if(N>>>0>>0){q=N}else{break}}}N=c[l>>2]|0;q=(N>>>1)+N|0;if((b|0)==0){aI(2192,58,3200,2808)}N=c[b+12>>2]|0;if((N|0)==0){aI(2192,58,3200,2808)}do{if(q>>>0<=16777216){f=b+8|0;ac=c[f>>2]|0;if(ac>>>0>=q>>>0){break}aa=ac+N|0;if(aa>>>0>>0){ac=aa;while(1){ab=N+ac|0;if(ab>>>0>>0){ac=ab}else{ad=ab;break}}}else{ad=aa}ac=b|0;ab=ck(c[ac>>2]|0,ad)|0;if((ab|0)==0){break}c[ac>>2]=ab;c[f>>2]=ad}}while(0);ad=c[g+96>>2]|0;if((ad|0)!=0){aT[ad&7](b,c[g+104>>2]|0)}ad=c[l>>2]|0;if((ad|0)!=0){q=c[j>>2]|0;N=a[q+(ad-1)|0]|0;if((N<<24>>24|0)==10|(N<<24>>24|0)==13){ae=q;af=ad}else{bU(i,10);ae=c[j>>2]|0;af=c[l>>2]|0}bX(b,g,ae,af)}af=c[g+100>>2]|0;if((af|0)!=0){aT[af&7](b,c[g+104>>2]|0)}cj(c[j>>2]|0);cj(h);h=0;do{j=c[g+108+(h<<2)>>2]|0;if((j|0)!=0){b=j;while(1){j=c[b+12>>2]|0;af=c[b+4>>2]|0;if((af|0)!=0){cj(c[af>>2]|0);cj(af)}af=c[b+8>>2]|0;if((af|0)!=0){cj(c[af>>2]|0);cj(af)}cj(b);if((j|0)==0){break}else{b=j}}}h=h+1|0;}while(h>>>0<8);if((c[g+412>>2]|0)!=0){aI(1928,2554,3112,1840)}if((c[g+400>>2]|0)==0){return}else{aI(1928,2555,3112,1800)}}function bX(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aU=0,aV=0,aX=0,aY=0,aZ=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0,bo=0,bp=0,bq=0,br=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0,bD=0,bE=0,bF=0,bG=0,bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0,bO=0,bP=0,bQ=0,bR=0,bT=0,bV=0,bW=0,b1=0,b2=0,b3=0,b4=0,b5=0,b6=0,b7=0,b8=0,b9=0,ca=0,cb=0,cc=0,cd=0,ce=0,cf=0,ch=0,cl=0,cn=0,co=0,cp=0,cq=0,cr=0,ct=0,cu=0,cv=0,cw=0,cx=0,cy=0,cz=0,cA=0,cB=0,cC=0,cD=0,cE=0,cF=0,cG=0,cH=0,cI=0,cJ=0;g=i;i=i+32|0;h=g|0;j=g+16|0;k=d+412|0;l=d+400|0;if(((c[l>>2]|0)+(c[k>>2]|0)|0)>>>0>(c[d+424>>2]|0)>>>0|(f|0)==0){i=g;return}m=d+420|0;n=d+416|0;o=d+408|0;p=d+12|0;q=d+104|0;r=d+8|0;s=d+404|0;t=d+396|0;u=d+4|0;v=d|0;w=d+28|0;x=d+32|0;y=h;z=j;A=j+4|0;B=h+4|0;C=d+16|0;D=0;while(1){E=e+D|0;F=f-D|0;G=a[E]|0;L990:do{if((G<<24>>24|0)==60){if((c[r>>2]|0)==0){H=784;break}I=bY(b,d,E,F,1)|0;if((I|0)==0){H=784;break}J=I+D|0}else if((G<<24>>24|0)==35){do{if((c[m>>2]&64|0)==0){K=0}else{I=0;while(1){L=I>>>0>>0;if(!(L&I>>>0<6)){H=752;break}M=a[e+(I+D)|0]|0;if(M<<24>>24==35){I=I+1|0}else{N=M;break}}if((H|0)==752){H=0;if(!L){K=0;break}N=a[e+(I+D)|0]|0}if(N<<24>>24==32){K=0}else{H=784;break L990}}}while(0);while(1){if(!(K>>>0>>0&K>>>0<6)){O=K;break}if((a[e+(K+D)|0]|0)==35){K=K+1|0}else{O=K;break}}while(1){if(O>>>0>=F>>>0){P=O;break}if((a[e+(O+D)|0]|0)==32){O=O+1|0}else{P=O;break}}while(1){if(P>>>0>=F>>>0){Q=P;break}if((a[e+(P+D)|0]|0)==10){Q=P;break}else{P=P+1|0}}while(1){if((Q|0)==0){R=0;break}M=Q-1|0;if((a[e+(M+D)|0]|0)==35){Q=M}else{R=Q;break}}while(1){if((R|0)==0){break}M=R-1|0;if((a[e+(M+D)|0]|0)==32){R=M}else{H=765;break}}do{if((H|0)==765){H=0;if(R>>>0<=O>>>0){break}M=c[k>>2]|0;do{if(M>>>0<(c[n>>2]|0)>>>0){S=(c[o>>2]|0)+(M<<2)|0;if((c[S>>2]|0)==0){H=769;break}c[k>>2]=M+1;T=c[S>>2]|0;c[T+4>>2]=0;U=T}else{H=769}}while(0);L1024:do{if((H|0)==769){H=0;M=ci(16)|0;if((M|0)!=0){c[M>>2]=0;c[M+8>>2]=0;c[M+4>>2]=0;c[M+12>>2]=64}I=c[k>>2]|0;T=I<<1;S=c[o>>2]|0;do{if((c[n>>2]|0)>>>0>>0){V=ck(S,I<<3)|0;W=V;if((V|0)==0){U=M;break L1024}V=c[n>>2]|0;cm(W+(V<<2)|0,0,T-V<<2|0);c[o>>2]=W;c[n>>2]=T;V=c[k>>2]|0;if(V>>>0<=T>>>0){X=V;Y=W;break}c[k>>2]=T;X=T;Y=W}else{X=I;Y=S}}while(0);c[k>>2]=X+1;c[Y+(X<<2)>>2]=M;U=M}}while(0);S=U;b0(S,d,e+(O+D)|0,R-O|0);I=c[p>>2]|0;if((I|0)!=0){a_[I&15](b,S,K,c[q>>2]|0)}c[k>>2]=(c[k>>2]|0)-1}}while(0);J=P+D|0}else{H=784}}while(0);L1039:do{if((H|0)==784){H=0;do{if((D|0)==(f|0)){Z=1}else{G=0;while(1){S=a[e+(G+D)|0]|0;if((S<<24>>24|0)==10){_=G;H=787;break}else if((S<<24>>24|0)!=32){break}S=G+1|0;if(S>>>0>>0){G=S}else{_=S;H=787;break}}if((H|0)==787){H=0;G=_+1|0;if((G|0)!=0){Z=G;break}}L1048:do{if(F>>>0>=3){do{if((a[E]|0)==32){if((a[e+(D+1)|0]|0)!=32){$=1;break}$=(a[e+(D+2)|0]|0)==32?3:2}else{$=0}}while(0);if(($+2|0)>>>0>=F>>>0){break}M=a[e+($+D)|0]|0;if(!((M<<24>>24|0)==42|(M<<24>>24|0)==45|(M<<24>>24|0)==95)){break}if($>>>0>>0){aa=M;ab=0;ac=$}else{break}while(1){if(aa<<24>>24==M<<24>>24){ad=ab+1|0}else{if(aa<<24>>24==32){ad=ab}else{break L1048}}G=ac+1|0;if(G>>>0>=F>>>0){break}S=a[e+(G+D)|0]|0;if(S<<24>>24==10){break}else{aa=S;ab=ad;ac=G}}if(ad>>>0<=2){break}M=c[C>>2]|0;if((M|0)==0){ae=D}else{aT[M&7](b,c[q>>2]|0);ae=D}while(1){if(ae>>>0>=f>>>0){break}M=ae+1|0;if((a[e+ae|0]|0)==10){J=M;break L1039}else{ae=M}}J=ae+1|0;break L1039}}while(0);do{if((c[m>>2]&4|0)!=0){cm(y|0,0,16);M=b$(E,F,h)|0;if((M|0)==0){break}G=c[l>>2]|0;do{if(G>>>0<(c[s>>2]|0)>>>0){S=(c[t>>2]|0)+(G<<2)|0;if((c[S>>2]|0)==0){H=812;break}c[l>>2]=G+1;I=c[S>>2]|0;c[I+4>>2]=0;af=I}else{H=812}}while(0);L1078:do{if((H|0)==812){H=0;G=ci(16)|0;if((G|0)!=0){c[G>>2]=0;c[G+8>>2]=0;c[G+4>>2]=0;c[G+12>>2]=256}I=c[l>>2]|0;S=I<<1;T=c[t>>2]|0;do{if((c[s>>2]|0)>>>0>>0){W=ck(T,I<<3)|0;V=W;if((W|0)==0){af=G;break L1078}W=c[s>>2]|0;cm(V+(W<<2)|0,0,S-W<<2|0);c[t>>2]=V;c[s>>2]=S;W=c[l>>2]|0;if(W>>>0<=S>>>0){ag=W;ah=V;break}c[l>>2]=S;ag=S;ah=V}else{ag=I;ah=T}}while(0);c[l>>2]=ag+1;c[ah+(ag<<2)>>2]=G;af=G}}while(0);T=af;L1089:do{if(M>>>0>>0){I=M;while(1){cm(z|0,0,16);S=I+D|0;V=e+S|0;ai=b$(V,F-I|0,j)|0;if((ai|0)==0){aj=I}else{if((c[A>>2]|0)==0){break}else{aj=I}}while(1){ak=aj+1|0;if(ak>>>0>=F>>>0){al=0;break}if((a[e+(aj+D)|0]|0)==10){al=1;break}else{aj=ak}}L1098:do{if(I>>>0>>0){W=ak-I|0;do{if((ak|0)!=(I|0)){am=0;while(1){an=a[e+(S+am)|0]|0;if((an<<24>>24|0)==10){ao=am;H=829;break}else if((an<<24>>24|0)!=32){break}an=am+1|0;if(an>>>0>>0){am=an}else{ao=an;H=829;break}}if((H|0)==829){H=0;if((ao|0)!=-1){break}}bS(T,V,W);break L1098}}while(0);bU(T,10)}}while(0);if(al){I=ak}else{ap=ak;break L1089}}ap=ai+I|0}else{ap=M}}while(0);M=c[af+4>>2]|0;do{if((M|0)!=0){if((a[(c[af>>2]|0)+(M-1)|0]|0)==10){break}bU(T,10)}}while(0);M=c[v>>2]|0;if((M|0)!=0){a_[M&15](b,T,(c[B>>2]|0)!=0?h:0,c[q>>2]|0)}c[l>>2]=(c[l>>2]|0)-1;if((ap|0)==0){break}J=ap+D|0;break L1039}}while(0);do{if((c[m>>2]&2|0)!=0){M=c[k>>2]|0;do{if(M>>>0<(c[n>>2]|0)>>>0){G=(c[o>>2]|0)+(M<<2)|0;if((c[G>>2]|0)==0){H=844;break}c[k>>2]=M+1;V=c[G>>2]|0;c[V+4>>2]=0;aq=V}else{H=844}}while(0);L1125:do{if((H|0)==844){H=0;M=ci(16)|0;if((M|0)!=0){c[M>>2]=0;c[M+8>>2]=0;c[M+4>>2]=0;c[M+12>>2]=64}T=c[k>>2]|0;V=T<<1;G=c[o>>2]|0;do{if((c[n>>2]|0)>>>0>>0){S=ck(G,T<<3)|0;W=S;if((S|0)==0){aq=M;break L1125}S=c[n>>2]|0;cm(W+(S<<2)|0,0,V-S<<2|0);c[o>>2]=W;c[n>>2]=V;S=c[k>>2]|0;if(S>>>0<=V>>>0){ar=S;as=W;break}c[k>>2]=V;ar=V;as=W}else{ar=T;as=G}}while(0);c[k>>2]=ar+1;c[as+(ar<<2)>>2]=M;aq=M}}while(0);G=aq;T=c[l>>2]|0;do{if(T>>>0<(c[s>>2]|0)>>>0){V=(c[t>>2]|0)+(T<<2)|0;if((c[V>>2]|0)==0){H=854;break}c[l>>2]=T+1;I=c[V>>2]|0;c[I+4>>2]=0;at=I}else{H=854}}while(0);L1139:do{if((H|0)==854){H=0;T=ci(16)|0;if((T|0)!=0){c[T>>2]=0;c[T+8>>2]=0;c[T+4>>2]=0;c[T+12>>2]=256}I=c[l>>2]|0;V=I<<1;W=c[t>>2]|0;do{if((c[s>>2]|0)>>>0>>0){S=ck(W,I<<3)|0;am=S;if((S|0)==0){at=T;break L1139}S=c[s>>2]|0;cm(am+(S<<2)|0,0,V-S<<2|0);c[t>>2]=am;c[s>>2]=V;S=c[l>>2]|0;if(S>>>0<=V>>>0){au=S;av=am;break}c[l>>2]=V;au=V;av=am}else{au=I;av=W}}while(0);c[l>>2]=au+1;c[av+(au<<2)>>2]=T;at=T}}while(0);W=at;I=0;V=0;while(1){M=a[e+(V+D)|0]|0;if(M<<24>>24==10){aw=I;ax=V;break}am=V+1|0;S=(M<<24>>24==124)+I|0;if(am>>>0>>0){I=S;V=am}else{aw=S;ax=am;break}}do{if((ax|0)==(F|0)|(aw|0)==0){az=0;aA=0}else{L1156:do{if((ax|0)==0){H=866}else{V=ax;while(1){I=V-1|0;aB=a[e+(I+D)|0]|0;if(!((aB<<24>>24|0)==32|(aB<<24>>24|0)==10)){break}if((I|0)==0){H=866;break L1156}else{V=I}}aC=((aB<<24>>24==124)<<31>>31)+aw+(((a[E]|0)==124)<<31>>31)|0;aD=V}}while(0);if((H|0)==866){H=0;aC=(((a[E]|0)==124)<<31>>31)+aw|0;aD=0}T=aC+1|0;do{if((T|0)==0){aE=0}else{I=T<<2;if(T>>>0<=65535){aE=I;break}aE=((I>>>0)/(T>>>0)|0|0)==4?I:-1}}while(0);I=ci(aE)|0;do{if((I|0)!=0){if((c[I-4>>2]&3|0)==0){break}cm(I|0,0,aE|0)}}while(0);am=I;S=ax+1|0;if(S>>>0>>0){aF=(a[e+(S+D)|0]|0)==124?ax+2|0:S}else{aF=S}S=aF;while(1){if(S>>>0>=F>>>0){break}if((a[e+(S+D)|0]|0)==10){break}else{S=S+1|0}}L1179:do{if((T|0)!=0&aF>>>0>>0){I=aF;M=0;while(1){an=I;while(1){aG=a[e+(an+D)|0]|0;if(an>>>0>=S>>>0){H=885;break}aH=an+1|0;if((aG<<24>>24|0)==32){an=aH}else if((aG<<24>>24|0)==58){aI=aH;H=887;break}else{aJ=0;aK=an;break}}do{if((H|0)==885){H=0;if(aG<<24>>24!=58){aJ=0;aK=an;break}aI=an+1|0;H=887}}while(0);if((H|0)==887){H=0;an=am+(M<<2)|0;c[an>>2]=c[an>>2]|1;aJ=1;aK=aI}L1191:do{if(aK>>>0>>0){an=aK;aH=aJ;while(1){aL=a[e+(an+D)|0]|0;if((aL<<24>>24|0)==58){break}else if((aL<<24>>24|0)!=45){aM=aH;aN=an;break L1191}aL=an+1|0;aO=aH+1|0;if(aL>>>0>>0){an=aL;aH=aO}else{aM=aO;aN=aL;break L1191}}aL=am+(M<<2)|0;c[aL>>2]=c[aL>>2]|2;aM=aH+1|0;aN=an+1|0}else{aM=aJ;aN=aK}}while(0);aL=aN;while(1){if(aL>>>0>=S>>>0){H=896;break}aP=a[e+(aL+D)|0]|0;aQ=aL+1|0;if(aP<<24>>24==32){aL=aQ}else{H=895;break}}if((H|0)==895){H=0;if(aP<<24>>24!=124|(aM|0)==0){aR=M;break L1179}else{aS=aQ}}else if((H|0)==896){H=0;if((aM|0)==0){aR=M;break L1179}aS=aL+1|0}aO=M+1|0;if(aO>>>0>>0&aS>>>0>>0){I=aS;M=aO}else{aR=aO;break}}}else{aR=0}}while(0);if(aR>>>0>>0){az=0;aA=am;break}cg(G,d,E,aD,T,am,4);M=S+1|0;if((M|0)==0){az=0;aA=am;break}L1208:do{if(M>>>0>>0){I=M;while(1){if(I>>>0>>0){aU=I;aV=0}else{aX=I;break L1208}while(1){V=a[e+(aU+D)|0]|0;if(V<<24>>24==10){aY=aU;aZ=aV;break}aO=aU+1|0;a$=(V<<24>>24==124)+aV|0;if(aO>>>0>>0){aU=aO;aV=a$}else{aY=aO;aZ=a$;break}}if((aZ|0)==0|(aY|0)==(F|0)){aX=I;break L1208}cg(W,d,e+(I+D)|0,aY-I|0,T,am,0);aL=aY+1|0;if(aL>>>0>>0){I=aL}else{aX=aL;break}}}else{aX=M}}while(0);M=c[x>>2]|0;if((M|0)==0){az=aX;aA=am;break}a_[M&15](b,G,W,c[q>>2]|0);az=aX;aA=am}}while(0);cj(aA);c[k>>2]=(c[k>>2]|0)-1;c[l>>2]=(c[l>>2]|0)-1;if((az|0)==0){break}J=az+D|0;break L1039}}while(0);W=(a[E]|0)==32;G=W&1;M=G>>>0>>0;if(M){a0=((a[e+(G+D)|0]|0)==32)+G|0}else{a0=G}if(a0>>>0>>0){a1=((a[e+(a0+D)|0]|0)==32)+a0|0}else{a1=a0}do{if(a1>>>0>>0){if((a[e+(a1+D)|0]|0)!=62){break}T=a1+1|0;if(T>>>0>>0){a2=(a[e+(T+D)|0]|0)==32?a1+2|0:T}else{a2=T}if((a2|0)==0){break}T=c[l>>2]|0;do{if(T>>>0<(c[s>>2]|0)>>>0){S=(c[t>>2]|0)+(T<<2)|0;if((c[S>>2]|0)==0){H=923;break}c[l>>2]=T+1;I=c[S>>2]|0;c[I+4>>2]=0;a3=I}else{H=923}}while(0);L1237:do{if((H|0)==923){H=0;T=ci(16)|0;if((T|0)!=0){c[T>>2]=0;c[T+8>>2]=0;c[T+4>>2]=0;c[T+12>>2]=256}I=c[l>>2]|0;S=I<<1;aL=c[t>>2]|0;do{if((c[s>>2]|0)>>>0>>0){a$=ck(aL,I<<3)|0;aO=a$;if((a$|0)==0){a3=T;break L1237}a$=c[s>>2]|0;cm(aO+(a$<<2)|0,0,S-a$<<2|0);c[t>>2]=aO;c[s>>2]=S;a$=c[l>>2]|0;if(a$>>>0<=S>>>0){a4=a$;a5=aO;break}c[l>>2]=S;a4=S;a5=aO}else{a4=I;a5=aL}}while(0);c[l>>2]=a4+1;c[a5+(a4<<2)>>2]=T;a3=T}}while(0);aL=a3;I=0;S=0;am=0;L1248:while(1){aO=am;while(1){if(aO>>>0>>0){a6=aO}else{a7=aO;break L1248}while(1){a8=a6+1|0;if(a8>>>0>=F>>>0){a9=0;break}if((a[e+(a6+D)|0]|0)==10){a9=1;break}else{a6=a8}}a$=aO+D|0;V=a8-aO|0;ba=(a8|0)==(aO|0);if(ba){bb=0}else{bb=(a[e+a$|0]|0)==32|0}if(bb>>>0>>0){bc=((a[e+(bb+a$)|0]|0)==32)+bb|0}else{bc=bb}if(bc>>>0>>0){bd=((a[e+(bc+a$)|0]|0)==32)+bc|0}else{bd=bc}do{if(bd>>>0>>0){if((a[e+(bd+a$)|0]|0)!=62){H=947;break}be=bd+1|0;if(be>>>0>>0){bf=(a[e+(be+a$)|0]|0)==32?bd+2|0:be}else{bf=be}if((bf|0)==0){H=947;break}bg=bf+aO|0;bh=a8}else{H=947}}while(0);L1272:do{if((H|0)==947){H=0;if(!ba){be=0;while(1){bi=a[e+(be+a$)|0]|0;if((bi<<24>>24|0)==10){bj=be;break}else if((bi<<24>>24|0)!=32){bg=aO;bh=a8;break L1272}bi=be+1|0;if(bi>>>0>>0){be=bi}else{bj=bi;break}}if((bj|0)==-1){bg=aO;bh=a8;break}}if(!a9){a7=a8;break L1248}be=a8+D|0;bi=F-a8|0;bk=(F|0)==(a8|0);if(bk){bl=0}else{bl=(a[e+be|0]|0)==32|0}if(bl>>>0>>0){bm=((a[e+(bl+be)|0]|0)==32)+bl|0}else{bm=bl}if(bm>>>0>>0){bn=((a[e+(bm+be)|0]|0)==32)+bm|0}else{bn=bm}do{if(bn>>>0>>0){if((a[e+(bn+be)|0]|0)!=62){H=963;break}bo=bn+1|0;if(bo>>>0>>0){bp=(a[e+(bo+be)|0]|0)==32?bn+2|0:bo}else{bp=bo}if((bp|0)!=0|bk){bg=aO;bh=a8;break L1272}else{bq=0}}else{H=963}}while(0);if((H|0)==963){H=0;if(bk){bg=aO;bh=F;break}else{bq=0}}while(1){bo=a[e+(bq+be)|0]|0;if((bo<<24>>24|0)==10){br=bq;break}else if((bo<<24>>24|0)!=32){a7=a8;break L1248}bo=bq+1|0;if(bo>>>0>>0){bq=bo}else{br=bo;break}}if((br|0)==-1){a7=a8;break L1248}else{bg=aO;bh=a8}}}while(0);if(bg>>>0>>0){break}else{aO=bh}}aO=e+(bg+D)|0;do{if((I|0)==0){bs=aO}else{T=I+S|0;if((aO|0)==(T|0)){bs=I;break}cs(T|0,aO|0,bh-bg|0);bs=I}}while(0);I=bs;S=bh+S-bg|0;am=bh}bX(aL,d,I,S);am=c[u>>2]|0;if((am|0)!=0){aW[am&15](b,aL,c[q>>2]|0)}c[l>>2]=(c[l>>2]|0)-1;J=a7+D|0;break L1039}}while(0);do{if(!(F>>>0>3^1|W^1)){am=D+1|0;if((a[e+am|0]|0)!=32){break}aO=D+2|0;if((a[e+aO|0]|0)!=32){break}T=D+3|0;if((a[e+T|0]|0)!=32){break}V=c[l>>2]|0;do{if(V>>>0<(c[s>>2]|0)>>>0){a$=(c[t>>2]|0)+(V<<2)|0;if((c[a$>>2]|0)==0){H=982;break}c[l>>2]=V+1;ba=c[a$>>2]|0;c[ba+4>>2]=0;bt=ba}else{H=982}}while(0);L1321:do{if((H|0)==982){H=0;V=ci(16)|0;if((V|0)!=0){c[V>>2]=0;c[V+8>>2]=0;c[V+4>>2]=0;c[V+12>>2]=256}aL=c[l>>2]|0;S=aL<<1;I=c[t>>2]|0;do{if((c[s>>2]|0)>>>0>>0){ba=ck(I,aL<<3)|0;a$=ba;if((ba|0)==0){bt=V;break L1321}ba=c[s>>2]|0;cm(a$+(ba<<2)|0,0,S-ba<<2|0);c[t>>2]=a$;c[s>>2]=S;ba=c[l>>2]|0;if(ba>>>0<=S>>>0){bu=ba;bv=a$;break}c[l>>2]=S;bu=S;bv=a$}else{bu=aL;bv=I}}while(0);c[l>>2]=bu+1;c[bv+(bu<<2)>>2]=V;bt=V}}while(0);I=bt;aL=0;L1332:while(1){S=aL;while(1){bw=S+1|0;if(bw>>>0>=F>>>0){bx=0;break}if((a[e+(S+D)|0]|0)==10){bx=1;break}else{S=bw}}S=bw-aL|0;do{if(S>>>0>3){V=aL+D|0;if((a[e+V|0]|0)!=32){by=V;H=1001;break}if((a[e+(am+aL)|0]|0)!=32){by=V;H=1001;break}if((a[e+(aO+aL)|0]|0)!=32){by=V;H=1001;break}if((a[e+(T+aL)|0]|0)!=32){by=V;H=1001;break}bz=aL+4|0}else{if((bw|0)==(aL|0)){bz=aL;break}by=aL+D|0;H=1001}}while(0);if((H|0)==1001){H=0;V=0;while(1){a$=a[e+(by+V)|0]|0;if((a$<<24>>24|0)==10){bA=V;break}else if((a$<<24>>24|0)!=32){bB=aL;break L1332}a$=V+1|0;if(a$>>>0>>0){V=a$}else{bA=a$;break}}if((bA|0)==-1){bB=aL;break}else{bz=aL}}L1353:do{if(bz>>>0>>0){V=bz+D|0;S=e+V|0;a$=bw-bz|0;do{if((bw|0)!=(bz|0)){ba=0;while(1){bi=a[e+(V+ba)|0]|0;if((bi<<24>>24|0)==10){bC=ba;H=1011;break}else if((bi<<24>>24|0)!=32){break}bi=ba+1|0;if(bi>>>0>>0){ba=bi}else{bC=bi;H=1011;break}}if((H|0)==1011){H=0;if((bC|0)!=-1){break}}bS(I,S,a$);break L1353}}while(0);bU(I,10)}}while(0);if(bx){aL=bw}else{bB=bw;break}}aL=bt+4|0;T=c[aL>>2]|0;L1365:do{if((T|0)!=0){aO=c[bt>>2]|0;am=T;do{am=am-1|0;if((a[aO+am|0]|0)!=10){break L1365}c[aL>>2]=am;}while((am|0)!=0)}}while(0);bU(I,10);aL=c[v>>2]|0;if((aL|0)!=0){a_[aL&15](b,I,0,c[q>>2]|0)}c[l>>2]=(c[l>>2]|0)-1;J=bB+D|0;break L1039}}while(0);if(M){bD=((a[e+(G+D)|0]|0)==32)+G|0}else{bD=G}if(bD>>>0>>0){bE=((a[e+(bD+D)|0]|0)==32)+bD|0}else{bE=bD}W=bE+1|0;L1381:do{if(W>>>0>>0){aL=bE+D|0;T=a[e+aL|0]|0;if(!((T<<24>>24|0)==42|(T<<24>>24|0)==43|(T<<24>>24|0)==45)){break}if((a[e+(W+D)|0]|0)!=32){break}T=F-bE|0;am=0;while(1){if(am>>>0>=T>>>0){H=1029;break}aO=am+1|0;if((a[e+(am+aL)|0]|0)==10){bF=aO;break}else{am=aO}}if((H|0)==1029){H=0;bF=am+1|0}do{if(bF>>>0>>0){I=bF+aL|0;aO=T-bF|0;a$=a[e+I|0]|0;if((a$<<24>>24|0)==61){S=1;while(1){if(S>>>0>=aO>>>0){bG=S;break}if((a[e+(I+S)|0]|0)==61){S=S+1|0}else{bG=S;break}}while(1){if(bG>>>0>=aO>>>0){break L1381}bH=a[e+(I+bG)|0]|0;if(bH<<24>>24==32){bG=bG+1|0}else{break}}bI=bH<<24>>24==10|0;break}else if((a$<<24>>24|0)==45){S=1;while(1){if(S>>>0>=aO>>>0){bJ=S;break}if((a[e+(I+S)|0]|0)==45){S=S+1|0}else{bJ=S;break}}while(1){if(bJ>>>0>=aO>>>0){break L1381}bK=a[e+(I+bJ)|0]|0;if(bK<<24>>24==32){bJ=bJ+1|0}else{break}}bI=bK<<24>>24==10?2:0;break}else{bI=0;break}}else{bI=0}}while(0);if((bE|0)==-2|(bI|0)!=0){break}J=(bZ(b,d,E,F,0)|0)+D|0;break L1039}}while(0);if((b_(E,F)|0)!=0){J=(bZ(b,d,E,F,1)|0)+D|0;break L1039}W=D+1|0;G=D+2|0;M=0;L1414:while(1){T=M;while(1){bL=T+1|0;if(bL>>>0>=F>>>0){bM=0;break}if((a[e+(T+D)|0]|0)==10){bM=1;break}else{T=bL}}T=M+D|0;aL=e+T|0;am=bL-M|0;if((bL|0)==(M|0)){bN=0}else{bN=(a[aL]|0)==32|0}if(bN>>>0>>0){bO=((a[e+(T+bN)|0]|0)==32)+bN|0}else{bO=bN}if(bO>>>0>>0){bP=((a[e+(T+bO)|0]|0)==32)+bO|0}else{bP=bO}do{if(bP>>>0>>0){if((a[e+(T+bP)|0]|0)!=62){break}I=bP+1|0;if(I>>>0>>0){bQ=(a[e+(T+I)|0]|0)==32?bP+2|0:I}else{bQ=I}if((bQ|0)!=0){bR=M;bT=0;bV=M;break L1414}}}while(0);am=F-M|0;if((M|0)==(F|0)){bR=bL;bT=0;bV=F;break}else{bW=0}while(1){I=a[e+(T+bW)|0]|0;if((I<<24>>24|0)==10){b1=bW;H=1065;break}else if((I<<24>>24|0)!=32){break}I=bW+1|0;if(I>>>0>>0){bW=I}else{b1=I;H=1065;break}}if((H|0)==1065){H=0;if((b1|0)!=-1){bR=bL;bT=0;bV=M;break}}I=a[aL]|0;if((I<<24>>24|0)==61){aO=1;while(1){if(aO>>>0>=am>>>0){b2=aO;break}if((a[e+(T+aO)|0]|0)==61){aO=aO+1|0}else{b2=aO;break}}while(1){if(b2>>>0>=am>>>0){bR=bL;bT=1;bV=M;break L1414}b3=a[e+(T+b2)|0]|0;if(b3<<24>>24==32){b2=b2+1|0}else{break}}b4=b3<<24>>24==10|0;H=1077}else if((I<<24>>24|0)==45){aO=1;while(1){if(aO>>>0>=am>>>0){b5=aO;break}if((a[e+(T+aO)|0]|0)==45){aO=aO+1|0}else{b5=aO;break}}while(1){if(b5>>>0>=am>>>0){bR=bL;bT=2;bV=M;break L1414}b6=a[e+(T+b5)|0]|0;if(b6<<24>>24==32){b5=b5+1|0}else{break}}b4=b6<<24>>24==10?2:0;H=1077}else if((I<<24>>24|0)==35){H=1079}if((H|0)==1077){H=0;if((b4|0)!=0){bR=bL;bT=b4;bV=M;break}if(I<<24>>24==35){H=1079}}if((H|0)==1079){H=0;if((c[m>>2]&64|0)==0){bR=M;bT=0;bV=M;break}else{b7=0}while(1){b8=b7>>>0>>0;if(!(b8&b7>>>0<6)){H=1082;break}aO=a[e+(T+b7)|0]|0;if(aO<<24>>24==35){b7=b7+1|0}else{b9=aO;break}}if((H|0)==1082){H=0;if(!b8){bR=M;bT=0;bV=M;break}b9=a[e+(T+b7)|0]|0}if(b9<<24>>24==32){bR=M;bT=0;bV=M;break}}L1470:do{if(am>>>0>=3){do{if(I<<24>>24==32){if((a[e+(W+M)|0]|0)!=32){ca=1;break}ca=(a[e+(G+M)|0]|0)==32?3:2}else{ca=0}}while(0);if((ca+2|0)>>>0>=am>>>0){break}aO=a[e+(T+ca)|0]|0;if(!((aO<<24>>24|0)==42|(aO<<24>>24|0)==45|(aO<<24>>24|0)==95)){break}if(ca>>>0>>0){cb=aO;cc=0;cd=ca}else{break}while(1){if(cb<<24>>24==aO<<24>>24){ce=cc+1|0}else{if(cb<<24>>24==32){ce=cc}else{break L1470}}S=cd+1|0;if(S>>>0>=am>>>0){break}a$=a[e+(T+S)|0]|0;if(a$<<24>>24==10){break}else{cb=a$;cc=ce;cd=S}}if(ce>>>0>2){bR=M;bT=0;bV=M;break L1414}}}while(0);aO=I<<24>>24==32|0;if(aO>>>0>>0){cf=((a[e+(T+aO)|0]|0)==32)+aO|0}else{cf=aO}if(cf>>>0>>0){ch=((a[e+(T+cf)|0]|0)==32)+cf|0}else{ch=cf}do{if(ch>>>0>>0){if((a[e+(T+ch)|0]|0)!=62){break}aO=ch+1|0;if(aO>>>0>>0){cl=(a[e+(T+aO)|0]|0)==32?ch+2|0:aO}else{cl=aO}if((cl|0)!=0){bR=M;bT=0;bV=M;break L1414}}}while(0);do{if((c[m>>2]&256|0)!=0){if((ay(I&255|0)|0)!=0){break}if((b_(aL,am)|0)!=0){bR=M;bT=0;bV=M;break L1414}aO=a[aL]|0;S=aO<<24>>24==32|0;if(S>>>0>>0){cn=((a[e+(T+S)|0]|0)==32)+S|0}else{cn=S}if(cn>>>0>>0){co=((a[e+(T+cn)|0]|0)==32)+cn|0}else{co=cn}S=co+1|0;L1510:do{if(S>>>0>>0){a$=co+M|0;V=a$+D|0;ba=a[e+V|0]|0;if(!((ba<<24>>24|0)==42|(ba<<24>>24|0)==43|(ba<<24>>24|0)==45)){break}if((a[e+(T+S)|0]|0)!=32){break}ba=am-co|0;bi=0;while(1){if(bi>>>0>=ba>>>0){H=1119;break}be=bi+1|0;if((a[e+(V+bi)|0]|0)==10){cp=be;break}else{bi=be}}if((H|0)==1119){H=0;cp=bi+1|0}do{if(cp>>>0>>0){V=cp+a$+D|0;be=ba-cp|0;bk=a[e+V|0]|0;if((bk<<24>>24|0)==61){bo=1;while(1){if(bo>>>0>=be>>>0){cq=bo;break}if((a[e+(V+bo)|0]|0)==61){bo=bo+1|0}else{cq=bo;break}}while(1){if(cq>>>0>=be>>>0){break L1510}cr=a[e+(V+cq)|0]|0;if(cr<<24>>24==32){cq=cq+1|0}else{break}}ct=cr<<24>>24==10|0;break}else if((bk<<24>>24|0)==45){bo=1;while(1){if(bo>>>0>=be>>>0){cu=bo;break}if((a[e+(V+bo)|0]|0)==45){bo=bo+1|0}else{cu=bo;break}}while(1){if(cu>>>0>=be>>>0){break L1510}cv=a[e+(V+cu)|0]|0;if(cv<<24>>24==32){cu=cu+1|0}else{break}}ct=cv<<24>>24==10?2:0;break}else{ct=0;break}}else{ct=0}}while(0);if(!((co|0)==-2|(ct|0)!=0)){bR=M;bT=0;bV=M;break L1414}}}while(0);do{if(aO<<24>>24==60){if((c[r>>2]|0)==0){break}if((bY(b,d,aL,am,0)|0)!=0){bR=M;bT=0;bV=M;break L1414}}}while(0);if((c[m>>2]&4|0)==0){break}aO=(b$(aL,am,0)|0)!=0;S=aO?M:bL;if(aO|bM^1){bR=S;bT=0;bV=S;break L1414}else{M=bL;continue L1414}}}while(0);if(bM){M=bL}else{bR=bL;bT=0;bV=bL;break}}M=bV;while(1){if((M|0)==0){cw=0;cx=0;break}G=M-1|0;if((a[e+(G+D)|0]|0)==10){M=G}else{cw=M;cx=1;break}}if((bT|0)==0){M=c[l>>2]|0;do{if(M>>>0<(c[s>>2]|0)>>>0){G=(c[t>>2]|0)+(M<<2)|0;if((c[G>>2]|0)==0){H=1147;break}c[l>>2]=M+1;W=c[G>>2]|0;c[W+4>>2]=0;cy=W}else{H=1147}}while(0);L1555:do{if((H|0)==1147){H=0;M=ci(16)|0;if((M|0)!=0){c[M>>2]=0;c[M+8>>2]=0;c[M+4>>2]=0;c[M+12>>2]=256}W=c[l>>2]|0;G=W<<1;am=c[t>>2]|0;do{if((c[s>>2]|0)>>>0>>0){aL=ck(am,W<<3)|0;T=aL;if((aL|0)==0){cy=M;break L1555}aL=c[s>>2]|0;cm(T+(aL<<2)|0,0,G-aL<<2|0);c[t>>2]=T;c[s>>2]=G;aL=c[l>>2]|0;if(aL>>>0<=G>>>0){cz=aL;cA=T;break}c[l>>2]=G;cz=G;cA=T}else{cz=W;cA=am}}while(0);c[l>>2]=cz+1;c[cA+(cz<<2)>>2]=M;cy=M}}while(0);am=cy;b0(am,d,E,cw);W=c[w>>2]|0;if((W|0)!=0){aW[W&15](b,am,c[q>>2]|0)}c[l>>2]=(c[l>>2]|0)-1}else{L1570:do{if(cx){am=cw;while(1){W=am-1|0;if((W|0)==0){cB=0;break}if((a[e+(W+D)|0]|0)==10){cB=W;break}else{am=W}}while(1){if((cB|0)==0){cC=cw;cD=E;break L1570}M=cB-1|0;if((a[e+(M+D)|0]|0)==10){cB=M}else{break}}M=c[l>>2]|0;do{if(M>>>0<(c[s>>2]|0)>>>0){W=(c[t>>2]|0)+(M<<2)|0;if((c[W>>2]|0)==0){H=1165;break}c[l>>2]=M+1;G=c[W>>2]|0;c[G+4>>2]=0;cE=G}else{H=1165}}while(0);L1581:do{if((H|0)==1165){H=0;M=ci(16)|0;if((M|0)!=0){c[M>>2]=0;c[M+8>>2]=0;c[M+4>>2]=0;c[M+12>>2]=256}G=c[l>>2]|0;W=G<<1;T=c[t>>2]|0;do{if((c[s>>2]|0)>>>0>>0){aL=ck(T,G<<3)|0;I=aL;if((aL|0)==0){cE=M;break L1581}aL=c[s>>2]|0;cm(I+(aL<<2)|0,0,W-aL<<2|0);c[t>>2]=I;c[s>>2]=W;aL=c[l>>2]|0;if(aL>>>0<=W>>>0){cF=aL;cG=I;break}c[l>>2]=W;cF=W;cG=I}else{cF=G;cG=T}}while(0);c[l>>2]=cF+1;c[cG+(cF<<2)>>2]=M;cE=M}}while(0);T=cE;b0(T,d,E,cB);G=c[w>>2]|0;if((G|0)!=0){aW[G&15](b,T,c[q>>2]|0)}c[l>>2]=(c[l>>2]|0)-1;cC=cw-am|0;cD=e+(am+D)|0}else{cC=0;cD=E}}while(0);T=c[k>>2]|0;do{if(T>>>0<(c[n>>2]|0)>>>0){G=(c[o>>2]|0)+(T<<2)|0;if((c[G>>2]|0)==0){H=1178;break}c[k>>2]=T+1;W=c[G>>2]|0;c[W+4>>2]=0;cH=W}else{H=1178}}while(0);L1599:do{if((H|0)==1178){H=0;T=ci(16)|0;if((T|0)!=0){c[T>>2]=0;c[T+8>>2]=0;c[T+4>>2]=0;c[T+12>>2]=64}W=c[k>>2]|0;G=W<<1;I=c[o>>2]|0;do{if((c[n>>2]|0)>>>0>>0){aL=ck(I,W<<3)|0;S=aL;if((aL|0)==0){cH=T;break L1599}aL=c[n>>2]|0;cm(S+(aL<<2)|0,0,G-aL<<2|0);c[o>>2]=S;c[n>>2]=G;aL=c[k>>2]|0;if(aL>>>0<=G>>>0){cI=aL;cJ=S;break}c[k>>2]=G;cI=G;cJ=S}else{cI=W;cJ=I}}while(0);c[k>>2]=cI+1;c[cJ+(cI<<2)>>2]=T;cH=T}}while(0);I=cH;b0(I,d,cD,cC);W=c[p>>2]|0;if((W|0)!=0){a_[W&15](b,I,bT,c[q>>2]|0)}c[k>>2]=(c[k>>2]|0)-1}J=bR+D|0;break L1039}}while(0);J=Z+D|0}}while(0);if(J>>>0>>0){D=J}else{break}}i=g;return}function bY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;j=i;i=i+16|0;k=j|0;c[k>>2]=f;l=k+4|0;c[l>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;if(g>>>0<2){m=0;i=j;return m|0}if((a[f]|0)==60&g>>>0>1){n=1}else{m=0;i=j;return m|0}while(1){o=a[f+n|0]|0;if((o<<24>>24|0)==62|(o<<24>>24|0)==32){p=1196;break}o=n+1|0;if(o>>>0>>0){n=o}else{break}}do{if((p|0)==1196){o=f+1|0;q=n-1|0;if(!(q>>>0<11&(q|0)!=0)){break}if((q|0)==1){r=1}else{r=(d[(d[f+2|0]|0)+753|0]|0)+q|0}s=a[o]|0;t=(d[752+(s&255)|0]|0)+r|0;if(t>>>0>=38){break}u=c[1016+(t<<2)>>2]|0;if(((a[u]^s)&-33)<<24>>24!=0){break}if((cr(o|0,u|0,q|0)|0)!=0){break}if((a[u+q|0]|0)!=0){break}q=ch(u,f,g,1)|0;do{if((q|0)==0){if((aP(u|0,1968)|0)==0){m=0;i=j;return m|0}if((aP(u|0,1352)|0)==0){m=0;i=j;return m|0}o=ch(u,f,g,0)|0;if((o|0)==0){m=0}else{v=o;break}i=j;return m|0}else{v=q}}while(0);c[l>>2]=v;if((h|0)==0){m=v;i=j;return m|0}q=c[e+8>>2]|0;if((q|0)==0){m=v;i=j;return m|0}aW[q&15](b,k,c[e+104>>2]|0);m=v;i=j;return m|0}}while(0);L1654:do{if(g>>>0>5){if((a[f+1|0]|0)!=33){break}if((a[f+2|0]|0)!=45){break}if((a[f+3|0]|0)==45){w=5}else{break}L1658:while(1){do{if((a[f+(w-2)|0]|0)==45){if((a[f+(w-1)|0]|0)!=45){p=1209;break}v=w+1|0;if((a[f+w|0]|0)==62){x=v;break L1658}else{y=v}}else{p=1209}}while(0);if((p|0)==1209){p=0;y=w+1|0}if(y>>>0>>0){w=y}else{p=1212;break}}if((p|0)==1212){x=y+1|0}if(x>>>0>=g>>>0){break}v=g-x|0;if((x|0)==(g|0)){z=1}else{r=0;while(1){n=a[f+(r+x)|0]|0;if((n<<24>>24|0)==10){A=r;break}else if((n<<24>>24|0)!=32){break L1654}n=r+1|0;if(n>>>0>>0){r=n}else{A=n;break}}r=A+1|0;if((r|0)==0){break}else{z=r}}r=z+x|0;c[l>>2]=r;if((h|0)==0){m=r;i=j;return m|0}v=c[e+8>>2]|0;if((v|0)==0){m=r;i=j;return m|0}aW[v&15](b,k,c[e+104>>2]|0);m=c[l>>2]|0;i=j;return m|0}}while(0);if(g>>>0<=4){m=0;i=j;return m|0}x=a[f+1|0]|0;if(!((x<<24>>24|0)==104|(x<<24>>24|0)==72)){m=0;i=j;return m|0}x=a[f+2|0]|0;if((x<<24>>24|0)==114|(x<<24>>24|0)==82){B=3}else{m=0;i=j;return m|0}while(1){if(B>>>0>=g>>>0){p=1225;break}x=B+1|0;if((a[f+B|0]|0)==62){C=x;break}else{B=x}}if((p|0)==1225){C=B+1|0}if(C>>>0>=g>>>0){m=0;i=j;return m|0}B=g-C|0;do{if((C|0)==(g|0)){D=1}else{x=0;while(1){z=a[f+(x+C)|0]|0;if((z<<24>>24|0)==10){E=x;break}else if((z<<24>>24|0)!=32){m=0;p=1245;break}z=x+1|0;if(z>>>0>>0){x=z}else{E=z;break}}if((p|0)==1245){i=j;return m|0}x=E+1|0;if((x|0)==0){m=0}else{D=x;break}i=j;return m|0}}while(0);E=D+C|0;c[l>>2]=E;if((h|0)==0){m=E;i=j;return m|0}h=c[e+8>>2]|0;if((h|0)==0){m=E;i=j;return m|0}aW[h&15](b,k,c[e+104>>2]|0);m=c[l>>2]|0;i=j;return m|0}function bZ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0;h=d+396|0;i=d+400|0;j=c[i>>2]|0;k=d+404|0;do{if(j>>>0<(c[k>>2]|0)>>>0){l=(c[h>>2]|0)+(j<<2)|0;if((c[l>>2]|0)==0){m=1266;break}c[i>>2]=j+1;n=c[l>>2]|0;c[n+4>>2]=0;o=n}else{m=1266}}while(0);L1721:do{if((m|0)==1266){j=ci(16)|0;if((j|0)!=0){c[j>>2]=0;c[j+8>>2]=0;c[j+4>>2]=0;c[j+12>>2]=256}n=c[i>>2]|0;l=n<<1;p=h|0;q=c[p>>2]|0;do{if((c[k>>2]|0)>>>0>>0){r=ck(q,n<<3)|0;s=r;if((r|0)==0){o=j;break L1721}r=c[k>>2]|0;cm(s+(r<<2)|0,0,l-r<<2|0);c[p>>2]=s;c[k>>2]=l;r=c[i>>2]|0;if(r>>>0<=l>>>0){t=r;u=s;break}c[i>>2]=l;t=l;u=s}else{t=n;u=q}}while(0);c[i>>2]=t+1;c[u+(t<<2)>>2]=j;o=j}}while(0);t=o;o=d+412|0;u=d+416|0;k=d+408|0;h=d+24|0;q=d+104|0;n=d+420|0;l=0;p=g;while(1){if(l>>>0>=f>>>0){v=l;w=p;break}g=e+l|0;s=f-l|0;r=0;while(1){if(!(r>>>0<3&r>>>0>>0)){break}if((a[e+(r+l)|0]|0)==32){r=r+1|0}else{break}}if((l|0)==(f|0)){x=0}else{x=(a[g]|0)==32|0}if(x>>>0>>0){y=((a[e+(x+l)|0]|0)==32)+x|0}else{y=x}if(y>>>0>>0){z=((a[e+(y+l)|0]|0)==32)+y|0}else{z=y}j=z+1|0;L1748:do{if(j>>>0>>0){A=z+l|0;B=a[e+A|0]|0;if(!((B<<24>>24|0)==42|(B<<24>>24|0)==43|(B<<24>>24|0)==45)){m=1304;break}if((a[e+(j+l)|0]|0)!=32){m=1304;break}B=s-z|0;C=0;while(1){if(C>>>0>=B>>>0){m=1289;break}D=C+1|0;if((a[e+(C+A)|0]|0)==10){E=D;break}else{C=D}}if((m|0)==1289){m=0;E=C+1|0}do{if(E>>>0>>0){D=E+A|0;F=B-E|0;G=a[e+D|0]|0;if((G<<24>>24|0)==61){H=1;while(1){if(H>>>0>=F>>>0){I=H;break}if((a[e+(D+H)|0]|0)==61){H=H+1|0}else{I=H;break}}while(1){if(I>>>0>=F>>>0){m=1304;break L1748}J=a[e+(D+I)|0]|0;if(J<<24>>24==32){I=I+1|0}else{break}}K=J<<24>>24==10|0;break}else if((G<<24>>24|0)==45){H=1;while(1){if(H>>>0>=F>>>0){L=H;break}if((a[e+(D+H)|0]|0)==45){H=H+1|0}else{L=H;break}}while(1){if(L>>>0>=F>>>0){m=1304;break L1748}M=a[e+(D+L)|0]|0;if(M<<24>>24==32){L=L+1|0}else{break}}K=M<<24>>24==10?2:0;break}else{K=0;break}}else{K=0}}while(0);B=(K|0)==0?z+2|0:0;if((B|0)==0){m=1304}else{N=B}}else{m=1304}}while(0);if((m|0)==1304){m=0;j=b_(g,s)|0;if((j|0)==0){v=l;w=p;break}else{N=j}}j=l-1|0;B=N;while(1){O=B>>>0>>0;if(!O){break}if((a[e+(j+B)|0]|0)==10){break}else{B=B+1|0}}j=c[o>>2]|0;do{if(j>>>0<(c[u>>2]|0)>>>0){g=(c[k>>2]|0)+(j<<2)|0;if((c[g>>2]|0)==0){m=1311;break}c[o>>2]=j+1;A=c[g>>2]|0;c[A+4>>2]=0;P=A}else{m=1311}}while(0);L1786:do{if((m|0)==1311){m=0;j=ci(16)|0;if((j|0)!=0){c[j>>2]=0;c[j+8>>2]=0;c[j+4>>2]=0;c[j+12>>2]=64}A=c[o>>2]|0;g=A<<1;C=c[k>>2]|0;do{if((c[u>>2]|0)>>>0>>0){D=ck(C,A<<3)|0;F=D;if((D|0)==0){P=j;break L1786}D=c[u>>2]|0;cm(F+(D<<2)|0,0,g-D<<2|0);c[k>>2]=F;c[u>>2]=g;D=c[o>>2]|0;if(D>>>0<=g>>>0){Q=D;R=F;break}c[o>>2]=g;Q=g;R=F}else{Q=A;R=C}}while(0);c[o>>2]=Q+1;c[R+(Q<<2)>>2]=j;P=j}}while(0);C=P;A=c[o>>2]|0;do{if(A>>>0<(c[u>>2]|0)>>>0){g=(c[k>>2]|0)+(A<<2)|0;if((c[g>>2]|0)==0){m=1321;break}c[o>>2]=A+1;F=c[g>>2]|0;c[F+4>>2]=0;S=F}else{m=1321}}while(0);L1800:do{if((m|0)==1321){m=0;A=ci(16)|0;if((A|0)!=0){c[A>>2]=0;c[A+8>>2]=0;c[A+4>>2]=0;c[A+12>>2]=64}F=c[o>>2]|0;g=F<<1;D=c[k>>2]|0;do{if((c[u>>2]|0)>>>0>>0){H=ck(D,F<<3)|0;G=H;if((H|0)==0){S=A;break L1800}H=c[u>>2]|0;cm(G+(H<<2)|0,0,g-H<<2|0);c[k>>2]=G;c[u>>2]=g;H=c[o>>2]|0;if(H>>>0<=g>>>0){T=H;U=G;break}c[o>>2]=g;T=g;U=G}else{T=F;U=D}}while(0);c[o>>2]=T+1;c[U+(T<<2)>>2]=A;S=A}}while(0);D=S;bS(C,e+(N+l)|0,B-N|0);L1811:do{if(O){F=p&1;g=(F|0)==0;j=(F|0)!=0;F=P+4|0;G=B;H=0;V=0;W=0;L1814:while(1){X=G;Y=0;L1816:while(1){Z=X;while(1){_=Z+1|0;$=_>>>0>>0;if(!$){break}if((a[e+(Z+l)|0]|0)==10){break}else{Z=_}}aa=X+l|0;ab=_-X|0;if((_|0)==(X|0)){ac=X}else{Z=0;while(1){ad=a[e+(aa+Z)|0]|0;if((ad<<24>>24|0)==10){ae=Z;break}else if((ad<<24>>24|0)!=32){af=0;break L1816}ad=Z+1|0;if(ad>>>0>>0){Z=ad}else{ae=ad;break}}if((ae|0)==-1){af=0;break}else{ac=_}}if($){X=ac;Y=1}else{ag=V;ah=p;ai=ac;aj=H;ak=F;break L1811}}while(1){if(af>>>0>=4){break}Z=af+X|0;if(Z>>>0>=_>>>0){break}if((a[e+(Z+l)|0]|0)==32){af=af+1|0}else{break}}do{if((c[n>>2]&4|0)==0){al=W}else{if((b$(e+(aa+af)|0,ab-af|0,0)|0)==0){al=W;break}al=(W|0)==0|0}}while(0);if((al|0)==0){Z=aa+af|0;ad=e+Z|0;am=ab-af|0;if((ab|0)==(af|0)){an=0}else{an=(a[ad]|0)==32|0}if(an>>>0>>0){ao=((a[e+(an+Z)|0]|0)==32)+an|0}else{ao=an}if(ao>>>0>>0){ap=((a[e+(ao+Z)|0]|0)==32)+ao|0}else{ap=ao}aq=ap+1|0;do{if(aq>>>0>>0){ar=ap+Z|0;as=a[e+ar|0]|0;if(!((as<<24>>24|0)==42|(as<<24>>24|0)==43|(as<<24>>24|0)==45)){at=0;break}if((a[e+(aq+Z)|0]|0)!=32){at=0;break}as=am-ap|0;au=0;while(1){if(au>>>0>=as>>>0){m=1358;break}av=au+1|0;if((a[e+(au+ar)|0]|0)==10){aw=av;break}else{au=av}}if((m|0)==1358){m=0;aw=au+1|0}L1858:do{if(aw>>>0>>0){av=aw+ar|0;ax=as-aw|0;ay=a[e+av|0]|0;if((ay<<24>>24|0)==61){az=1;while(1){if(az>>>0>=ax>>>0){aA=az;break}if((a[e+(av+az)|0]|0)==61){az=az+1|0}else{aA=az;break}}while(1){if(aA>>>0>=ax>>>0){aB=1;break L1858}aC=a[e+(av+aA)|0]|0;if(aC<<24>>24==32){aA=aA+1|0}else{break}}aB=aC<<24>>24==10|0;break}else if((ay<<24>>24|0)==45){az=1;while(1){if(az>>>0>=ax>>>0){aD=az;break}if((a[e+(av+az)|0]|0)==45){az=az+1|0}else{aD=az;break}}while(1){if(aD>>>0>=ax>>>0){aB=2;break L1858}aE=a[e+(av+aD)|0]|0;if(aE<<24>>24==32){aD=aD+1|0}else{break}}aB=aE<<24>>24==10?2:0;break}else{aB=0;break}}else{aB=0}}while(0);at=(aB|0)==0?ap+2|0:0}else{at=0}}while(0);aF=b_(ad,am)|0;aG=at}else{aF=0;aG=0}Z=(Y|0)!=0;if(Z){if(!(g|(aG|0)==0)){m=1377;break}if(!(j|(aF|0)==0)){m=1377;break}}L1882:do{if((aG|0)==0){if((aF|0)==0){m=1396}else{m=1393}}else{aq=aa+af|0;as=ab-af|0;if(as>>>0<3){m=1393;break}do{if((a[e+aq|0]|0)==32){if((a[e+(aq+1)|0]|0)!=32){aH=1;break}aH=(a[e+(aq+2)|0]|0)==32?3:2}else{aH=0}}while(0);if((aH+2|0)>>>0>=as>>>0){m=1393;break}ar=a[e+(aH+aq)|0]|0;if(!((ar<<24>>24|0)==42|(ar<<24>>24|0)==45|(ar<<24>>24|0)==95)){m=1393;break}if(aH>>>0>>0){aI=ar;aJ=0;aK=aH}else{m=1393;break}while(1){if(aI<<24>>24==ar<<24>>24){aL=aJ+1|0}else{if(aI<<24>>24==32){aL=aJ}else{m=1393;break L1882}}au=aK+1|0;if(au>>>0>=as>>>0){break}av=a[e+(au+aq)|0]|0;if(av<<24>>24==10){break}else{aI=av;aJ=aL;aK=au}}if(aL>>>0>2&(aF|0)==0){m=1396}else{m=1393}}}while(0);do{if((m|0)==1393){m=0;Y=Z?1:V;if((af|0)==(r|0)){ag=Y;ah=p;ai=X;aj=H;ak=F;break L1811}if((H|0)!=0){aM=Y;aN=H;break}aM=Y;aN=c[F>>2]|0}else if((m|0)==1396){m=0;if(Z&(af|0)==0){m=1397;break L1814}if(!Z){aM=V;aN=H;break}bU(C,10);aM=1;aN=H}}while(0);bS(C,e+(aa+af)|0,ab-af|0);if($){G=_;H=aN;V=aM;W=al}else{ag=aM;ah=p;ai=_;aj=aN;ak=F;break L1811}}if((m|0)==1397){m=0;ag=V;ah=p|8;ai=X;aj=H;ak=F;break}else if((m|0)==1377){m=0;ag=V;ah=p|8;ai=X;aj=H;ak=F;break}}else{ag=0;ah=p;ai=B;aj=0;ak=P+4|0}}while(0);B=(ag|0)==0?ah:ah|2;C=c[ak>>2]|0;r=(aj|0)!=0&aj>>>0>>0;s=P;W=c[s>>2]|0;do{if((B&2|0)==0){if(r){b0(D,d,W,aj);bX(D,d,(c[s>>2]|0)+aj|0,(c[ak>>2]|0)-aj|0);break}else{b0(D,d,W,C);break}}else{if(r){bX(D,d,W,aj);bX(D,d,(c[s>>2]|0)+aj|0,(c[ak>>2]|0)-aj|0);break}else{bX(D,d,W,C);break}}}while(0);C=c[h>>2]|0;if((C|0)!=0){a_[C&15](t,D,B,c[q>>2]|0)}c[o>>2]=(c[o>>2]|0)-2;C=ai+l|0;if((ai|0)==0){v=C;w=B;break}if((B&8|0)==0){l=C;p=B}else{v=C;w=B;break}}p=c[d+20>>2]|0;if((p|0)==0){aO=c[i>>2]|0;aP=aO-1|0;c[i>>2]=aP;return v|0}a_[p&15](b,t,w,c[q>>2]|0);aO=c[i>>2]|0;aP=aO-1|0;c[i>>2]=aP;return v|0}function b_(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((c|0)==0){d=0}else{d=(a[b]|0)==32|0}if(d>>>0>>0){e=((a[b+d|0]|0)==32)+d|0}else{e=d}if(e>>>0>>0){f=((a[b+e|0]|0)==32)+e|0}else{f=e}if(f>>>0>=c>>>0){return 0}if(((a[b+f|0]|0)-48&255)>9){return 0}else{g=f}while(1){if(g>>>0>=c>>>0){h=1426;break}f=g+1|0;if(((a[b+g|0]|0)-48&255)<10){g=f}else{i=f;break}}if((h|0)==1426){i=g+1|0}if(i>>>0>=c>>>0){return 0}if((a[b+g|0]|0)!=46){return 0}if((a[b+i|0]|0)!=32){return 0}i=c-g|0;c=0;while(1){if(c>>>0>=i>>>0){h=1433;break}f=c+1|0;if((a[b+(c+g)|0]|0)==10){j=f;break}else{c=f}}if((h|0)==1433){j=c+1|0}if(j>>>0>=i>>>0){k=0;l=(k|0)==0;m=g+2|0;n=l?m:0;return n|0}c=j+g|0;f=i-j|0;j=a[b+c|0]|0;if((j<<24>>24|0)==61){i=1;while(1){if(i>>>0>=f>>>0){o=i;break}if((a[b+(c+i)|0]|0)==61){i=i+1|0}else{o=i;break}}while(1){if(o>>>0>=f>>>0){k=1;h=1451;break}p=a[b+(c+o)|0]|0;if(p<<24>>24==32){o=o+1|0}else{break}}if((h|0)==1451){l=(k|0)==0;m=g+2|0;n=l?m:0;return n|0}k=p<<24>>24==10|0;l=(k|0)==0;m=g+2|0;n=l?m:0;return n|0}else if((j<<24>>24|0)==45){j=1;while(1){if(j>>>0>=f>>>0){q=j;break}if((a[b+(c+j)|0]|0)==45){j=j+1|0}else{q=j;break}}while(1){if(q>>>0>=f>>>0){k=2;h=1453;break}r=a[b+(c+q)|0]|0;if(r<<24>>24==32){q=q+1|0}else{break}}if((h|0)==1453){l=(k|0)==0;m=g+2|0;n=l?m:0;return n|0}k=r<<24>>24==10?2:0;l=(k|0)==0;m=g+2|0;n=l?m:0;return n|0}else{k=0;l=(k|0)==0;m=g+2|0;n=l?m:0;return n|0}return 0}function b$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;if(d>>>0<3){f=0;return f|0}do{if((a[b]|0)==32){if((a[b+1|0]|0)!=32){g=1;break}g=(a[b+2|0]|0)==32?3:2}else{g=0}}while(0);if((g+2|0)>>>0>=d>>>0){f=0;return f|0}h=a[b+g|0]|0;if(!((h<<24>>24|0)==126|(h<<24>>24|0)==96)){f=0;return f|0}if(g>>>0>>0){i=0;j=g}else{f=0;return f|0}do{i=i+1|0;j=j+1|0;if(j>>>0>=d>>>0){break}}while((a[b+j|0]|0)==h<<24>>24);h=i>>>0<3?0:j;if((h|0)==0){f=0;return f|0}else{k=h}while(1){l=b+k|0;if(k>>>0>=d>>>0){m=l;n=0;o=k;break}h=a[l]|0;p=k+1|0;if((h<<24>>24|0)==32){k=p}else if((h<<24>>24|0)==123){q=1472;break}else{r=k;s=0;t=h;q=1484;break}}L2017:do{if((q|0)==1472){h=b+p|0;L2019:do{if(p>>>0>>0){j=k;i=0;g=p;while(1){u=a[b+g|0]|0;if((u<<24>>24|0)==125|(u<<24>>24|0)==10){v=j;w=i;x=g;break L2019}u=i+1|0;y=g+1|0;if(y>>>0>>0){j=g;i=u;g=y}else{v=g;w=u;x=y;break}}}else{v=k;w=0;x=p}}while(0);if((x|0)==(d|0)){f=0;return f|0}if((a[b+x|0]|0)!=125){f=0;return f|0}L2030:do{if((w|0)==0){z=0;A=h}else{g=w;i=h;while(1){j=a[i]|0;if(!((j<<24>>24|0)==32|(j<<24>>24|0)==10)){break}j=i+1|0;y=g-1|0;if((y|0)==0){z=0;A=j;break L2030}else{g=y;i=j}}if((g|0)==0){z=0;A=i;break}else{B=g}while(1){j=B-1|0;y=a[i+j|0]|0;if(!((y<<24>>24|0)==32|(y<<24>>24|0)==10)){z=B;A=i;break L2030}if((j|0)==0){z=0;A=i;break}else{B=j}}}}while(0);m=A;n=z;o=v+2|0}else if((q|0)==1484){while(1){q=0;if((t<<24>>24|0)==32|(t<<24>>24|0)==10){m=l;n=s;o=r;break L2017}h=s+1|0;i=r+1|0;if(i>>>0>=d>>>0){m=l;n=h;o=i;break L2017}r=i;s=h;t=a[b+i|0]|0;q=1484}}}while(0);if((e|0)!=0){c[e>>2]=m;c[e+4>>2]=n}L2047:do{if(o>>>0>>0){n=o;while(1){e=a[b+n|0]|0;if((e<<24>>24|0)==10){C=n;break L2047}else if((e<<24>>24|0)!=32){f=0;break}e=n+1|0;if(e>>>0>>0){n=e}else{C=e;break L2047}}return f|0}else{C=o}}while(0);f=C+1|0;return f|0}function b0(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=i;i=i+16|0;j=h|0;cm(j|0,0,16);if(((c[e+400>>2]|0)+(c[e+412>>2]|0)|0)>>>0>(c[e+424>>2]|0)>>>0|(g|0)==0){i=h;return}k=e+92|0;l=j|0;m=j+4|0;n=e+104|0;o=0;p=0;q=0;while(1){r=q;s=p;while(1){if(s>>>0>=g>>>0){t=r;u=0;break}v=a[(d[f+s|0]|0)+(e+140)|0]|0;if(v<<24>>24==0){r=0;s=s+1|0}else{t=v;u=1;break}}r=c[k>>2]|0;v=f+o|0;if((r|0)==0){bS(b,v,s-o|0)}else{c[l>>2]=v;c[m>>2]=s-o;aW[r&15](b,j,c[n>>2]|0)}if(!u){w=1516;break}r=aU[c[504+((t&255)<<2)>>2]&31](b,e,f+s|0,s,g-s|0)|0;v=r+s|0;if(v>>>0>>0){o=v;p=(r|0)==0?s+1|0:v;q=t}else{w=1515;break}}if((w|0)==1515){i=h;return}else if((w|0)==1516){i=h;return}}function b1(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;f=a[e]|0;if(g>>>0<=2){h=0;return h|0}i=e+1|0;j=a[i]|0;if(j<<24>>24!=f<<24>>24){if(f<<24>>24==126|j<<24>>24==32|j<<24>>24==10){h=0;return h|0}else{j=ce(b,d,i,g-1|0,f)|0;return((j|0)==0?0:j+1|0)|0}}if(g>>>0<=3){h=0;return h|0}j=e+2|0;k=a[j]|0;if(k<<24>>24!=f<<24>>24){if((k<<24>>24|0)==32|(k<<24>>24|0)==10){h=0;return h|0}k=cf(b,d,j,g-2|0,f)|0;h=(k|0)==0?0:k+2|0;return h|0}if(g>>>0<=4){h=0;return h|0}k=e+3|0;l=a[k]|0;if(l<<24>>24==f<<24>>24|f<<24>>24==126|l<<24>>24==32|l<<24>>24==10){h=0;return h|0}l=g-3|0;L2098:do{if((l|0)==0){m=0}else{n=0;while(1){o=cc(e+(n+3)|0,l-n|0,f)|0;if((o|0)==0){m=0;break L2098}p=o+n|0;q=p+3|0;if((a[e+q|0]|0)==f<<24>>24){r=p+2|0;o=a[e+r|0]|0;if(!((o<<24>>24|0)==32|(o<<24>>24|0)==10)){break}}if(p>>>0>>0){n=p}else{m=0;break L2098}}n=p+1|0;do{if(r>>>0>>0){if((a[e+(p+4)|0]|0)!=f<<24>>24){break}if((a[e+(p+5)|0]|0)!=f<<24>>24){break}o=d+76|0;if((c[o>>2]|0)==0){break}s=d+408|0;t=d+412|0;u=c[t>>2]|0;v=d+416|0;do{if(u>>>0<(c[v>>2]|0)>>>0){w=(c[s>>2]|0)+(u<<2)|0;if((c[w>>2]|0)==0){x=1539;break}c[t>>2]=u+1;y=c[w>>2]|0;c[y+4>>2]=0;z=y}else{x=1539}}while(0);L2114:do{if((x|0)==1539){u=ci(16)|0;if((u|0)!=0){c[u>>2]=0;c[u+8>>2]=0;c[u+4>>2]=0;c[u+12>>2]=64}y=c[t>>2]|0;w=y<<1;A=s|0;B=c[A>>2]|0;do{if((c[v>>2]|0)>>>0>>0){C=ck(B,y<<3)|0;D=C;if((C|0)==0){z=u;break L2114}C=c[v>>2]|0;cm(D+(C<<2)|0,0,w-C<<2|0);c[A>>2]=D;c[v>>2]=w;C=c[t>>2]|0;if(C>>>0<=w>>>0){E=C;F=D;break}c[t>>2]=w;E=w;F=D}else{E=y;F=B}}while(0);c[t>>2]=E+1;c[F+(E<<2)>>2]=u;z=u}}while(0);v=z;b0(v,d,k,p);s=aV[c[o>>2]&15](b,v,c[d+104>>2]|0)|0;c[t>>2]=(c[t>>2]|0)-1;m=(s|0)==0?0:q;break L2098}}while(0);do{if(n>>>0>>0){if((a[e+(p+4)|0]|0)!=f<<24>>24){break}s=ce(b,d,i,g-1|0,f)|0;m=(s|0)==0?0:s-2|0;break L2098}}while(0);n=cf(b,d,j,g-2|0,f)|0;m=(n|0)==0?0:n-1|0}}while(0);h=(m|0)==0?0:m+3|0;return h|0}function b2(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=i;i=i+16|0;h=f|0;j=0;while(1){if(j>>>0>=g>>>0){k=j;l=0;m=0;n=1567;break}o=a[e+j|0]|0;if(o<<24>>24==96){j=j+1|0}else{n=1564;break}}L2136:do{if((n|0)==1564){if((j|0)==0){p=0;break}else{q=j;r=1;s=o}while(1){t=s<<24>>24==96?r:0;u=q+1|0;v=u>>>0>>0;if(!(v&t>>>0>>0)){k=u;l=t;m=v;n=1567;break L2136}q=u;r=t+1|0;s=a[e+u|0]|0}}}while(0);do{if((n|0)==1567){if(l>>>0>=j>>>0|m){p=k;break}else{w=0}i=f;return w|0}}while(0);k=j;while(1){if(k>>>0>=p>>>0){break}if((a[e+k|0]|0)==32){k=k+1|0}else{break}}m=p-j|0;while(1){if(m>>>0<=j>>>0){break}l=m-1|0;if((a[e+l|0]|0)==32){m=l}else{break}}if(k>>>0>=m>>>0){j=(aV[c[d+48>>2]&15](b,0,c[d+104>>2]|0)|0)==0?0:p;i=f;return j|0}c[h>>2]=e+k;c[h+4>>2]=m-k;c[h+8>>2]=0;c[h+12>>2]=0;w=(aV[c[d+48>>2]&15](b,h,c[d+104>>2]|0)|0)==0?0:p;i=f;return w|0}function b3(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;if(f>>>0<2){h=0;return h|0}if((a[e-1|0]|0)!=32){h=0;return h|0}if((a[e-2|0]|0)!=32){h=0;return h|0}e=b+4|0;f=c[e>>2]|0;L2167:do{if((f|0)!=0){g=c[b>>2]|0;i=f;do{i=i-1|0;if((a[g+i|0]|0)!=32){break L2167}c[e>>2]=i;}while((i|0)!=0)}}while(0);h=(aZ[c[d+64>>2]&3](b,c[d+104>>2]|0)|0)!=0|0;return h|0}function b4(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0;do{if((g|0)==0){i=e+412|0;j=i;k=c[i>>2]|0;l=1597}else{i=e+412|0;m=c[i>>2]|0;if((a[f-1|0]|0)!=33){j=i;k=m;l=1597;break}if((c[e+60>>2]|0)==0){n=1;o=0;p=i;q=m}else{r=1;s=i;t=m;break}c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}}while(0);do{if((l|0)==1597){if((c[e+68>>2]|0)==0){n=1;o=0;p=j;q=k}else{r=0;s=j;t=k;break}c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}}while(0);if(h>>>0>1){w=0;x=1;y=1}else{n=1;o=0;p=s;q=t;c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}L2186:while(1){k=a[f+x|0]|0;do{if(k<<24>>24==10){z=y;A=1}else{B=x-1|0;if((a[f+B|0]|0)==92){z=y;A=w;break}if((k<<24>>24|0)==91){z=y+1|0;A=w;break}else if((k<<24>>24|0)==93){j=y-1|0;if((j|0)<1){break L2186}else{z=j;A=w;break}}else{z=y;A=w;break}}}while(0);k=x+1|0;if(k>>>0>>0){w=A;x=k;y=z}else{n=k;o=0;p=s;q=t;l=1758;break}}if((l|0)==1758){c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}z=x+1|0;L2198:do{if(z>>>0>>0){y=z;while(1){A=a[f+y|0]|0;if((A<<24>>24|0)==40){break}else if((A<<24>>24|0)==91){l=1661;break}else if(!((A<<24>>24|0)==32|(A<<24>>24|0)==10)){C=y;l=1691;break L2198}A=y+1|0;if(A>>>0>>0){y=A}else{C=A;l=1691;break L2198}}if((l|0)==1661){A=y+1|0;k=A;while(1){if(k>>>0>=h>>>0){n=k;o=0;p=s;q=t;l=1766;break}D=k+1|0;if((a[f+k|0]|0)==93){break}else{k=D}}if((l|0)==1766){c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}do{if((A|0)==(k|0)){if((w|0)==0){E=f+1|0;F=B;break}j=e+408|0;g=e+416|0;do{if(t>>>0<(c[g>>2]|0)>>>0){m=(c[j>>2]|0)+(t<<2)|0;if((c[m>>2]|0)==0){l=1669;break}c[s>>2]=t+1;i=c[m>>2]|0;c[i+4>>2]=0;G=i}else{l=1669}}while(0);L2218:do{if((l|0)==1669){i=ci(16)|0;if((i|0)!=0){c[i>>2]=0;c[i+8>>2]=0;c[i+4>>2]=0;c[i+12>>2]=64}m=e+412|0;H=c[m>>2]|0;I=H<<1;J=j|0;K=c[J>>2]|0;do{if((c[g>>2]|0)>>>0>>0){L=ck(K,H<<3)|0;M=L;if((L|0)==0){G=i;break L2218}L=c[g>>2]|0;cm(M+(L<<2)|0,0,I-L<<2|0);c[J>>2]=M;c[g>>2]=I;L=c[m>>2]|0;if(L>>>0<=I>>>0){N=L;O=M;break}c[m>>2]=I;N=I;O=M}else{N=H;O=K}}while(0);c[m>>2]=N+1;c[O+(N<<2)>>2]=i;G=i}}while(0);g=G;if(x>>>0>1){j=1;do{K=a[f+j|0]|0;do{if(K<<24>>24==10){if((a[f+(j-1)|0]|0)==32){break}bU(g,32)}else{bU(g,K&255)}}while(0);j=j+1|0;}while(j>>>0>>0)}E=c[G>>2]|0;F=c[G+4>>2]|0}else{E=f+A|0;F=k-A|0}}while(0);if((F|0)==0){P=0}else{A=0;j=0;while(1){g=(co(d[E+A|0]|0)|0)-j+(j*65600|0)|0;K=A+1|0;if(K>>>0>>0){A=K;j=g}else{P=g;break}}}j=e+108+((P&7)<<2)|0;while(1){Q=c[j>>2]|0;if((Q|0)==0){n=k;o=0;p=s;q=t;l=1767;break}if((c[Q>>2]|0)==(P|0)){l=1690;break}else{j=Q+12|0}}if((l|0)==1767){c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}else if((l|0)==1690){R=D;S=c[Q+8>>2]|0;T=c[Q+4>>2]|0;break}}j=y+1|0;L2251:do{if(j>>>0>>0){k=y;A=j;while(1){g=a[f+A|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==10)){U=k;V=A;break L2251}g=A+1|0;if(g>>>0>>0){k=A;A=g}else{U=A;V=g;break}}}else{U=y;V=j}}while(0);if(V>>>0>>0){W=V}else{n=V;o=0;p=s;q=t;c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}L2258:while(1){X=a[f+W|0]|0;if((X<<24>>24|0)==92){Y=W+2|0}else if((X<<24>>24|0)==41){Z=W;_=W;$=0;aa=0;break}else{do{if((W|0)!=0){j=a[f+(W-1)|0]|0;if(!((j<<24>>24|0)==32|(j<<24>>24|0)==10)){break}if((X<<24>>24|0)==39|(X<<24>>24|0)==34){l=1619;break L2258}}}while(0);Y=W+1|0}if(Y>>>0>>0){W=Y}else{n=Y;o=0;p=s;q=t;l=1762;break}}if((l|0)==1762){c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}do{if((l|0)==1619){j=W+1|0;if(j>>>0>>0){ab=0;ac=j}else{n=j;o=0;p=s;q=t;c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}L2274:while(1){ad=ac;while(1){y=a[f+ad|0]|0;if(y<<24>>24==92){ae=ad+2|0}else{if(y<<24>>24==X<<24>>24){break}if(y<<24>>24==41&ab){l=1628;break L2274}ae=ad+1|0}if(ae>>>0>>0){ad=ae}else{n=ae;o=0;p=s;q=t;l=1765;break L2274}}y=ad+1|0;if(y>>>0>>0){ab=1;ac=y}else{n=y;o=0;p=s;q=t;l=1764;break}}if((l|0)==1765){c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}else if((l|0)==1764){c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}else if((l|0)==1628){y=ad-1|0;L2289:do{if(y>>>0>j>>>0){A=y;while(1){k=a[f+A|0]|0;if(!((k<<24>>24|0)==32|(k<<24>>24|0)==10)){af=A;break L2289}k=A-1|0;if(k>>>0>j>>>0){A=k}else{af=k;break}}}else{af=y}}while(0);y=a[f+af|0]|0;if((y<<24>>24|0)==39|(y<<24>>24|0)==34){Z=ad;_=W;$=j;aa=af;break}Z=ad;_=ad;$=0;aa=0;break}}}while(0);L2296:do{if(_>>>0>V>>>0){y=_;while(1){A=y-1|0;k=a[f+A|0]|0;if(!((k<<24>>24|0)==32|(k<<24>>24|0)==10)){ag=y;break L2296}if(A>>>0>V>>>0){y=A}else{ag=A;break}}}else{ag=_}}while(0);y=(a[f+V|0]|0)==60?U+2|0:V;j=ag-1|0;A=(a[f+j|0]|0)==62?j:ag;if(A>>>0>y>>>0){j=e+408|0;k=e+416|0;do{if(t>>>0<(c[k>>2]|0)>>>0){g=(c[j>>2]|0)+(t<<2)|0;if((c[g>>2]|0)==0){l=1640;break}c[s>>2]=t+1;K=c[g>>2]|0;c[K+4>>2]=0;ah=K}else{l=1640}}while(0);L2306:do{if((l|0)==1640){K=ci(16)|0;if((K|0)!=0){c[K>>2]=0;c[K+8>>2]=0;c[K+4>>2]=0;c[K+12>>2]=64}g=e+412|0;i=c[g>>2]|0;m=i<<1;H=j|0;I=c[H>>2]|0;do{if((c[k>>2]|0)>>>0>>0){J=ck(I,i<<3)|0;M=J;if((J|0)==0){ah=K;break L2306}J=c[k>>2]|0;cm(M+(J<<2)|0,0,m-J<<2|0);c[H>>2]=M;c[k>>2]=m;J=c[g>>2]|0;if(J>>>0<=m>>>0){ai=J;aj=M;break}c[g>>2]=m;ai=m;aj=M}else{ai=i;aj=I}}while(0);c[g>>2]=ai+1;c[aj+(ai<<2)>>2]=K;ah=K}}while(0);k=ah;bS(k,f+y|0,A-y|0);ak=k}else{ak=0}if(aa>>>0>$>>>0){k=e+408|0;j=c[s>>2]|0;I=e+416|0;do{if(j>>>0<(c[I>>2]|0)>>>0){i=(c[k>>2]|0)+(j<<2)|0;if((c[i>>2]|0)==0){l=1652;break}c[s>>2]=j+1;m=c[i>>2]|0;c[m+4>>2]=0;al=m}else{l=1652}}while(0);L2323:do{if((l|0)==1652){j=ci(16)|0;if((j|0)!=0){c[j>>2]=0;c[j+8>>2]=0;c[j+4>>2]=0;c[j+12>>2]=64}y=e+412|0;A=c[y>>2]|0;m=A<<1;i=k|0;H=c[i>>2]|0;do{if((c[I>>2]|0)>>>0>>0){M=ck(H,A<<3)|0;J=M;if((M|0)==0){al=j;break L2323}M=c[I>>2]|0;cm(J+(M<<2)|0,0,m-M<<2|0);c[i>>2]=J;c[I>>2]=m;M=c[y>>2]|0;if(M>>>0<=m>>>0){am=M;an=J;break}c[y>>2]=m;am=m;an=J}else{am=A;an=H}}while(0);c[y>>2]=am+1;c[an+(am<<2)>>2]=j;al=j}}while(0);I=al;bS(I,f+$|0,aa-$|0);ao=I}else{ao=0}R=Z+1|0;S=ao;T=ak}else{C=z;l=1691}}while(0);do{if((l|0)==1691){if((w|0)==0){ap=f+1|0;aq=B}else{ak=e+408|0;ao=e+416|0;do{if(t>>>0<(c[ao>>2]|0)>>>0){Z=(c[ak>>2]|0)+(t<<2)|0;if((c[Z>>2]|0)==0){l=1695;break}c[s>>2]=t+1;$=c[Z>>2]|0;c[$+4>>2]=0;ar=$}else{l=1695}}while(0);L2342:do{if((l|0)==1695){$=ci(16)|0;if(($|0)!=0){c[$>>2]=0;c[$+8>>2]=0;c[$+4>>2]=0;c[$+12>>2]=64}Z=e+412|0;aa=c[Z>>2]|0;al=aa<<1;am=ak|0;an=c[am>>2]|0;do{if((c[ao>>2]|0)>>>0>>0){ah=ck(an,aa<<3)|0;ai=ah;if((ah|0)==0){ar=$;break L2342}ah=c[ao>>2]|0;cm(ai+(ah<<2)|0,0,al-ah<<2|0);c[am>>2]=ai;c[ao>>2]=al;ah=c[Z>>2]|0;if(ah>>>0<=al>>>0){as=ah;at=ai;break}c[Z>>2]=al;as=al;at=ai}else{as=aa;at=an}}while(0);c[Z>>2]=as+1;c[at+(as<<2)>>2]=$;ar=$}}while(0);ao=ar;if(x>>>0>1){ak=1;do{an=a[f+ak|0]|0;do{if(an<<24>>24==10){if((a[f+(ak-1)|0]|0)==32){break}bU(ao,32)}else{bU(ao,an&255)}}while(0);ak=ak+1|0;}while(ak>>>0>>0)}ap=c[ar>>2]|0;aq=c[ar+4>>2]|0}if((aq|0)==0){au=0}else{ak=0;ao=0;while(1){an=(co(d[ap+ak|0]|0)|0)-ao+(ao*65600|0)|0;$=ak+1|0;if($>>>0>>0){ak=$;ao=an}else{au=an;break}}}ao=e+108+((au&7)<<2)|0;while(1){av=c[ao>>2]|0;if((av|0)==0){n=C;o=0;p=s;q=t;l=1768;break}if((c[av>>2]|0)==(au|0)){l=1715;break}else{ao=av+12|0}}if((l|0)==1768){c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}else if((l|0)==1715){R=z;S=c[av+8>>2]|0;T=c[av+4>>2]|0;break}}}while(0);do{if(x>>>0>1){av=e+408|0;z=c[s>>2]|0;au=e+416|0;do{if(z>>>0<(c[au>>2]|0)>>>0){C=(c[av>>2]|0)+(z<<2)|0;if((c[C>>2]|0)==0){l=1720;break}c[s>>2]=z+1;aq=c[C>>2]|0;c[aq+4>>2]=0;aw=aq}else{l=1720}}while(0);L2380:do{if((l|0)==1720){z=ci(16)|0;if((z|0)!=0){c[z>>2]=0;c[z+8>>2]=0;c[z+4>>2]=0;c[z+12>>2]=64}aq=e+412|0;C=c[aq>>2]|0;ap=C<<1;ar=av|0;as=c[ar>>2]|0;do{if((c[au>>2]|0)>>>0>>0){at=ck(as,C<<3)|0;w=at;if((at|0)==0){aw=z;break L2380}at=c[au>>2]|0;cm(w+(at<<2)|0,0,ap-at<<2|0);c[ar>>2]=w;c[au>>2]=ap;at=c[aq>>2]|0;if(at>>>0<=ap>>>0){ax=at;ay=w;break}c[aq>>2]=ap;ax=ap;ay=w}else{ax=C;ay=as}}while(0);c[aq>>2]=ax+1;c[ay+(ax<<2)>>2]=z;aw=z}}while(0);au=aw;if(r){bS(au,f+1|0,B);az=au;aA=1;break}else{av=e+428|0;c[av>>2]=1;b0(au,e,f+1|0,B);c[av>>2]=0;az=au;aA=0;break}}else{az=0;aA=r}}while(0);if((T|0)==0){n=R;o=0;p=s;q=t;c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}r=e+408|0;B=c[s>>2]|0;f=e+416|0;do{if(B>>>0<(c[f>>2]|0)>>>0){aw=(c[r>>2]|0)+(B<<2)|0;if((c[aw>>2]|0)==0){l=1734;break}c[s>>2]=B+1;ax=c[aw>>2]|0;c[ax+4>>2]=0;aB=ax}else{l=1734}}while(0);L2401:do{if((l|0)==1734){B=ci(16)|0;if((B|0)!=0){c[B>>2]=0;c[B+8>>2]=0;c[B+4>>2]=0;c[B+12>>2]=64}ax=e+412|0;aw=c[ax>>2]|0;ay=aw<<1;x=r|0;au=c[x>>2]|0;do{if((c[f>>2]|0)>>>0>>0){av=ck(au,aw<<3)|0;as=av;if((av|0)==0){aB=B;break L2401}av=c[f>>2]|0;cm(as+(av<<2)|0,0,ay-av<<2|0);c[x>>2]=as;c[f>>2]=ay;av=c[ax>>2]|0;if(av>>>0<=ay>>>0){aC=av;aD=as;break}c[ax>>2]=ay;aC=ay;aD=as}else{aC=aw;aD=au}}while(0);c[ax>>2]=aC+1;c[aD+(aC<<2)>>2]=B;aB=B}}while(0);aC=aB;aB=T+4|0;aD=c[aB>>2]|0;L2412:do{if((aD|0)!=0){f=T|0;r=0;l=aD;do{au=r;while(1){if(au>>>0>=l>>>0){break}if((a[(c[f>>2]|0)+au|0]|0)==92){break}else{au=au+1|0}}if(au>>>0>r>>>0){bS(aC,(c[f>>2]|0)+r|0,au-r|0);aE=c[aB>>2]|0}else{aE=l}z=au+1|0;if(z>>>0>=aE>>>0){break L2412}bU(aC,d[(c[f>>2]|0)+z|0]|0);r=au+2|0;l=c[aB>>2]|0;}while(r>>>0>>0)}}while(0);if(!aA){n=R;o=aU[c[e+68>>2]&31](b,aC,S,az,c[e+104>>2]|0)|0;p=s;q=t;c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}aA=b+4|0;aB=c[aA>>2]|0;do{if((aB|0)!=0){aE=aB-1|0;if((a[(c[b>>2]|0)+aE|0]|0)!=33){break}c[aA>>2]=aE}}while(0);n=R;o=aU[c[e+60>>2]&31](b,aC,S,az,c[e+104>>2]|0)|0;p=s;q=t;c[p>>2]=q;u=(o|0)!=0;v=u?n:0;return v|0}function b5(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;g=i;i=i+16|0;j=g|0;L2435:do{if(h>>>0<3){k=0;l=0}else{if((a[f]|0)!=60){k=0;l=0;break}m=(a[f+1|0]|0)==47?2:1;if((ay(d[f+m|0]|0)|0)==0){k=0;l=0;break}L2439:do{if(m>>>0>>0){n=m;while(1){o=f+n|0;if((ay(d[o]|0)|0)==0){p=a[o]|0;if(!((p<<24>>24|0)==46|(p<<24>>24|0)==43|(p<<24>>24|0)==45)){q=n;break L2439}}p=n+1|0;if(p>>>0>>0){n=p}else{q=p;break}}}else{q=m}}while(0);do{if(q>>>0>1){m=f+q|0;L2448:do{if((a[m]|0)==64){n=h-q|0;if((q|0)==(h|0)){break}else{r=0;s=0}L2450:while(1){p=f+(r+q)|0;L2452:do{if((ay(d[p]|0)|0)==0){switch(d[p]|0){case 64:{break};case 45:case 46:case 95:{t=s;break L2452;break};case 62:{break L2450;break};default:{break L2448}}t=s+1|0}else{t=s}}while(0);p=r+1|0;if(p>>>0>>0){r=p;s=t}else{break L2448}}n=(s|0)==1?r+1|0:0;if((n|0)==0){break}k=n+q|0;l=2;break L2435}}while(0);if(q>>>0<=2){u=q;break}n=(a[m]|0)==58;p=n&1;o=p+q|0;if(o>>>0>=h>>>0|n^1){u=o;break}else{v=o}L2460:while(1){w=a[f+v|0]|0;switch(w<<24>>24){case 92:{x=v+2|0;break};case 62:case 39:case 34:case 32:case 10:{break L2460;break};default:{x=v+1|0}}if(x>>>0>>0){v=x}else{k=0;l=p;break L2435}}if(!(v>>>0>o>>>0&w<<24>>24==62)){u=v;break}k=v+1|0;l=p;break L2435}else{u=q}}while(0);while(1){if(u>>>0>=h>>>0){k=0;l=0;break L2435}m=u+1|0;if((a[f+u|0]|0)==62){k=m;l=0;break}else{u=m}}}}while(0);u=j|0;c[u>>2]=f;h=j+4|0;c[h>>2]=k;c[j+8>>2]=0;c[j+12>>2]=0;if(k>>>0<=2){y=0;z=(y|0)==0;A=z?0:k;i=g;return A|0}q=e+44|0;if((c[q>>2]|0)==0|(l|0)==0){v=c[e+72>>2]|0;if((v|0)==0){y=0;z=(y|0)==0;A=z?0:k;i=g;return A|0}y=aV[v&15](b,j,c[e+104>>2]|0)|0;z=(y|0)==0;A=z?0:k;i=g;return A|0}j=e+408|0;v=e+412|0;w=c[v>>2]|0;x=e+416|0;do{if(w>>>0<(c[x>>2]|0)>>>0){r=(c[j>>2]|0)+(w<<2)|0;if((c[r>>2]|0)==0){B=1803;break}c[v>>2]=w+1;s=c[r>>2]|0;c[s+4>>2]=0;C=s}else{B=1803}}while(0);L2485:do{if((B|0)==1803){w=ci(16)|0;if((w|0)!=0){c[w>>2]=0;c[w+8>>2]=0;c[w+4>>2]=0;c[w+12>>2]=64}s=c[v>>2]|0;r=s<<1;t=j|0;m=c[t>>2]|0;do{if((c[x>>2]|0)>>>0>>0){n=ck(m,s<<3)|0;D=n;if((n|0)==0){C=w;break L2485}n=c[x>>2]|0;cm(D+(n<<2)|0,0,r-n<<2|0);c[t>>2]=D;c[x>>2]=r;n=c[v>>2]|0;if(n>>>0<=r>>>0){E=n;F=D;break}c[v>>2]=r;E=r;F=D}else{E=s;F=m}}while(0);c[v>>2]=E+1;c[F+(E<<2)>>2]=w;C=w}}while(0);E=C;C=f+1|0;c[u>>2]=C;f=k-2|0;c[h>>2]=f;L2496:do{if((f|0)!=0){F=0;x=f;j=C;while(1){B=F;while(1){if(B>>>0>=x>>>0){break}if((a[j+B|0]|0)==92){break}else{B=B+1|0}}if(B>>>0>F>>>0){bS(E,j+F|0,B-F|0);G=c[h>>2]|0}else{G=x}p=B+1|0;if(p>>>0>=G>>>0){break L2496}bU(E,d[(c[u>>2]|0)+p|0]|0);p=B+2|0;o=c[h>>2]|0;if(p>>>0>=o>>>0){break L2496}F=p;x=o;j=c[u>>2]|0}}}while(0);u=aY[c[q>>2]&3](b,E,l,c[e+104>>2]|0)|0;c[v>>2]=(c[v>>2]|0)-1;y=u;z=(y|0)==0;A=z?0:k;i=g;return A|0}function b6(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;f=i;i=i+16|0;h=f|0;cm(h|0,0,16);if(g>>>0<=1){if((g|0)!=1){j=2;i=f;return j|0}bU(a,d[e]|0);j=2;i=f;return j|0}g=e+1|0;e=d[g]|0;if((aQ(1736,e|0,24)|0)==0){j=0;i=f;return j|0}k=c[b+92>>2]|0;if((k|0)==0){bU(a,e);j=2;i=f;return j|0}else{c[h>>2]=g;c[h+4>>2]=1;aW[k&15](a,h,c[b+104>>2]|0);j=2;i=f;return j|0}return 0}function b7(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;g=i;i=i+16|0;j=g|0;cm(j|0,0,16);if(h>>>0>1){k=(a[f+1|0]|0)==35?2:1}else{k=1}do{if(k>>>0>=h>>>0){l=0;m=1852;break}n=f+k|0;k=k+1|0}while((ay(d[n]|0)|0)!=0);if((m|0)==1852){i=g;return l|0}if((a[n]|0)!=59){l=0;i=g;return l|0}n=c[e+88>>2]|0;if((n|0)==0){bS(b,f,k);l=k;i=g;return l|0}else{c[j>>2]=f;c[j+4>>2]=k;aW[n&15](b,j,c[e+104>>2]|0);l=k;i=g;return l|0}return 0}function b8(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;i=e+44|0;if((c[i>>2]|0)==0){j=0;return j|0}if((c[e+428>>2]|0)!=0){j=0;return j|0}k=e+408|0;l=e+412|0;m=c[l>>2]|0;n=e+416|0;do{if(m>>>0<(c[n>>2]|0)>>>0){o=(c[k>>2]|0)+(m<<2)|0;if((c[o>>2]|0)==0){p=1858;break}c[l>>2]=m+1;q=c[o>>2]|0;c[q+4>>2]=0;r=q}else{p=1858}}while(0);L2553:do{if((p|0)==1858){m=ci(16)|0;if((m|0)!=0){c[m>>2]=0;c[m+8>>2]=0;c[m+4>>2]=0;c[m+12>>2]=64}q=c[l>>2]|0;o=q<<1;s=k|0;t=c[s>>2]|0;do{if((c[n>>2]|0)>>>0>>0){u=ck(t,q<<3)|0;v=u;if((u|0)==0){r=m;break L2553}u=c[n>>2]|0;cm(v+(u<<2)|0,0,o-u<<2|0);c[s>>2]=v;c[n>>2]=o;u=c[l>>2]|0;if(u>>>0<=o>>>0){w=u;x=v;break}c[l>>2]=o;w=o;x=v}else{w=q;x=t}}while(0);c[l>>2]=w+1;c[x+(w<<2)>>2]=m;r=m}}while(0);w=r;L2564:do{if(h>>>0<4){y=0}else{if((a[f+1|0]|0)!=47){y=0;break}if((a[f+2|0]|0)==47){z=0}else{y=0;break}while(1){if(z>>>0>=g>>>0){break}if((aE(d[f+~z|0]|0)|0)==0){break}else{z=z+1|0}}m=f+(-z|0)|0;r=z+h|0;x=0;L2571:while(1){n=c[224+(x<<2)>>2]|0;k=cq(n|0)|0;do{if(k>>>0>>0){if((cr(m|0,n|0,k|0)|0)!=0){break}p=f+(k-z)|0;if((ay(d[p]|0)|0)!=0){break L2571}t=a[p]|0;if((t<<24>>24|0)==35|(t<<24>>24|0)==47|(t<<24>>24|0)==63){break L2571}}}while(0);k=x+1|0;if(k>>>0<14){x=k}else{y=0;break L2564}}if((ay(d[f+3|0]|0)|0)==0){y=0;break}x=h-4|0;if(x>>>0>1){A=1;B=0}else{y=0;break}L2580:while(1){r=f+(A+3)|0;k=a[r]|0;do{if(k<<24>>24==46){C=B+1|0}else{if((ay(k&255|0)|0)!=0){C=B;break}if((a[r]|0)==45){C=B}else{D=A;E=B;break L2580}}}while(0);r=A+1|0;if(r>>>0>>0){A=r;B=C}else{D=r;E=C;break}}x=(E|0)!=0?D:0;if((x|0)==0){y=0;break}r=x+3|0;while(1){if(r>>>0>=h>>>0){break}if((aF(d[f+r|0]|0)|0)==0){r=r+1|0}else{break}}x=bP(f,r)|0;if((x|0)==0){y=0;break}bS(w,m,x+z|0);k=b+4|0;c[k>>2]=(c[k>>2]|0)-z;aY[c[i>>2]&3](b,w,1,c[e+104>>2]|0)|0;y=x}}while(0);c[l>>2]=(c[l>>2]|0)-1;j=y;return j|0}function b9(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;i=e+44|0;if((c[i>>2]|0)==0){j=0;return j|0}if((c[e+428>>2]|0)!=0){j=0;return j|0}k=e+408|0;l=e+412|0;m=c[l>>2]|0;n=e+416|0;do{if(m>>>0<(c[n>>2]|0)>>>0){o=(c[k>>2]|0)+(m<<2)|0;if((c[o>>2]|0)==0){p=1899;break}c[l>>2]=m+1;q=c[o>>2]|0;c[q+4>>2]=0;r=q}else{p=1899}}while(0);L2606:do{if((p|0)==1899){m=ci(16)|0;if((m|0)!=0){c[m>>2]=0;c[m+8>>2]=0;c[m+4>>2]=0;c[m+12>>2]=64}q=c[l>>2]|0;o=q<<1;s=k|0;t=c[s>>2]|0;do{if((c[n>>2]|0)>>>0>>0){u=ck(t,q<<3)|0;v=u;if((u|0)==0){r=m;break L2606}u=c[n>>2]|0;cm(v+(u<<2)|0,0,o-u<<2|0);c[s>>2]=v;c[n>>2]=o;u=c[l>>2]|0;if(u>>>0<=o>>>0){w=u;x=v;break}c[l>>2]=o;w=o;x=v}else{w=q;x=t}}while(0);c[l>>2]=w+1;c[x+(w<<2)>>2]=m;r=m}}while(0);w=r;do{if((g|0)==0){y=0}else{r=0;while(1){x=d[f+~r|0]|0;if((ay(x|0)|0)==0){if((aQ(2184,x|0,5)|0)==0){z=r;break}}x=r+1|0;if(x>>>0>>0){r=x}else{z=x;break}}if((z|0)==0){y=0;break}r=h-1|0;if((h|0)==0){y=0;break}else{A=0;B=0;C=0}L2625:while(1){m=a[f+C|0]|0;do{if((ay(m&255|0)|0)==0){if((m<<24>>24|0)==64){D=B;E=A+1|0;break}else if((m<<24>>24|0)==45|(m<<24>>24|0)==95){D=B;E=A;break}else if((m<<24>>24|0)!=46){F=A;G=B;H=C;break L2625}if(C>>>0>=r>>>0){F=A;G=B;H=C;break L2625}D=B+1|0;E=A}else{D=B;E=A}}while(0);m=C+1|0;if(m>>>0>>0){A=E;B=D;C=m}else{F=E;G=D;H=m;break}}if((F|0)!=1|H>>>0<2|(G|0)==0){y=0;break}r=bP(f,H)|0;if((r|0)==0){y=0;break}bS(w,f+(-z|0)|0,r+z|0);m=b+4|0;c[m>>2]=(c[m>>2]|0)-z;aY[c[i>>2]&3](b,w,2,c[e+104>>2]|0)|0;y=r}}while(0);c[l>>2]=(c[l>>2]|0)-1;j=y;return j|0}function ca(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;i=e+68|0;if((c[i>>2]|0)==0){j=0;return j|0}if((c[e+428>>2]|0)!=0){j=0;return j|0}k=e+408|0;l=e+412|0;m=c[l>>2]|0;n=e+416|0;do{if(m>>>0<(c[n>>2]|0)>>>0){o=(c[k>>2]|0)+(m<<2)|0;if((c[o>>2]|0)==0){p=1931;break}c[l>>2]=m+1;q=c[o>>2]|0;c[q+4>>2]=0;r=q}else{p=1931}}while(0);L2649:do{if((p|0)==1931){m=ci(16)|0;if((m|0)!=0){c[m>>2]=0;c[m+8>>2]=0;c[m+4>>2]=0;c[m+12>>2]=64}q=c[l>>2]|0;o=q<<1;s=k|0;t=c[s>>2]|0;do{if((c[n>>2]|0)>>>0>>0){u=ck(t,q<<3)|0;v=u;if((u|0)==0){r=m;break L2649}u=c[n>>2]|0;cm(v+(u<<2)|0,0,o-u<<2|0);c[s>>2]=v;c[n>>2]=o;u=c[l>>2]|0;if(u>>>0<=o>>>0){w=u;x=v;break}c[l>>2]=o;w=o;x=v}else{w=q;x=t}}while(0);c[l>>2]=w+1;c[x+(w<<2)>>2]=m;r=m}}while(0);w=r;do{if((g|0)==0){p=1941}else{x=f-1|0;if((av(d[x]|0)|0)!=0){p=1941;break}if((aF(d[x]|0)|0)==0|h>>>0<4){p=1954}else{p=1942}}}while(0);if((p|0)==1941){if(h>>>0<4){p=1954}else{p=1942}}do{if((p|0)==1942){if((cp(f|0,2312,4)|0)!=0){p=1954;break}if((ay(d[f]|0)|0)==0){p=1954;break}g=h-1|0;if(g>>>0>1){y=1;z=0}else{p=1954;break}L2669:while(1){x=f+y|0;t=a[x]|0;do{if(t<<24>>24==46){A=z+1|0}else{if((ay(t&255|0)|0)!=0){A=z;break}if((a[x]|0)==45){A=z}else{B=y;C=z;break L2669}}}while(0);x=y+1|0;if(x>>>0>>0){y=x;z=A}else{B=x;C=A;break}}g=(C|0)!=0?B:0;if((g|0)==0){p=1954;break}else{D=g}while(1){if(D>>>0>=h>>>0){break}if((aF(d[f+D|0]|0)|0)==0){D=D+1|0}else{break}}g=bP(f,D)|0;if((g|0)==0){p=1954;break}bS(w,f,g);m=c[l>>2]|0;do{if(m>>>0<(c[n>>2]|0)>>>0){x=(c[k>>2]|0)+(m<<2)|0;if((c[x>>2]|0)==0){p=1958;break}c[l>>2]=m+1;t=c[x>>2]|0;c[t+4>>2]=0;E=t}else{p=1958}}while(0);L2685:do{if((p|0)==1958){m=ci(16)|0;if((m|0)!=0){c[m>>2]=0;c[m+8>>2]=0;c[m+4>>2]=0;c[m+12>>2]=64}t=c[l>>2]|0;x=t<<1;q=k|0;o=c[q>>2]|0;do{if((c[n>>2]|0)>>>0>>0){s=ck(o,t<<3)|0;v=s;if((s|0)==0){E=m;break L2685}s=c[n>>2]|0;cm(v+(s<<2)|0,0,x-s<<2|0);c[q>>2]=v;c[n>>2]=x;s=c[l>>2]|0;if(s>>>0<=x>>>0){F=s;G=v;break}c[l>>2]=x;F=x;G=v}else{F=t;G=o}}while(0);c[l>>2]=F+1;c[G+(F<<2)>>2]=m;E=m}}while(0);o=E;bS(o,1784,7);bS(o,c[r>>2]|0,c[r+4>>2]|0);t=e+92|0;if((c[t>>2]|0)==0){x=c[i>>2]|0;q=c[e+104>>2]|0;aU[x&31](b,o,0,w,q)|0;H=c[l>>2]|0}else{q=c[l>>2]|0;do{if(q>>>0<(c[n>>2]|0)>>>0){x=(c[k>>2]|0)+(q<<2)|0;if((c[x>>2]|0)==0){p=1969;break}c[l>>2]=q+1;v=c[x>>2]|0;c[v+4>>2]=0;I=v}else{p=1969}}while(0);L2701:do{if((p|0)==1969){q=ci(16)|0;if((q|0)!=0){c[q>>2]=0;c[q+8>>2]=0;c[q+4>>2]=0;c[q+12>>2]=64}v=c[l>>2]|0;x=v<<1;s=k|0;u=c[s>>2]|0;do{if((c[n>>2]|0)>>>0>>0){J=ck(u,v<<3)|0;K=J;if((J|0)==0){I=q;break L2701}J=c[n>>2]|0;cm(K+(J<<2)|0,0,x-J<<2|0);c[s>>2]=K;c[n>>2]=x;J=c[l>>2]|0;if(J>>>0<=x>>>0){L=J;M=K;break}c[l>>2]=x;L=x;M=K}else{L=v;M=u}}while(0);c[l>>2]=L+1;c[M+(L<<2)>>2]=q;I=q}}while(0);u=I;v=e+104|0;aW[c[t>>2]&15](u,w,c[v>>2]|0);x=c[i>>2]|0;s=c[v>>2]|0;aU[x&31](b,o,0,u,s)|0;s=(c[l>>2]|0)-1|0;c[l>>2]=s;H=s}s=H-1|0;c[l>>2]=s;N=s;O=g}}while(0);if((p|0)==1954){N=c[l>>2]|0;O=0}c[l>>2]=N-1;j=O;return j|0}function cb(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;g=e+44|0;if((c[g>>2]|0)==0){i=0;return i|0}if((c[e+428>>2]|0)!=0){i=0;return i|0}j=e+408|0;k=e+412|0;l=c[k>>2]|0;m=e+416|0;do{if(l>>>0<(c[m>>2]|0)>>>0){n=(c[j>>2]|0)+(l<<2)|0;if((c[n>>2]|0)==0){o=1989;break}c[k>>2]=l+1;p=c[n>>2]|0;c[p+4>>2]=0;q=p}else{o=1989}}while(0);L2728:do{if((o|0)==1989){l=ci(16)|0;if((l|0)!=0){c[l>>2]=0;c[l+8>>2]=0;c[l+4>>2]=0;c[l+12>>2]=64}p=c[k>>2]|0;n=p<<1;r=j|0;s=c[r>>2]|0;do{if((c[m>>2]|0)>>>0>>0){t=ck(s,p<<3)|0;u=t;if((t|0)==0){q=l;break L2728}t=c[m>>2]|0;cm(u+(t<<2)|0,0,n-t<<2|0);c[r>>2]=u;c[m>>2]=n;t=c[k>>2]|0;if(t>>>0<=n>>>0){v=t;w=u;break}c[k>>2]=n;v=n;w=u}else{v=p;w=s}}while(0);c[k>>2]=v+1;c[w+(v<<2)>>2]=l;q=l}}while(0);v=q;L2739:do{if(h>>>0<3){x=0}else{L2741:do{if((aB(f|0,2112,3)|0)==0){L2743:do{if((cr(f+3|0,2088,4)|0)==0){q=3;while(1){w=q+10|0;if(w>>>0>h>>>0){o=2001}else{if((cr(f+q|0,2048,10)|0)==0){y=10;z=w}else{o=2001}}if((o|0)==2001){o=0;w=q+2|0;if(w>>>0>>0){A=(cr(f+q|0,2024,2)|0)==0?w:q}else{A=q}if((ay(d[f+A|0]|0)|0)==0){break L2741}y=24;z=A+1|0}L2755:do{if(z>>>0>>0){w=z;while(1){m=f+w|0;if((ay(d[m]|0)|0)==0){if((a[m]|0)!=95){B=w;C=1;break L2755}}m=w+1|0;if(m>>>0>>0){w=m}else{B=m;C=0;break}}}else{B=z;C=0}}while(0);w=B-q|0;if(w>>>0<2|w>>>0>y>>>0){break L2741}if(!C){D=B;break L2743}w=a[f+B|0]|0;if(!((w<<24>>24|0)==45|(w<<24>>24|0)==43)){D=B;break L2743}w=B+1|0;if((B|0)==0){D=w;break}else{q=w}}}else{q=3;while(1){w=q+10|0;if(w>>>0>h>>>0){o=2015}else{if((cr(f+q|0,2048,10)|0)==0){E=10;F=w}else{o=2015}}if((o|0)==2015){o=0;w=q+2|0;if(w>>>0>>0){G=(cr(f+q|0,2024,2)|0)==0?w:q}else{G=q}if((ay(d[f+G|0]|0)|0)==0){break L2741}E=24;F=G+1|0}L2776:do{if(F>>>0>>0){w=F;while(1){m=f+w|0;if((ay(d[m]|0)|0)==0){if((a[m]|0)!=95){H=w;I=1;break L2776}}m=w+1|0;if(m>>>0>>0){w=m}else{H=m;I=0;break}}}else{H=F;I=0}}while(0);w=H-q|0;if(w>>>0<2|w>>>0>E>>>0){break L2741}if(!I){D=H;break L2743}if((a[f+H|0]|0)!=43){D=H;break L2743}w=H+1|0;if((H|0)==0){D=w;break}else{q=w}}}}while(0);L2787:do{if(D>>>0>>0){if((a[f+D|0]|0)==47){J=D;K=47}else{L=D;break}while(1){if((ay(K|0)|0)==0){q=a[f+J|0]|0;if(!((q<<24>>24|0)==95|(q<<24>>24|0)==47|(q<<24>>24|0)==45)){L=J;break L2787}}q=J+1|0;if(q>>>0>=h>>>0){L=q;break L2787}J=q;K=d[f+q|0]|0}}else{L=D}}while(0);bS(v,f,L);if((L|0)==0){break}q=c[g>>2]|0;w=c[e+104>>2]|0;aY[q&3](b,v,1,w)|0;x=L;break L2739}}while(0);if(h>>>0<6){x=0;break}if((aB(f|0,2e3,3)|0)!=0){x=0;break}l=f+3|0;if((ay(d[l]|0)|0)==0){w=a[l]|0;if(!((w<<24>>24|0)==95|(w<<24>>24|0)==45)){x=0;break}}if(h>>>0>4){w=4;while(1){l=f+w|0;if((ay(d[l]|0)|0)==0){q=a[l]|0;if(!((q<<24>>24|0)==95|(q<<24>>24|0)==47|(q<<24>>24|0)==45)){M=w;break}}q=w+1|0;if(q>>>0>>0){w=q}else{M=q;break}}bS(v,f,M);if((M|0)==0){x=0;break}else{N=M}}else{bS(v,f,4);N=4}w=c[g>>2]|0;q=c[e+104>>2]|0;aY[w&3](b,v,1,q)|0;x=N}}while(0);c[k>>2]=(c[k>>2]|0)-1;i=x;return i|0}function cc(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;if(c>>>0>1){e=1}else{f=0;return f|0}L2817:while(1){L2819:do{if(e>>>0>>0){g=e;while(1){h=a[b+g|0]|0;if(h<<24>>24==d<<24>>24){i=g;break L2819}if((h<<24>>24|0)==96|(h<<24>>24|0)==91){i=g;break L2819}h=g+1|0;if(h>>>0>>0){g=h}else{i=h;break}}}else{i=e}}while(0);if((i|0)==(c|0)){f=0;j=2087;break}g=a[b+i|0]|0;if(g<<24>>24==d<<24>>24){f=i;j=2086;break}do{if((i|0)==0){j=2062}else{if((a[b+(i-1)|0]|0)!=92){j=2062;break}k=i+1|0}}while(0);do{if((j|0)==2062){j=0;if((g<<24>>24|0)==96){if(i>>>0>>0){l=i;m=0;n=1}else{f=0;j=2089;break L2817}while(1){if(!n){break}h=l+1|0;if(h>>>0>=c>>>0){f=0;j=2090;break L2817}l=h;m=m+1|0;n=(a[b+h|0]|0)==96}h=l>>>0>>0;if(h&(m|0)!=0){o=l;p=0;q=0;while(1){r=a[b+o|0]|0;if((q|0)==0){s=r<<24>>24==d<<24>>24?o:0}else{s=q}t=r<<24>>24==96?p+1|0:0;r=o+1|0;u=r>>>0>>0;if(u&t>>>0>>0){o=r;p=t;q=s}else{v=r;w=s;x=u;break}}}else{v=l;w=0;x=h}if(x){k=v;break}else{f=w;j=2091;break L2817}}else if((g<<24>>24|0)!=91){k=i;break}q=i+1|0;L2847:do{if(q>>>0>>0){p=i;o=0;u=q;while(1){r=a[b+u|0]|0;if(r<<24>>24==93){y=p;z=o;break L2847}t=(o|0)==0&r<<24>>24==d<<24>>24?u:o;r=u+1|0;if(r>>>0>>0){p=u;o=t;u=r}else{y=u;z=t;break}}}else{y=i;z=0}}while(0);q=y+2|0;if(q>>>0>>0){A=q}else{f=z;j=2088;break L2817}while(1){B=a[b+A|0]|0;if(!((B<<24>>24|0)==32|(B<<24>>24|0)==10)){break}q=A+1|0;if(q>>>0>>0){A=q}else{f=z;j=2092;break L2817}}q=B&255;if((q|0)==40){C=41}else if((q|0)==91){C=93}else{if((z|0)==0){k=A;break}else{f=z;j=2093;break L2817}}q=A+1|0;if(q>>>0>>0){D=A;E=z;F=q}else{f=z;j=2094;break L2817}while(1){q=a[b+F|0]|0;if((q&255|0)==(C|0)){break}h=(E|0)==0&q<<24>>24==d<<24>>24?F:E;q=F+1|0;if(q>>>0>>0){D=F;E=h;F=q}else{f=h;j=2096;break L2817}}k=D+2|0}}while(0);if(k>>>0>>0){e=k}else{f=0;j=2095;break}}if((j|0)==2087){return f|0}else if((j|0)==2088){return f|0}else if((j|0)==2089){return f|0}else if((j|0)==2086){return f|0}else if((j|0)==2096){return f|0}else if((j|0)==2094){return f|0}else if((j|0)==2095){return f|0}else if((j|0)==2092){return f|0}else if((j|0)==2093){return f|0}else if((j|0)==2090){return f|0}else if((j|0)==2091){return f|0}return 0}function cd(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=d+84|0;if((c[f>>2]|0)==0|g>>>0<2){h=0;return h|0}i=a[e+1|0]|0;L2881:do{if(i<<24>>24==40){j=2;while(1){if(j>>>0>=g>>>0){break}if((a[e+j|0]|0)==41){break}if((a[e+(j-1)|0]|0)==92){break}else{j=j+1|0}}if((j|0)==(g|0)){h=0}else{k=j;l=2;m=2108;break}return h|0}else{if(g>>>0>1){n=1;o=i}else{p=1;break}while(1){if((o<<24>>24|0)==32|(o<<24>>24|0)==10){k=n;l=1;m=2108;break L2881}q=n+1|0;if(q>>>0>=g>>>0){k=q;l=1;m=2108;break L2881}n=q;o=a[e+q|0]|0}}}while(0);do{if((m|0)==2108){if((k|0)==(l|0)){p=l;break}o=k-l|0;n=d+408|0;g=d+412|0;i=c[g>>2]|0;j=d+416|0;do{if(i>>>0<(c[j>>2]|0)>>>0){q=(c[n>>2]|0)+(i<<2)|0;if((c[q>>2]|0)==0){m=2113;break}c[g>>2]=i+1;r=c[q>>2]|0;c[r+4>>2]=0;s=r}else{m=2113}}while(0);L2899:do{if((m|0)==2113){i=ci(16)|0;if((i|0)!=0){c[i>>2]=0;c[i+8>>2]=0;c[i+4>>2]=0;c[i+12>>2]=64}r=c[g>>2]|0;q=r<<1;t=n|0;u=c[t>>2]|0;do{if((c[j>>2]|0)>>>0>>0){v=ck(u,r<<3)|0;w=v;if((v|0)==0){s=i;break L2899}v=c[j>>2]|0;cm(w+(v<<2)|0,0,q-v<<2|0);c[t>>2]=w;c[j>>2]=q;v=c[g>>2]|0;if(v>>>0<=q>>>0){x=v;y=w;break}c[g>>2]=q;x=q;y=w}else{x=r;y=u}}while(0);c[g>>2]=x+1;c[y+(x<<2)>>2]=i;s=i}}while(0);j=s;b0(j,d,e+l|0,o);n=c[f>>2]|0;u=c[d+104>>2]|0;aV[n&15](b,j,u)|0;c[g>>2]=(c[g>>2]|0)-1;h=((l|0)==2)+k|0;return h|0}}while(0);h=(p|0)==2?3:0;return h|0}function ce(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;h=d+56|0;if((c[h>>2]|0)==0){i=0;return i|0}do{if(f>>>0>1){if((a[e]|0)!=g<<24>>24){j=0;break}j=(a[e+1|0]|0)==g<<24>>24|0}else{j=0}}while(0);if(j>>>0>=f>>>0){i=0;return i|0}k=d+420|0;l=g<<24>>24==95;m=j;while(1){j=cc(e+m|0,f-m|0,g)|0;if((j|0)==0){i=0;n=2154;break}o=j+m|0;if(o>>>0>=f>>>0){i=0;n=2153;break}if((a[e+o|0]|0)!=g<<24>>24){m=o;continue}j=a[e+(o-1)|0]|0;if((j<<24>>24|0)==32|(j<<24>>24|0)==10){m=o;continue}if(!((c[k>>2]&1|0)!=0&l)){n=2140;break}j=o+1|0;if((j|0)==(f|0)){n=2140;break}p=a[e+j|0]|0;if((p<<24>>24|0)==32|(p<<24>>24|0)==10){n=2140;break}if((av(p&255|0)|0)==0){m=o}else{n=2140;break}}if((n|0)==2140){m=d+408|0;f=d+412|0;l=c[f>>2]|0;k=d+416|0;do{if(l>>>0<(c[k>>2]|0)>>>0){g=(c[m>>2]|0)+(l<<2)|0;if((c[g>>2]|0)==0){n=2143;break}c[f>>2]=l+1;p=c[g>>2]|0;c[p+4>>2]=0;q=p}else{n=2143}}while(0);L2938:do{if((n|0)==2143){l=ci(16)|0;if((l|0)!=0){c[l>>2]=0;c[l+8>>2]=0;c[l+4>>2]=0;c[l+12>>2]=64}p=c[f>>2]|0;g=p<<1;j=m|0;r=c[j>>2]|0;do{if((c[k>>2]|0)>>>0>>0){s=ck(r,p<<3)|0;t=s;if((s|0)==0){q=l;break L2938}s=c[k>>2]|0;cm(t+(s<<2)|0,0,g-s<<2|0);c[j>>2]=t;c[k>>2]=g;s=c[f>>2]|0;if(s>>>0<=g>>>0){u=s;v=t;break}c[f>>2]=g;u=g;v=t}else{u=p;v=r}}while(0);c[f>>2]=u+1;c[v+(u<<2)>>2]=l;q=l}}while(0);u=q;b0(u,d,e,o);e=aV[c[h>>2]&15](b,u,c[d+104>>2]|0)|0;c[f>>2]=(c[f>>2]|0)-1;i=(e|0)==0?0:o+1|0;return i|0}else if((n|0)==2153){return i|0}else if((n|0)==2154){return i|0}return 0}function cf(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;h=c[(g<<24>>24==126?d+80|0:d+52|0)>>2]|0;if((h|0)==0|(f|0)==0){i=0;return i|0}else{j=0}while(1){k=cc(e+j|0,f-j|0,g)|0;if((k|0)==0){i=0;l=2177;break}m=k+j|0;k=m+1|0;if(k>>>0>=f>>>0){i=0;l=2176;break}if((a[e+m|0]|0)!=g<<24>>24){j=k;continue}if((a[e+k|0]|0)!=g<<24>>24|(m|0)==0){j=k;continue}n=a[e+(m-1)|0]|0;if((n<<24>>24|0)==32|(n<<24>>24|0)==10){j=k}else{l=2163;break}}if((l|0)==2163){j=d+408|0;g=d+412|0;f=c[g>>2]|0;k=d+416|0;do{if(f>>>0<(c[k>>2]|0)>>>0){n=(c[j>>2]|0)+(f<<2)|0;if((c[n>>2]|0)==0){l=2166;break}c[g>>2]=f+1;o=c[n>>2]|0;c[o+4>>2]=0;p=o}else{l=2166}}while(0);L2966:do{if((l|0)==2166){f=ci(16)|0;if((f|0)!=0){c[f>>2]=0;c[f+8>>2]=0;c[f+4>>2]=0;c[f+12>>2]=64}o=c[g>>2]|0;n=o<<1;q=j|0;r=c[q>>2]|0;do{if((c[k>>2]|0)>>>0>>0){s=ck(r,o<<3)|0;t=s;if((s|0)==0){p=f;break L2966}s=c[k>>2]|0;cm(t+(s<<2)|0,0,n-s<<2|0);c[q>>2]=t;c[k>>2]=n;s=c[g>>2]|0;if(s>>>0<=n>>>0){u=s;v=t;break}c[g>>2]=n;u=n;v=t}else{u=o;v=r}}while(0);c[g>>2]=u+1;c[v+(u<<2)>>2]=f;p=f}}while(0);u=p;b0(u,d,e,m);e=aV[h&15](b,u,c[d+104>>2]|0)|0;c[g>>2]=(c[g>>2]|0)-1;i=(e|0)==0?0:m+2|0;return i|0}else if((l|0)==2176){return i|0}else if((l|0)==2177){return i|0}return 0}function cg(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;k=i;i=i+16|0;l=k|0;m=d+40|0;if((c[m>>2]|0)==0){i=k;return}n=d+36|0;if((c[n>>2]|0)==0){i=k;return}o=d+408|0;p=d+412|0;q=c[p>>2]|0;r=d+416|0;do{if(q>>>0<(c[r>>2]|0)>>>0){s=(c[o>>2]|0)+(q<<2)|0;if((c[s>>2]|0)==0){t=2184;break}c[p>>2]=q+1;u=c[s>>2]|0;c[u+4>>2]=0;v=u}else{t=2184}}while(0);L2990:do{if((t|0)==2184){q=ci(16)|0;if((q|0)!=0){c[q>>2]=0;c[q+8>>2]=0;c[q+4>>2]=0;c[q+12>>2]=64}u=c[p>>2]|0;s=u<<1;w=o|0;x=c[w>>2]|0;do{if((c[r>>2]|0)>>>0>>0){y=ck(x,u<<3)|0;z=y;if((y|0)==0){v=q;break L2990}y=c[r>>2]|0;cm(z+(y<<2)|0,0,s-y<<2|0);c[w>>2]=z;c[r>>2]=s;y=c[p>>2]|0;if(y>>>0<=s>>>0){A=y;B=z;break}c[p>>2]=s;A=s;B=z}else{A=u;B=x}}while(0);c[p>>2]=A+1;c[B+(A<<2)>>2]=q;v=q}}while(0);A=v;if((f|0)==0){C=0}else{C=(a[e]|0)==124|0}if((g|0)!=0&C>>>0>>0){v=o|0;o=d+104|0;B=0;x=C;C=c[p>>2]|0;while(1){do{if(C>>>0<(c[r>>2]|0)>>>0){u=(c[v>>2]|0)+(C<<2)|0;if((c[u>>2]|0)==0){t=2201;break}c[p>>2]=C+1;s=c[u>>2]|0;c[s+4>>2]=0;D=s}else{t=2201}}while(0);L3011:do{if((t|0)==2201){t=0;q=ci(16)|0;if((q|0)!=0){c[q>>2]=0;c[q+8>>2]=0;c[q+4>>2]=0;c[q+12>>2]=64}s=c[p>>2]|0;u=s<<1;w=c[v>>2]|0;do{if((c[r>>2]|0)>>>0>>0){z=ck(w,s<<3)|0;y=z;if((z|0)==0){D=q;break L3011}z=c[r>>2]|0;cm(y+(z<<2)|0,0,u-z<<2|0);c[v>>2]=y;c[r>>2]=u;z=c[p>>2]|0;if(z>>>0<=u>>>0){E=z;F=y;break}c[p>>2]=u;E=u;F=y}else{E=s;F=w}}while(0);c[p>>2]=E+1;c[F+(E<<2)>>2]=q;D=q}}while(0);w=D;L3022:do{if(x>>>0>>0){s=x;while(1){u=a[e+s|0]|0;if(!((u<<24>>24|0)==32|(u<<24>>24|0)==10)){G=s;break L3022}u=s+1|0;if(u>>>0>>0){s=u}else{G=u;break}}}else{G=x}}while(0);s=G;while(1){if(s>>>0>=f>>>0){break}if((a[e+s|0]|0)==124){break}else{s=s+1|0}}q=s-1|0;L3031:do{if(q>>>0>G>>>0){u=s;y=q;while(1){z=a[e+y|0]|0;if(!((z<<24>>24|0)==32|(z<<24>>24|0)==10)){H=u;break L3031}z=y-1|0;if(z>>>0>G>>>0){u=y;y=z}else{H=y;break}}}else{H=s}}while(0);b0(w,d,e+G|0,H-G|0);a_[c[m>>2]&15](A,w,c[h+(B<<2)>>2]|j,c[o>>2]|0);q=(c[p>>2]|0)-1|0;c[p>>2]=q;y=s+1|0;u=B+1|0;if(u>>>0>>0&y>>>0>>0){B=u;x=y;C=q}else{I=u;break}}}else{I=0}if(I>>>0>>0){C=l;x=d+104|0;B=I;while(1){cm(C|0,0,16);a_[c[m>>2]&15](A,l,c[h+(B<<2)>>2]|j,c[x>>2]|0);I=B+1|0;if(I>>>0>>0){B=I}else{J=x;break}}}else{J=d+104|0}aW[c[n>>2]&15](b,A,c[J>>2]|0);c[p>>2]=(c[p>>2]|0)-1;i=k;return}function ch(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;f=cq(b|0)|0;if(d>>>0<=1){g=0;return g|0}h=f+3|0;i=f+2|0;L3048:do{if((e|0)==0){j=1;while(1){k=j+1|0;L3051:do{if(k>>>0>>0){l=j;m=k;n=a[c+j|0]|0;while(1){o=a[c+m|0]|0;if(n<<24>>24==60&o<<24>>24==47){p=l;q=m;break L3051}r=m+1|0;if(r>>>0>>0){l=m;m=r;n=o}else{p=m;q=r;break}}}else{p=j;q=k}}while(0);k=h+p|0;if(k>>>0>=d>>>0){g=0;s=2275;break}m=d-q+1|0;L3058:do{if(h>>>0>>0){if((cr(c+(p+2)|0,b|0,f|0)|0)!=0){break}if((a[c+(i+p)|0]|0)!=62){break}n=m-h|0;if((h|0)==(m|0)){t=1}else{l=0;while(1){r=a[c+(k+l)|0]|0;if((r<<24>>24|0)==10){u=l;break}else if((r<<24>>24|0)!=32){break L3058}r=l+1|0;if(r>>>0>>0){l=r}else{u=r;break}}l=u+1|0;if((l|0)==0){break}else{t=l}}l=t+h|0;L3068:do{if(l>>>0>>0){n=m-l|0;L3070:do{if((l|0)==(m|0)){v=0}else{r=l+p|0;o=0;while(1){w=a[c+(r+o)|0]|0;if((w<<24>>24|0)==10){v=o;break L3070}else if((w<<24>>24|0)!=32){x=0;break L3068}w=o+1|0;if(w>>>0>>0){o=w}else{v=w;break}}}}while(0);x=v+1|0}else{x=0}}while(0);n=x+l|0;if((n|0)!=0){y=p;z=n;break L3048}}}while(0);if(q>>>0>>0){j=q}else{g=0;s=2271;break}}if((s|0)==2271){return g|0}else if((s|0)==2275){return g|0}}else{j=1;m=0;L3081:while(1){k=j+1|0;L3083:do{if(k>>>0>>0){n=j;o=m;r=k;w=a[c+j|0]|0;while(1){A=a[c+r|0]|0;if(w<<24>>24==60&A<<24>>24==47){B=n;C=o;D=r;break L3083}E=(A<<24>>24==10)+o|0;F=r+1|0;if(F>>>0>>0){n=r;o=E;r=F;w=A}else{B=r;C=E;D=F;break}}}else{B=j;C=m;D=k}}while(0);if((C|0)>0){if((a[c+(B-1)|0]|0)==10){s=2231}}else{s=2231}L3091:do{if((s|0)==2231){s=0;k=h+B|0;if(k>>>0>=d>>>0){g=0;s=2270;break L3081}r=d-D+1|0;if(h>>>0>=r>>>0){break}if((cr(c+(B+2)|0,b|0,f|0)|0)!=0){break}if((a[c+(i+B)|0]|0)!=62){break}w=r-h|0;if((h|0)==(r|0)){G=1}else{o=0;while(1){n=a[c+(k+o)|0]|0;if((n<<24>>24|0)==10){H=o;break}else if((n<<24>>24|0)!=32){break L3091}n=o+1|0;if(n>>>0>>0){o=n}else{H=n;break}}o=H+1|0;if((o|0)==0){break}else{G=o}}o=G+h|0;L3103:do{if(o>>>0>>0){w=r-o|0;L3105:do{if((o|0)==(r|0)){I=0}else{k=o+B|0;n=0;while(1){l=a[c+(k+n)|0]|0;if((l<<24>>24|0)==10){I=n;break L3105}else if((l<<24>>24|0)!=32){J=0;break L3103}l=n+1|0;if(l>>>0>>0){n=l}else{I=l;break}}}}while(0);J=I+1|0}else{J=0}}while(0);r=J+o|0;if((r|0)!=0){y=B;z=r;break L3048}}}while(0);if(D>>>0>>0){j=D;m=C}else{g=0;s=2273;break}}if((s|0)==2270){return g|0}else if((s|0)==2273){return g|0}}}while(0);g=z+y|0;return g|0}function ci(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,as=0,at=0,au=0,av=0,aw=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aH=0,aI=0,aJ=0;do{if(a>>>0<245){if(a>>>0<11){b=16}else{b=a+11&-8}d=b>>>3;e=c[1164]|0;f=e>>>(d>>>0);if((f&3|0)!=0){g=(f&1^1)+d|0;h=g<<1;i=4696+(h<<2)|0;j=4696+(h+2<<2)|0;h=c[j>>2]|0;k=h+8|0;l=c[k>>2]|0;do{if((i|0)==(l|0)){c[1164]=e&~(1<>>0<(c[1168]|0)>>>0){ar();return 0}m=l+12|0;if((c[m>>2]|0)==(h|0)){c[m>>2]=i;c[j>>2]=l;break}else{ar();return 0}}}while(0);l=g<<3;c[h+4>>2]=l|3;j=h+(l|4)|0;c[j>>2]=c[j>>2]|1;n=k;return n|0}if(b>>>0<=(c[1166]|0)>>>0){o=b;break}if((f|0)!=0){j=2<>>12&16;i=j>>>(l>>>0);j=i>>>5&8;m=i>>>(j>>>0);i=m>>>2&4;p=m>>>(i>>>0);m=p>>>1&2;q=p>>>(m>>>0);p=q>>>1&1;r=(j|l|i|m|p)+(q>>>(p>>>0))|0;p=r<<1;q=4696+(p<<2)|0;m=4696+(p+2<<2)|0;p=c[m>>2]|0;i=p+8|0;l=c[i>>2]|0;do{if((q|0)==(l|0)){c[1164]=e&~(1<>>0<(c[1168]|0)>>>0){ar();return 0}j=l+12|0;if((c[j>>2]|0)==(p|0)){c[j>>2]=q;c[m>>2]=l;break}else{ar();return 0}}}while(0);l=r<<3;m=l-b|0;c[p+4>>2]=b|3;q=p;e=q+b|0;c[q+(b|4)>>2]=m|1;c[q+l>>2]=m;l=c[1166]|0;if((l|0)!=0){q=c[1169]|0;d=l>>>3;l=d<<1;f=4696+(l<<2)|0;k=c[1164]|0;h=1<>2]|0;if(g>>>0>=(c[1168]|0)>>>0){s=g;t=d;break}ar();return 0}}while(0);c[t>>2]=q;c[s+12>>2]=q;c[q+8>>2]=s;c[q+12>>2]=f}c[1166]=m;c[1169]=e;n=i;return n|0}l=c[1165]|0;if((l|0)==0){o=b;break}h=(l&-l)-1|0;l=h>>>12&16;k=h>>>(l>>>0);h=k>>>5&8;p=k>>>(h>>>0);k=p>>>2&4;r=p>>>(k>>>0);p=r>>>1&2;d=r>>>(p>>>0);r=d>>>1&1;g=c[4960+((h|l|k|p|r)+(d>>>(r>>>0))<<2)>>2]|0;r=g;d=g;p=(c[g+4>>2]&-8)-b|0;while(1){g=c[r+16>>2]|0;if((g|0)==0){k=c[r+20>>2]|0;if((k|0)==0){break}else{u=k}}else{u=g}g=(c[u+4>>2]&-8)-b|0;k=g>>>0

>>0;r=u;d=k?u:d;p=k?g:p}r=d;i=c[1168]|0;if(r>>>0>>0){ar();return 0}e=r+b|0;m=e;if(r>>>0>=e>>>0){ar();return 0}e=c[d+24>>2]|0;f=c[d+12>>2]|0;do{if((f|0)==(d|0)){q=d+20|0;g=c[q>>2]|0;if((g|0)==0){k=d+16|0;l=c[k>>2]|0;if((l|0)==0){v=0;break}else{w=l;x=k}}else{w=g;x=q}while(1){q=w+20|0;g=c[q>>2]|0;if((g|0)!=0){w=g;x=q;continue}q=w+16|0;g=c[q>>2]|0;if((g|0)==0){break}else{w=g;x=q}}if(x>>>0>>0){ar();return 0}else{c[x>>2]=0;v=w;break}}else{q=c[d+8>>2]|0;if(q>>>0>>0){ar();return 0}g=q+12|0;if((c[g>>2]|0)!=(d|0)){ar();return 0}k=f+8|0;if((c[k>>2]|0)==(d|0)){c[g>>2]=f;c[k>>2]=q;v=f;break}else{ar();return 0}}}while(0);L3319:do{if((e|0)!=0){f=d+28|0;i=4960+(c[f>>2]<<2)|0;do{if((d|0)==(c[i>>2]|0)){c[i>>2]=v;if((v|0)!=0){break}c[1165]=c[1165]&~(1<>2]);break L3319}else{if(e>>>0<(c[1168]|0)>>>0){ar();return 0}q=e+16|0;if((c[q>>2]|0)==(d|0)){c[q>>2]=v}else{c[e+20>>2]=v}if((v|0)==0){break L3319}}}while(0);if(v>>>0<(c[1168]|0)>>>0){ar();return 0}c[v+24>>2]=e;f=c[d+16>>2]|0;do{if((f|0)!=0){if(f>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[v+16>>2]=f;c[f+24>>2]=v;break}}}while(0);f=c[d+20>>2]|0;if((f|0)==0){break}if(f>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[v+20>>2]=f;c[f+24>>2]=v;break}}}while(0);if(p>>>0<16){e=p+b|0;c[d+4>>2]=e|3;f=r+(e+4)|0;c[f>>2]=c[f>>2]|1}else{c[d+4>>2]=b|3;c[r+(b|4)>>2]=p|1;c[r+(p+b)>>2]=p;f=c[1166]|0;if((f|0)!=0){e=c[1169]|0;i=f>>>3;f=i<<1;q=4696+(f<<2)|0;k=c[1164]|0;g=1<>2]|0;if(l>>>0>=(c[1168]|0)>>>0){y=l;z=i;break}ar();return 0}}while(0);c[z>>2]=e;c[y+12>>2]=e;c[e+8>>2]=y;c[e+12>>2]=q}c[1166]=p;c[1169]=m}f=d+8|0;if((f|0)==0){o=b;break}else{n=f}return n|0}else{if(a>>>0>4294967231){o=-1;break}f=a+11|0;g=f&-8;k=c[1165]|0;if((k|0)==0){o=g;break}r=-g|0;i=f>>>8;do{if((i|0)==0){A=0}else{if(g>>>0>16777215){A=31;break}f=(i+1048320|0)>>>16&8;l=i<>>16&4;j=l<>>16&2;B=14-(h|f|l)+(j<>>15)|0;A=g>>>((B+7|0)>>>0)&1|B<<1}}while(0);i=c[4960+(A<<2)>>2]|0;L3127:do{if((i|0)==0){C=0;D=r;E=0}else{if((A|0)==31){F=0}else{F=25-(A>>>1)|0}d=0;m=r;p=i;q=g<>2]&-8;l=B-g|0;if(l>>>0>>0){if((B|0)==(g|0)){C=p;D=l;E=p;break L3127}else{G=p;H=l}}else{G=d;H=m}l=c[p+20>>2]|0;B=c[p+16+(q>>>31<<2)>>2]|0;j=(l|0)==0|(l|0)==(B|0)?e:l;if((B|0)==0){C=G;D=H;E=j;break}else{d=G;m=H;p=B;q=q<<1;e=j}}}}while(0);if((E|0)==0&(C|0)==0){i=2<>>12&16;e=i>>>(r>>>0);i=e>>>5&8;q=e>>>(i>>>0);e=q>>>2&4;p=q>>>(e>>>0);q=p>>>1&2;m=p>>>(q>>>0);p=m>>>1&1;I=c[4960+((i|r|e|q|p)+(m>>>(p>>>0))<<2)>>2]|0}else{I=E}if((I|0)==0){J=D;K=C}else{p=I;m=D;q=C;while(1){e=(c[p+4>>2]&-8)-g|0;r=e>>>0>>0;i=r?e:m;e=r?p:q;r=c[p+16>>2]|0;if((r|0)!=0){p=r;m=i;q=e;continue}r=c[p+20>>2]|0;if((r|0)==0){J=i;K=e;break}else{p=r;m=i;q=e}}}if((K|0)==0){o=g;break}if(J>>>0>=((c[1166]|0)-g|0)>>>0){o=g;break}q=K;m=c[1168]|0;if(q>>>0>>0){ar();return 0}p=q+g|0;k=p;if(q>>>0>=p>>>0){ar();return 0}e=c[K+24>>2]|0;i=c[K+12>>2]|0;do{if((i|0)==(K|0)){r=K+20|0;d=c[r>>2]|0;if((d|0)==0){j=K+16|0;B=c[j>>2]|0;if((B|0)==0){L=0;break}else{M=B;N=j}}else{M=d;N=r}while(1){r=M+20|0;d=c[r>>2]|0;if((d|0)!=0){M=d;N=r;continue}r=M+16|0;d=c[r>>2]|0;if((d|0)==0){break}else{M=d;N=r}}if(N>>>0>>0){ar();return 0}else{c[N>>2]=0;L=M;break}}else{r=c[K+8>>2]|0;if(r>>>0>>0){ar();return 0}d=r+12|0;if((c[d>>2]|0)!=(K|0)){ar();return 0}j=i+8|0;if((c[j>>2]|0)==(K|0)){c[d>>2]=i;c[j>>2]=r;L=i;break}else{ar();return 0}}}while(0);L3177:do{if((e|0)!=0){i=K+28|0;m=4960+(c[i>>2]<<2)|0;do{if((K|0)==(c[m>>2]|0)){c[m>>2]=L;if((L|0)!=0){break}c[1165]=c[1165]&~(1<>2]);break L3177}else{if(e>>>0<(c[1168]|0)>>>0){ar();return 0}r=e+16|0;if((c[r>>2]|0)==(K|0)){c[r>>2]=L}else{c[e+20>>2]=L}if((L|0)==0){break L3177}}}while(0);if(L>>>0<(c[1168]|0)>>>0){ar();return 0}c[L+24>>2]=e;i=c[K+16>>2]|0;do{if((i|0)!=0){if(i>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[L+16>>2]=i;c[i+24>>2]=L;break}}}while(0);i=c[K+20>>2]|0;if((i|0)==0){break}if(i>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[L+20>>2]=i;c[i+24>>2]=L;break}}}while(0);do{if(J>>>0<16){e=J+g|0;c[K+4>>2]=e|3;i=q+(e+4)|0;c[i>>2]=c[i>>2]|1}else{c[K+4>>2]=g|3;c[q+(g|4)>>2]=J|1;c[q+(J+g)>>2]=J;i=J>>>3;if(J>>>0<256){e=i<<1;m=4696+(e<<2)|0;r=c[1164]|0;j=1<>2]|0;if(d>>>0>=(c[1168]|0)>>>0){O=d;P=i;break}ar();return 0}}while(0);c[P>>2]=k;c[O+12>>2]=k;c[q+(g+8)>>2]=O;c[q+(g+12)>>2]=m;break}e=p;j=J>>>8;do{if((j|0)==0){Q=0}else{if(J>>>0>16777215){Q=31;break}r=(j+1048320|0)>>>16&8;i=j<>>16&4;B=i<>>16&2;l=14-(d|r|i)+(B<>>15)|0;Q=J>>>((l+7|0)>>>0)&1|l<<1}}while(0);j=4960+(Q<<2)|0;c[q+(g+28)>>2]=Q;c[q+(g+20)>>2]=0;c[q+(g+16)>>2]=0;m=c[1165]|0;l=1<>2]=e;c[q+(g+24)>>2]=j;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}if((Q|0)==31){R=0}else{R=25-(Q>>>1)|0}l=J<>2]|0;while(1){if((c[m+4>>2]&-8|0)==(J|0)){break}S=m+16+(l>>>31<<2)|0;j=c[S>>2]|0;if((j|0)==0){T=2426;break}else{l=l<<1;m=j}}if((T|0)==2426){if(S>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[S>>2]=e;c[q+(g+24)>>2]=m;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}}l=m+8|0;j=c[l>>2]|0;i=c[1168]|0;if(m>>>0>>0){ar();return 0}if(j>>>0>>0){ar();return 0}else{c[j+12>>2]=e;c[l>>2]=e;c[q+(g+8)>>2]=j;c[q+(g+12)>>2]=m;c[q+(g+24)>>2]=0;break}}}while(0);q=K+8|0;if((q|0)==0){o=g;break}else{n=q}return n|0}}while(0);K=c[1166]|0;if(o>>>0<=K>>>0){S=K-o|0;J=c[1169]|0;if(S>>>0>15){R=J;c[1169]=R+o;c[1166]=S;c[R+(o+4)>>2]=S|1;c[R+K>>2]=S;c[J+4>>2]=o|3}else{c[1166]=0;c[1169]=0;c[J+4>>2]=K|3;S=J+(K+4)|0;c[S>>2]=c[S>>2]|1}n=J+8|0;return n|0}J=c[1167]|0;if(o>>>0>>0){S=J-o|0;c[1167]=S;J=c[1170]|0;K=J;c[1170]=K+o;c[K+(o+4)>>2]=S|1;c[J+4>>2]=o|3;n=J+8|0;return n|0}do{if((c[1154]|0)==0){J=ax(8)|0;if((J-1&J|0)==0){c[1156]=J;c[1155]=J;c[1157]=-1;c[1158]=-1;c[1159]=0;c[1275]=0;c[1154]=(aG(0)|0)&-16^1431655768;break}else{ar();return 0}}}while(0);J=o+48|0;S=c[1156]|0;K=o+47|0;R=S+K|0;Q=-S|0;S=R&Q;if(S>>>0<=o>>>0){n=0;return n|0}O=c[1274]|0;do{if((O|0)!=0){P=c[1272]|0;L=P+S|0;if(L>>>0<=P>>>0|L>>>0>O>>>0){n=0}else{break}return n|0}}while(0);L3386:do{if((c[1275]&4|0)==0){O=c[1170]|0;L3388:do{if((O|0)==0){T=2456}else{L=O;P=5104;while(1){U=P|0;M=c[U>>2]|0;if(M>>>0<=L>>>0){V=P+4|0;if((M+(c[V>>2]|0)|0)>>>0>L>>>0){break}}M=c[P+8>>2]|0;if((M|0)==0){T=2456;break L3388}else{P=M}}if((P|0)==0){T=2456;break}L=R-(c[1167]|0)&Q;if(L>>>0>=2147483647){W=0;break}m=aK(L|0)|0;e=(m|0)==((c[U>>2]|0)+(c[V>>2]|0)|0);X=e?m:-1;Y=e?L:0;Z=m;_=L;T=2465}}while(0);do{if((T|0)==2456){O=aK(0)|0;if((O|0)==-1){W=0;break}g=O;L=c[1155]|0;m=L-1|0;if((m&g|0)==0){$=S}else{$=S-g+(m+g&-L)|0}L=c[1272]|0;g=L+$|0;if(!($>>>0>o>>>0&$>>>0<2147483647)){W=0;break}m=c[1274]|0;if((m|0)!=0){if(g>>>0<=L>>>0|g>>>0>m>>>0){W=0;break}}m=aK($|0)|0;g=(m|0)==(O|0);X=g?O:-1;Y=g?$:0;Z=m;_=$;T=2465}}while(0);L3408:do{if((T|0)==2465){m=-_|0;if((X|0)!=-1){aa=Y;ab=X;T=2476;break L3386}do{if((Z|0)!=-1&_>>>0<2147483647&_>>>0>>0){g=c[1156]|0;O=K-_+g&-g;if(O>>>0>=2147483647){ac=_;break}if((aK(O|0)|0)==-1){aK(m|0)|0;W=Y;break L3408}else{ac=O+_|0;break}}else{ac=_}}while(0);if((Z|0)==-1){W=Y}else{aa=ac;ab=Z;T=2476;break L3386}}}while(0);c[1275]=c[1275]|4;ad=W;T=2473}else{ad=0;T=2473}}while(0);do{if((T|0)==2473){if(S>>>0>=2147483647){break}W=aK(S|0)|0;Z=aK(0)|0;if(!((Z|0)!=-1&(W|0)!=-1&W>>>0>>0)){break}ac=Z-W|0;Z=ac>>>0>(o+40|0)>>>0;Y=Z?W:-1;if((Y|0)!=-1){aa=Z?ac:ad;ab=Y;T=2476}}}while(0);do{if((T|0)==2476){ad=(c[1272]|0)+aa|0;c[1272]=ad;if(ad>>>0>(c[1273]|0)>>>0){c[1273]=ad}ad=c[1170]|0;L3428:do{if((ad|0)==0){S=c[1168]|0;if((S|0)==0|ab>>>0>>0){c[1168]=ab}c[1276]=ab;c[1277]=aa;c[1279]=0;c[1173]=c[1154];c[1172]=-1;S=0;do{Y=S<<1;ac=4696+(Y<<2)|0;c[4696+(Y+3<<2)>>2]=ac;c[4696+(Y+2<<2)>>2]=ac;S=S+1|0;}while(S>>>0<32);S=ab+8|0;if((S&7|0)==0){ae=0}else{ae=-S&7}S=aa-40-ae|0;c[1170]=ab+ae;c[1167]=S;c[ab+(ae+4)>>2]=S|1;c[ab+(aa-36)>>2]=40;c[1171]=c[1158]}else{S=5104;while(1){af=c[S>>2]|0;ag=S+4|0;ah=c[ag>>2]|0;if((ab|0)==(af+ah|0)){T=2488;break}ac=c[S+8>>2]|0;if((ac|0)==0){break}else{S=ac}}do{if((T|0)==2488){if((c[S+12>>2]&8|0)!=0){break}ac=ad;if(!(ac>>>0>=af>>>0&ac>>>0>>0)){break}c[ag>>2]=ah+aa;ac=c[1170]|0;Y=(c[1167]|0)+aa|0;Z=ac;W=ac+8|0;if((W&7|0)==0){ai=0}else{ai=-W&7}W=Y-ai|0;c[1170]=Z+ai;c[1167]=W;c[Z+(ai+4)>>2]=W|1;c[Z+(Y+4)>>2]=40;c[1171]=c[1158];break L3428}}while(0);if(ab>>>0<(c[1168]|0)>>>0){c[1168]=ab}S=ab+aa|0;Y=5104;while(1){aj=Y|0;if((c[aj>>2]|0)==(S|0)){T=2498;break}Z=c[Y+8>>2]|0;if((Z|0)==0){break}else{Y=Z}}do{if((T|0)==2498){if((c[Y+12>>2]&8|0)!=0){break}c[aj>>2]=ab;S=Y+4|0;c[S>>2]=(c[S>>2]|0)+aa;S=ab+8|0;if((S&7|0)==0){ak=0}else{ak=-S&7}S=ab+(aa+8)|0;if((S&7|0)==0){al=0}else{al=-S&7}S=ab+(al+aa)|0;Z=S;W=ak+o|0;ac=ab+W|0;_=ac;K=S-(ab+ak)-o|0;c[ab+(ak+4)>>2]=o|3;do{if((Z|0)==(c[1170]|0)){J=(c[1167]|0)+K|0;c[1167]=J;c[1170]=_;c[ab+(W+4)>>2]=J|1}else{if((Z|0)==(c[1169]|0)){J=(c[1166]|0)+K|0;c[1166]=J;c[1169]=_;c[ab+(W+4)>>2]=J|1;c[ab+(J+W)>>2]=J;break}J=aa+4|0;X=c[ab+(J+al)>>2]|0;if((X&3|0)==1){$=X&-8;V=X>>>3;L3473:do{if(X>>>0<256){U=c[ab+((al|8)+aa)>>2]|0;Q=c[ab+(aa+12+al)>>2]|0;R=4696+(V<<1<<2)|0;do{if((U|0)!=(R|0)){if(U>>>0<(c[1168]|0)>>>0){ar();return 0}if((c[U+12>>2]|0)==(Z|0)){break}ar();return 0}}while(0);if((Q|0)==(U|0)){c[1164]=c[1164]&~(1<>>0<(c[1168]|0)>>>0){ar();return 0}m=Q+8|0;if((c[m>>2]|0)==(Z|0)){am=m;break}ar();return 0}}while(0);c[U+12>>2]=Q;c[am>>2]=U}else{R=S;m=c[ab+((al|24)+aa)>>2]|0;P=c[ab+(aa+12+al)>>2]|0;do{if((P|0)==(R|0)){O=al|16;g=ab+(J+O)|0;L=c[g>>2]|0;if((L|0)==0){e=ab+(O+aa)|0;O=c[e>>2]|0;if((O|0)==0){an=0;break}else{ao=O;ap=e}}else{ao=L;ap=g}while(1){g=ao+20|0;L=c[g>>2]|0;if((L|0)!=0){ao=L;ap=g;continue}g=ao+16|0;L=c[g>>2]|0;if((L|0)==0){break}else{ao=L;ap=g}}if(ap>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[ap>>2]=0;an=ao;break}}else{g=c[ab+((al|8)+aa)>>2]|0;if(g>>>0<(c[1168]|0)>>>0){ar();return 0}L=g+12|0;if((c[L>>2]|0)!=(R|0)){ar();return 0}e=P+8|0;if((c[e>>2]|0)==(R|0)){c[L>>2]=P;c[e>>2]=g;an=P;break}else{ar();return 0}}}while(0);if((m|0)==0){break}P=ab+(aa+28+al)|0;U=4960+(c[P>>2]<<2)|0;do{if((R|0)==(c[U>>2]|0)){c[U>>2]=an;if((an|0)!=0){break}c[1165]=c[1165]&~(1<>2]);break L3473}else{if(m>>>0<(c[1168]|0)>>>0){ar();return 0}Q=m+16|0;if((c[Q>>2]|0)==(R|0)){c[Q>>2]=an}else{c[m+20>>2]=an}if((an|0)==0){break L3473}}}while(0);if(an>>>0<(c[1168]|0)>>>0){ar();return 0}c[an+24>>2]=m;R=al|16;P=c[ab+(R+aa)>>2]|0;do{if((P|0)!=0){if(P>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[an+16>>2]=P;c[P+24>>2]=an;break}}}while(0);P=c[ab+(J+R)>>2]|0;if((P|0)==0){break}if(P>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[an+20>>2]=P;c[P+24>>2]=an;break}}}while(0);aq=ab+(($|al)+aa)|0;as=$+K|0}else{aq=Z;as=K}J=aq+4|0;c[J>>2]=c[J>>2]&-2;c[ab+(W+4)>>2]=as|1;c[ab+(as+W)>>2]=as;J=as>>>3;if(as>>>0<256){V=J<<1;X=4696+(V<<2)|0;P=c[1164]|0;m=1<>2]|0;if(U>>>0>=(c[1168]|0)>>>0){at=U;au=J;break}ar();return 0}}while(0);c[au>>2]=_;c[at+12>>2]=_;c[ab+(W+8)>>2]=at;c[ab+(W+12)>>2]=X;break}V=ac;m=as>>>8;do{if((m|0)==0){av=0}else{if(as>>>0>16777215){av=31;break}P=(m+1048320|0)>>>16&8;$=m<>>16&4;U=$<>>16&2;Q=14-(J|P|$)+(U<<$>>>15)|0;av=as>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=4960+(av<<2)|0;c[ab+(W+28)>>2]=av;c[ab+(W+20)>>2]=0;c[ab+(W+16)>>2]=0;X=c[1165]|0;Q=1<>2]=V;c[ab+(W+24)>>2]=m;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;break}if((av|0)==31){aw=0}else{aw=25-(av>>>1)|0}Q=as<>2]|0;while(1){if((c[X+4>>2]&-8|0)==(as|0)){break}ay=X+16+(Q>>>31<<2)|0;m=c[ay>>2]|0;if((m|0)==0){T=2571;break}else{Q=Q<<1;X=m}}if((T|0)==2571){if(ay>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[ay>>2]=V;c[ab+(W+24)>>2]=X;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;break}}Q=X+8|0;m=c[Q>>2]|0;$=c[1168]|0;if(X>>>0<$>>>0){ar();return 0}if(m>>>0<$>>>0){ar();return 0}else{c[m+12>>2]=V;c[Q>>2]=V;c[ab+(W+8)>>2]=m;c[ab+(W+12)>>2]=X;c[ab+(W+24)>>2]=0;break}}}while(0);n=ab+(ak|8)|0;return n|0}}while(0);Y=ad;W=5104;while(1){az=c[W>>2]|0;if(az>>>0<=Y>>>0){aA=c[W+4>>2]|0;aB=az+aA|0;if(aB>>>0>Y>>>0){break}}W=c[W+8>>2]|0}W=az+(aA-39)|0;if((W&7|0)==0){aC=0}else{aC=-W&7}W=az+(aA-47+aC)|0;ac=W>>>0<(ad+16|0)>>>0?Y:W;W=ac+8|0;_=ab+8|0;if((_&7|0)==0){aD=0}else{aD=-_&7}_=aa-40-aD|0;c[1170]=ab+aD;c[1167]=_;c[ab+(aD+4)>>2]=_|1;c[ab+(aa-36)>>2]=40;c[1171]=c[1158];c[ac+4>>2]=27;c[W>>2]=c[1276];c[W+4>>2]=c[5108>>2];c[W+8>>2]=c[5112>>2];c[W+12>>2]=c[5116>>2];c[1276]=ab;c[1277]=aa;c[1279]=0;c[1278]=W;W=ac+28|0;c[W>>2]=7;if((ac+32|0)>>>0>>0){_=W;while(1){W=_+4|0;c[W>>2]=7;if((_+8|0)>>>0>>0){_=W}else{break}}}if((ac|0)==(Y|0)){break}_=ac-ad|0;W=Y+(_+4)|0;c[W>>2]=c[W>>2]&-2;c[ad+4>>2]=_|1;c[Y+_>>2]=_;W=_>>>3;if(_>>>0<256){K=W<<1;Z=4696+(K<<2)|0;S=c[1164]|0;m=1<>2]|0;if(Q>>>0>=(c[1168]|0)>>>0){aE=Q;aF=W;break}ar();return 0}}while(0);c[aF>>2]=ad;c[aE+12>>2]=ad;c[ad+8>>2]=aE;c[ad+12>>2]=Z;break}K=ad;m=_>>>8;do{if((m|0)==0){aH=0}else{if(_>>>0>16777215){aH=31;break}S=(m+1048320|0)>>>16&8;Y=m<>>16&4;W=Y<>>16&2;Q=14-(ac|S|Y)+(W<>>15)|0;aH=_>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=4960+(aH<<2)|0;c[ad+28>>2]=aH;c[ad+20>>2]=0;c[ad+16>>2]=0;Z=c[1165]|0;Q=1<>2]=K;c[ad+24>>2]=m;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}if((aH|0)==31){aI=0}else{aI=25-(aH>>>1)|0}Q=_<>2]|0;while(1){if((c[Z+4>>2]&-8|0)==(_|0)){break}aJ=Z+16+(Q>>>31<<2)|0;m=c[aJ>>2]|0;if((m|0)==0){T=2606;break}else{Q=Q<<1;Z=m}}if((T|0)==2606){if(aJ>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[aJ>>2]=K;c[ad+24>>2]=Z;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}}Q=Z+8|0;_=c[Q>>2]|0;m=c[1168]|0;if(Z>>>0>>0){ar();return 0}if(_>>>0>>0){ar();return 0}else{c[_+12>>2]=K;c[Q>>2]=K;c[ad+8>>2]=_;c[ad+12>>2]=Z;c[ad+24>>2]=0;break}}}while(0);ad=c[1167]|0;if(ad>>>0<=o>>>0){break}_=ad-o|0;c[1167]=_;ad=c[1170]|0;Q=ad;c[1170]=Q+o;c[Q+(o+4)>>2]=_|1;c[ad+4>>2]=o|3;n=ad+8|0;return n|0}}while(0);c[(aL()|0)>>2]=12;n=0;return n|0}function cj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;if((a|0)==0){return}b=a-8|0;d=b;e=c[1168]|0;if(b>>>0>>0){ar()}f=c[a-4>>2]|0;g=f&3;if((g|0)==1){ar()}h=f&-8;i=a+(h-8)|0;j=i;L3645:do{if((f&1|0)==0){k=c[b>>2]|0;if((g|0)==0){return}l=-8-k|0;m=a+l|0;n=m;o=k+h|0;if(m>>>0>>0){ar()}if((n|0)==(c[1169]|0)){p=a+(h-4)|0;if((c[p>>2]&3|0)!=3){q=n;r=o;break}c[1166]=o;c[p>>2]=c[p>>2]&-2;c[a+(l+4)>>2]=o|1;c[i>>2]=o;return}p=k>>>3;if(k>>>0<256){k=c[a+(l+8)>>2]|0;s=c[a+(l+12)>>2]|0;t=4696+(p<<1<<2)|0;do{if((k|0)!=(t|0)){if(k>>>0>>0){ar()}if((c[k+12>>2]|0)==(n|0)){break}ar()}}while(0);if((s|0)==(k|0)){c[1164]=c[1164]&~(1<>>0>>0){ar()}v=s+8|0;if((c[v>>2]|0)==(n|0)){u=v;break}ar()}}while(0);c[k+12>>2]=s;c[u>>2]=k;q=n;r=o;break}t=m;p=c[a+(l+24)>>2]|0;v=c[a+(l+12)>>2]|0;do{if((v|0)==(t|0)){w=a+(l+20)|0;x=c[w>>2]|0;if((x|0)==0){y=a+(l+16)|0;z=c[y>>2]|0;if((z|0)==0){A=0;break}else{B=z;C=y}}else{B=x;C=w}while(1){w=B+20|0;x=c[w>>2]|0;if((x|0)!=0){B=x;C=w;continue}w=B+16|0;x=c[w>>2]|0;if((x|0)==0){break}else{B=x;C=w}}if(C>>>0>>0){ar()}else{c[C>>2]=0;A=B;break}}else{w=c[a+(l+8)>>2]|0;if(w>>>0>>0){ar()}x=w+12|0;if((c[x>>2]|0)!=(t|0)){ar()}y=v+8|0;if((c[y>>2]|0)==(t|0)){c[x>>2]=v;c[y>>2]=w;A=v;break}else{ar()}}}while(0);if((p|0)==0){q=n;r=o;break}v=a+(l+28)|0;m=4960+(c[v>>2]<<2)|0;do{if((t|0)==(c[m>>2]|0)){c[m>>2]=A;if((A|0)!=0){break}c[1165]=c[1165]&~(1<>2]);q=n;r=o;break L3645}else{if(p>>>0<(c[1168]|0)>>>0){ar()}k=p+16|0;if((c[k>>2]|0)==(t|0)){c[k>>2]=A}else{c[p+20>>2]=A}if((A|0)==0){q=n;r=o;break L3645}}}while(0);if(A>>>0<(c[1168]|0)>>>0){ar()}c[A+24>>2]=p;t=c[a+(l+16)>>2]|0;do{if((t|0)!=0){if(t>>>0<(c[1168]|0)>>>0){ar()}else{c[A+16>>2]=t;c[t+24>>2]=A;break}}}while(0);t=c[a+(l+20)>>2]|0;if((t|0)==0){q=n;r=o;break}if(t>>>0<(c[1168]|0)>>>0){ar()}else{c[A+20>>2]=t;c[t+24>>2]=A;q=n;r=o;break}}else{q=d;r=h}}while(0);d=q;if(d>>>0>=i>>>0){ar()}A=a+(h-4)|0;e=c[A>>2]|0;if((e&1|0)==0){ar()}do{if((e&2|0)==0){if((j|0)==(c[1170]|0)){B=(c[1167]|0)+r|0;c[1167]=B;c[1170]=q;c[q+4>>2]=B|1;if((q|0)!=(c[1169]|0)){return}c[1169]=0;c[1166]=0;return}if((j|0)==(c[1169]|0)){B=(c[1166]|0)+r|0;c[1166]=B;c[1169]=q;c[q+4>>2]=B|1;c[d+B>>2]=B;return}B=(e&-8)+r|0;C=e>>>3;L3747:do{if(e>>>0<256){u=c[a+h>>2]|0;g=c[a+(h|4)>>2]|0;b=4696+(C<<1<<2)|0;do{if((u|0)!=(b|0)){if(u>>>0<(c[1168]|0)>>>0){ar()}if((c[u+12>>2]|0)==(j|0)){break}ar()}}while(0);if((g|0)==(u|0)){c[1164]=c[1164]&~(1<>>0<(c[1168]|0)>>>0){ar()}f=g+8|0;if((c[f>>2]|0)==(j|0)){D=f;break}ar()}}while(0);c[u+12>>2]=g;c[D>>2]=u}else{b=i;f=c[a+(h+16)>>2]|0;t=c[a+(h|4)>>2]|0;do{if((t|0)==(b|0)){p=a+(h+12)|0;v=c[p>>2]|0;if((v|0)==0){m=a+(h+8)|0;k=c[m>>2]|0;if((k|0)==0){E=0;break}else{F=k;G=m}}else{F=v;G=p}while(1){p=F+20|0;v=c[p>>2]|0;if((v|0)!=0){F=v;G=p;continue}p=F+16|0;v=c[p>>2]|0;if((v|0)==0){break}else{F=v;G=p}}if(G>>>0<(c[1168]|0)>>>0){ar()}else{c[G>>2]=0;E=F;break}}else{p=c[a+h>>2]|0;if(p>>>0<(c[1168]|0)>>>0){ar()}v=p+12|0;if((c[v>>2]|0)!=(b|0)){ar()}m=t+8|0;if((c[m>>2]|0)==(b|0)){c[v>>2]=t;c[m>>2]=p;E=t;break}else{ar()}}}while(0);if((f|0)==0){break}t=a+(h+20)|0;u=4960+(c[t>>2]<<2)|0;do{if((b|0)==(c[u>>2]|0)){c[u>>2]=E;if((E|0)!=0){break}c[1165]=c[1165]&~(1<>2]);break L3747}else{if(f>>>0<(c[1168]|0)>>>0){ar()}g=f+16|0;if((c[g>>2]|0)==(b|0)){c[g>>2]=E}else{c[f+20>>2]=E}if((E|0)==0){break L3747}}}while(0);if(E>>>0<(c[1168]|0)>>>0){ar()}c[E+24>>2]=f;b=c[a+(h+8)>>2]|0;do{if((b|0)!=0){if(b>>>0<(c[1168]|0)>>>0){ar()}else{c[E+16>>2]=b;c[b+24>>2]=E;break}}}while(0);b=c[a+(h+12)>>2]|0;if((b|0)==0){break}if(b>>>0<(c[1168]|0)>>>0){ar()}else{c[E+20>>2]=b;c[b+24>>2]=E;break}}}while(0);c[q+4>>2]=B|1;c[d+B>>2]=B;if((q|0)!=(c[1169]|0)){H=B;break}c[1166]=B;return}else{c[A>>2]=e&-2;c[q+4>>2]=r|1;c[d+r>>2]=r;H=r}}while(0);r=H>>>3;if(H>>>0<256){d=r<<1;e=4696+(d<<2)|0;A=c[1164]|0;E=1<>2]|0;if(h>>>0>=(c[1168]|0)>>>0){I=h;J=r;break}ar()}}while(0);c[J>>2]=q;c[I+12>>2]=q;c[q+8>>2]=I;c[q+12>>2]=e;return}e=q;I=H>>>8;do{if((I|0)==0){K=0}else{if(H>>>0>16777215){K=31;break}J=(I+1048320|0)>>>16&8;d=I<>>16&4;A=d<>>16&2;r=14-(E|J|d)+(A<>>15)|0;K=H>>>((r+7|0)>>>0)&1|r<<1}}while(0);I=4960+(K<<2)|0;c[q+28>>2]=K;c[q+20>>2]=0;c[q+16>>2]=0;r=c[1165]|0;d=1<>2]=e;c[q+24>>2]=I;c[q+12>>2]=q;c[q+8>>2]=q}else{if((K|0)==31){L=0}else{L=25-(K>>>1)|0}A=H<>2]|0;while(1){if((c[J+4>>2]&-8|0)==(H|0)){break}M=J+16+(A>>>31<<2)|0;E=c[M>>2]|0;if((E|0)==0){N=2783;break}else{A=A<<1;J=E}}if((N|0)==2783){if(M>>>0<(c[1168]|0)>>>0){ar()}else{c[M>>2]=e;c[q+24>>2]=J;c[q+12>>2]=q;c[q+8>>2]=q;break}}A=J+8|0;B=c[A>>2]|0;E=c[1168]|0;if(J>>>0>>0){ar()}if(B>>>0>>0){ar()}else{c[B+12>>2]=e;c[A>>2]=e;c[q+8>>2]=B;c[q+12>>2]=J;c[q+24>>2]=0;break}}}while(0);q=(c[1172]|0)-1|0;c[1172]=q;if((q|0)==0){O=5112}else{return}while(1){q=c[O>>2]|0;if((q|0)==0){break}else{O=q+8|0}}c[1172]=-1;return}function ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;if((a|0)==0){d=ci(b)|0;return d|0}if(b>>>0>4294967231){c[(aL()|0)>>2]=12;d=0;return d|0}if(b>>>0<11){e=16}else{e=b+11&-8}f=a-8|0;g=a-4|0;h=c[g>>2]|0;i=h&-8;j=i-8|0;k=a+j|0;l=k;m=c[1168]|0;if(f>>>0>>0){ar();return 0}n=h&3;if(!((n|0)!=1&(j|0)>-8)){ar();return 0}j=i|4;o=a+(j-8)|0;p=c[o>>2]|0;if((p&1|0)==0){ar();return 0}L3883:do{if((n|0)==0){if(e>>>0<256|i>>>0<(e|4)>>>0){break}if((i-e|0)>>>0>c[1156]<<1>>>0|(f|0)==0){break}else{d=a}return d|0}else{do{if(i>>>0>>0){if((l|0)==(c[1170]|0)){q=(c[1167]|0)+i|0;if(q>>>0<=e>>>0){break L3883}r=q-e|0;c[g>>2]=h&1|e|2;c[a+((e|4)-8)>>2]=r|1;c[1170]=a+(e-8);c[1167]=r;break}if((l|0)==(c[1169]|0)){r=(c[1166]|0)+i|0;if(r>>>0>>0){break L3883}q=r-e|0;if(q>>>0>15){c[g>>2]=h&1|e|2;c[a+((e|4)-8)>>2]=q|1;c[a+(r-8)>>2]=q;s=a+(r-4)|0;c[s>>2]=c[s>>2]&-2;t=a+(e-8)|0;u=q}else{c[g>>2]=h&1|r|2;q=a+(r-4)|0;c[q>>2]=c[q>>2]|1;t=0;u=0}c[1166]=u;c[1169]=t;break}if((p&2|0)!=0){break L3883}q=(p&-8)+i|0;if(q>>>0>>0){break L3883}r=q-e|0;s=p>>>3;L3904:do{if(p>>>0<256){v=c[a+i>>2]|0;w=c[a+j>>2]|0;x=4696+(s<<1<<2)|0;do{if((v|0)!=(x|0)){if(v>>>0>>0){ar();return 0}if((c[v+12>>2]|0)==(l|0)){break}ar();return 0}}while(0);if((w|0)==(v|0)){c[1164]=c[1164]&~(1<>>0>>0){ar();return 0}z=w+8|0;if((c[z>>2]|0)==(l|0)){y=z;break}ar();return 0}}while(0);c[v+12>>2]=w;c[y>>2]=v}else{x=k;z=c[a+(i+16)>>2]|0;A=c[a+j>>2]|0;do{if((A|0)==(x|0)){B=a+(i+12)|0;C=c[B>>2]|0;if((C|0)==0){D=a+(i+8)|0;E=c[D>>2]|0;if((E|0)==0){F=0;break}else{G=E;H=D}}else{G=C;H=B}while(1){B=G+20|0;C=c[B>>2]|0;if((C|0)!=0){G=C;H=B;continue}B=G+16|0;C=c[B>>2]|0;if((C|0)==0){break}else{G=C;H=B}}if(H>>>0>>0){ar();return 0}else{c[H>>2]=0;F=G;break}}else{B=c[a+i>>2]|0;if(B>>>0>>0){ar();return 0}C=B+12|0;if((c[C>>2]|0)!=(x|0)){ar();return 0}D=A+8|0;if((c[D>>2]|0)==(x|0)){c[C>>2]=A;c[D>>2]=B;F=A;break}else{ar();return 0}}}while(0);if((z|0)==0){break}A=a+(i+20)|0;v=4960+(c[A>>2]<<2)|0;do{if((x|0)==(c[v>>2]|0)){c[v>>2]=F;if((F|0)!=0){break}c[1165]=c[1165]&~(1<>2]);break L3904}else{if(z>>>0<(c[1168]|0)>>>0){ar();return 0}w=z+16|0;if((c[w>>2]|0)==(x|0)){c[w>>2]=F}else{c[z+20>>2]=F}if((F|0)==0){break L3904}}}while(0);if(F>>>0<(c[1168]|0)>>>0){ar();return 0}c[F+24>>2]=z;x=c[a+(i+8)>>2]|0;do{if((x|0)!=0){if(x>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[F+16>>2]=x;c[x+24>>2]=F;break}}}while(0);x=c[a+(i+12)>>2]|0;if((x|0)==0){break}if(x>>>0<(c[1168]|0)>>>0){ar();return 0}else{c[F+20>>2]=x;c[x+24>>2]=F;break}}}while(0);if(r>>>0>=16){c[g>>2]=c[g>>2]&1|e|2;c[a+((e|4)-8)>>2]=r|3;s=a+((q|4)-8)|0;c[s>>2]=c[s>>2]|1;cl(a+(e-8)|0,r);break}c[g>>2]=q|c[g>>2]&1|2;s=a+((q|4)-8)|0;c[s>>2]=c[s>>2]|1;d=a;return d|0}else{s=i-e|0;if(s>>>0<=15){break}c[g>>2]=h&1|e|2;c[a+((e|4)-8)>>2]=s|3;c[o>>2]=c[o>>2]|1;cl(a+(e-8)|0,s);d=a;return d|0}}while(0);if((f|0)==0){break}else{d=a}return d|0}}while(0);f=ci(b)|0;if((f|0)==0){d=0;return d|0}e=c[g>>2]|0;g=(e&-8)-((e&3|0)==0?8:4)|0;e=g>>>0>>0?g:b;cn(f|0,a|0,e)|0;cj(a);d=f;return d|0}function cl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;d=a;e=d+b|0;f=e;g=c[a+4>>2]|0;L3989:do{if((g&1|0)==0){h=c[a>>2]|0;if((g&3|0)==0){return}i=d+(-h|0)|0;j=i;k=h+b|0;l=c[1168]|0;if(i>>>0>>0){ar()}if((j|0)==(c[1169]|0)){m=d+(b+4)|0;if((c[m>>2]&3|0)!=3){n=j;o=k;break}c[1166]=k;c[m>>2]=c[m>>2]&-2;c[d+(4-h)>>2]=k|1;c[e>>2]=k;return}m=h>>>3;if(h>>>0<256){p=c[d+(8-h)>>2]|0;q=c[d+(12-h)>>2]|0;r=4696+(m<<1<<2)|0;do{if((p|0)!=(r|0)){if(p>>>0>>0){ar()}if((c[p+12>>2]|0)==(j|0)){break}ar()}}while(0);if((q|0)==(p|0)){c[1164]=c[1164]&~(1<>>0>>0){ar()}t=q+8|0;if((c[t>>2]|0)==(j|0)){s=t;break}ar()}}while(0);c[p+12>>2]=q;c[s>>2]=p;n=j;o=k;break}r=i;m=c[d+(24-h)>>2]|0;t=c[d+(12-h)>>2]|0;do{if((t|0)==(r|0)){u=16-h|0;v=d+(u+4)|0;w=c[v>>2]|0;if((w|0)==0){x=d+u|0;u=c[x>>2]|0;if((u|0)==0){y=0;break}else{z=u;A=x}}else{z=w;A=v}while(1){v=z+20|0;w=c[v>>2]|0;if((w|0)!=0){z=w;A=v;continue}v=z+16|0;w=c[v>>2]|0;if((w|0)==0){break}else{z=w;A=v}}if(A>>>0>>0){ar()}else{c[A>>2]=0;y=z;break}}else{v=c[d+(8-h)>>2]|0;if(v>>>0>>0){ar()}w=v+12|0;if((c[w>>2]|0)!=(r|0)){ar()}x=t+8|0;if((c[x>>2]|0)==(r|0)){c[w>>2]=t;c[x>>2]=v;y=t;break}else{ar()}}}while(0);if((m|0)==0){n=j;o=k;break}t=d+(28-h)|0;l=4960+(c[t>>2]<<2)|0;do{if((r|0)==(c[l>>2]|0)){c[l>>2]=y;if((y|0)!=0){break}c[1165]=c[1165]&~(1<>2]);n=j;o=k;break L3989}else{if(m>>>0<(c[1168]|0)>>>0){ar()}i=m+16|0;if((c[i>>2]|0)==(r|0)){c[i>>2]=y}else{c[m+20>>2]=y}if((y|0)==0){n=j;o=k;break L3989}}}while(0);if(y>>>0<(c[1168]|0)>>>0){ar()}c[y+24>>2]=m;r=16-h|0;t=c[d+r>>2]|0;do{if((t|0)!=0){if(t>>>0<(c[1168]|0)>>>0){ar()}else{c[y+16>>2]=t;c[t+24>>2]=y;break}}}while(0);t=c[d+(r+4)>>2]|0;if((t|0)==0){n=j;o=k;break}if(t>>>0<(c[1168]|0)>>>0){ar()}else{c[y+20>>2]=t;c[t+24>>2]=y;n=j;o=k;break}}else{n=a;o=b}}while(0);a=c[1168]|0;if(e>>>0>>0){ar()}y=d+(b+4)|0;z=c[y>>2]|0;do{if((z&2|0)==0){if((f|0)==(c[1170]|0)){A=(c[1167]|0)+o|0;c[1167]=A;c[1170]=n;c[n+4>>2]=A|1;if((n|0)!=(c[1169]|0)){return}c[1169]=0;c[1166]=0;return}if((f|0)==(c[1169]|0)){A=(c[1166]|0)+o|0;c[1166]=A;c[1169]=n;c[n+4>>2]=A|1;c[n+A>>2]=A;return}A=(z&-8)+o|0;s=z>>>3;L4089:do{if(z>>>0<256){g=c[d+(b+8)>>2]|0;t=c[d+(b+12)>>2]|0;h=4696+(s<<1<<2)|0;do{if((g|0)!=(h|0)){if(g>>>0>>0){ar()}if((c[g+12>>2]|0)==(f|0)){break}ar()}}while(0);if((t|0)==(g|0)){c[1164]=c[1164]&~(1<>>0>>0){ar()}m=t+8|0;if((c[m>>2]|0)==(f|0)){B=m;break}ar()}}while(0);c[g+12>>2]=t;c[B>>2]=g}else{h=e;m=c[d+(b+24)>>2]|0;l=c[d+(b+12)>>2]|0;do{if((l|0)==(h|0)){i=d+(b+20)|0;p=c[i>>2]|0;if((p|0)==0){q=d+(b+16)|0;v=c[q>>2]|0;if((v|0)==0){C=0;break}else{D=v;E=q}}else{D=p;E=i}while(1){i=D+20|0;p=c[i>>2]|0;if((p|0)!=0){D=p;E=i;continue}i=D+16|0;p=c[i>>2]|0;if((p|0)==0){break}else{D=p;E=i}}if(E>>>0>>0){ar()}else{c[E>>2]=0;C=D;break}}else{i=c[d+(b+8)>>2]|0;if(i>>>0>>0){ar()}p=i+12|0;if((c[p>>2]|0)!=(h|0)){ar()}q=l+8|0;if((c[q>>2]|0)==(h|0)){c[p>>2]=l;c[q>>2]=i;C=l;break}else{ar()}}}while(0);if((m|0)==0){break}l=d+(b+28)|0;g=4960+(c[l>>2]<<2)|0;do{if((h|0)==(c[g>>2]|0)){c[g>>2]=C;if((C|0)!=0){break}c[1165]=c[1165]&~(1<>2]);break L4089}else{if(m>>>0<(c[1168]|0)>>>0){ar()}t=m+16|0;if((c[t>>2]|0)==(h|0)){c[t>>2]=C}else{c[m+20>>2]=C}if((C|0)==0){break L4089}}}while(0);if(C>>>0<(c[1168]|0)>>>0){ar()}c[C+24>>2]=m;h=c[d+(b+16)>>2]|0;do{if((h|0)!=0){if(h>>>0<(c[1168]|0)>>>0){ar()}else{c[C+16>>2]=h;c[h+24>>2]=C;break}}}while(0);h=c[d+(b+20)>>2]|0;if((h|0)==0){break}if(h>>>0<(c[1168]|0)>>>0){ar()}else{c[C+20>>2]=h;c[h+24>>2]=C;break}}}while(0);c[n+4>>2]=A|1;c[n+A>>2]=A;if((n|0)!=(c[1169]|0)){F=A;break}c[1166]=A;return}else{c[y>>2]=z&-2;c[n+4>>2]=o|1;c[n+o>>2]=o;F=o}}while(0);o=F>>>3;if(F>>>0<256){z=o<<1;y=4696+(z<<2)|0;C=c[1164]|0;b=1<>2]|0;if(d>>>0>=(c[1168]|0)>>>0){G=d;H=o;break}ar()}}while(0);c[H>>2]=n;c[G+12>>2]=n;c[n+8>>2]=G;c[n+12>>2]=y;return}y=n;G=F>>>8;do{if((G|0)==0){I=0}else{if(F>>>0>16777215){I=31;break}H=(G+1048320|0)>>>16&8;z=G<>>16&4;C=z<>>16&2;o=14-(b|H|z)+(C<>>15)|0;I=F>>>((o+7|0)>>>0)&1|o<<1}}while(0);G=4960+(I<<2)|0;c[n+28>>2]=I;c[n+20>>2]=0;c[n+16>>2]=0;o=c[1165]|0;z=1<>2]=y;c[n+24>>2]=G;c[n+12>>2]=n;c[n+8>>2]=n;return}if((I|0)==31){J=0}else{J=25-(I>>>1)|0}I=F<>2]|0;while(1){if((c[J+4>>2]&-8|0)==(F|0)){break}K=J+16+(I>>>31<<2)|0;G=c[K>>2]|0;if((G|0)==0){L=3049;break}else{I=I<<1;J=G}}if((L|0)==3049){if(K>>>0<(c[1168]|0)>>>0){ar()}c[K>>2]=y;c[n+24>>2]=J;c[n+12>>2]=n;c[n+8>>2]=n;return}K=J+8|0;L=c[K>>2]|0;I=c[1168]|0;if(J>>>0>>0){ar()}if(L>>>0>>0){ar()}c[L+12>>2]=y;c[K>>2]=y;c[n+8>>2]=L;c[n+12>>2]=J;c[n+24>>2]=0;return}function cm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=b+e|0;if((e|0)>=20){d=d&255;e=b&3;g=d|d<<8|d<<16|d<<24;h=f&~3;if(e){e=b+4-e|0;while((b|0)<(e|0)){a[b]=d;b=b+1|0}}while((b|0)<(h|0)){c[b>>2]=g;b=b+4|0}}while((b|0)<(f|0)){a[b]=d;b=b+1|0}}function cn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b|0;if((b&3)==(d&3)){while(b&3){if((e|0)==0)return f|0;a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function co(a){a=a|0;if((a|0)<65)return a|0;if((a|0)>90)return a|0;return a-65+97|0}function cp(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0;while((e|0)<(c|0)){f=d[a+e|0]|0;g=d[b+e|0]|0;if((f|0)!=(g|0))return((f|0)>(g|0)?1:-1)|0;e=e+1|0}return 0}function cq(b){b=b|0;var c=0;c=b;while(a[c]|0){c=c+1|0}return c-b|0}function cr(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;while(e>>>0>>0){f=co(a[b+e|0]|0)|0;g=co(a[c+e|0]|0)|0;if((f|0)==(g|0)&(f|0)==0)return 0;if((f|0)==0)return-1;if((g|0)==0)return 1;if((f|0)==(g|0)){e=e+1|0;continue}else{return(f>>>0>g>>>0?1:-1)|0}}return 0}function cs(b,c,d){b=b|0;c=c|0;d=d|0;if((c|0)<(b|0)&(b|0)<(c+d|0)){c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b]=a[c]|0}}else{cn(b,c,d)|0}}function ct(a,b){a=a|0;b=b|0;return aR[a&1](b|0)|0}function cu(a,b){a=a|0;b=b|0;aS[a&1](b|0)}function cv(a,b,c){a=a|0;b=b|0;c=c|0;aT[a&7](b|0,c|0)}function cw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return aU[a&31](b|0,c|0,d|0,e|0,f|0)|0}function cx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return aV[a&15](b|0,c|0,d|0)|0}function cy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aW[a&15](b|0,c|0,d|0)}function cz(a){a=a|0;aX[a&1]()}function cA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return aY[a&3](b|0,c|0,d|0,e|0)|0}function cB(a,b,c){a=a|0;b=b|0;c=c|0;return aZ[a&3](b|0,c|0)|0}function cC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a_[a&15](b|0,c|0,d|0,e|0)}function cD(a){a=a|0;_(0);return 0}function cE(a){a=a|0;_(1)}function cF(a,b){a=a|0;b=b|0;_(2)}function cG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_(3);return 0}function cH(a,b,c){a=a|0;b=b|0;c=c|0;_(4);return 0}function cI(a,b,c){a=a|0;b=b|0;c=c|0;_(5)}function cJ(){_(6)}function cK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;_(7);return 0}function cL(a,b){a=a|0;b=b|0;_(8);return 0}function cM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;_(9)} +// EMSCRIPTEN_END_FUNCS +var aR=[cD,cD];var aS=[cE,cE];var aT=[cF,cF,bw,cF,bJ,cF,br,cF];var aU=[cG,cG,b7,cG,b4,cG,cb,cG,b8,cG,b5,cG,bD,cG,b1,cG,b2,cG,bF,cG,b9,cG,cd,cG,b6,cG,bn,cG,ca,cG,b3,cG];var aV=[cH,cH,bo,cH,bl,cH,bm,cH,bH,cH,bq,cH,bp,cH,bk,cH];var aW=[cI,cI,bM,cI,bt,cI,bu,cI,bB,cI,bz,cI,bI,cI,bL,cI];var aX=[cJ,cJ];var aY=[cK,cK,bG,cK];var aZ=[cL,cL,bE,cL];var a_=[cM,cM,bC,cM,by,cM,bj,cM,bx,cM,bs,cM,bA,cM,bv,cM];return{_memset:cm,_render:bh,_strlen:cq,_free:cj,_main:bg,_realloc:ck,_memmove:cs,_tolower:co,_strncasecmp:cr,_memcmp:cp,_malloc:ci,_memcpy:cn,_sanitise:bK,runPostSets:bf,stackAlloc:a$,stackSave:a0,stackRestore:a1,setThrew:a2,setTempRet0:a5,setTempRet1:a6,setTempRet2:a7,setTempRet3:a8,setTempRet4:a9,setTempRet5:ba,setTempRet6:bb,setTempRet7:bc,setTempRet8:bd,setTempRet9:be,dynCall_ii:ct,dynCall_vi:cu,dynCall_vii:cv,dynCall_iiiiii:cw,dynCall_iiii:cx,dynCall_viii:cy,dynCall_v:cz,dynCall_iiiii:cA,dynCall_iii:cB,dynCall_viiii:cC} +// EMSCRIPTEN_END_ASM +})({Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array, +Float32Array:Float32Array,Float64Array:Float64Array},{abort:S,assert:n,asmPrintInt:function(a,b){d.print("int "+a+","+b)},asmPrintFloat:function(a,b){d.print("float "+a+","+b)},min:xa,invoke_ii:function(a,b){try{return d.dynCall_ii(a,b)}catch(c){"number"!==typeof c&&"longjmp"!==c&&j(c),p.setThrew(1,0)}},invoke_vi:function(a,b){try{d.dynCall_vi(a,b)}catch(c){"number"!==typeof c&&"longjmp"!==c&&j(c),p.setThrew(1,0)}},invoke_vii:function(a,b,c){try{d.dynCall_vii(a,b,c)}catch(e){"number"!==typeof e&& +"longjmp"!==e&&j(e),p.setThrew(1,0)}},invoke_iiiiii:function(a,b,c,e,f,g){try{return d.dynCall_iiiiii(a,b,c,e,f,g)}catch(h){"number"!==typeof h&&"longjmp"!==h&&j(h),p.setThrew(1,0)}},invoke_iiii:function(a,b,c,e){try{return d.dynCall_iiii(a,b,c,e)}catch(f){"number"!==typeof f&&"longjmp"!==f&&j(f),p.setThrew(1,0)}},invoke_viii:function(a,b,c,e){try{d.dynCall_viii(a,b,c,e)}catch(f){"number"!==typeof f&&"longjmp"!==f&&j(f),p.setThrew(1,0)}},invoke_v:function(a){try{d.dynCall_v(a)}catch(b){"number"!== +typeof b&&"longjmp"!==b&&j(b),p.setThrew(1,0)}},invoke_iiiii:function(a,b,c,e,f){try{return d.dynCall_iiiii(a,b,c,e,f)}catch(g){"number"!==typeof g&&"longjmp"!==g&&j(g),p.setThrew(1,0)}},invoke_iii:function(a,b,c){try{return d.dynCall_iii(a,b,c)}catch(e){"number"!==typeof e&&"longjmp"!==e&&j(e),p.setThrew(1,0)}},invoke_viiii:function(a,b,c,e,f){try{d.dynCall_viiii(a,b,c,e,f)}catch(g){"number"!==typeof g&&"longjmp"!==g&&j(g),p.setThrew(1,0)}},_llvm_lifetime_end:H(),_snprintf:Ta,_vsnprintf:function(a, +b,c,d){return Ta(a,b,c,A[d>>2])},_llvm_va_end:H(),_abort:function(){d.abort()},_fprintf:Qa,_printf:function(a,b){return Qa(A[$a>>2],a,b)},_fflush:H(),_ispunct:function(a){return 33<=a&&47>=a||58<=a&&64>=a||91<=a&&96>=a||123<=a&&126>=a},__reallyNegative:Oa,_sysconf:function(a){switch(a){case 8:return 4096;case 54:case 56:case 21:case 61:case 63:case 22:case 67:case 23:case 24:case 25:case 26:case 27:case 69:case 28:case 101:case 70:case 71:case 29:case 30:case 199:case 75:case 76:case 32:case 43:case 44:case 80:case 46:case 47:case 45:case 48:case 49:case 42:case 82:case 33:case 7:case 108:case 109:case 107:case 112:case 119:case 121:return 200809; +case 13:case 104:case 94:case 95:case 34:case 35:case 77:case 81:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 94:case 95:case 110:case 111:case 113:case 114:case 115:case 116:case 117:case 118:case 120:case 40:case 16:case 79:case 19:return-1;case 92:case 93:case 5:case 72:case 6:case 74:case 92:case 93:case 96:case 97:case 98:case 99:case 102:case 103:case 105:return 1;case 38:case 66:case 50:case 51:case 4:return 1024;case 15:case 64:case 41:return 32;case 55:case 37:case 17:return 2147483647; +case 18:case 1:return 47839;case 59:case 57:return 99;case 68:case 58:return 2048;case 0:return 2097152;case 3:return 65536;case 14:return 32768;case 73:return 32767;case 39:return 16384;case 60:return 1E3;case 106:return 700;case 52:return 256;case 62:return 255;case 2:return 100;case 65:return 64;case 36:return 20;case 100:return 16;case 20:return 6;case 53:return 4;case 10:return 1}L(h.i);return-1},_isalnum:function(a){return 48<=a&&57>=a||97<=a&&122>=a||65<=a&&90>=a},___setErrNo:L,_fwrite:Na, +_strncmp:Sa,_send:La,_write:Ma,_isalpha:function(a){return 97<=a&&122>=a||65<=a&&90>=a},_isspace:function(a){return 32==a||9<=a&&13>=a},_time:function(a){var b=Math.floor(Date.now()/1E3);a&&(A[a>>2]=b);return b},__formatString:ua,___assert_func:function(a,b,c,d){j("Assertion failed: "+(d?X(d):"unknown condition")+", at: "+[a?X(a):"unknown filename",b,c?X(c):"unknown function"]+" at "+Error().stack)},_pwrite:function(a,b,c,d){a=e.L(a);if(!a)return L(h.u),-1;try{return e.write(a,y,b,c,d)}catch(f){return e.Ob(f), +-1}},_sbrk:Ua,___errno_location:function(){return ea},_llvm_lifetime_start:H(),_PyModule_AddIntConstant:function(a,b,c){C[d.Pointer_stringify(b)]=c},_PyModule_AddStringConstant:function(a,b,c){C[d.Pointer_stringify(b)]=d.Pointer_stringify(c)},_strcmp:function(a,b){return Sa(a,b,ja)},_memchr:function(a,b,c){for(var b=pa(b),d=0;da;a++)e.push(0)}n(0==O,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");n(0==oa.length,"cannot call main when preRun functions remain to be called");a=a||[];ia&&ga!==s&&d.V("preload time: "+(Date.now()-ga)+" ms"); +fa||(fa=r,V(W));var c=a.length+1,e=[K(N("/bin/this.program"),"i8",0)];b();for(var f=0;fSnudown, and therefore SnuOwnd, is a bit funny about how it generates its table of contents entries. - To when it encounters a header it tries to perform some of the usual inline formatting such as emphasis, strikethoughs, or superscript in headers. The text containing generated HTML then gets passed into cb_toc_header which escapes all of the passed HTML. When reddit gets it escaped tags are stripped. - - It would be nicer if they just used different functions for rendering the emphasis when making headers. - - It seems that my understanding was wrong, for some reason reddit doesn't even use snudown's TOC renderer. - */ + // reddit doesn't use snudown's TOC renderer, so generate our + // own table of contents var doc = $('').html(body); var header_ids = {}; var headers = doc.find('h1, h2, h3, h4, h5, h6'); @@ -21074,12 +21033,12 @@ function RESInitReadyCheck() { // save Reddit's jQuery, because this script is going to jack it up. // now, take the new jQuery in and store it local to RES's scope (it's a var up top) var redditJq = window.$; - require(['jquery-1.9.1.min', 'guiders-1.2.8', 'tinycon', 'snuownd', 'jquery.dragsort-0.6', 'jquery.tokeninput', 'jquery-fieldselection.min'], function() { + require(['jquery-1.9.1.min', 'guiders-1.2.8', 'tinycon', 'emsnudown', 'jquery.dragsort-0.6', 'jquery.tokeninput', 'jquery-fieldselection.min'], function() { $ = window.$; jQuery = window.jQuery; guiders = window.guiders; Tinycon = window.Tinycon; - SnuOwnd = window.SnuOwnd; + emsnudown = window.emsnudown; // now, return the window.$ / window.jQuery back to its original state. window.$ = redditJq; window.jQuery = redditJq; diff --git a/lib/snuownd.js b/lib/snuownd.js deleted file mode 100644 index 21ed956e39..0000000000 --- a/lib/snuownd.js +++ /dev/null @@ -1,3799 +0,0 @@ -/** - @preserve snuownd.js - javascript port of reddit's "snudown" markdown parser - https://github.com/gamefreak/snuownd - */ -/** - * @license Copyright (c) 2009, Natacha Porté - * Copyright (c) 2011, Vicent Marti - * Copyright (c) 2012, Scott McClaugherty - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -// up to date with commit b6baacb79996cec794a20d3abcae51adec5cc3cd - -/** -@module SnuOwnd -*/ -(function(exports){ - function _isspace(c) {return c == ' ' || c == '\n';} - function isspace(c) {return /[\x09-\x0d ]/.test(c);} - function isalnum(c) { return /[A-Za-z0-9]/.test(c); } - function isalpha(c) { return /[A-Za-z]/.test(c); } - function ispunct(c) {return /[\x20-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]/.test(c); } - - function urlHexCode(number) { - var hex_str = '0123456789ABCDEF'; - return '%'+hex_str[(number&0xf0)>>4]+hex_str[(number&0x0f)>>0]; - } - - function escapeUTF8Char(char) { - var code = char.charCodeAt(0); - if (code < 0x80) { - return urlHexCode(code); - } else if((code > 0x7f) && (code < 0x0800)) { - var seq = urlHexCode(code >> 6 & 0xff | 0xc0); - seq += urlHexCode(code >> 0 & 0x3f | 0x80); - return seq; - } else { - var seq = urlHexCode(code >> 12 & 0xff | 0xe0); - seq += urlHexCode(code >> 6 & 0x3f | 0x80); - seq += urlHexCode(code >> 0 & 0x3f | 0x80); - return seq; - } - } - - function find_block_tag (str) { - var wordList = [ - 'p', 'dl', 'div', 'math', - 'table', 'ul', 'del', 'form', - 'blockquote', 'figure', 'ol', 'fieldset', - 'h1', 'h6', 'pre', 'script', - 'h5', 'noscript', 'style', 'iframe', - 'h4', 'ins', 'h3', 'h2' - ]; - if (wordList.indexOf(str.toLowerCase()) != -1) { - return str.toLowerCase(); - } - return ''; - } - - function sdhtml_is_tag(tag_data, tagname) { - var i; - var closed = 0; - var tag_size = tag_data.length; - - if (tag_size < 3 || tag_data[0] != '<') return HTML_TAG_NONE; - - i = 1; - - if (tag_data[i] == '/') { - closed = 1; - i++; - } - - var tagname_c = 0; - for (; i < tag_size; ++i, ++tagname_c) { - if (tagname_c >= tagname.length) break; - - if (tag_data[i] != tagname[tagname_c]) return HTML_TAG_NONE; - } - - if (i == tag_size) return HTML_TAG_NONE; - - if (isspace(tag_data[i]) || tag_data[i] == '>') - return closed ? HTML_TAG_CLOSE : HTML_TAG_OPEN; - - return HTML_TAG_NONE; - } - - function unscape_text(out, src) { - var i = 0, org; - while (i < src.s.length) { - org = i; - while (i < src.s.length && src.s[i] != '\\') i++; - - if (i > org) out.s += src.s.slice(org, i); - - if (i + 1 >= src.s.length) break; - - out.s += src.s[i + 1]; - i += 2; - } - } - - /** - * According to the OWASP rules: - * - * & --> & - * < --> < - * > --> > - * " --> " - * ' --> ' ' is not recommended - * / --> / forward slash is included as it helps end an HTML entity - * - */ - var HTML_ESCAPE_TABLE = [ - 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 0, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 0, 0, 1, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ]; - - var HTML_ESCAPES = ["", """, "&", "'", "/", "<", ">", "" /* throw out control characters */ ]; - - function escape_html(out, src, secure) { - var i = 0, org, esc = 0; - while (i < src.length) { - org = i; - while (i < src.length && !(esc = HTML_ESCAPE_TABLE[src.charCodeAt(i)])) - i++; - - if (i > org) out.s += src.slice(org, i); - - /* escaping */ - if (i >= src.length) break; - - /* The forward slash is only escaped in secure mode */ - if (src[i] == '/' && !secure) { - out.s += '/'; - } else if (HTML_ESCAPE_TABLE[src.charCodeAt(i)] == 7) { - /* skip control characters */ - } else { - out.s += HTML_ESCAPES[esc]; - } - - i++; - } - } - - - /* - * The following characters will not be escaped: - * - * -_.+!*'(),%#@?=;:/,+&$ alphanum - * - * Note that this character set is the addition of: - * - * - The characters which are safe to be in an URL - * - The characters which are *not* safe to be in - * an URL because they are RESERVED characters. - * - * We asume (lazily) that any RESERVED char that - * appears inside an URL is actually meant to - * have its native function (i.e. as an URL - * component/separator) and hence needs no escaping. - * - * There are two exceptions: the chacters & (amp) - * and ' (single quote) do not appear in the table. - * They are meant to appear in the URL as components, - * yet they require special HTML-entity escaping - * to generate valid HTML markup. - * - * All other characters will be escaped to %XX. - * - */ - var HREF_SAFE = [ - 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ]; - - function escape_href(out, src) { - var i = 0, org; - - - while (i < src.length) { - org = i; - while (i < src.length && HREF_SAFE[src.charCodeAt(i)] != 0) i++; - - if (i > org) out.s += src.slice(org, i); - - /* escaping */ - if (i >= src.length) break; - - /* throw out control characters */ - if (HREF_SAFE[src.charCodeAt(i)] == 2) { - i++; - continue; - } - - switch (src[i]) { - /* amp appears all the time in URLs, but needs - * HTML-entity escaping to be inside an href */ - case '&': - out.s += '&'; - break; - - /* the single quote is a valid URL character - * according to the standard; it needs HTML - * entity escaping too */ - case '\'': - out.s += '''; - break; - - /* the space can be escaped to %20 or a plus - * sign. we're going with the generic escape - * for now. the plus thing is more commonly seen - * when building GET strings */ - /* - //This was disabled - case ' ': - out.s += '+' - break; - //*/ - - /* every other character goes with a %XX escaping */ - default: - out.s += escapeUTF8Char(src[i]); - /* - var cc = src.charCodeAt(i); - hex_str[1] = hex_chars[(cc >> 4) & 0xF]; - hex_str[2] = hex_chars[cc & 0xF]; - out.s += hex_str.join(''); - */ - } - - i++; - } - } - - - // function autolink_delim(uint8_t *data, size_t link_end, size_t offset, size_t size) - function autolink_delim(data, link_end) { - var cclose, copen = 0; - var i; - - for (i = 0; i < link_end; ++i) - if (data[i] == '<') { - link_end = i; - break; - } - - while (link_end > 0) { - if ('?!.,'.indexOf(data[link_end - 1]) != -1) link_end--; - - else if (data[link_end - 1] == ';') { - var new_end = link_end - 2; - - while (new_end > 0 && isalpha(data[new_end])) new_end--; - - if (new_end < link_end - 2 && data[new_end] == '&') - link_end = new_end; - else link_end--; - } - else break; - } - - if (link_end == 0) return 0; - - cclose = data[link_end - 1]; - - switch (cclose) { - case '"': copen = '"'; break; - case '\'': copen = '\''; break; - case ')': copen = '('; break; - case ']': copen = '['; break; - case '}': copen = '{'; break; - } - - if (copen != 0) { - var closing = 0; - var opening = 0; - var j = 0; - - /* Try to close the final punctuation sign in this same line; - * if we managed to close it outside of the URL, that means that it's - * not part of the URL. If it closes inside the URL, that means it - * is part of the URL. - * - * Examples: - * - * foo http://www.pokemon.com/Pikachu_(Electric) bar - * => http://www.pokemon.com/Pikachu_(Electric) - * - * foo (http://www.pokemon.com/Pikachu_(Electric)) bar - * => http://www.pokemon.com/Pikachu_(Electric) - * - * foo http://www.pokemon.com/Pikachu_(Electric)) bar - * => http://www.pokemon.com/Pikachu_(Electric)) - * - * (foo http://www.pokemon.com/Pikachu_(Electric)) bar - * => foo http://www.pokemon.com/Pikachu_(Electric) - */ - - while (j < link_end) { - if (data[j] == copen) opening++; - else if (data[j] == cclose) closing++; - - j++; - } - - if (closing != opening) link_end--; - } - - return link_end; - } - - function check_domain(data, allow_short) { - var i, np = 0; - - if (!isalnum(data[0])) return 0; - - for (i = 1; i < data.length - 1; ++i) { - if (data[i] == '.') np++; - else if (!isalnum(data[i]) && data[i] != '-') break; - } - - /* a valid domain needs to have at least a dot. - * that's as far as we get */ - if (allow_short) { - /* We don't need a valid domain in the strict sence (with - * at least one dot; so just make sure it's composed of valid - * domain characters and return the length of the valid - * sequence. */ - return i; - } else { - return np ? i : 0; - } - } - - function sd_autolink_issafe(link) { - var valid_uris = [ - "http://", "https://", "ftp://", "mailto://", - "/", "git://", "steam://", "irc://", "news://", "mumble://", - "ssh://", "ircs://", "#"]; - - var i; - - for (i = 0; i < valid_uris.length; ++i) { - var len = valid_uris[i].length; - - if (link.length > len && - link.toLowerCase().indexOf(valid_uris[i]) == 0 && - /[A-Za-z0-9#\/?]/.test(link[len])) - return 1; - } - - return 0; - } - - - function sd_autolink__url(rewind_p, link, data_, offset, size, flags) { - var data = data_.slice(offset); - var link_end, rewind = 0, domain_len; - - if (size < 4 || data_[offset+1] != '/' || data_[offset+2] != '/') return 0; - - while (rewind < offset && isalpha(data_[offset-rewind - 1])) rewind++; - - if (!sd_autolink_issafe(data_.substr(offset-rewind, size+rewind))) return 0; - link_end = "://".length; - - domain_len = check_domain(data.slice(link_end), flags & SD_AUTOLINK_SHORT_DOMAINS); - if (domain_len == 0) return 0; - - link_end += domain_len; - while (link_end < size && !isspace(data_[offset+link_end])) link_end++; - - link_end = autolink_delim(data, link_end); - - if (link_end == 0) return 0; - - //TODO - link.s += data_.substr(offset-rewind, link_end+rewind); - rewind_p.p = rewind; - - return link_end; - } - - function sd_autolink__subreddit(rewind_p, link, data_, offset, size) { - var data = data_.slice(offset); - var link_end; - var allMinus = false; - - if (size < 3) return 0; - - /* make sure this / is part of /r/ */ - if (data.indexOf('/r/') != 0) return 0; - - link_end = "/r/".length; - if (data.substr(link_end-1, 4).toLowerCase() == "all-") { - allMinus = true; - } - do { - var start = link_end; - var max_length = 24; - /* special case: /r/reddit.com (the only subreddit with a '.') */ - if ( size >= link_end+10 && data.substr(link_end, 10).toLowerCase() == 'reddit.com') { - link_end += 10; - max_length = 10; - } else { - /* If not the special case make sure it starts with (t:)?[A-Za-z0-9] */ - /* support autolinking to timereddits, /r/t:when (1 April 2012) */ - if ( size > link_end+2 && data.substr(link_end, 2) == 't:') - link_end += 2; /* Jump over the 't:' */ - - /* the first character of a subreddit name must be a letter or digit */ - if (!isalnum(data[link_end])) - return 0; - link_end += 1; - } - - /* consume valid characters ([A-Za-z0-9_]) until we run out */ - while (link_end < size && (isalnum(data[link_end]) || - data[link_end] == '_')) - link_end++; - - /* valid subreddit names are between 3 and 21 characters, with - * some subreddits having 2-character names. Don't bother with - * autolinking for anything outside this length range. - * (chksrname function in reddit/.../validator.py) */ - if ( link_end-start < 2 || link_end-start > max_length ) - return 0; - - /* If we are linking to a multireddit, continue */ - } while ( link_end < size && (data[link_end] == '+' || (allMinus && data[link_end] == '-')) && link_end++ ); - if (link_end < size && data[link_end] == '/') { - while (link_end < size && (isalnum(data[link_end]) || - data[link_end] == '_' || - data[link_end] == '/' || - data[link_end] == '-')) { - link_end++; - } - } - /* make the link */ - link.s += data.slice(0, link_end); - rewind_p.p = 0; - - return link_end; - } - - function sd_autolink__username(rewind_p, link, data_, offset, size) { - var data = data_.slice(offset); - var link_end; - - if (size < 6) return 0; - - /* make sure this / is part of /u/ */ - if (data.indexOf('/u/') != 0) return 0; - - /* the first letter of a username must... well, be valid, we don't care otherwise */ - link_end = "/u/".length; - if (!isalnum(data[link_end]) && data[link_end] != '_' && data[link_end] != '-') - return 0; - link_end += 1; - - /* consume valid characters ([A-Za-z0-9_-/]) until we run out */ - while (link_end < size && (isalnum(data[link_end]) || - data[link_end] == '_' || - data[link_end] == '/' || - data[link_end] == '-')) - link_end++; - - /* make the link */ - link.s += data.slice(0, link_end); - rewind_p.p = 0; - - return link_end; - } - - function sd_autolink__email(rewind_p, link, data_, offset, size, flags) { - var data = data_.slice(offset); - var link_end, rewind; - var nb = 0, np = 0; - - for (rewind = 0; rewind < offset; ++rewind) { - var c = data_[offset-rewind - 1]; - if (isalnum(c)) continue; - if (".+-_".indexOf(c) != -1) continue; - break; - } - - if (rewind == 0) return 0; - - for (link_end = 0; link_end < size; ++link_end) { - var c = data_[offset+link_end]; - - if (isalnum(c)) continue; - - if (c == '@') nb++; - else if (c == '.' && link_end < size - 1) np++; - else if (c != '-' && c != '_') break; - } - - if (link_end < 2 || nb != 1 || np == 0) return 0; - - //TODO - link_end = autolink_delim(data, link_end); - - if (link_end == 0) return 0; - - // link.s += data_.slice(offset - rewind, link_end + rewind - link.s += data_.substr(offset - rewind, link_end + rewind); - rewind_p.p = rewind; - - return link_end; - } - - function sd_autolink__www(rewind_p, link, data_, offset, size, flags) { - var data = data_.slice(offset); - var link_end; - - if (offset > 0 && !ispunct(data_[offset-1]) && !isspace(data_[offset-1])) - return 0; - - // if (size < 4 || memcmp(data, "www.", strlen("www.")) != 0) - if (size < 4 || (data.slice(0,4) != 'www.')) return 0; - - link_end = check_domain(data, 0); - - if (link_end == 0) - return 0; - - while (link_end < size && !isspace(data[link_end])) link_end++; - - link_end = autolink_delim(data, link_end); - - if (link_end == 0) return 0; - - link.s += data.slice(0, link_end); - rewind_p.p = 0; - - return link_end; - } - - /** - Initialize a Callbacks object. - - @constructor - @param {Object.} callbacks A set of callbacks to use as the methods on this object. - */ - function Callbacks(callbacks) { - if (callbacks) { - for (var name in callbacks) { - if (name in this) this[name] = callbacks[name]; - } - } - } - - Callbacks.prototype = { - /** - Renders a code block. - - Syntax highlighting specific to lanugage may be performed here. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input text. - @param {Buffer} language The name of the code langage. - @param {?Object} context A renderer specific context object. - */ - blockcode: null, - /** - Renders a blockquote. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input text. - @param {?Object} context A renderer specific context object. - */ - blockquote: null, - /** - Renders a block of HTML code. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input text. - @param {?Object} context A renderer specific context object. - */ - blockhtml: null, - /** - Renders a header. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input text. - @param {Number} level The header level. - @param {?Object} context A renderer specific context object. - */ - header: null, - /** - Renders a horizontal rule. - - @method - @param {Buffer} out The output string buffer to append to. - @param {?Object} context A renderer specific context object. - */ - hrule: null, - /** - Renders a list. -

- This method handles the list wrapper, which in terms of HTML would be <ol> or <ul>. - This method is not responsible for handling list elements, all such processing should - already have occured on text pased to the method . All that it is intended - to do is to wrap the text parameter in anything needed. -

- - @example - out.s += "<ul>" + text.s + "</ul>" - - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input that goes inside the list. - @param {Number} flags A bitfield holding a portion of the render state. The only bit that this should be concerned with is MKD_LIST_ORDERED - @param {?Object} context A renderer specific context object. - */ - list: null, - /** - Renders a list. -

- Wraps the text in a list element. -

- - @example - out.s += "<li>" + text.s + "</li>" - - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The contents of the list element. - @param {Number} flags A bitfield holding a portion of the render state. The only bit that this should be concerned with is MKD_LI_BLOCK. - @param {?Object} context A renderer specific context object. - */ - listitem: null, - /** - Renders a paragraph. - - @example - - out.s += "<p>" + text.s + "</p>"; - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input text. - @param {?Object} context A renderer specific context object. - */ - paragraph: null, - /** - Renders a table. - - @example - - out.s += ""; - out.s += header.s; - out.s += ""; - out.s += body.s; - out.s += "
"; - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} head The table header. - @param {Buffer} body The table body. - @param {?Object} context A renderer specific context object. - */ - table: null, - /** - Renders a table row. - - @example - - out.s += "<tr>" + text.s + "</tr>"; - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input text. - @param {?Object} context A renderer specific context object. - */ - table_row: null, - /** - Renders a table cell. - - @example - - out.s += "<td>" + text.s + "</td>"; - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input text. - @param {Number} flags A bit filed indicating a portion of the output state. Relevant bits are: MKD_TABLE_HEADER, MKD_TABLE_ALIGN_CENTER. MKD_TABLE_ALIGN_L, and MKD_TABLE_ALIGN_R. - @param {?Object} context A renderer specific context object. - */ - table_cell: null, - /** - Renders a link that was autodetected. - - @example - - out.s += "<a href=\""+ text.s + "\">" + text.s + "</a>"; - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The address being linked to. - @param {Number} type Equal to MKDA_NORMAL or MKDA_EMAIL - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - autolink: null, - /** - Renders inline code. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The text being wrapped. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - codespan: null, - /** - Renders text with double emphasis. Default is equivalent to the HTML <strong> tag. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The text being wrapped. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - double_emphasis: null, - /** - Renders text with single emphasis. Default is equivalent to the HTML <em> tag. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The text being wrapped. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - emphasis: null, - /** - Renders an image. - - @example - - out.s = "<img src=\"" + link.s + "\" title=\"" + title.s + "\" alt=\"" + alt.s + "\"/>";" - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} link The address of the image. - @param {Buffer} title Title text for the image - @param {Buffer} alt Alt text for the image - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - image: null, - /** - Renders line break. - - @example - - out.s += "<br/>"; - - @method - @param {Buffer} out The output string buffer to append to. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - linebreak: null, - /** - Renders a link. - - @example - - out.s = "<a href=\"" + link.s + "\" title=\"" + title.s + "\">" + content.s + "</a>"; - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} link The link address. - @param {Buffer} title Title text for the link. - @param {Buffer} content Link text. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - link: null, - /** - Copies and potentially escapes some HTML. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The input text. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - raw_html_tag: null, - /** - Renders text with triple emphasis. Default is equivalent to both the <em> and <strong> HTML tags. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The text being wrapped. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - triple_emphasis: null, - /** - Renders text crossd out. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The text being wrapped. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - strikethrough: null, - /** - Renders text as superscript. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The text being wrapped. - @param {?Object} context A renderer specific context object. - @returns {Boolean} Whether or not the tag was rendered. - */ - superscript: null, - /** - Escapes an HTML entity. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The text being wrapped. - @param {?Object} context A renderer specific context object. - */ - entity: null, - /** - Renders plain text. - - @method - @param {Buffer} out The output string buffer to append to. - @param {Buffer} text The text being rendered. - @param {?Object} context A renderer specific context object. - */ - normal_text: null, - /** - Creates opening boilerplate for a table of contents. - - @method - @param {Buffer} out The output string buffer to append to. - @param {?Object} context A renderer specific context object. - */ - doc_header: null, - /** - Creates closing boilerplate for a table of contents. - - @method - @param {Buffer} out The output string buffer to append to. - @param {?Object} context A renderer specific context object. - */ - doc_footer: null - }; - - - /** - A renderer object - - @constructor - @param {Callbacks} callbacks The callbacks object to use for the renderer. - @param {?Callbacks} context Renderer specific context information. - */ - function Renderer(callbacks, context) { - this.callbacks = callbacks; - this.context = context; - } - - /** - Instantiates a custom Renderer object. - - @param {Callbacks} callbacks The callbacks object to use for the renderer. - @param {?Callbacks} context Renderer specific context information. - @returns {Renderer} - */ - function createCustomRenderer(callbacks, context) { - return new Renderer(callbacks, context) - } - exports.createCustomRenderer = createCustomRenderer; - - function defaultRenderState() { - return { - nofollow: 0, - target: null, - tocData: { - headerCount: 0, - currentLevel: 0, - levelOffset: 0 - }, - toc_id_prefix: null, - html_element_whitelist: DEFAULT_HTML_ELEMENT_WHITELIST, - html_attr_whitelist: DEFAULT_HTML_ATTR_WHITELIST, - flags: 0, - //(flags != undefined?flags:HTML_SKIP_HTML | HTML_SKIP_IMAGES | HTML_SAFELINK | HTML_ESCAPE | HTML_USE_XHTML), - /* extra callbacks */ - // void (*link_attributes)(struct buf *ob, const struct buf *url, void *self); - link_attributes: function link_attributes(out, url, options) { - - if (options.nofollow) out.s += ' rel="nofollow"'; - - if (options.target != null) { - out.s += ' target="' + options.target + '"'; - } - } - }; - } - exports.defaultRenderState = defaultRenderState; - /** - Produces a renderer object that will match Reddit's output. - @param {?Number=} flags A bitfield containing flags specific to the reddit HTML renderer. Passing undefined, null, or null value will produce reddit exact output. - @returns {Renderer} A renderer object that will match Reddit's output. - */ - function getRedditRenderer(flags) { - var state =defaultRenderState(); - if (flags == null) { - state.flags = DEFAULT_BODY_FLAGS; - } else { - state.flags = flags; - } - - var renderer = new Renderer(getRedditCallbacks() , state); - if (renderer.context.flags & HTML_SKIP_IMAGES) - renderer.callbacks.image = null; - - if (renderer.context.flags & HTML_SKIP_LINKS) { - renderer.callbacks.link = null; - renderer.callbacks.autolink = null; - } - - if (renderer.context.flags & HTML_SKIP_HTML || renderer.context.flags & HTML_ESCAPE) - renderer.callbacks.blockhtml = null; - return renderer; - } - exports.getRedditRenderer = getRedditRenderer; - - /** - Produces a renderer object that will match Reddit's for a table of contents. - @returns {Renderer} A renderer object that will match Reddit's output. - */ - function getTocRenderer() { - var state = defaultRenderState(); - state.flags = HTML_TOC | HTML_SKIP_HTML; - var renderer = new Renderer(getTocCallbacks(), state); - return renderer; - } - exports.getTocRenderer = getTocRenderer; - - /** - Create a Callbacks object with the given callback table. - - @param {Object.} callbacks A table of callbacks to place int a callbacks object. - @returns {Callbacks} A callbacks object holding the provided callbacks. - */ - function createCustomCallbacks(callbacks) { - return new Callbacks(callbacks); - } - exports.createCustomCallbacks = createCustomCallbacks; - - /** - Produce a callbacks object that matches Reddit's output. - @returns {Callbacks} A callbacks object that matches Reddit's output. - */ - function getRedditCallbacks(){ - return new Callbacks({ - blockcode: cb_blockcode, - blockquote: cb_blockquote, - blockhtml: cb_blockhtml, - header: cb_header, - hrule: cb_hrule, - list: cb_list, - listitem: cb_listitem, - paragraph: cb_paragraph, - table: cb_table, - table_row: cb_table_row, - table_cell: cb_table_cell, - autolink: cb_autolink, - codespan: cb_codespan, - double_emphasis: cb_double_emphasis, - emphasis: cb_emphasis, - image: cb_image, - linebreak: cb_linebreak, - link: cb_link, - raw_html_tag: cb_raw_html_tag, - triple_emphasis: cb_triple_emphasis, - strikethrough: cb_strikethrough, - superscript: cb_superscript, - entity: null, - normal_text: cb_normal_text, - doc_header: null, - doc_footer: cb_reset_toc - }); - } - exports.getRedditCallbacks = getRedditCallbacks; - - /** - Produce a callbacks object for rendering a table of contents. - @returns {Callbacks} A callbacks object for rendering a table of contents. - */ - function getTocCallbacks() { - return new Callbacks({ - blockcode: null, - blockquote: null, - blockhtml: null, - header: cb_toc_header, - hrule: null, - list: null, - listitem: null, - paragraph: null, - table: null, - table_row: null, - table_cell: null, - autolink: null, - codespan: cb_codespan, - double_emphasis: cb_double_emphasis, - emphasis: cb_emphasis, - image: null, - linebreak: null, - link: cb_toc_link, - raw_html_tag: null, - triple_emphasis: cb_triple_emphasis, - strikethrough: cb_strikethrough, - superscript: cb_superscript, - entity: null, - normal_text: null, - doc_header: null, - doc_footer: cb_toc_finalize - }); - } - exports.getTocCallbacks = getTocCallbacks; - - /* block level callbacks - NULL skips the block */ - // void (*blockcode)(struct buf *ob, const struct buf *text, const struct buf *lang, void *opaque); - function cb_blockcode(out, text, lang, options) { - if (out.s.length) out.s += '\n'; - - if (lang && lang.s.length) { - var i, cls; - out.s += '
';
-		} else
-			out.s += '
';
-
-		if (text) escape_html(out, text.s, false);
-
-		out.s += '
\n'; - } - - // void (*blockquote)(struct buf *ob, const struct buf *text, void *opaque); - function cb_blockquote(out, text, options) { - if (out.s.length) out.s += '\n'; - out.s += '
\n'; - if (text) out.s += text.s; - out.s += '
\n'; - } - - // void (*blockhtml)(struct buf *ob,const struct buf *text, void *opaque); - function cb_blockhtml(out, text, options) { - var org, sz; - if (!text) return; - sz = text.s.length; - while (sz > 0 && text.s[sz - 1] == '\n') sz--; - org = 0; - while (org < sz && text.s[org] == '\n') org++; - if (org >= sz) return; - if (out.s.length) out.s += '\n'; - out.s += text.s.slice(org, sz); - out.s += '\n'; - } - - // header(Buffer out, Buffer text, int level, void *opaque); - function cb_header(out, text, level, options) { - if (out.s.length) out.s += '\n'; - - if (options.flags & HTML_TOC) { - out.s += ''; - } else { - out.s += ''; - } - - if (text) out.s += text.s; - out.s += '\n'; - } - - // void (*hrule)(struct buf *ob, void *opaque); - function cb_hrule(out, options) { - if (out.s.length) out.s += '\n'; - out.s += (options.flags & HTML_USE_XHTML) ? '
\n' : '
\n'; - } - - // void (*list)(struct buf *ob, const struct buf *text, int flags, void *opaque); - function cb_list(out, text, flags, options) { - if (out.s.length) out.s += '\n'; - out.s += (flags&MKD_LIST_ORDERED?'
    \n':'
      \n'); - if (text) out.s += text.s; - out.s += (flags&MKD_LIST_ORDERED?'
\n':'\n'); - } - - // void (*listitem)(struct buf *ob, const struct buf *text, int flags, void *opaque); - function cb_listitem(out, text, flags, options) { - out.s += '
  • '; - if (text) { - var size = text.s.length; - while (size && text.s[size - 1] == '\n') size--; - out.s += text.s.slice(0, size); - } - out.s += '
  • \n'; - } - - // void (*paragraph)(struct buf *ob, const struct buf *text, void *opaque); - function cb_paragraph(out, text, options) { - var i = 0; - - if (out.s.length) out.s += '\n'; - - if (!text || !text.s.length) return; - - while (i < text.s.length && isspace(text.s[i])) i++; - - if (i == text.s.length) return; - - out.s += '

    '; - if (options.flags & HTML_HARD_WRAP) { - var org; - while (i < text.s.length) { - org = i; - while (i < text.s.length && text.data[i] != '\n') - i++; - - if (i > org) out.s += text.s.slice(org, i); - - /* - * do not insert a line break if this newline - * is the last character on the paragraph - */ - if (i >= text.s.length - 1) break; - - cb_linebreak(out, options); - i++; - } - } else { - out.s += text.s.slice(i); - } - out.s += '

    \n'; - } - - // void (*table)(struct buf *ob, const struct buf *header, const struct buf *body, void *opaque); - function cb_table(out, header, body, options) { - if (out.s.length) out.s += '\n'; - out.s += '\n'; - if (header) out.s += header.s; - out.s += '\n'; - if (body) out.s += body.s; - out.s += '
    \n'; - } - - // void (*table_row)(struct buf *ob, const struct buf *text, void *opaque); - function cb_table_row(out, text, options) { - out.s += '\n'; - if (text) out.s += text.s; - out.s += '\n'; - } - - // void (*table_cell)(struct buf *ob, const struct buf *text, int flags, void *opaque); - function cb_table_cell(out, text, flags, options) { - if (flags & MKD_TABLE_HEADER) { - out.s += ''; - return 1; - } - - // int (*emphasis)(struct buf *ob, const struct buf *text, void *opaque); - function cb_emphasis(out, text, options) { - if (!text || !text.s.length) return 0; - out.s += '' + text.s + ''; - return 1; - } - - // int (*image)(struct buf *ob, const struct buf *link, const struct buf *title, const struct buf *alt, void *opaque); - function cb_image(out, link, title, alt, options) { - if (!link || !link.s.length) return 0; - - out.s += '';
-
-		if (alt && alt.s.length) escape_html(out, alt.s, false);
-
-		if (title && title.s.length) {
-			out.s += '':'">'); - return 1; - } - - - // int (*linebreak)(struct buf *ob, void *opaque); - function cb_linebreak(out, options) { - out.s += (options.flags&HTML_USE_XHTML?'
    \n':'
    \n'); - return 1; - } - - // int (*link)(struct buf *ob, const struct buf *link, const struct buf *title, const struct buf *content, void *opaque); - function cb_link(out, link, title, content, options) { - if (link != null && (options.flags & HTML_SAFELINK) != 0 && !sd_autolink_issafe(link.s)) return 0; - - out.s += '
    ': - if(seen_equals && !in_str) { - done = 1; - reset = 1; - } else { - reset = 1; - } - break; - case '\'': - case '"': - if(!in_str) - in_str = c; - else if(in_str == c) - in_str = !in_str; - break; - default: - if(!in_str) { - switch(c) { - case ' ': - if(seen_equals) { - done = 1; - reset = 1; - } else - reset = 1; - break; - case '=': - if(seen_equals) { - reset = 1; - } else { - for(z=0; z < whitelist.length; z++) { - if(whitelist[z].length != attr.s.length) - continue; - for(x=0;x < attr.s.length; x++) { - if(whitelist[z][x].toLowerCase() != attr.s[x].toLowerCase()) - break; - } - if(x == attr.s.length) - seen_equals = 1; - } - if(!seen_equals) - reset = 1; - } - break; - } - } - } - - if(done) { - out.s += ' ' + attr.s; - } - - if(reset) { - seen_equals = 0; - in_str = 0; - attr.s = ''; - } else { - attr.s += c; - } - } - } - - // bufrelease(attr); - out.s += '>'; - } - - // int (*raw_html_tag)(struct buf *ob, const struct buf *tag, void *opaque); - function cb_raw_html_tag(out, text, options) { - var whitelist = options.html_element_whitelist; - - /* Items on the whitelist ignore all other flags and just output */ - if (((options.flags & HTML_ALLOW_ELEMENT_WHITELIST) != 0) && whitelist) { - for(var i = 0; whitelist[i]; i++) { - var tagtype = sdhtml_is_tag(text.s, whitelist[i]); - if(tagtype != HTML_TAG_NONE) { - rndr_html_tag(out, text, options, whitelist[i], options.html_attr_whitelist, tagtype); - return 1; - } - } - } - - /* HTML_ESCAPE overrides SKIP_HTML, SKIP_STYLE, SKIP_LINKS and SKIP_IMAGES - * It doens't see if there are any valid tags, just escape all of them. */ - if((options.flags & HTML_ESCAPE) != 0) { - escape_html(out, text.s, false); - return 1; - } - - if ((options.flags & HTML_SKIP_HTML) != 0) return 1; - - if ((options.flags & HTML_SKIP_STYLE) != 0 && - sdhtml_is_tag(text.s, "style")) - return 1; - - if ((options.flags & HTML_SKIP_LINKS) != 0 && - sdhtml_is_tag(text.s, "a")) - return 1; - - if ((options.flags & HTML_SKIP_IMAGES) != 0 && - sdhtml_is_tag(text.s, "img")) - return 1; - - out.s += text.s; - return 1; - } - - // int (*triple_emphasis)(struct buf *ob, const struct buf *text, void *opaque); - function cb_triple_emphasis(out, text, options) { - if (!text || !text.s.length) return 0; - out.s += '' + text.s + ''; - return 1; - } - - // int (*strikethrough)(struct buf *ob, const struct buf *text, void *opaque); - function cb_strikethrough(out, text, options) { - if (!text || !text.s.length) return 0; - out.s += '' + text.s + ''; - return 1; - } - - // int (*superscript)(struct buf *ob, const struct buf *text, void *opaque); - function cb_superscript(out, text, options) { - if (!text || !text.s.length) return 0; - out.s += '' + text.s + ''; - return 1; - } - - /* low level callbacks - NULL copies input directly into the output */ - //do not use - // void (*entity)(struct buf *ob, const struct buf *entity, void *opaque); - // function cb_entity(out, entity, options) {} - - // void (*normal_text)(struct buf *ob, const struct buf *text, void *opaque); - function cb_normal_text(out, text, options) { - if (text) escape_html(out, text.s, false); - } - - // toc_header(struct buf *ob, const struct buf *text, int level, void *opaque) - function cb_toc_header(out, text, level, options) { - /* set the level offset if this is the first header - * we're parsing for the document */ - if (options.tocData.currentLevel== 0) { - out.s += '
    \n'; - options.tocData.levelOffset = level - 1; - } - level -= options.tocData.levelOffset; - - if (level > options.tocData.currentLevel) { - while (level > options.tocData.currentLevel) { - out.s += '
      \n
    • \n'; - options.tocData.currentLevel++; - } - } else if (level < options.tocData.currentLevel) { - out.s += '
    • \n'; - while (level < options.tocData.currentLevel) { - out.s += '
    \n\n'; - options.tocData.currentLevel--; - } - out.s += '
  • \n'; - } else { - out.s += '
  • \n
  • \n'; - } - - out.s += ''; - if (text) escape_html(out, text.s, false); - out.s += '\n'; - } - - //toc_link(struct buf *ob, const struct buf *link, const struct buf *title, const struct buf *content, void *opaque) - function cb_toc_link(out, link, title, content, options) { - if (content && content.s) - out.s += content.s; - return 1; - } - - - // reset_toc(struct buf *ob, void *opaque) - function cb_reset_toc(out, options) { - options.tocData = { - headerCount: 0, - currentLevel: 0, - levelOffset: 0 - }; - } - - //toc_finalize(struct buf *ob, void *opaque) - function cb_toc_finalize(out, options) { - var hasToc = false; - while (options.tocData.currentLevel > 0) { - out.s += '
  • \n\n'; - options.tocData.currentLevel--; - hasToc = true; - } - if (hasToc) { - out.s += '
    \n'; - } - cb_reset_toc(out, options); - } - - /* header and footer */ - // doc_header(Buffer out}, context); - // doc_header: null, - // doc_footer(Buffer out, context); - // doc_footer: null - - - /* char_emphasis • single and double emphasis parsing */ - //Buffer, md, str, int - function char_emphasis(out, md, data_, offset) { - var data = data_.slice(offset); - var size = data.length; - var c = data[0]; - var ret; - - if (size > 2 && data[1] != c) { - /* whitespace cannot follow an opening emphasis; - * strikethrough only takes two characters '~~' */ - if (c == '~' || _isspace(data[1]) || (ret = parse_emph1(out, md, data, c)) == 0) - return 0; - - return ret + 1; - } - - if (data.length > 3 && data[1] == c && data[2] != c) { - if (_isspace(data[2]) || (ret = parse_emph2(out, md, data, c)) == 0) - return 0; - - return ret + 2; - } - - if (data.length > 4 && data[1] == c && data[2] == c && data[3] != c) { - if (c == '~' || _isspace(data[3]) || (ret = parse_emph3(out, md, data, c)) == 0) - return 0; - - return ret + 3; - } - - return 0; - } - - /* char_codespan - '`' parsing a code span (assuming codespan != 0) */ - function char_codespan(out, md, data_, offset) { - var data = data_.slice(offset); - var end, nb = 0, i, f_begin, f_end; - - /* counting the number of backticks in the delimiter */ - while (nb < data.length && data[nb] == '`') - nb++; - - /* finding the next delimiter */ - i = 0; - for (end = nb; end < data.length && i < nb; end++) { - if (data[end] == '`') i++; - else i = 0; - } - - if (i < nb && end >= data.length) - return 0; /* no matching delimiter */ - - /* trimming outside whitespaces */ - f_begin = nb; - while (f_begin < end && data[f_begin] == ' ') f_begin++; - - f_end = end - nb; - while (f_end > nb && data[f_end-1] == ' ') f_end--; - - /* real code span */ - if (f_begin < f_end) { - var work = new Buffer(data.slice(f_begin, f_end)); - if (!md.callbacks.codespan(out, work, md.context)) - end = 0; - } else { - if (!md.callbacks.codespan(out, null, md.context)) - end = 0; - } - - return end; - } - - /* char_linebreak - '\n' preceded by two spaces (assuming linebreak != 0) */ - function char_linebreak(out, md, data_, offset) { - var data = data_.slice(offset); - if (offset < 2 || data_[offset-1] != ' ' || data_[offset-2] != ' ') - return 0; - - /* removing the last space from ob and rendering */ - var len = out.s.length; - while (len && out.s[len - 1] == ' ') len--; - out.s = out.s.slice(0, len); - - return md.callbacks.linebreak(out, md.context) ? 1 : 0; - } - - /* char_link - '[': parsing a link or an image */ - function char_link(out, md, data_, offset) { - var data = data_.slice(offset); - var is_img = (offset && data_[offset - 1] == '!'), level; - var i = 1, txt_e, link_b = 0, link_e = 0, title_b = 0, title_e = 0; - //4 bufs - var content = null; - var link = null; - var title = null; - var u_link = null; - var org_work_size = md.spanStack.length; - var text_has_nl = 0, ret = 0; - var in_title = 0, qtype = 0; - - function cleanup() { - md.spanStack.length = org_work_size; - return ret ? i : 0; - } - - /* checking whether the correct renderer exists */ - if ((is_img && !md.callbacks.image) || (!is_img && !md.callbacks.link)) - return cleanup(); - /* looking for the matching closing bracket */ - for (level = 1; i < data.length; i++) { - if (data[i] == '\n') text_has_nl = 1; - else if (data[i - 1] == '\\') continue; - else if (data[i] == '[') level++; - else if (data[i] == ']') { - level--; - if (level <= 0) break; - } - } - - if (i >= data.length) return cleanup(); - - txt_e = i; - i++; - - /* skip any amount of whitespace or newline */ - /* (this is much more laxist than original markdown syntax) */ - while (i < data.length && _isspace(data[i])) i++; - - /* inline style link */ - if (i < data.length && data[i] == '(') { - /* skipping initial whitespace */ - i++; - - while (i < data.length && _isspace(data[i])) i++; - - link_b = i; - - /* looking for link end: ' " ) */ - while (i < data.length) { - if (data[i] == '\\') i += 2; - else if (data[i] == ')') break; - else if (i >= 1 && _isspace(data[i-1]) && (data[i] == '\'' || data[i] == '"')) break; - else i++; - } - - if (i >= data.length) return cleanup(); - link_e = i; - - /* looking for title end if present */ - if (data[i] == '\'' || data[i] == '"') { - qtype = data[i]; - in_title = 1; - i++; - title_b = i; - - while (i < data.length) { - if (data[i] == '\\') i += 2; - else if (data[i] == qtype) {in_title = 0; i++;} - else if ((data[i] == ')') && !in_title) break; - else i++; - } - - if (i >= data.length) return cleanup(); - - /* skipping whitespaces after title */ - title_e = i - 1; - while (title_e > title_b && _isspace(data[title_e])) title_e--; - - /* checking for closing quote presence */ - if (data[title_e] != '\'' && data[title_e] != '"') { - title_b = title_e = 0; - link_e = i; - } - } - - /* remove whitespace at the end of the link */ - while (link_e > link_b && _isspace(data[link_e - 1])) link_e--; - - /* remove optional angle brackets around the link */ - if (data[link_b] == '<') link_b++; - if (data[link_e - 1] == '>') link_e--; - - /* building escaped link and title */ - if (link_e > link_b) { - link = new Buffer(); - md.spanStack.push(link); - link.s += data.slice(link_b, link_e); - } - - if (title_e > title_b) { - title = new Buffer(); - md.spanStack.push(title); - title.s += data.slice(title_b, title_e); - } - - i++; - } - - /* reference style link */ - else if (i < data.length && data[i] == '[') { - var id = new Buffer(); - var lr = null; - - /* looking for the id */ - i++; - link_b = i; - while (i < data.length && data[i] != ']') i++; - if (i >= data.length) return cleanup(); - link_e = i; - - /* finding the link_ref */ - if (link_b == link_e) { - if (text_has_nl) { - var b = new Buffer(); - md.spanStack.push(b); - var j; - - for (j = 1; j < txt_e; j++) { - if (data[j] != '\n') - b.s += data[j]; - else if (data[j - 1] != ' ') - b.s += ' '; - } - - id.s = b.s; - } else { - id.s = data.slice(1); - } - } else { - id.s = data.slice(link_b, link_e); - } - - //TODO - lr = md.refs[id.s]; - if (!lr) return cleanup(); - - /* keeping link and title from link_ref */ - link = lr.link; - title = lr.title; - i++; - } - - /* shortcut reference style link */ - else { - var id = new Buffer(); - var lr = null; - - /* crafting the id */ - if (text_has_nl) { - var b = new Buffer(); - md.spanStack.push(b); - - var j; - for (j = 1; j < txt_e; j++) { - if (data[j] != '\n') b.s += data[j]; - else if (data[j - 1] != ' ') b.s += ' '; - } - - id.s = b.s; - } else { - id.s = data.slice(1, txt_e); - } - - /* finding the link_ref */ - lr = md.refs[id.s]; - if (!lr) return cleanup(); - - /* keeping link and title from link_ref */ - link = lr.link; - title = lr.title; - - /* rewinding the whitespace */ - i = txt_e + 1; - } - - /* building content: img alt is escaped, link content is parsed */ - if (txt_e > 1) { - content = new Buffer(); - md.spanStack.push(content); - if (is_img) { - content.s += data.slice(1, txt_e); - } else { - /* disable autolinking when parsing inline the - * content of a link */ - md.inLinkBody = 1; - parse_inline(content, md, data.slice(1, txt_e)); - md.inLinkBody = 0; - } - } - - if (link) { - u_link = new Buffer(); - md.spanStack.push(u_link); - unscape_text(u_link, link); - } else { - return cleanup(); - } - - /* calling the relevant rendering function */ - if (is_img) { - if (out.s.length && out.s[out.s.length - 1] == '!') - out.s = out.s.slice(0, -1); - - ret = md.callbacks.image(out, u_link, title, content, md.context); - } else { - ret = md.callbacks.link(out, u_link, title, content, md.context); - } - - /* cleanup */ - // cleanup: - // rndr->work_bufs[BUFFER_SPAN].size = (int)org_work_size; - // return ret ? i : 0; - return cleanup(); - } - - - /* char_langle_tag - '<' when tags or autolinks are allowed */ - function char_langle_tag(out, md, data_, offset) { - var data = data_.slice(offset); - var altype = {p:MKDA_NOT_AUTOLINK}; - var end = tag_length(data, altype); - var work = new Buffer(data.slice(0, end)); - var ret = 0; - - if (end > 2) { - if (md.callbacks.autolink && altype.p != MKDA_NOT_AUTOLINK) { - var u_link = new Buffer(); - md.spanStack.push(u_link); - work.s = data.substr(1 , end - 2); - unscape_text(u_link, work); - ret = md.callbacks.autolink(out, u_link, altype.p, md.context); - md.spanStack.pop(); - } - else if (md.callbacks.raw_html_tag) - ret = md.callbacks.raw_html_tag(out, work, md.context); - } - - if (!ret) return 0; - else return end; - } - - - /* char_escape - '\\' backslash escape */ - function char_escape(out, md, data_, offset) { - var data = data_.slice(offset); - var escape_chars = "\\`*_{}[]()#+-.!:|&<>/^~"; - var work = new Buffer(); - - if (data.length > 1) { - if (escape_chars.indexOf(data[1]) == -1) return 0; - - if (md.callbacks.normal_text) { - work.s = data[1]; - md.callbacks.normal_text(out, work, md.context); - } - else out.s += data[1]; - } else if (data.length == 1) { - out.s += data[0]; - } - - return 2; - } - - - - /* char_entity - '&' escaped when it doesn't belong to an entity */ - /* valid entities are assumed to be anything matching &#?[A-Za-z0-9]+; */ - function char_entity(out, md, data_, offset) { - var data = data_.slice(offset); - var end = 1; - var work = new Buffer(); - - if (end < data.length && data[end] == '#') end++; - - while (end < data.length && isalnum(data[end])) end++; - - if (end < data.length && data[end] == ';') end++; /* real entity */ - else return 0; /* lone '&' */ - - if (md.callbacks.entity) { - work.s = data.slice(0, end); - md.callbacks.entity(out, work, md.context); - } - else out.s += data.slice(0, end); - - return end; - } - - function char_autolink_url(out, md, data_, offset) { - var data = data_.slice(offset); - var link = null; - var link_len, rewind = {p: null}; - - if (!md.callbacks.autolink || md.inLinkBody) return 0; - - link = new Buffer(); - md.spanStack.push(link); - - if ((link_len = sd_autolink__url(rewind, link, data_, offset, data.length, 0)) > 0) { - if (rewind.p > 0) out.s = out.s.slice(0, -rewind.p); - md.callbacks.autolink(out, link, MKDA_NORMAL, md.context); - } - - md.spanStack.pop(); - return link_len; - } - - - function char_autolink_email(out, md, data_, offset) { - var data = data_.slice(offset); - var link = null; - var link_len, rewind = {p: null}; - - if (!md.callbacks.autolink || md.inLinkBody) return 0; - - link = new Buffer(); - md.spanStack.push(link); - - if ((link_len = sd_autolink__email(rewind, link, data_, offset, data.length, 0)) > 0) { - if (rewind.p > 0) out.s = out.s.slice(0, -rewind.p); - md.callbacks.autolink(out, link, MKDA_EMAIL, md.context); - } - - md.spanStack.pop(); - return link_len; - } - - - function char_autolink_www(out, md, data_, offset) { - var data = data_.slice(offset); - var link = null, link_url = null, link_text = null; - var link_len, rewind = {p: null}; - - if (!md.callbacks.link || md.inLinkBody) return 0; - - link = new Buffer(); - md.spanStack.push(link); - - if ((link_len = sd_autolink__www(rewind, link, data_, offset, data.length, 0)) > 0) { - link_url = new Buffer(); - md.spanStack.push(link_url); - link_url.s += 'http://'; - link_url.s += link.s; - - if (rewind.p > 0) out.s = out.s.slice(0, out.s.length-rewind.p); - if (md.callbacks.normal_text) { - link_text = new Buffer(); - md.spanStack.push(link_text); - md.callbacks.normal_text(link_text, link, md.context); - md.callbacks.link(out, link_url, null, link_text, md.context); - md.spanStack.pop(); - } else { - md.callbacks.link(out, link_url, null, link, md.context); - } - md.spanStack.pop(); - } - - md.spanStack.pop(); - return link_len; - } - - function char_autolink_subreddit_or_username(out, md, data_, offset) { - var data = data_.slice(offset); - var link = null; - var link_len, rewind = {p: null}; - - if (!md.callbacks.autolink || md.inLinkBody) return 0; - - link = new Buffer(); - md.spanStack.push(link); - if ((link_len = sd_autolink__subreddit(rewind, link, data_, offset, data.length)) > 0) { - //don't slice because the rewind pointer will always be 0 - if (rewind.p > 0) out.s = out.s.slice(0, -rewind.p); - md.callbacks.autolink(out, link, MKDA_NORMAL, md.context); - } else if ((link_len = sd_autolink__username(rewind, link, data_, offset, data.length)) > 0) { - //don't slice because the rewind pointer will always be 0 - if (rewind.p > 0) out.s = out.s.slice(0, -rewind.p); - md.callbacks.autolink(out, link, MKDA_NORMAL, md.context); - } - md.spanStack.pop(); - - return link_len; - } - - function char_superscript(out, md, data_, offset) { - var data = data_.slice(offset); - var size = data.length; - var sup_start, sup_len; - var sup = null; - - if (!md.callbacks.superscript) return 0; - - if (size < 2) return 0; - - if (data[1] == '(') { - sup_start = sup_len = 2; - - while (sup_len < size && data[sup_len] != ')' && data[sup_len - 1] != '\\') sup_len++; - - if (sup_len == size) return 0; - } else { - sup_start = sup_len = 1; - - while (sup_len < size && !_isspace(data[sup_len])) sup_len++; - } - - if (sup_len - sup_start == 0) return (sup_start == 2) ? 3 : 0; - - sup = new Buffer(); - md.spanStack.push(sup); - parse_inline(sup, md, data.slice(sup_start, sup_len)); - md.callbacks.superscript(out, sup, md.context); - md.spanStack.pop(); - - return (sup_start == 2) ? sup_len + 1 : sup_len; - } - - - var markdown_char_ptrs = [ - null, - char_emphasis, - char_codespan, - char_linebreak, - char_link, - char_langle_tag, - char_escape, - char_entity, - char_autolink_url, - char_autolink_email, - char_autolink_www, - char_autolink_subreddit_or_username, - char_superscript - ]; - - var MKD_LIST_ORDERED = 1; - var MKD_LI_BLOCK = 2; /*
  • containing block data */ - var MKD_LI_END = 8; /* internal list flag */ - - var enumCounter = 0; - var MD_CHAR_NONE = enumCounter++; - var MD_CHAR_EMPHASIS = enumCounter++; - var MD_CHAR_CODESPAN = enumCounter++; - var MD_CHAR_LINEBREAK = enumCounter++; - var MD_CHAR_LINK = enumCounter++; - var MD_CHAR_LANGLE = enumCounter++; - var MD_CHAR_ESCAPE = enumCounter++; - var MD_CHAR_ENTITITY = enumCounter++; - var MD_CHAR_AUTOLINK_URL = enumCounter++; - var MD_CHAR_AUTOLINK_EMAIL = enumCounter++; - var MD_CHAR_AUTOLINK_WWW = enumCounter++; - var MD_CHAR_AUTOLINK_SUBREDDIT_OR_USERNAME = enumCounter++; - var MD_CHAR_SUPERSCRIPT = enumCounter++; - - var SD_AUTOLINK_SHORT_DOMAINS = (1 << 0); - - enumCounter = 0; - var MKDA_NOT_AUTOLINK = enumCounter++; /* used internally when it is not an autolink*/ - var MKDA_NORMAL = enumCounter++; /* normal http/http/ftp/mailto/etc link */ - var MKDA_EMAIL = enumCounter++; /* e-mail link without explit mailto: */ - - var MKDEXT_NO_INTRA_EMPHASIS = (1 << 0); - var MKDEXT_TABLES = (1 << 1); - var MKDEXT_FENCED_CODE = (1 << 2); - var MKDEXT_AUTOLINK = (1 << 3); - var MKDEXT_STRIKETHROUGH = (1 << 4); - // var MKDEXT_LAX_HTML_BLOCKS = (1 << 5); - var MKDEXT_SPACE_HEADERS = (1 << 6); - var MKDEXT_SUPERSCRIPT = (1 << 7); - var MKDEXT_LAX_SPACING = (1 << 8) - - var HTML_SKIP_HTML = (1 << 0); - var HTML_SKIP_STYLE = (1 << 1); - var HTML_SKIP_IMAGES = (1 << 2); - var HTML_SKIP_LINKS = (1 << 3); - var HTML_EXPAND_TABS = (1 << 4); - var HTML_SAFELINK = (1 << 5); - var HTML_TOC = (1 << 6); - var HTML_HARD_WRAP = (1 << 7); - var HTML_USE_XHTML = (1 << 8); - var HTML_ESCAPE = (1 << 9); - var HTML_ALLOW_ELEMENT_WHITELIST = (1 << 10); - - var MKD_TABLE_ALIGN_L = 1; - var MKD_TABLE_ALIGN_R = 2; - var MKD_TABLE_ALIGN_CENTER = 3; - var MKD_TABLE_ALIGNMASK = 3; - var MKD_TABLE_HEADER = 4 - - var HTML_TAG_NONE = 0; - var HTML_TAG_OPEN = 1; - var HTML_TAG_CLOSE = 2; - - - /** - * A string buffer wrapper because JavaScript doesn't have mutable strings. - * @constructor - * @param {string=} str Optional string to initialize the Buffer with. - */ - function Buffer(str) { - this.s = str || ""; - }; - // Buffer.prototype.toString = function toString() { - // return this.s; - // }; - // Buffer.prototype.slice - - - /** - * A Markdown parser object. - * @constructor - */ - function Markdown() { - - //Becase javascript strings are immutable they must be wrapped with Buffer() - this.spanStack = []; - this.blockStack = []; - this.extensions = MKDEXT_NO_INTRA_EMPHASIS | MKDEXT_SUPERSCRIPT | MKDEXT_AUTOLINK | MKDEXT_STRIKETHROUGH | MKDEXT_TABLES; - var renderer = getRedditRenderer(); - this.context = renderer.context; - this.callbacks = renderer.callbacks; - this.inLinkBody = 0; - this.activeChars = {}; - this.refs = {}; - this.nestingLimit = 16; - }; - - - /* is_empty - returns the line length when it is empty, 0 otherwise */ - function is_empty(data) { - var i; - for (i = 0; i < data.length && data[i] != '\n'; i++) - if (data[i] != ' ') return 0; - - return i + 1; - } - - - /* is_hrule - returns whether a line is a horizontal rule */ - function is_hrule(data) { - var i = 0, n = 0; - var c; - - /* skipping initial spaces */ - if (data.length < 3) return 0; - if (data[0] == ' ') { i++; - if (data[1] == ' ') { i++; - if (data[2] == ' ') { i++; } } } - - /* looking at the hrule uint8_t */ - if (i + 2 >= data.length - || (data[i] != '*' && data[i] != '-' && data[i] != '_')) - return 0; - c = data[i]; - - /* the whole line must be the char or whitespace */ - while (i < data.length && data[i] != '\n') { - if (data[i] == c) n++; - else if (data[i] != ' ') - return 0; - - i++; - } - - return n >= 3; - } - - - /* check if a line begins with a code fence; return the - * width if it is */ - function prefix_codefence(data) { - var i = 0, n = 0; - var c; - - /* skipping initial spaces */ - if (data.length < 3) return 0; - if (data[0] == ' ') { i++; - if (data[1] == ' ') { i++; - if (data[2] == ' ') { i++; } } } - - /* looking at the hrule uint8_t */ - if (i + 2 >= data.length || !(data[i] == '~' || data[i] == '`')) - return 0; - - c = data[i]; - - /* the whole line must be the uint8_t or whitespace */ - while (i < data.length && data[i] == c) { - n++; i++; - } - - if (n < 3) return 0; - - return i; - } - - /* check if a line is a code fence; return its size if it */ - function is_codefence(data, syntax) { - var i = 0, syn_len = 0; - i = prefix_codefence(data); - if (i == 0) return 0; - - - while (i < data.length && data[i] == ' ') i++; - - var syn_start; - //syn_start = data + i; - syn_start = i; - - if (i < data.length && data[i] == '{') { - i++; syn_start++; - - while (i < data.length && data[i] != '}' && data[i] != '\n') { - syn_len++; i++; - } - - if (i == data.length || data[i] != '}') - return 0; - - /* strip all whitespace at the beginning and the end - * of the {} block */ - /*remember not to remove the +0, it helps me keep syncronised with snudown*/ - while (syn_len > 0 && _isspace(data[syn_start+0])) { - syn_start++; syn_len--; - } - - // while (syn_len > 0 && _isspace(syn_start[syn_len - 1])) - while (syn_len > 0 && _isspace(data[syn_start+syn_len - 1])) - syn_len--; - - i++; - } else { - while (i < data.length && !_isspace(data[i])) { - syn_len++; i++; - } - } - - if (syntax) syntax.s = data.substr(syn_start, syn_len); - // syntax->size = syn; - - while (i < data.length && data[i] != '\n') { - if (!_isspace(data[i])) return 0; - - i++; - } - - return i + 1; - } - - /* find_emph_char - looks for the next emph uint8_t, skipping other constructs */ - function find_emph_char(data, c) { - var i = 1; - while (i < data.length) { - while (i < data.length && data[i] != c && data[i] != '`' && data[i] != '[') - i++; - - if (i == data.length) return 0; - - if (data[i] == c) - return i; - - /* not counting escaped chars */ - if (i && data[i - 1] == '\\') { - i++; continue; - } - - if (data[i] == '`') { - var span_nb = 0, bt; - var tmp_i = 0; - - /* counting the number of opening backticks */ - while (i < data.length && data[i] == '`') { - i++; span_nb++; - } - - if (i >= data.length) return 0; - - /* finding the matching closing sequence */ - bt = 0; - while (i < data.length && bt < span_nb) { - if (!tmp_i && data[i] == c) tmp_i = i; - if (data[i] == '`') bt++; - else bt = 0; - i++; - } - - if (i >= data.length) return tmp_i; - } - /* skipping a link */ - else if (data[i] == '[') { - var tmp_i = 0; - var cc; - - i++; - while (i < data.length && data[i] != ']') { - if (!tmp_i && data[i] == c) tmp_i = i; - i++; - } - - i++; - while (i < data.length && (data[i] == ' ' || data[i] == '\n')) - i++; - - if (i >= data.length) return tmp_i; - - switch (data[i]) { - case '[': - cc = ']'; break; - - case '(': - cc = ')'; break; - - default: - if (tmp_i) - return tmp_i; - else - continue; - } - - i++; - while (i < data.length && data[i] != cc) { - if (!tmp_i && data[i] == c) tmp_i = i; - i++; - } - - if (i >= data.length) return tmp_i; - i++; - } - } - - return 0; - } - - /* parse_emph1 - parsing single emphase */ - /* closed by a symbol not preceded by whitespace and not followed by symbol */ - function parse_emph1(out, md, data_, c) { - var data = data_.slice(1); - var i = 0, len; - var r; - - if (!md.callbacks.emphasis) return 0; - - /* skipping one symbol if coming from emph3 */ - if (data.length > 1 && data[0] == c && data[1] == c) i = 1; - - while (i < data.length) { - len = find_emph_char(data.slice(i), c); - if (!len) return 0; - i += len; - if (i >= data.length) return 0; - - if (data[i] == c && !_isspace(data[i - 1])) { - if ((md.extensions & MKDEXT_NO_INTRA_EMPHASIS) && (c == '_')) { - if (!(i + 1 == data.length || _isspace(data[i + 1]) || ispunct(data[i + 1]))) - continue; - } - - var work = new Buffer(); - md.spanStack.push(work); - parse_inline(work, md, data.slice(0, i)); - r = md.callbacks.emphasis(out, work, md.context); - md.spanStack.pop(); - return r ? i + 1 : 0; - } - } - - return 0; - } - - /* parse_emph2 - parsing single emphase */ - function parse_emph2(out, md, data_, c) { - var data = data_.slice(2); - var i = 0, len; - var r; - - var render_method = (c == '~') ? md.callbacks.strikethrough : md.callbacks.double_emphasis; - - if (!render_method) return 0; - - while (i < data.length) { - len = find_emph_char(data.slice(i), c); - if (!len) return 0; - i += len; - - if (i + 1 < data.length && data[i] == c && data[i + 1] == c && i && !_isspace(data[i - 1])) { - var work = new Buffer(); - md.spanStack.push(work); - parse_inline(work, md, data.slice(0, i)); - r = render_method(out, work, md.context); - md.spanStack.pop(); - return r ? i + 2 : 0; - } - i++; - } - return 0; - } - - /* parse_emph3 • parsing single emphase */ - /* finds the first closing tag, and delegates to the other emph */ - function parse_emph3(out, md, data_, c) { - var data = data_.slice(3); - var i = 0, len; - var r; - - while (i < data.length) { - len = find_emph_char(data.slice(i), c); - if (!len) return 0; - i += len; - - /* skip whitespace preceded symbols */ - if (data[i] != c || _isspace(data[i - 1])) continue; - - if (i + 2 < data.length && data[i + 1] == c && data[i + 2] == c && md.callbacks.triple_emphasis) { - /* triple symbol found */ - var work = new Buffer(); - md.spanStack.push(work); - parse_inline(work, md, data.slice(0, i)); - r = md.callbacks.triple_emphasis(out, work, md.context); - md.spanStack.pop(); - return r ? i + 3 : 0; - - } else if (i + 1 < data.length && data[i + 1] == c) { - /* double symbol found, handing over to emph1 */ - len = parse_emph1(out, md, data_, c); - if (!len) return 0; - else return len - 2; - - } else { - /* single symbol found, handing over to emph2 */ - len = parse_emph2(out, md, data_, c); - if (!len) return 0; - else return len - 1; - } - } - return 0; - } - - function is_atxheader(md, data) { - if (data[0] != '#') return false; - - if (md.extensions & MKDEXT_SPACE_HEADERS) { - var level = 0; - - while (level < data.length && level < 6 && data[level] == '#') - level++; - - if (level < data.length && data[level] != ' ') - return false; - } - - return true; - } - - - /* is_headerline . returns whether the line is a setext-style hdr underline */ - function is_headerline(data) { - var i = 0; - var size = data.length; - - /* test of level 1 header */ - if (data[i] == '=') { - for (i = 1; i < size && data[i] == '='; i++) {} - while (i < size && data[i] == ' ') i++; - return (i >= size || data[i] == '\n') ? 1 : 0; } - - /* test of level 2 header */ - if (data[i] == '-') { - for (i = 1; i < size && data[i] == '-'; i++) {} - while (i < size && data[i] == ' ') i++; - return (i >= size || data[i] == '\n') ? 2 : 0; } - - return 0; - } - - function is_next_headerline(data) { - var size = data.length; - var i = 0; - - while (i < size && data[i] != '\n') i++; - - if (++i >= size) return 0; - - return is_headerline(data.slice(i)); - } - - /* prefix_quote - returns blockquote prefix length */ - function prefix_quote(data) { - var i = 0; - var size = data.length; - if (i < size && data[i] == ' ') i++; - if (i < size && data[i] == ' ') i++; - if (i < size && data[i] == ' ') i++; - - if (i < size && data[i] == '>') { - if (i + 1 < size && data[i + 1] == ' ') - return i + 2; - - return i + 1; - } - - return 0; - } - - /* prefix_code • returns prefix length for block code*/ - function prefix_code(data) { - if (data.length > 3 && data[0] == ' ' && data[1] == ' ' - && data[2] == ' ' && data[3] == ' ') return 4; - - return 0; - } - - /* prefix_oli - returns ordered list item prefix */ - function prefix_oli(data) { - var size = data.length; - var i = 0; - - if (i < size && data[i] == ' ') i++; - if (i < size && data[i] == ' ') i++; - if (i < size && data[i] == ' ') i++; - - if (i >= size || data[i] < '0' || data[i] > '9') return 0; - - while (i < size && data[i] >= '0' && data[i] <= '9') i++; - - if (i + 1 >= size || data[i] != '.' || data[i + 1] != ' ') return 0; - - if (is_next_headerline(data.slice(i))) return 0; - - return i + 2; - } - - /* prefix_uli - returns ordered list item prefix */ - function prefix_uli(data) { - var size = data.length; - var i = 0; - - if (i < size && data[i] == ' ') i++; - if (i < size && data[i] == ' ') i++; - if (i < size && data[i] == ' ') i++; - - if (i + 1 >= size || - (data[i] != '*' && data[i] != '+' && data[i] != '-') || - data[i + 1] != ' ') - return 0; - - if (is_next_headerline(data.slice(i))) return 0; - - return i + 2; - } - - /* is_mail_autolink - looks for the address part of a mail autolink and '>' */ - /* this is less strict than the original markdown e-mail address matching */ - function is_mail_autolink(data) { - var i = 0, nb = 0; - - /* address is assumed to be: [-@._a-zA-Z0-9]+ with exactly one '@' */ - for (i = 0; i < data.length; ++i) { - if (isalnum(data[i])) - continue; - - switch (data[i]) { - case '@': - nb++; - - case '-': - case '.': - case '_': - break; - - case '>': - return (nb == 1) ? i + 1 : 0; - - default: - return 0; - } - } - - return 0; - } - - /* tag_length - returns the length of the given tag, or 0 is it's not valid */ - function tag_length(data, autolink) { - var i, j; - - /* a valid tag can't be shorter than 3 chars */ - if (data.length < 3) return 0; - - /* begins with a '<' optionally followed by '/', followed by letter or number */ - if (data[0] != '<') return 0; - i = (data[1] == '/') ? 2 : 1; - - if (!isalnum(data[i])) return 0; - - /* scheme test */ - autolink.p = MKDA_NOT_AUTOLINK; - - /* try to find the beginning of an URI */ - while (i < data.length && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-')) i++; - - if (i > 1 && data[i] == '@') { - if ((j = is_mail_autolink(data.slice(i))) != 0) { - autolink.p = MKDA_EMAIL; - return i + j; - } - } - - if (i > 2 && data[i] == ':') { - autolink.p = MKDA_NORMAL; - i++; - } - - /* completing autolink test: no whitespace or ' or " */ - if (i >= data.length) autolink.p = MKDA_NOT_AUTOLINK; - else if (autolink.p) { - j = i; - - while (i < data.length) { - if (data[i] == '\\') i += 2; - else if (data[i] == '>' || data[i] == '\'' || - data[i] == '"' || data[i] == ' ' || data[i] == '\n') - break; - else i++; - } - - if (i >= data.length) return 0; - if (i > j && data[i] == '>') return i + 1; - /* one of the forbidden chars has been found */ - autolink.p = MKDA_NOT_AUTOLINK; - } - - /* looking for sometinhg looking like a tag end */ - while (i < data.length && data[i] != '>') i++; - if (i >= data.length) return 0; - return i + 1; - } - - // parse_inline - parses inline markdown elements - //Buffer, md, String - function parse_inline(out, md, data) { - var i = 0, end = 0; - var action = 0; - var work = new Buffer(); - - if (md.spanStack.length + md.blockStack.length > md.nestingLimit) - return; - - while (i < data.length) { - /* copying inactive chars into the output */ - while (end < data.length && !(action = md.activeChars[data[end]])) { - end++; - } - - if (md.callbacks.normal_text) { - work.s = data.slice(i, end); - md.callbacks.normal_text(out, work, md.context); - } - else - out.s += data.slice(i, end); - - if (end >= data.length) break; - i = end; - - end = markdown_char_ptrs[action](out, md, data, i); - if (!end) /* no action from the callback */ - end = i + 1; - else { - i += end; - end = i; - } - } - } - - /* parse_atxheader - parsing of atx-style headers */ - function parse_atxheader(out, md, data) { - var level = 0; - var i, end, skip; - - while (level < data.length && level < 6 && data[level] == '#') level++; - - for (i = level; i < data.length && data[i] == ' '; i++) {} - - for (end = i; end < data.length && data[end] != '\n'; end++) {} - skip = end; - - while (end && data[end - 1] == '#') end--; - - while (end && data[end - 1] == ' ') end--; - - if (end > i) { - var work = new Buffer(); - md.spanStack.push(work); - - parse_inline(work, md, data.slice(i, end)); - - if (md.callbacks.header) - md.callbacks.header(out, work, level, md.context); - - md.spanStack.pop(); - } - - return skip; - } - - /* htmlblock_end - checking end of HTML block : [ \t]*\n[ \t*]\n */ - /* returns the length on match, 0 otherwise */ - // htmlblock_end(const char *tag, size_t tag_len, struct sd_markdown *rndr, uint8_t *data, size_t size) - function htmlblock_end(tag, md, data) { - var i, w; - - /* checking if tag is a match */ - //tag should already be lowercase - if (tag.length + 3 >= data.length || - data.slice(2).toLowerCase() != tag || - data[tag.length + 2] != '>') - return 0; - - /* checking white lines */ - i = tag.length + 3; - w = 0; - if (i < data.length && (w = is_empty(data.slice(i))) == 0) - return 0; /* non-blank after tag */ - i += w; - w = 0; - - if (i < data.length) w = is_empty(data.slice(i)); - - return i + w; - } - - /* parse_htmlblock - parsing of inline HTML block */ - //TODO - function parse_htmlblock(out, md, data, do_render) { - var i, j = 0; - var curtag = null; - var found; - var work = new Buffer(data); - - /* identification of the opening tag */ - if (data.length < 2 || data[0] != '<') return 0; - - i = 1; - while (i < data.length && data[i] != '>' && data[i] != ' ') i++; - - if (i < data.length) curtag = find_block_tag(data.slice(1)); - - /* handling of special cases */ - if (!curtag) { - - /* HTML comment, laxist form */ - if (data.length > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') { - i = 5; - - while (i < data.length && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>')) i++; - - i++; - - if (i < size) - j = is_empty(data.slice(i)); - - if (j) { - //TODO: HANDLE WORK!!! - // work.size = i + j; - work.s = data.slice(0, i + j); - if (do_render && md.callbacks.blockhtml) - md.callbacks.blockhtml(out, work, md.context); - return work.s.length; - } - } - - /* HR, which is the only self-closing block tag considered */ - if (data.length > 4 && (data[1] == 'h' || data[1] == 'H') && (data[2] == 'r' || data[2] == 'R')) { - i = 3; - while (i < data.length && data[i] != '>') i++; - - if (i + 1 < data.length) { - i++; - j = is_empty(data.slice(i)); - if (j) { - work.s = data.slice(0, i + j); - if (do_render && md.callbacks.blockhtml) - md.callbacks.blockhtml(out, work, md.context); - return work.s.length; - } - } - } - - /* no special case recognised */ - return 0; - } - - /* looking for an unindented matching closing tag */ - /* followed by a blank line */ - i = 1; - found = 0; - - /* if not found, trying a second pass looking for indented match */ - /* but not if tag is "ins" or "del" (following original Markdown.pl) */ - if (curtag != 'ins' && curtag != 'del') { - var tag_size = curtag.length; - i = 1; - while (i < data.length) { - i++; - while (i < data.length && !(data[i - 1] == '<' && data[i] == '/')) - i++; - - if (i + 2 + tag_size >= data.length) - break; - - // j = htmlblock_end(tag, md, data + i - 1, size - i + 1); - //TODO - j = htmlblock_end(tag, md, data.slice(i - 1)); - - if (j) { - i += j - 1; - found = 1; - break; - } - } - } - - if (!found) return 0; - - /* the end of the block has been found */ - //TODO: - work.s = work.s.slice(0, i); - if (do_render && md.callbacks.blockhtml) - md.callbacks.blockhtml(out, work, md.context); - - return i; - } - - /* parse_blockquote - handles parsing of a blockquote fragment */ - function parse_blockquote(out, md, data) { - var size = data.length; - var beg, end = 0, pre, work_size = 0; - // uint8_t *work_data = 0; - var work_data = ""; - var work_data_cursor = 0; - - var out_ = new Buffer(); - md.blockStack.push(out_); - - beg = 0; - while (beg < size) { - for (end = beg + 1; end < size && data[end - 1] != '\n'; end++) {} - - pre = prefix_quote(data.slice(beg, end)); - - if (pre) beg += pre; /* skipping prefix */ - - /* empty line followed by non-quote line */ - else if (is_empty(data.slice(beg, end)) && - (end >= size || (prefix_quote(data.slice(end)) == 0 && - !is_empty(data.slice(end))))) - break; - - if (beg < end) { /* copy into the in-place working buffer */ - /* bufput(work, data + beg, end - beg); */ - //TODO:!!! FIX THIS!!! - // if (!work_data) work_data = data.slice(beg, end); - // work_data = data + beg; - work_data += data.slice(beg, end); - /* - if (!work_data) work_data_cursor = beg; - else if (beg != work_data_cursor + work_size) - work_data += data.slice(beg, end); - */ - // memmove(work_data + work_size, data + beg, end - beg); - work_size += end - beg; - } - beg = end; - } - - parse_block(out_, md, work_data); - if (md.callbacks.blockquote) - md.callbacks.blockquote(out, out_, md.context); - md.blockStack.pop(); - return end; - } - - /* parse_paragraph - handles parsing of a regular paragraph */ - function parse_paragraph(out, md, data) { - var i = 0, end = 0; - var level = 0; - var size = data.length; - var work = new Buffer(data); - - while (i < size) { - for (end = i + 1; end < size && data[end - 1] != '\n'; end++) {/* empty */} - - if (prefix_quote(data.slice(i, end)) != 0) { - end = i; - break; - } - - var tempdata = data.slice(i); - if (is_empty(tempdata) || (level = is_headerline(tempdata)) != 0) break; - if (is_empty(tempdata)) break; - if ((level = is_headerline(tempdata)) != 0) break; - - if (is_atxheader(md, tempdata) - || is_hrule(tempdata) - || prefix_quote(tempdata)) { - end = i; - break; - } - - /* - * Early termination of a paragraph with the same logic - * as markdown 1.0.0. If this logic is applied, the - * Markdown 1.0.3 test suite wont pass cleanly. - * - * :: If the first character in a new line is not a letter - * lets check to see if there's some kind of block starting here - */ - if ((md.extensions & MKDEXT_LAX_SPACING) && !isalnum(data[i])) { - if (prefix_oli(tempdata) - || prefix_uli(tempdata)) { - end = i; - break; - } - /* see if an html block starts here */ - if (data[i] == '<' && md.callbacks.blockhtml - && parse_htmlblock(out, md, tempdata, 0)) { - end = i; - break - } - - /* see if a code fence starts here */ - if ((md.extensions && MKDEXT_FENCED_CODE) != 0 - && is_codefence(tempdata, null) != 0) { - end = i; - break; - } - } - - i = end; - } - - var work_size = i; - while (work_size && data[work_size - 1] == '\n') work_size--; - work.s = work.s.slice(0, work_size); - - if (!level) { - var tmp = new Buffer(); - md.blockStack.push(tmp); - parse_inline(tmp, md, work.s); - if (md.callbacks.paragraph) - md.callbacks.paragraph(out, tmp, md.context); - md.blockStack.pop(); - } else { - var header_work = null; - - if (work.size) { - var beg; - i = work.s.length; - // var work_size = work.s.length - 1; - // work.size -= 1; - - while (work_size && data[work_size] != '\n') - work_size -= 1; - - beg = work_size + 1; - while (work_size && data[work_size - 1] == '\n') - work_size -= 1; - - work.s = work.s.slice(0, work_size); - if (work_size > 0) { - var tmp = new Buffer(); - md.blockStack.push(tmp); - parse_inline(tmp, md, work.s); - - if (md.callbacks.paragraph) - md.callbacks.paragraph(out, tmp, md.context); - - md.blockStack.pop(); - work.s = work.s.slice(beg, i); - } - else work.s = work.s.slice(0, i); - } - - header_work = new Buffer(); - md.spanStack.push(header_work); - parse_inline(header_work, md, work.s); - - if (md.callbacks.header) - md.callbacks.header(out, header_work, level, md.context); - - md.spanStack.pop(); - } - - return end; - } - - /* parse_fencedcode - handles parsing of a block-level code fragment */ - function parse_fencedcode(out, md, data) { - var beg, end; - var work = null; - var lang = new Buffer(); - - beg = is_codefence(data, lang); - if (beg == 0) return 0; - - work = new Buffer(); - md.blockStack.push(work); - - while (beg < data.length) { - var fence_end; - var fence_trail = new Buffer(); - - fence_end = is_codefence(data.slice(beg), fence_trail); - if (fence_end != 0 && fence_trail.s.length == 0) { - beg += fence_end; - break; - } - - for (end = beg + 1; end < data.length && data[end - 1] != '\n'; end++) {} - - if (beg < end) { - /* verbatim copy to the working buffer, - escaping entities */ - var tempData = data.slice(beg, end); - if (is_empty(tempData)) work.s += '\n'; - else work.s += tempData; - } - beg = end; - } - - if (work.s.length && work.s[work.s.length - 1] != '\n') - work.s += '\n'; - - if (md.callbacks.blockcode) - md.callbacks.blockcode(out, work, lang.s.length ? lang : null, md.context); - - md.blockStack.pop(); - return beg; - } - - function parse_blockcode(out, md, data) { - var size = data.length; - var beg, end, pre; - - var work = null; - md.blockStack.push(work = new Buffer()); - - beg = 0; - while (beg < size) { - for (end = beg + 1; end < size && data[end - 1] != '\n'; end++) {}; - pre = prefix_code(data.slice(beg, end)); - - if (pre) beg += pre; /* skipping prefix */ - else if (!is_empty(data.slice(beg, end))) - /* non-empty non-prefixed line breaks the pre */ - break; - - if (beg < end) { - /* verbatim copy to the working buffer, - escaping entities */ - if (is_empty(data.slice(beg, end))) work.s += '\n'; - else work.s += data.slice(beg, end); - } - beg = end; - } - - var work_size = work.s.length; - while (work_size && work.s[work_size - 1] == '\n') work_size -= 1; - work.s = work.s.slice(0, work_size); - - work.s += '\n'; - - if (md.callbacks.blockcode) - md.callbacks.blockcode(out, work, null, md.context); - - md.blockStack.pop(); - return beg; - } - - /* parse_listitem - parsing of a single list item */ - /* assuming initial prefix is already removed */ - //FLAGS is pointer - function parse_listitem(out, md, data, flags) { - var size = data.length; - var work = null, inter = null; - var beg = 0, end, pre, sublist = 0, orgpre = 0, i; - var in_empty = 0, has_inside_empty = 0, in_fence = 0; - - /* keeping track of the first indentation prefix */ - while (orgpre < 3 && orgpre < size && data[orgpre] == ' ') - orgpre++; - - //TODO - beg = prefix_uli(data); - if (!beg) beg = prefix_oli(data); - - if (!beg) return 0; - - /* skipping to the beginning of the following line */ - end = beg; - while (end < size && data[end - 1] != '\n') end++; - - /* getting working buffers */ - md.spanStack.push(work = new Buffer()); - md.spanStack.push(inter = new Buffer()); - - /* putting the first line into the working buffer */ - work.s += data.slice(beg, end); - beg = end; - - /* process the following lines */ - while (beg < size) { - var has_next_uli, has_next_oli; - end++; - - while (end < size && data[end - 1] != '\n') end++; - - /* process an empty line */ - if (is_empty(data.slice(beg, end))) { - in_empty = 1; - beg = end; - continue; - } - - /* calculating the indentation */ - i = 0; - while (i < 4 && beg + i < end && data[beg + i] == ' ') i++; - - pre = i; - - //TODO: Cache this slice? - if (md.flags & MKDEXT_FENCED_CODE) { - if (is_codefence(data.slice(beg+i, end), null) != 0) { - in_fence = !in_fence; - } - } - - /* only check for new list items if we are **not** in a fenced code block */ - if (!in_fence) { - has_next_uli = prefix_uli(data.slice(beg+i, end)); - has_next_oli = prefix_oli(data.slice(beg+i, end)); - } - - /* checking for ul/ol switch */ - if (in_empty && ( - ((flags.p & MKD_LIST_ORDERED) && has_next_uli) || - (!(flags.p & MKD_LIST_ORDERED) && has_next_oli))){ - flags.p |= MKD_LI_END; - break; /* the following item must have same list type */ - } - - /* checking for a new item */ - if ((has_next_uli && !is_hrule(data.slice(beg+i, end))) || has_next_oli) { - if (in_empty) has_inside_empty = 1; - - if (pre == orgpre) /* the following item must have */ - break; /* the same indentation */ - - if (!sublist) sublist = work.s.length; - } - /* joining only indented stuff after empty lines; - * note that now we only require 1 space of indentation - * to continue list */ - else if (in_empty && pre == 0) { - flags.p |= MKD_LI_END; - break; - } - else if (in_empty) { - work.s += '\n'; - has_inside_empty = 1; - } - - in_empty = 0; - - /* adding the line without prefix into the working buffer */ - work.s += data.slice(beg + i, end); - beg = end; - } - - /* render of li contents */ - if (has_inside_empty) flags.p |= MKD_LI_BLOCK; - - if (flags.p & MKD_LI_BLOCK) { - /* intermediate render of block li */ - if (sublist && sublist < work.s.length) { - parse_block(inter, md, work.s.slice(0, sublist)); - parse_block(inter, md, work.s.slice(sublist)); - } - else - parse_block(inter, md, work.s); - } else { - //TODO: - /* intermediate render of inline li */ - if (sublist && sublist < work.s.length) { - parse_inline(inter, md, work.s.slice(0, sublist)); - parse_block(inter, md, work.s.slice(sublist)); - } - else - parse_inline(inter, md, work.s); - } - - /* render of li itself */ - if (md.callbacks.listitem) - md.callbacks.listitem(out, inter, flags.p, md.context); - - md.spanStack.pop(); - md.spanStack.pop(); - return beg; - } - - - /* parse_list - parsing ordered or unordered list block */ - function parse_list(out, md, data, flags) { - var size = data.length; - var i = 0, j; - - var work = null; - md.blockStack.push(work = new Buffer()); - - while (i < size) { - var flag_p = {p: flags}; - j = parse_listitem(work, md, data.slice(i), flag_p); - flags = flag_p.p; - i += j; - - if (!j || (flags & MKD_LI_END)) break; - } - - if (md.callbacks.list) - md.callbacks.list(out, work, flags, md.context); - md.blockStack.pop(); - return i; - } - - function parse_table_row(out, md, data, columns, header_flag) { - var i = 0, col; - var row_work = null; - - if (!md.callbacks.table_cell || !md.callbacks.table_row) return; - - md.spanStack.push(row_work = new Buffer()); - - if (i < data.length && data[i] == '|') i++; - - for (col = 0; col < columns.length && i < data.length; ++col) { - var cell_start, cell_end; - var cell_work; - - md.spanStack.push(cell_work = new Buffer()); - - while (i < data.length && _isspace(data[i])) i++; - - cell_start = i; - - while (i < data.length && data[i] != '|') i++; - - cell_end = i - 1; - - while (cell_end > cell_start && _isspace(data[cell_end])) cell_end--; - - // parse_inline(cell_work, rndr, data + cell_start, 1 + cell_end - cell_start); - parse_inline(cell_work, md, data.slice(cell_start, 1 + cell_end)); - md.callbacks.table_cell(row_work, cell_work, columns[col] | header_flag, md.context); - - md.spanStack.pop(); - i++; - } - - for (; col < columns.length; ++col) { - var empty_cell = null; - md.callbacks.table_cell(row_work, empty_cell, columns[col] | header_flag, md.context); - } - - md.callbacks.table_row(out, row_work, md.context); - - md.spanStack.pop(); - } - - function parse_table_header(out, md, data, columns) { - var i = 0, col, header_end, under_end; - - var pipes = 0; - while (i < data.length && data[i] != '\n') - if (data[i++] == '|') pipes++; - - if (i == data.length || pipes == 0) - return 0; - - header_end = i; - - while (header_end > 0 && _isspace(data[header_end - 1])) header_end--; - - if (data[0] == '|') pipes--; - - if (header_end && data[header_end - 1] == '|') pipes--; - - // columns.p = pipes + 1; - // column_data.p = new Array(columns.p); - columns.p = new Array(pipes + 1); - for (var k = 0; k < columns.p.length; k++) columns.p[k] = 0; - - /* Parse the header underline */ - i++; - if (i < data.length && data[i] == '|') i++; - - under_end = i; - while (under_end < data.length && data[under_end] != '\n') under_end++; - - for (col = 0; col < columns.p.length && i < under_end; ++col) { - var dashes = 0; - - while (i < under_end && data[i] == ' ') i++; - - if (data[i] == ':') { - i++; - columns.p[col] |= MKD_TABLE_ALIGN_L; - dashes++; - } - - while (i < under_end && data[i] == '-') { - i++; dashes++; - } - - if (i < under_end && data[i] == ':') { - i++; columns.p[col] |= MKD_TABLE_ALIGN_R; - dashes++; - } - - while (i < under_end && data[i] == ' ') i++; - - if (i < under_end && data[i] != '|') break; - - if (dashes < 1) break; - - i++; - } - - if (col < columns.p.length) return 0; - - parse_table_row(out, md, data.slice(0, header_end), columns.p, MKD_TABLE_HEADER); - - return under_end + 1; - } - - function parse_table(out, md, data) { - var i; - var header_work, body_work; - - var columns = {p: null}; - - md.spanStack.push(header_work = new Buffer()); - md.blockStack.push(body_work = new Buffer()); - - i = parse_table_header(header_work, md, data, columns); - if (i > 0) { - - while (i < data.length) { - var row_start; - var pipes = 0; - - row_start = i; - - while (i < data.length && data[i] != '\n') - if (data[i++] == '|') - pipes++; - - if (pipes == 0 || i == data.length) { - i = row_start; - break; - } - - parse_table_row(body_work, md, data.slice(row_start, i), columns.p, 0); - - i++; - } - - if (md.callbacks.table) - md.callbacks.table(out, header_work, body_work, md.context); - } - - md.spanStack.pop(); - md.blockStack.pop(); - return i; - } - - function parse_block(out, md, data) { - var beg = 0, end, i; - var textData; - - if (md.spanStack.length + - md.blockStack.length > md.nestingLimit) - return; - - while (beg < data.length) { - textData = data.slice(beg); - end = data.length - beg; - - if (is_atxheader(md, textData)) - beg += parse_atxheader(out, md, textData); - - else if (data[beg] == '<' && md.callbacks.blockhtml && - (i = parse_htmlblock(out, md, textData, 1)) != 0) - beg += i; - else if ((i = is_empty(textData)) != 0) - beg += i; - else if (is_hrule(textData)) { - if (md.callbacks.hrule) - md.callbacks.hrule(out, md.context); - - while (beg < data.length && data[beg] != '\n') beg++; - - beg++; - } - - else if ((md.extensions & MKDEXT_FENCED_CODE) != 0 && - (i = parse_fencedcode(out, md, textData)) != 0) - beg += i; - - else if ((md.extensions & MKDEXT_TABLES) != 0 && - (i = parse_table(out, md, textData)) != 0) - beg += i; - - else if (prefix_quote(textData)) - beg += parse_blockquote(out, md, textData); - - else if (prefix_code(textData)) - beg += parse_blockcode(out, md, textData); - - else if (prefix_uli(textData)) - beg += parse_list(out, md, textData, 0); - - else if (prefix_oli(textData)) - beg += parse_list(out, md, textData, MKD_LIST_ORDERED); - - else { - beg += parse_paragraph(out, md, textData); - } - } - } - - function is_ref(data, beg, end, md) { - /* int n; */ - var i = 0; - var idOffset, idEnd; - var linkOffset, linkEnd; - var titleOffset, titleEnd; - var lineEnd; - - /* up to 3 optional leading spaces */ - if (beg + 3 >= end) return 0; - if (data[beg] == ' ') { i = 1; - if (data[beg + 1] == ' ') { i = 2; - if (data[beg + 2] == ' ') { i = 3; - if (data[beg + 3] == ' ') return 0; } } } - i += beg; - - /* id part: anything but a newline between brackets */ - if (data[i] != '[') return 0; - i++; - idOffset = i; - while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']') i++; - if (i >= end || data[i] != ']') return 0; - idEnd = i; - - /* spacer: colon (space | tab)* newline? (space | tab)* */ - i++; - if (i >= end || data[i] != ':') return 0; - i++; - while (i < end && data[i] == ' ') i++; - if (i < end && (data[i] == '\n' || data[i] == '\r')) { - i++; - if (i < end && data[i] == '\r' && data[i - 1] == '\n') i++; } - while (i < end && data[i] == ' ') i++; - if (i >= end) return 0; - - /* link: whitespace-free sequence, optionally between angle brackets */ - if (data[i] == '<') i++; - - linkOffset = i; - while (i < end && data[i] != ' ' && data[i] != '\n' && data[i] != '\r') i++; - - if (data[i - 1] == '>') linkEnd = i - 1; else linkEnd = i; - - /* optional spacer: (space | tab)* (newline | '\'' | '"' | '(' ) */ - while (i < end && data[i] == ' ') i++; - if (i < end && data[i] != '\n' && data[i] != '\r' - && data[i] != '\'' && data[i] != '"' && data[i] != '(') - return 0; - lineEnd = 0; - /* computing end-of-line */ - if (i >= end || data[i] == '\r' || data[i] == '\n') lineEnd = i; - if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r') - lineEnd = i + 1; - - /* optional (space|tab)* spacer after a newline */ - if (lineEnd) { - i = lineEnd + 1; - while (i < end && data[i] == ' ') i++; - } - - /* optional title: any non-newline sequence enclosed in '"() - alone on its line */ - titleOffset = titleEnd = 0; - if (i + 1 < end && (data[i] == '\'' || data[i] == '"' || data[i] == '(')) { - i++; - titleOffset = i; - /* looking for EOL */ - while (i < end && data[i] != '\n' && data[i] != '\r') i++; - if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r') - titleEnd = i + 1; - else titleEnd = i; - /* stepping back */ - i -= 1; - while (i > titleOffset && data[i] == ' ') - i -= 1; - if (i > titleOffset && (data[i] == '\'' || data[i] == '"' || data[i] == ')')) { - lineEnd = titleEnd; - titleEnd = i; - } - } - - if (!lineEnd || linkEnd == linkOffset) - return 0; /* garbage after the link empty link */ - - var id = data.slice(idOffset, idEnd); - var link = data.slice(linkOffset, linkEnd); - var title = null; - if (titleEnd > titleOffset) title = data.slice(titleOffset, titleEnd); - md.refs[id] = { - id: id, - link: new Buffer(link), - title: new Buffer(title) - }; - return lineEnd; - } - - function expand_tabs(out, line) { - var i = 0, tab = 0; - - while (i < line.length) { - var org = i; - - while (i < line.length && line[i] != '\t') { - i++; tab++; - } - - if (i > org) out.s += line.slice(org, i); - - if (i >= line.length) break; - - do { - out.s += ' '; - tab++; - } while (tab % 4); - - i++; - } - } - - /** - Render markdown code to HTML. - - @param {string} source Markdown code. - @returns {string} HTML code. - */ - function render(source) { - var text = new Buffer(); - var beg = 0, end; - this.refs = {}; - - while (beg < source.length) { /* iterating over lines */ - if (end = is_ref(source, beg, source.length, this)) - beg = end; - else { /* skipping to the next line */ - end = beg; - while (end < source.length && source[end] != '\n' && source[end] != '\r') end++; - - /* adding the line body if present */ - if (end > beg) expand_tabs(text, source.slice(beg, end)); - - while (end < source.length && (source[end] == '\n' || source[end] == '\r')) { - /* add one \n per newline */ - if (source[end] == '\n' || (end + 1 < source.length && source[end + 1] != '\n')) - text.s += '\n'; - end++; - } - - beg = end; - } - } - - var out = new Buffer(); - - /* second pass: actual rendering */ - if (this.callbacks.doc_header) - this.callbacks.doc_header(out, this.context); - - if (text.s.length) { - /* adding a final newline if not already present */ - if (text.s[text.s.length - 1] != '\n' && text.s[text.s.length - 1] != '\r') - text.s += '\n'; - parse_block(out, this, text.s); - } - - if (this.callbacks.doc_footer) - this.callbacks.doc_footer(out, this.context); - - return out.s; - } - Markdown.prototype['render'] = render; - - /** - Create a parser object using the given configuration parameters. - - To get a Reddit equivelent configuration, pass no arguments. - - @param {?Renderer=} renderer A renderer object. - @param {?Number=} extensions A series of OR'd extension flags. (Extension flags start with MKDEXT_) - @param {?Number=} nestingLimit The maximum depth to which inline elements can be nested. - @return {Markdown} A configured markdown object. - */ - exports.getParser = function getParser(renderer, extensions, nestingLimit) { - var md = new Markdown(); - if (renderer) md.callbacks = renderer.callbacks; - if (nestingLimit) md.nestingLimit = nestingLimit; - if (renderer) md.context = renderer.context; - if (extensions != undefined && extensions != null) md.extensions = extensions; - - var cb = md.callbacks; - if (cb.emphasis || cb.double_emphasis || cb.triple_emphasis) { - md.activeChars['*'] = MD_CHAR_EMPHASIS; - md.activeChars['_'] = MD_CHAR_EMPHASIS; - if (md.extensions & MKDEXT_STRIKETHROUGH) md.activeChars['~'] = MD_CHAR_EMPHASIS; - } - - if (cb.codespan) md.activeChars['`'] = MD_CHAR_CODESPAN; - if (cb.linebreak) md.activeChars['\n'] = MD_CHAR_LINEBREAK; - if (cb.image || cb.link) md.activeChars['['] = MD_CHAR_LINK; - - md.activeChars['<'] = MD_CHAR_LANGLE; - md.activeChars['\\'] = MD_CHAR_ESCAPE; - md.activeChars['&'] = MD_CHAR_ENTITITY; - - if (md.extensions & MKDEXT_AUTOLINK) { - md.activeChars[':'] = MD_CHAR_AUTOLINK_URL; - md.activeChars['@'] = MD_CHAR_AUTOLINK_EMAIL; - md.activeChars['w'] = MD_CHAR_AUTOLINK_WWW; - md.activeChars['/'] = MD_CHAR_AUTOLINK_SUBREDDIT_OR_USERNAME; - } - if (md.extensions & MKDEXT_SUPERSCRIPT) md.activeChars['^'] = MD_CHAR_SUPERSCRIPT; - - return md; - } - - var DEFAULT_BODY_FLAGS = HTML_SKIP_HTML | HTML_SKIP_IMAGES | HTML_SAFELINK | HTML_ESCAPE | HTML_USE_XHTML; - var DEFAULT_WIKI_FLAGS = HTML_SKIP_HTML | HTML_SAFELINK | HTML_ALLOW_ELEMENT_WHITELIST | HTML_ESCAPE | HTML_USE_XHTML; - var DEFAULT_HTML_ATTR_WHITELIST = ['colspan', 'rowspan', 'cellspacing', 'cellpadding', 'scope']; - var DEFAULT_HTML_ELEMENT_WHITELIST = ['tr', 'th', 'td', 'table', 'tbody', 'thead', 'tfoot', 'caption']; - exports.DEFAULT_HTML_ELEMENT_WHITELIST = DEFAULT_HTML_ELEMENT_WHITELIST; - exports.DEFAULT_HTML_ATTR_WHITELIST = DEFAULT_HTML_ATTR_WHITELIST; - exports.DEFAULT_BODY_FLAGS = DEFAULT_BODY_FLAGS; - exports.DEFAULT_WIKI_FLAGS = DEFAULT_WIKI_FLAGS; - - exports.HTML_SKIP_HTML = HTML_SKIP_HTML; - exports.HTML_SKIP_STYLE = HTML_SKIP_STYLE; - exports.HTML_SKIP_IMAGES = HTML_SKIP_IMAGES; - exports.HTML_SKIP_LINKS = HTML_SKIP_LINKS; - exports.HTML_EXPAND_TABS = HTML_EXPAND_TABS; - exports.HTML_SAFELINK = HTML_SAFELINK; - exports.HTML_TOC = HTML_TOC; - exports.HTML_HARD_WRAP = HTML_HARD_WRAP; - exports.HTML_USE_XHTML = HTML_USE_XHTML; - exports.HTML_ESCAPE = HTML_ESCAPE; - exports.HTML_ALLOW_ELEMENT_WHITELIST = HTML_ALLOW_ELEMENT_WHITELIST; - - exports.MKDEXT_NO_INTRA_EMPHASIS = MKDEXT_NO_INTRA_EMPHASIS; - exports.MKDEXT_TABLES = MKDEXT_TABLES; - exports.MKDEXT_FENCED_CODE = MKDEXT_FENCED_CODE; - exports.MKDEXT_AUTOLINK = MKDEXT_AUTOLINK; - exports.MKDEXT_STRIKETHROUGH = MKDEXT_STRIKETHROUGH; - exports.MKDEXT_SPACE_HEADERS = MKDEXT_SPACE_HEADERS; - exports.MKDEXT_SUPERSCRIPT = MKDEXT_SUPERSCRIPT; - exports.MKDEXT_LAX_SPACING = MKDEXT_LAX_SPACING; - - exports['SD_AUTOLINK_SHORT_DOMAINS'] = SD_AUTOLINK_SHORT_DOMAINS; - - exports.MKDA_NOT_AUTOLINK = MKDA_NOT_AUTOLINK; - exports.MKDA_NORMAL = MKDA_NORMAL; - exports.MKDA_EMAIL = MKDA_EMAIL; - - if (typeof define === 'function') { - define('snuownd', [], exports); - } -})(typeof(exports)!=='undefined'?exports:typeof(window)!=='undefined'?window.SnuOwnd={}:{}); - diff --git a/makelinks.sh b/makelinks.sh index 79af2eb870..486ef26ba8 100755 --- a/makelinks.sh +++ b/makelinks.sh @@ -1,7 +1,7 @@ files=("reddit_enhancement_suite.user.js" "res.css" "nightmode.css" "commentBoxes.css" \ "jquery-1.9.1.min.js" "jquery-fieldselection.min.js" \ "jquery.dragsort-0.6.js" "jquery.tokeninput.js" \ - "tinycon.js" "snuownd.js" "guiders-1.2.8.js") + "tinycon.js" "emsnudown.js" "guiders-1.2.8.js") paths=("Chrome" "XPI/data" "Opera" "OperaBlink" "RES.safariextension") for i in "${files[@]}"