diff --git a/README.md b/README.md index 3fe3dfa..3349dae 100755 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ A JS module syntax lexer used in [es-module-shims](https://github.com/guybedford Outputs the list of exports and locations of import specifiers, including dynamic import and import meta handling. +Supports new syntax features including import attributes and source phase imports. + A very small single JS file (4KiB gzipped) that includes inlined Web Assembly for very fast source analysis of ECMAScript module syntax only. For an example of the performance, Angular 1 (720KiB) is fully parsed in 5ms, in comparison to the fastest JS parser, Acorn which takes over 100ms. @@ -20,6 +22,8 @@ _Comprehensively handles the JS language grammar while remaining small and fast. npm install es-module-lexer ``` +See [types/lexer.d.ts](types/lexer.d.ts) for the type definitions. + For use in CommonJS: ```js @@ -60,6 +64,10 @@ import { init, parse } from 'es-module-lexer'; // Comments provided to demonstrate edge cases import /*comment!*/ ( 'asdf', { assert: { type: 'json' }}); import /*comment!*/.meta.asdf; + + // Source phase imports: + import source mod from './mod.wasm'; + import.source('./mod.wasm); `; const [imports, exports] = parse(source, 'optional-sourcename'); @@ -98,10 +106,10 @@ import { init, parse } from 'es-module-lexer'; // Returns -1 exports[2].le; - // Dynamic imports are indicated by imports[2].d > -1 - // In this case the "d" index is the start of the dynamic import bracket + // Import type is provided by `t` value + // (1 for static, 2, for dynamic) // Returns true - imports[2].d > -1; + imports[2].t == 2; // Returns "asdf" (only for string literal dynamic imports) imports[2].n @@ -128,6 +136,13 @@ import { init, parse } from 'es-module-lexer'; // Returns "import /*comment!*/.meta" source.slice(imports[4].s, imports[4].e); // ss and se are the same for import meta + + // Returns "'./mod.wasm'" + source.slice(imports[5].s, imports[5].e); + + // Import type 4 and 5 for static and dynamic source phase + imports[5].t === 4; + imports[6].t === 5; })(); ``` diff --git a/chompfile.toml b/chompfile.toml index 0055806..d229d94 100644 --- a/chompfile.toml +++ b/chompfile.toml @@ -96,7 +96,7 @@ deps = ['src/lexer.h', 'src/lexer.c'] run = """ ${{ WASI_PATH }}/bin/clang src/lexer.c --sysroot=${{ WASI_PATH }}/share/wasi-sysroot -o lib/lexer.wasm -nostartfiles \ "-Wl,-z,stack-size=13312,--no-entry,--compress-relocations,--strip-all,\ - --export=parse,--export=sa,--export=e,--export=ri,--export=re,--export=is,--export=ie,--export=ss,--export=ip,--export=se,--export=ai,--export=id,--export=es,--export=ee,--export=els,--export=ele,--export=f,--export=ms,--export=__heap_base" \ + --export=parse,--export=sa,--export=e,--export=ri,--export=re,--export=is,--export=ie,--export=it,--export=ss,--export=ip,--export=se,--export=ai,--export=id,--export=es,--export=ee,--export=els,--export=ele,--export=f,--export=ms,--export=__heap_base" \ -Wno-logical-op-parentheses -Wno-parentheses \ -Oz """ @@ -110,7 +110,7 @@ run = """ ${{ EMSDK_PATH }}/emsdk activate 1.40.1-fastcomp ${{ EMSDK_PATH }}/fastcomp/emscripten/emcc ./src/lexer.c -o lib/lexer.emcc.js -s WASM=0 -Oz --closure 1 \ - -s EXPORTED_FUNCTIONS="['_parse','_sa','_e','_ri','_re','_is','_ie','_ss','_ip','_se','_ai','_id','_es','_ee','_els','_ele','_f','_ms','_setSource']" \ + -s EXPORTED_FUNCTIONS="['_parse','_sa','_e','_ri','_re','_it','_is','_ie','_ss','_ip','_se','_ai','_id','_es','_ee','_els','_ele','_f','_ms','_setSource']" \ -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s SINGLE_FILE=1 -s TOTAL_STACK=4997968 -s --separate-asm -Wno-logical-op-parentheses -Wno-parentheses # rm lib/lexer.emcc.js diff --git a/lib/lexer.asm.js b/lib/lexer.asm.js index 40f3fb7..ac4fe21 100644 --- a/lib/lexer.asm.js +++ b/lib/lexer.asm.js @@ -13,7 +13,7 @@ const copy = new Uint8Array(new Uint16Array([1]).buffer)[0] === 1 ? function (sr outBuf16[i++] = (ch & 0xff) << 8 | ch >>> 8; } }; -const words = 'xportmportlassetaromsyncunctionssertvoyiedelecontininstantybreareturdebuggeawaithrwhileforifcatcfinallels'; +const words = 'xportmportlassetaourceromsyncunctionssertvoyiedelecontininstantybreareturdebuggeawaithrwhileforifcatcfinallels'; let source, name; export function parse (_source, _name = '@') { @@ -44,11 +44,11 @@ export function parse (_source, _name = '@') { const imports = [], exports = []; while (asm.ri()) { - const s = asm.is(), e = asm.ie(), a = asm.ai(), d = asm.id(), ss = asm.ss(), se = asm.se(); + const s = asm.is(), e = asm.ie(), a = asm.ai(), d = asm.id(), ss = asm.ss(), se = asm.se(), t = asm.it(); let n; if (asm.ip()) n = readString(d === -1 ? s : s + 1, source.charCodeAt(d === -1 ? s - 1 : s)); - imports.push({ n, s, e, ss, se, d, a }); + imports.push({ t, n, s, e, ss, se, d, a }); } while (asm.re()) { const s = asm.es(), e = asm.ee(), ls = asm.els(), le = asm.ele(); @@ -214,10 +214,10 @@ function syntaxError () { // function asmInit () { ... } from lib/lexer.asm.js is concatenated at the end here function asmInit(global,env,buffer) { -"use asm";var a=new global.Int8Array(buffer),b=new global.Int16Array(buffer),c=new global.Int32Array(buffer),d=new global.Uint8Array(buffer),e=new global.Uint16Array(buffer),v=1024;function z(){var d=0,f=0,g=0,h=0,i=0,j=0;j=v;v=v+10240|0;a[796]=1;a[795]=0;b[395]=0;b[396]=0;c[67]=c[2];a[797]=0;c[66]=0;a[794]=0;c[68]=j+2048;c[69]=j;a[798]=0;d=(c[3]|0)+-2|0;c[70]=d;f=d+(c[64]<<1)|0;c[71]=f;a:while(1){g=d+2|0;c[70]=g;if(d>>>0>=f>>>0){i=18;break}b:do switch(b[g>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if((((b[396]|0)==0?fa(g)|0:0)?(Q(d+4|0,16,10)|0)==0:0)?(B(),(a[796]|0)==0):0){i=9;break a}else i=17;break}case 105:{if(fa(g)|0?(Q(d+4|0,26,10)|0)==0:0){C();i=17}else i=17;break}case 59:{i=17;break}case 47:switch(b[d+4>>1]|0){case 47:{$();break b}case 42:{P(1);break b}default:{i=16;break a}}default:{i=16;break a}}while(0);if((i|0)==17){i=0;c[67]=c[70]}d=c[70]|0;f=c[71]|0}if((i|0)==9){d=c[70]|0;c[67]=d;i=19}else if((i|0)==16){a[796]=0;c[70]=d;i=19}else if((i|0)==18)if(!(a[794]|0)){d=g;i=19}else d=0;do if((i|0)==19){c:while(1){f=d+2|0;c[70]=f;if(d>>>0>=(c[71]|0)>>>0){i=86;break}d:do switch(b[f>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(((b[396]|0)==0?fa(f)|0:0)?(Q(d+4|0,16,10)|0)==0:0){B();i=85}else i=85;break}case 105:{if(fa(f)|0?(Q(d+4|0,26,10)|0)==0:0){C();i=85}else i=85;break}case 99:{if((fa(f)|0?(Q(d+4|0,36,8)|0)==0:0)?pa(b[d+12>>1]|0)|0:0){a[798]=1;i=85}else i=85;break}case 40:{h=c[68]|0;f=b[396]|0;i=f&65535;c[h+(i<<3)>>2]=1;g=c[67]|0;b[396]=f+1<<16>>16;c[h+(i<<3)+4>>2]=g;i=85;break}case 41:{f=b[396]|0;if(!(f<<16>>16)){i=36;break c}i=f+-1<<16>>16;b[396]=i;h=b[395]|0;f=h&65535;if(h<<16>>16!=0?(c[(c[68]|0)+((i&65535)<<3)>>2]|0)==5:0){f=c[(c[69]|0)+(f+-1<<2)>>2]|0;g=f+4|0;if(!(c[g>>2]|0))c[g>>2]=(c[67]|0)+2;c[f+12>>2]=d+4;b[395]=h+-1<<16>>16;i=85}else i=85;break}case 123:{i=c[67]|0;h=c[61]|0;d=i;do if((b[i>>1]|0)==41&(h|0)!=0?(c[h+4>>2]|0)==(i|0):0){f=c[62]|0;c[61]=f;if(!f){c[57]=0;break}else{c[f+28>>2]=0;break}}while(0);h=c[68]|0;g=b[396]|0;i=g&65535;c[h+(i<<3)>>2]=(a[798]|0)==0?2:6;b[396]=g+1<<16>>16;c[h+(i<<3)+4>>2]=d;a[798]=0;i=85;break}case 125:{d=b[396]|0;if(!(d<<16>>16)){i=49;break c}h=c[68]|0;i=d+-1<<16>>16;b[396]=i;if((c[h+((i&65535)<<3)>>2]|0)==4){H();i=85}else i=85;break}case 39:{J(39);i=85;break}case 34:{J(34);i=85;break}case 47:switch(b[d+4>>1]|0){case 47:{$();break d}case 42:{P(1);break d}default:{d=c[67]|0;f=b[d>>1]|0;e:do if(!(T(f)|0)){switch(f<<16>>16){case 41:if(ca(c[(c[68]|0)+(e[396]<<3)+4>>2]|0)|0)break e;else{i=66;break e}case 125:break;default:{i=66;break e}}g=c[68]|0;h=e[396]|0;if(!(O(c[g+(h<<3)+4>>2]|0)|0)?(c[g+(h<<3)>>2]|0)!=6:0)i=66}else switch(f<<16>>16){case 46:if(((b[d+-2>>1]|0)+-48&65535)<10){i=66;break e}else break e;case 43:if((b[d+-2>>1]|0)==43){i=66;break e}else break e;case 45:if((b[d+-2>>1]|0)==45){i=66;break e}else break e;default:break e}while(0);f:do if((i|0)==66?(0,!(E(d)|0)):0){switch(f<<16>>16){case 0:break f;case 47:{if(a[797]|0)break f;break}default:{}}i=c[63]|0;if((i|0?d>>>0>=(c[i>>2]|0)>>>0:0)?d>>>0<=(c[i+4>>2]|0)>>>0:0){N();a[797]=0;i=85;break d}g=c[3]|0;do{if(d>>>0<=g>>>0)break;d=d+-2|0;c[67]=d;f=b[d>>1]|0}while(!(_(f)|0));if(da(f)|0){do{if(d>>>0<=g>>>0)break;d=d+-2|0;c[67]=d}while(da(b[d>>1]|0)|0);if(Y(d)|0){N();a[797]=0;i=85;break d}}a[797]=1;i=85;break d}while(0);N();a[797]=0;i=85;break d}}case 96:{h=c[68]|0;g=b[396]|0;i=g&65535;c[h+(i<<3)+4>>2]=c[67];b[396]=g+1<<16>>16;c[h+(i<<3)>>2]=3;H();i=85;break}default:i=85}while(0);if((i|0)==85){i=0;c[67]=c[70]}d=c[70]|0}if((i|0)==36){oa();d=0;break}else if((i|0)==49){oa();d=0;break}else if((i|0)==86){d=(a[794]|0)==0?(b[395]|b[396])<<16>>16==0:0;break}}while(0);v=j;return d|0}function B(){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;k=c[70]|0;l=c[63]|0;q=k+12|0;c[70]=q;f=I(1)|0;d=c[70]|0;if(!((d|0)==(q|0)?!(S(f)|0):0))p=3;a:do if((p|0)==3){b:do switch(f<<16>>16){case 123:{c[70]=d+2;d=I(1)|0;e=c[70]|0;while(1){if(qa(d)|0){J(d);d=(c[70]|0)+2|0;c[70]=d}else{aa(d)|0;d=c[70]|0}I(1)|0;d=L(e,d)|0;if(d<<16>>16==44){c[70]=(c[70]|0)+2;d=I(1)|0}if(d<<16>>16==125){p=15;break}q=e;e=c[70]|0;if((e|0)==(q|0)){p=12;break}if(e>>>0>(c[71]|0)>>>0){p=14;break}}if((p|0)==12){oa();break a}else if((p|0)==14){oa();break a}else if((p|0)==15){a[795]=1;c[70]=(c[70]|0)+2;break b}break}case 42:{c[70]=d+2;I(1)|0;q=c[70]|0;L(q,q)|0;break}default:{a[796]=0;switch(f<<16>>16){case 100:{k=d+14|0;c[70]=k;switch((I(1)|0)<<16>>16){case 97:{e=c[70]|0;if((Q(e+2|0,56,8)|0)==0?(h=e+10|0,da(b[h>>1]|0)|0):0){c[70]=h;I(0)|0;p=22}break}case 102:{p=22;break}case 99:{e=c[70]|0;if(((Q(e+2|0,36,8)|0)==0?(g=e+10|0,q=b[g>>1]|0,pa(q)|0|q<<16>>16==123):0)?(c[70]=g,i=I(1)|0,i<<16>>16!=123):0){o=i;p=31}break}default:{}}c:do if((p|0)==22?(j=c[70]|0,(Q(j+2|0,64,14)|0)==0):0){f=j+16|0;e=b[f>>1]|0;if(!(pa(e)|0))switch(e<<16>>16){case 40:case 42:break;default:break c}c[70]=f;e=I(1)|0;if(e<<16>>16==42){c[70]=(c[70]|0)+2;e=I(1)|0}if(e<<16>>16!=40){o=e;p=31}}while(0);if((p|0)==31?(m=c[70]|0,aa(o)|0,n=c[70]|0,n>>>0>m>>>0):0){W(d,k,m,n);c[70]=(c[70]|0)+-2;break a}W(d,k,0,0);c[70]=d+12;break a}case 97:{c[70]=d+10;I(0)|0;d=c[70]|0;p=35;break}case 102:{p=35;break}case 99:{if((Q(d+2|0,36,8)|0)==0?(e=d+10|0,_(b[e>>1]|0)|0):0){c[70]=e;q=I(1)|0;p=c[70]|0;aa(q)|0;q=c[70]|0;W(p,q,p,q);c[70]=(c[70]|0)+-2;break a}d=d+4|0;c[70]=d;break}case 108:case 118:break;default:break a}if((p|0)==35){c[70]=d+16;d=I(1)|0;if(d<<16>>16==42){c[70]=(c[70]|0)+2;d=I(1)|0}p=c[70]|0;aa(d)|0;q=c[70]|0;W(p,q,p,q);c[70]=(c[70]|0)+-2;break a}c[70]=d+6;a[796]=0;f=I(1)|0;d=c[70]|0;f=(aa(f)|0|32)<<16>>16==123;g=c[70]|0;if(f){c[70]=g+2;q=I(1)|0;d=c[70]|0;aa(q)|0}d:while(1){e=c[70]|0;if((e|0)==(d|0))break;W(d,e,d,e);e=I(1)|0;if(f)switch(e<<16>>16){case 93:case 125:break a;default:{}}d=c[70]|0;if(e<<16>>16!=44){p=51;break}c[70]=d+2;e=I(1)|0;d=c[70]|0;switch(e<<16>>16){case 91:case 123:{p=51;break d}default:{}}aa(e)|0}if((p|0)==51)c[70]=d+-2;if(!f)break a;c[70]=g+-2;break a}}while(0);q=(I(1)|0)<<16>>16==102;d=c[70]|0;if(q?(Q(d+2|0,50,6)|0)==0:0){c[70]=d+8;D(k,I(1)|0);d=(l|0)==0?232:l+16|0;while(1){d=c[d>>2]|0;if(!d)break a;c[d+12>>2]=0;c[d+8>>2]=0;d=d+16|0}}c[70]=d+-2}while(0);return}function C(){var d=0,e=0,f=0,g=0,h=0,i=0;h=c[70]|0;d=h+12|0;c[70]=d;a:do switch((I(1)|0)<<16>>16){case 40:{e=c[68]|0;i=b[396]|0;f=i&65535;c[e+(f<<3)>>2]=5;d=c[70]|0;b[396]=i+1<<16>>16;c[e+(f<<3)+4>>2]=d;if((b[c[67]>>1]|0)!=46){c[70]=d+2;i=I(1)|0;K(h,c[70]|0,0,d);e=c[61]|0;f=c[69]|0;h=b[395]|0;b[395]=h+1<<16>>16;c[f+((h&65535)<<2)>>2]=e;switch(i<<16>>16){case 39:{J(39);break}case 34:{J(34);break}default:{c[70]=(c[70]|0)+-2;break a}}d=(c[70]|0)+2|0;c[70]=d;switch((I(1)|0)<<16>>16){case 44:{c[70]=(c[70]|0)+2;I(1)|0;h=c[61]|0;c[h+4>>2]=d;i=c[70]|0;c[h+16>>2]=i;a[h+24>>0]=1;c[70]=i+-2;break a}case 41:{b[396]=(b[396]|0)+-1<<16>>16;i=c[61]|0;c[i+4>>2]=d;c[i+12>>2]=(c[70]|0)+2;a[i+24>>0]=1;b[395]=(b[395]|0)+-1<<16>>16;break a}default:{c[70]=(c[70]|0)+-2;break a}}}break}case 46:{c[70]=(c[70]|0)+2;if((I(1)|0)<<16>>16==109?(e=c[70]|0,(Q(e+2|0,44,6)|0)==0):0){d=c[67]|0;if(!(ea(d)|0)?(b[d>>1]|0)==46:0)break a;K(h,h,e+8|0,2)}break}case 42:case 39:case 34:{g=18;break}case 123:{d=c[70]|0;if(b[396]|0){c[70]=d+-2;break a}while(1){if(d>>>0>=(c[71]|0)>>>0)break;d=I(1)|0;if(!(qa(d)|0)){if(d<<16>>16==125){g=33;break}}else J(d);d=(c[70]|0)+2|0;c[70]=d}if((g|0)==33)c[70]=(c[70]|0)+2;i=(I(1)|0)<<16>>16==102;d=c[70]|0;if(i?Q(d+2|0,50,6)|0:0){oa();break a}c[70]=d+8;d=I(1)|0;if(qa(d)|0){D(h,d);break a}else{oa();break a}}default:if((c[70]|0)==(d|0))c[70]=h+10;else g=18}while(0);do if((g|0)==18){if(b[396]|0){c[70]=(c[70]|0)+-2;break}d=c[71]|0;e=c[70]|0;while(1){if(e>>>0>=d>>>0){g=25;break}f=b[e>>1]|0;if(qa(f)|0){g=23;break}i=e+2|0;c[70]=i;e=i}if((g|0)==23){D(h,f);break}else if((g|0)==25){oa();break}}while(0);return}function D(a,d){a=a|0;d=d|0;var e=0,f=0;e=(c[70]|0)+2|0;switch(d<<16>>16){case 39:{J(39);f=5;break}case 34:{J(34);f=5;break}default:oa()}do if((f|0)==5){K(a,e,c[70]|0,1);c[70]=(c[70]|0)+2;d=I(0)|0;a=d<<16>>16==97;if(a){e=c[70]|0;if(Q(e+2|0,78,10)|0)f=11}else{e=c[70]|0;if(!(((d<<16>>16==119?(b[e+2>>1]|0)==105:0)?(b[e+4>>1]|0)==116:0)?(b[e+6>>1]|0)==104:0))f=11}if((f|0)==11){c[70]=e+-2;break}c[70]=e+((a?6:4)<<1);if((I(1)|0)<<16>>16!=123){c[70]=e;break}a=c[70]|0;d=a;a:while(1){c[70]=d+2;d=I(1)|0;switch(d<<16>>16){case 39:{J(39);c[70]=(c[70]|0)+2;d=I(1)|0;break}case 34:{J(34);c[70]=(c[70]|0)+2;d=I(1)|0;break}default:d=aa(d)|0}if(d<<16>>16!=58){f=20;break}c[70]=(c[70]|0)+2;switch((I(1)|0)<<16>>16){case 39:{J(39);break}case 34:{J(34);break}default:{f=24;break a}}c[70]=(c[70]|0)+2;switch((I(1)|0)<<16>>16){case 125:{f=29;break a}case 44:break;default:{f=28;break a}}c[70]=(c[70]|0)+2;if((I(1)|0)<<16>>16==125){f=29;break}d=c[70]|0}if((f|0)==20){c[70]=e;break}else if((f|0)==24){c[70]=e;break}else if((f|0)==28){c[70]=e;break}else if((f|0)==29){f=c[61]|0;c[f+16>>2]=a;c[f+12>>2]=(c[70]|0)+2;break}}while(0);return}function E(a){a=a|0;a:do switch(b[a>>1]|0){case 100:switch(b[a+-2>>1]|0){case 105:{a=X(a+-4|0,88,2)|0;break a}case 108:{a=X(a+-4|0,92,3)|0;break a}default:{a=0;break a}}case 101:switch(b[a+-2>>1]|0){case 115:switch(b[a+-4>>1]|0){case 108:{a=Z(a+-6|0,101)|0;break a}case 97:{a=Z(a+-6|0,99)|0;break a}default:{a=0;break a}}case 116:{a=X(a+-4|0,98,4)|0;break a}case 117:{a=X(a+-4|0,106,6)|0;break a}default:{a=0;break a}}case 102:{if((b[a+-2>>1]|0)==111?(b[a+-4>>1]|0)==101:0)switch(b[a+-6>>1]|0){case 99:{a=X(a+-8|0,118,6)|0;break a}case 112:{a=X(a+-8|0,130,2)|0;break a}default:{a=0;break a}}else a=0;break}case 107:{a=X(a+-2|0,134,4)|0;break}case 110:{a=a+-2|0;if(Z(a,105)|0)a=1;else a=X(a,142,5)|0;break}case 111:{a=Z(a+-2|0,100)|0;break}case 114:{a=X(a+-2|0,152,7)|0;break}case 116:{a=X(a+-2|0,166,4)|0;break}case 119:switch(b[a+-2>>1]|0){case 101:{a=Z(a+-4|0,110)|0;break a}case 111:{a=X(a+-4|0,174,3)|0;break a}default:{a=0;break a}}default:a=0}while(0);return a|0}function H(){var a=0,d=0,e=0,f=0;d=c[71]|0;e=c[70]|0;a:while(1){a=e+2|0;if(e>>>0>=d>>>0){d=10;break}switch(b[a>>1]|0){case 96:{d=7;break a}case 36:{if((b[e+4>>1]|0)==123){d=6;break a}break}case 92:{a=e+4|0;break}default:{}}e=a}if((d|0)==6){a=e+4|0;c[70]=a;d=c[68]|0;f=b[396]|0;e=f&65535;c[d+(e<<3)>>2]=4;b[396]=f+1<<16>>16;c[d+(e<<3)+4>>2]=a}else if((d|0)==7){c[70]=a;e=c[68]|0;f=(b[396]|0)+-1<<16>>16;b[396]=f;if((c[e+((f&65535)<<3)>>2]|0)!=3)oa()}else if((d|0)==10){c[70]=a;oa()}return}function I(a){a=a|0;var d=0,e=0,f=0;e=c[70]|0;a:do{d=b[e>>1]|0;b:do if(d<<16>>16!=47)if(a)if(pa(d)|0)break;else break a;else if(da(d)|0)break;else break a;else switch(b[e+2>>1]|0){case 47:{$();break b}case 42:{P(a);break b}default:{d=47;break a}}while(0);f=c[70]|0;e=f+2|0;c[70]=e}while(f>>>0<(c[71]|0)>>>0);return d|0}function J(a){a=a|0;var d=0,e=0,f=0,g=0;g=c[71]|0;d=c[70]|0;while(1){f=d+2|0;if(d>>>0>=g>>>0){d=9;break}e=b[f>>1]|0;if(e<<16>>16==a<<16>>16){d=10;break}if(e<<16>>16==92){e=d+4|0;if((b[e>>1]|0)==13){d=d+6|0;d=(b[d>>1]|0)==10?d:e}else d=e}else if(ta(e)|0){d=9;break}else d=f}if((d|0)==9){c[70]=f;oa()}else if((d|0)==10)c[70]=f;return}function K(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[65]|0;c[65]=g+32;h=c[61]|0;c[((h|0)==0?228:h+28|0)>>2]=g;c[62]=h;c[61]=g;c[g+8>>2]=b;if(2==(f|0))b=e;else b=1==(f|0)?e+2|0:0;c[g+12>>2]=b;c[g>>2]=d;c[g+4>>2]=e;c[g+16>>2]=0;c[g+20>>2]=f;h=1==(f|0);a[g+24>>0]=h&1;c[g+28>>2]=0;if(h|2==(f|0))a[795]=1;return}function L(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[70]|0;f=b[e>>1]|0;h=(a|0)==(d|0);g=h?0:a;h=h?0:d;if(f<<16>>16==97){c[70]=e+4;e=I(1)|0;a=c[70]|0;if(qa(e)|0){J(e);d=(c[70]|0)+2|0;c[70]=d}else{aa(e)|0;d=c[70]|0}f=I(1)|0;e=c[70]|0}if((e|0)!=(a|0))W(a,d,g,h);return f|0}function M(){var a=0,d=0,e=0;e=c[71]|0;d=c[70]|0;a:while(1){a=d+2|0;if(d>>>0>=e>>>0){d=6;break}switch(b[a>>1]|0){case 13:case 10:{d=6;break a}case 93:{d=7;break a}case 92:{a=d+4|0;break}default:{}}d=a}if((d|0)==6){c[70]=a;oa();a=0}else if((d|0)==7){c[70]=a;a=93}return a|0}function N(){var a=0,d=0,e=0;a:while(1){a=c[70]|0;d=a+2|0;c[70]=d;if(a>>>0>=(c[71]|0)>>>0){e=7;break}switch(b[d>>1]|0){case 13:case 10:{e=7;break a}case 47:break a;case 91:{M()|0;break}case 92:{c[70]=a+4;break}default:{}}}if((e|0)==7)oa();return}function O(a){a=a|0;switch(b[a>>1]|0){case 62:{a=(b[a+-2>>1]|0)==61;break}case 41:case 59:{a=1;break}case 104:{a=X(a+-2|0,200,4)|0;break}case 121:{a=X(a+-2|0,208,6)|0;break}case 101:{a=X(a+-2|0,220,3)|0;break}default:a=0}return a|0}function P(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;g=(c[70]|0)+2|0;c[70]=g;e=c[71]|0;while(1){d=g+2|0;if(g>>>0>=e>>>0)break;f=b[d>>1]|0;if(!a?ta(f)|0:0)break;if(f<<16>>16==42?(b[g+4>>1]|0)==47:0){h=8;break}g=d}if((h|0)==8){c[70]=d;d=g+4|0}c[70]=d;return}function Q(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function S(a){a=a|0;a:do switch(a<<16>>16){case 38:case 37:case 33:{a=1;break}default:if((a&-8)<<16>>16==40|(a+-58&65535)<6)a=1;else{switch(a<<16>>16){case 91:case 93:case 94:{a=1;break a}default:{}}a=(a+-123&65535)<4}}while(0);return a|0}function T(a){a=a|0;a:do switch(a<<16>>16){case 38:case 37:case 33:break;default:if(!((a+-58&65535)<6|(a+-40&65535)<7&a<<16>>16!=41)){switch(a<<16>>16){case 91:case 94:break a;default:{}}return a<<16>>16!=125&(a+-123&65535)<4|0}}while(0);return 1}function U(a){a=a|0;var c=0;c=b[a>>1]|0;a:do if((c+-9&65535)>=5){switch(c<<16>>16){case 160:case 32:{c=1;break a}default:{}}if(S(c)|0)return c<<16>>16!=46|(ea(a)|0)|0;else c=0}else c=1;while(0);return c|0}function V(a){a=a|0;var d=0,e=0,f=0,g=0;e=v;v=v+16|0;f=e;c[f>>2]=0;c[64]=a;d=c[3]|0;g=d+(a<<1)|0;a=g+2|0;b[g>>1]=0;c[f>>2]=a;c[65]=a;c[57]=0;c[61]=0;c[59]=0;c[58]=0;c[63]=0;c[60]=0;v=e;return d|0}function W(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[65]|0;c[65]=g+20;h=c[63]|0;c[((h|0)==0?232:h+16|0)>>2]=g;c[63]=g;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=e;c[g+12>>2]=f;c[g+16>>2]=0;a[795]=1;return}function X(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+(0-d<<1)|0;f=e+2|0;a=c[3]|0;if(f>>>0>=a>>>0?(Q(f,b,d<<1)|0)==0:0)if((f|0)==(a|0))a=1;else a=U(e)|0;else a=0;return a|0}function Y(a){a=a|0;switch(b[a>>1]|0){case 107:{a=X(a+-2|0,134,4)|0;break}case 101:{if((b[a+-2>>1]|0)==117)a=X(a+-4|0,106,6)|0;else a=0;break}default:a=0}return a|0}function Z(a,d){a=a|0;d=d|0;var e=0;e=c[3]|0;if(e>>>0<=a>>>0?(b[a>>1]|0)==d<<16>>16:0)if((e|0)==(a|0))e=1;else e=_(b[a+-2>>1]|0)|0;else e=0;return e|0}function _(a){a=a|0;a:do if((a+-9&65535)<5)a=1;else{switch(a<<16>>16){case 32:case 160:{a=1;break a}default:{}}a=a<<16>>16!=46&(S(a)|0)}while(0);return a|0}function $(){var a=0,d=0,e=0;a=c[71]|0;e=c[70]|0;a:while(1){d=e+2|0;if(e>>>0>=a>>>0)break;switch(b[d>>1]|0){case 13:case 10:break a;default:e=d}}c[70]=d;return}function aa(a){a=a|0;while(1){if(pa(a)|0)break;if(S(a)|0)break;a=(c[70]|0)+2|0;c[70]=a;a=b[a>>1]|0;if(!(a<<16>>16)){a=0;break}}return a|0}function ba(){var a=0;a=c[(c[59]|0)+20>>2]|0;switch(a|0){case 1:{a=-1;break}case 2:{a=-2;break}default:a=a-(c[3]|0)>>1}return a|0}function ca(a){a=a|0;if(!(X(a,180,5)|0)?!(X(a,190,3)|0):0)a=X(a,196,2)|0;else a=1;return a|0}function da(a){a=a|0;switch(a<<16>>16){case 160:case 32:case 12:case 11:case 9:{a=1;break}default:a=0}return a|0}function ea(a){a=a|0;if((b[a>>1]|0)==46?(b[a+-2>>1]|0)==46:0)a=(b[a+-4>>1]|0)==46;else a=0;return a|0}function fa(a){a=a|0;if((c[3]|0)==(a|0))a=1;else a=U(a+-2|0)|0;return a|0}function ga(){var a=0;a=c[(c[60]|0)+12>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ha(){var a=0;a=c[(c[59]|0)+12>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ia(){var a=0;a=c[(c[60]|0)+8>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ja(){var a=0;a=c[(c[59]|0)+16>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ka(){var a=0;a=c[(c[59]|0)+4>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function la(){var a=0;a=c[59]|0;a=c[((a|0)==0?228:a+28|0)>>2]|0;c[59]=a;return (a|0)!=0|0}function ma(){var a=0;a=c[60]|0;a=c[((a|0)==0?232:a+16|0)>>2]|0;c[60]=a;return (a|0)!=0|0}function oa(){a[794]=1;c[66]=(c[70]|0)-(c[3]|0)>>1;c[70]=(c[71]|0)+2;return}function pa(a){a=a|0;return (a|128)<<16>>16==160|(a+-9&65535)<5|0}function qa(a){a=a|0;return a<<16>>16==39|a<<16>>16==34|0}function ra(){return (c[(c[59]|0)+8>>2]|0)-(c[3]|0)>>1|0}function sa(){return (c[(c[60]|0)+4>>2]|0)-(c[3]|0)>>1|0}function ta(a){a=a|0;return a<<16>>16==13|a<<16>>16==10|0}function ua(){return (c[c[59]>>2]|0)-(c[3]|0)>>1|0}function va(){return (c[c[60]>>2]|0)-(c[3]|0)>>1|0}function wa(){return d[(c[59]|0)+24>>0]|0|0}function xa(a){a=a|0;c[3]=a;return}function Aa(){return (a[795]|0)!=0|0}function Ba(){return (a[796]|0)!=0|0}function Fa(){return c[66]|0} function su(a) { +"use asm";var a=new global.Int8Array(buffer),b=new global.Int16Array(buffer),c=new global.Int32Array(buffer),d=new global.Uint8Array(buffer),e=new global.Uint16Array(buffer),v=1040;function z(){var d=0,f=0,g=0,h=0,i=0,j=0;j=v;v=v+10240|0;a[804]=1;a[803]=0;b[399]=0;b[400]=0;c[69]=c[2];a[805]=0;c[68]=0;a[802]=0;c[70]=j+2048;c[71]=j;a[806]=0;d=(c[3]|0)+-2|0;c[72]=d;f=d+(c[66]<<1)|0;c[73]=f;a:while(1){g=d+2|0;c[72]=g;if(d>>>0>=f>>>0){i=18;break}b:do switch(b[g>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if((((b[400]|0)==0?fa(g)|0:0)?(Q(d+4|0,16,10)|0)==0:0)?(B(),(a[804]|0)==0):0){i=9;break a}else i=17;break}case 105:{if(fa(g)|0?(Q(d+4|0,26,10)|0)==0:0){C();i=17}else i=17;break}case 59:{i=17;break}case 47:switch(b[d+4>>1]|0){case 47:{$();break b}case 42:{P(1);break b}default:{i=16;break a}}default:{i=16;break a}}while(0);if((i|0)==17){i=0;c[69]=c[72]}d=c[72]|0;f=c[73]|0}if((i|0)==9){d=c[72]|0;c[69]=d;i=19}else if((i|0)==16){a[804]=0;c[72]=d;i=19}else if((i|0)==18)if(!(a[802]|0)){d=g;i=19}else d=0;do if((i|0)==19){c:while(1){f=d+2|0;c[72]=f;if(d>>>0>=(c[73]|0)>>>0){i=86;break}d:do switch(b[f>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(((b[400]|0)==0?fa(f)|0:0)?(Q(d+4|0,16,10)|0)==0:0){B();i=85}else i=85;break}case 105:{if(fa(f)|0?(Q(d+4|0,26,10)|0)==0:0){C();i=85}else i=85;break}case 99:{if((fa(f)|0?(Q(d+4|0,36,8)|0)==0:0)?pa(b[d+12>>1]|0)|0:0){a[806]=1;i=85}else i=85;break}case 40:{h=c[70]|0;f=b[400]|0;i=f&65535;c[h+(i<<3)>>2]=1;g=c[69]|0;b[400]=f+1<<16>>16;c[h+(i<<3)+4>>2]=g;i=85;break}case 41:{f=b[400]|0;if(!(f<<16>>16)){i=36;break c}i=f+-1<<16>>16;b[400]=i;h=b[399]|0;f=h&65535;if(h<<16>>16!=0?(c[(c[70]|0)+((i&65535)<<3)>>2]|0)==5:0){f=c[(c[71]|0)+(f+-1<<2)>>2]|0;g=f+4|0;if(!(c[g>>2]|0))c[g>>2]=(c[69]|0)+2;c[f+12>>2]=d+4;b[399]=h+-1<<16>>16;i=85}else i=85;break}case 123:{i=c[69]|0;h=c[63]|0;d=i;do if((b[i>>1]|0)==41&(h|0)!=0?(c[h+4>>2]|0)==(i|0):0){f=c[64]|0;c[63]=f;if(!f){c[59]=0;break}else{c[f+32>>2]=0;break}}while(0);h=c[70]|0;g=b[400]|0;i=g&65535;c[h+(i<<3)>>2]=(a[806]|0)==0?2:6;b[400]=g+1<<16>>16;c[h+(i<<3)+4>>2]=d;a[806]=0;i=85;break}case 125:{d=b[400]|0;if(!(d<<16>>16)){i=49;break c}h=c[70]|0;i=d+-1<<16>>16;b[400]=i;if((c[h+((i&65535)<<3)>>2]|0)==4){H();i=85}else i=85;break}case 39:{K(39);i=85;break}case 34:{K(34);i=85;break}case 47:switch(b[d+4>>1]|0){case 47:{$();break d}case 42:{P(1);break d}default:{d=c[69]|0;f=b[d>>1]|0;e:do if(!(T(f)|0)){switch(f<<16>>16){case 41:if(ca(c[(c[70]|0)+(e[400]<<3)+4>>2]|0)|0)break e;else{i=66;break e}case 125:break;default:{i=66;break e}}g=c[70]|0;h=e[400]|0;if(!(O(c[g+(h<<3)+4>>2]|0)|0)?(c[g+(h<<3)>>2]|0)!=6:0)i=66}else switch(f<<16>>16){case 46:if(((b[d+-2>>1]|0)+-48&65535)<10){i=66;break e}else break e;case 43:if((b[d+-2>>1]|0)==43){i=66;break e}else break e;case 45:if((b[d+-2>>1]|0)==45){i=66;break e}else break e;default:break e}while(0);f:do if((i|0)==66?(0,!(E(d)|0)):0){switch(f<<16>>16){case 0:break f;case 47:{if(a[805]|0)break f;break}default:{}}i=c[65]|0;if((i|0?d>>>0>=(c[i>>2]|0)>>>0:0)?d>>>0<=(c[i+4>>2]|0)>>>0:0){N();a[805]=0;i=85;break d}g=c[3]|0;do{if(d>>>0<=g>>>0)break;d=d+-2|0;c[69]=d;f=b[d>>1]|0}while(!(_(f)|0));if(da(f)|0){do{if(d>>>0<=g>>>0)break;d=d+-2|0;c[69]=d}while(da(b[d>>1]|0)|0);if(Y(d)|0){N();a[805]=0;i=85;break d}}a[805]=1;i=85;break d}while(0);N();a[805]=0;i=85;break d}}case 96:{h=c[70]|0;g=b[400]|0;i=g&65535;c[h+(i<<3)+4>>2]=c[69];b[400]=g+1<<16>>16;c[h+(i<<3)>>2]=3;H();i=85;break}default:i=85}while(0);if((i|0)==85){i=0;c[69]=c[72]}d=c[72]|0}if((i|0)==36){oa();d=0;break}else if((i|0)==49){oa();d=0;break}else if((i|0)==86){d=(a[802]|0)==0?(b[399]|b[400])<<16>>16==0:0;break}}while(0);v=j;return d|0}function B(){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;k=c[72]|0;l=c[65]|0;q=k+12|0;c[72]=q;f=I(1)|0;d=c[72]|0;if(!((d|0)==(q|0)?!(S(f)|0):0))p=3;a:do if((p|0)==3){b:do switch(f<<16>>16){case 123:{c[72]=d+2;d=I(1)|0;e=c[72]|0;while(1){if(qa(d)|0){K(d);d=(c[72]|0)+2|0;c[72]=d}else{aa(d)|0;d=c[72]|0}I(1)|0;d=L(e,d)|0;if(d<<16>>16==44){c[72]=(c[72]|0)+2;d=I(1)|0}if(d<<16>>16==125){p=15;break}q=e;e=c[72]|0;if((e|0)==(q|0)){p=12;break}if(e>>>0>(c[73]|0)>>>0){p=14;break}}if((p|0)==12){oa();break a}else if((p|0)==14){oa();break a}else if((p|0)==15){a[803]=1;c[72]=(c[72]|0)+2;break b}break}case 42:{c[72]=d+2;I(1)|0;q=c[72]|0;L(q,q)|0;break}default:{a[804]=0;switch(f<<16>>16){case 100:{k=d+14|0;c[72]=k;switch((I(1)|0)<<16>>16){case 97:{e=c[72]|0;if((Q(e+2|0,66,8)|0)==0?(h=e+10|0,da(b[h>>1]|0)|0):0){c[72]=h;I(0)|0;p=22}break}case 102:{p=22;break}case 99:{e=c[72]|0;if(((Q(e+2|0,36,8)|0)==0?(g=e+10|0,q=b[g>>1]|0,pa(q)|0|q<<16>>16==123):0)?(c[72]=g,i=I(1)|0,i<<16>>16!=123):0){o=i;p=31}break}default:{}}c:do if((p|0)==22?(j=c[72]|0,(Q(j+2|0,74,14)|0)==0):0){f=j+16|0;e=b[f>>1]|0;if(!(pa(e)|0))switch(e<<16>>16){case 40:case 42:break;default:break c}c[72]=f;e=I(1)|0;if(e<<16>>16==42){c[72]=(c[72]|0)+2;e=I(1)|0}if(e<<16>>16!=40){o=e;p=31}}while(0);if((p|0)==31?(m=c[72]|0,aa(o)|0,n=c[72]|0,n>>>0>m>>>0):0){W(d,k,m,n);c[72]=(c[72]|0)+-2;break a}W(d,k,0,0);c[72]=d+12;break a}case 97:{c[72]=d+10;I(0)|0;d=c[72]|0;p=35;break}case 102:{p=35;break}case 99:{if((Q(d+2|0,36,8)|0)==0?(e=d+10|0,_(b[e>>1]|0)|0):0){c[72]=e;q=I(1)|0;p=c[72]|0;aa(q)|0;q=c[72]|0;W(p,q,p,q);c[72]=(c[72]|0)+-2;break a}d=d+4|0;c[72]=d;break}case 108:case 118:break;default:break a}if((p|0)==35){c[72]=d+16;d=I(1)|0;if(d<<16>>16==42){c[72]=(c[72]|0)+2;d=I(1)|0}p=c[72]|0;aa(d)|0;q=c[72]|0;W(p,q,p,q);c[72]=(c[72]|0)+-2;break a}c[72]=d+6;a[804]=0;f=I(1)|0;d=c[72]|0;f=(aa(f)|0|32)<<16>>16==123;g=c[72]|0;if(f){c[72]=g+2;q=I(1)|0;d=c[72]|0;aa(q)|0}d:while(1){e=c[72]|0;if((e|0)==(d|0))break;W(d,e,d,e);e=I(1)|0;if(f)switch(e<<16>>16){case 93:case 125:break a;default:{}}d=c[72]|0;if(e<<16>>16!=44){p=51;break}c[72]=d+2;e=I(1)|0;d=c[72]|0;switch(e<<16>>16){case 91:case 123:{p=51;break d}default:{}}aa(e)|0}if((p|0)==51)c[72]=d+-2;if(!f)break a;c[72]=g+-2;break a}}while(0);q=(I(1)|0)<<16>>16==102;d=c[72]|0;if(q?(Q(d+2|0,60,6)|0)==0:0){c[72]=d+8;D(k,I(1)|0,0);d=(l|0)==0?240:l+16|0;while(1){d=c[d>>2]|0;if(!d)break a;c[d+12>>2]=0;c[d+8>>2]=0;d=d+16|0}}c[72]=d+-2}while(0);return}function C(){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=c[72]|0;f=h+12|0;c[72]=f;g=I(1)|0;e=c[72]|0;a:do if(g<<16>>16!=46)if(g<<16>>16==115&e>>>0>f>>>0)if((Q(e+2|0,50,10)|0)==0?(d=e+12|0,pa(b[d>>1]|0)|0):0)i=14;else{e=6;f=0;i=46}else{d=g;f=0;i=15}else{c[72]=e+2;switch((I(1)|0)<<16>>16){case 109:{d=c[72]|0;if(Q(d+2|0,44,6)|0)break a;e=c[69]|0;if(!(ea(e)|0)?(b[e>>1]|0)==46:0)break a;J(h,h,d+8|0,2);break a}case 115:{d=c[72]|0;if(Q(d+2|0,50,10)|0)break a;e=c[69]|0;if(!(ea(e)|0)?(b[e>>1]|0)==46:0)break a;d=d+12|0;i=14;break a}default:break a}}while(0);if((i|0)==14){c[72]=d;d=I(1)|0;f=1;i=15}b:do if((i|0)==15)switch(d<<16>>16){case 40:{e=c[70]|0;j=b[400]|0;g=j&65535;c[e+(g<<3)>>2]=5;d=c[72]|0;b[400]=j+1<<16>>16;c[e+(g<<3)+4>>2]=d;if((b[c[69]>>1]|0)==46)break b;c[72]=d+2;e=I(1)|0;J(h,c[72]|0,0,d);if(f){d=c[63]|0;c[d+28>>2]=5}else d=c[63]|0;h=c[71]|0;j=b[399]|0;b[399]=j+1<<16>>16;c[h+((j&65535)<<2)>>2]=d;switch(e<<16>>16){case 39:{K(39);break}case 34:{K(34);break}default:{c[72]=(c[72]|0)+-2;break b}}d=(c[72]|0)+2|0;c[72]=d;switch((I(1)|0)<<16>>16){case 44:{c[72]=(c[72]|0)+2;I(1)|0;h=c[63]|0;c[h+4>>2]=d;j=c[72]|0;c[h+16>>2]=j;a[h+24>>0]=1;c[72]=j+-2;break b}case 41:{b[400]=(b[400]|0)+-1<<16>>16;j=c[63]|0;c[j+4>>2]=d;c[j+12>>2]=(c[72]|0)+2;a[j+24>>0]=1;b[399]=(b[399]|0)+-1<<16>>16;break b}default:{c[72]=(c[72]|0)+-2;break b}}}case 123:{if(f){e=12;f=1;i=46;break b}d=c[72]|0;if(b[400]|0){c[72]=d+-2;break b}while(1){if(d>>>0>=(c[73]|0)>>>0)break;d=I(1)|0;if(!(qa(d)|0)){if(d<<16>>16==125){i=36;break}}else K(d);d=(c[72]|0)+2|0;c[72]=d}if((i|0)==36)c[72]=(c[72]|0)+2;j=(I(1)|0)<<16>>16==102;d=c[72]|0;if(j?Q(d+2|0,60,6)|0:0){oa();break b}c[72]=d+8;d=I(1)|0;if(qa(d)|0){D(h,d,0);break b}else{oa();break b}}default:{if(f){e=12;f=1;i=46;break b}switch(d<<16>>16){case 42:case 39:case 34:{f=0;i=48;break b}default:{e=6;f=0;i=46;break b}}}}while(0);if((i|0)==46){d=c[72]|0;if((d|0)==(h+(e<<1)|0))c[72]=d+-2;else i=48}do if((i|0)==48){if(b[400]|0){c[72]=(c[72]|0)+-2;break}d=c[73]|0;e=c[72]|0;while(1){if(e>>>0>=d>>>0){i=55;break}g=b[e>>1]|0;if(qa(g)|0){i=53;break}j=e+2|0;c[72]=j;e=j}if((i|0)==53){D(h,g,f);break}else if((i|0)==55){oa();break}}while(0);return}function D(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;f=(c[72]|0)+2|0;switch(d<<16>>16){case 39:{K(39);g=5;break}case 34:{K(34);g=5;break}default:oa()}do if((g|0)==5){J(a,f,c[72]|0,1);if(e)c[(c[63]|0)+28>>2]=4;c[72]=(c[72]|0)+2;d=I(0)|0;e=d<<16>>16==97;if(e){f=c[72]|0;if(Q(f+2|0,88,10)|0)g=13}else{f=c[72]|0;if(!(((d<<16>>16==119?(b[f+2>>1]|0)==105:0)?(b[f+4>>1]|0)==116:0)?(b[f+6>>1]|0)==104:0))g=13}if((g|0)==13){c[72]=f+-2;break}c[72]=f+((e?6:4)<<1);if((I(1)|0)<<16>>16!=123){c[72]=f;break}e=c[72]|0;d=e;a:while(1){c[72]=d+2;d=I(1)|0;switch(d<<16>>16){case 39:{K(39);c[72]=(c[72]|0)+2;d=I(1)|0;break}case 34:{K(34);c[72]=(c[72]|0)+2;d=I(1)|0;break}default:d=aa(d)|0}if(d<<16>>16!=58){g=22;break}c[72]=(c[72]|0)+2;switch((I(1)|0)<<16>>16){case 39:{K(39);break}case 34:{K(34);break}default:{g=26;break a}}c[72]=(c[72]|0)+2;switch((I(1)|0)<<16>>16){case 125:{g=31;break a}case 44:break;default:{g=30;break a}}c[72]=(c[72]|0)+2;if((I(1)|0)<<16>>16==125){g=31;break}d=c[72]|0}if((g|0)==22){c[72]=f;break}else if((g|0)==26){c[72]=f;break}else if((g|0)==30){c[72]=f;break}else if((g|0)==31){g=c[63]|0;c[g+16>>2]=e;c[g+12>>2]=(c[72]|0)+2;break}}while(0);return}function E(a){a=a|0;a:do switch(b[a>>1]|0){case 100:switch(b[a+-2>>1]|0){case 105:{a=X(a+-4|0,98,2)|0;break a}case 108:{a=X(a+-4|0,102,3)|0;break a}default:{a=0;break a}}case 101:switch(b[a+-2>>1]|0){case 115:switch(b[a+-4>>1]|0){case 108:{a=Z(a+-6|0,101)|0;break a}case 97:{a=Z(a+-6|0,99)|0;break a}default:{a=0;break a}}case 116:{a=X(a+-4|0,108,4)|0;break a}case 117:{a=X(a+-4|0,116,6)|0;break a}default:{a=0;break a}}case 102:{if((b[a+-2>>1]|0)==111?(b[a+-4>>1]|0)==101:0)switch(b[a+-6>>1]|0){case 99:{a=X(a+-8|0,128,6)|0;break a}case 112:{a=X(a+-8|0,140,2)|0;break a}default:{a=0;break a}}else a=0;break}case 107:{a=X(a+-2|0,144,4)|0;break}case 110:{a=a+-2|0;if(Z(a,105)|0)a=1;else a=X(a,152,5)|0;break}case 111:{a=Z(a+-2|0,100)|0;break}case 114:{a=X(a+-2|0,162,7)|0;break}case 116:{a=X(a+-2|0,176,4)|0;break}case 119:switch(b[a+-2>>1]|0){case 101:{a=Z(a+-4|0,110)|0;break a}case 111:{a=X(a+-4|0,184,3)|0;break a}default:{a=0;break a}}default:a=0}while(0);return a|0}function H(){var a=0,d=0,e=0,f=0;d=c[73]|0;e=c[72]|0;a:while(1){a=e+2|0;if(e>>>0>=d>>>0){d=10;break}switch(b[a>>1]|0){case 96:{d=7;break a}case 36:{if((b[e+4>>1]|0)==123){d=6;break a}break}case 92:{a=e+4|0;break}default:{}}e=a}if((d|0)==6){a=e+4|0;c[72]=a;d=c[70]|0;f=b[400]|0;e=f&65535;c[d+(e<<3)>>2]=4;b[400]=f+1<<16>>16;c[d+(e<<3)+4>>2]=a}else if((d|0)==7){c[72]=a;e=c[70]|0;f=(b[400]|0)+-1<<16>>16;b[400]=f;if((c[e+((f&65535)<<3)>>2]|0)!=3)oa()}else if((d|0)==10){c[72]=a;oa()}return}function I(a){a=a|0;var d=0,e=0,f=0;e=c[72]|0;a:do{d=b[e>>1]|0;b:do if(d<<16>>16!=47)if(a)if(pa(d)|0)break;else break a;else if(da(d)|0)break;else break a;else switch(b[e+2>>1]|0){case 47:{$();break b}case 42:{P(a);break b}default:{d=47;break a}}while(0);f=c[72]|0;e=f+2|0;c[72]=e}while(f>>>0<(c[73]|0)>>>0);return d|0}function J(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[67]|0;c[67]=h+36;g=c[63]|0;c[((g|0)==0?236:g+32|0)>>2]=h;c[64]=g;c[63]=h;c[h+8>>2]=b;if(2==(f|0)){b=3;g=e}else{g=1==(f|0);b=g?2:1;g=g?e+2|0:0}c[h+12>>2]=g;c[h+28>>2]=b;c[h>>2]=d;c[h+4>>2]=e;c[h+16>>2]=0;c[h+20>>2]=f;d=1==(f|0);a[h+24>>0]=d&1;c[h+32>>2]=0;if(d|2==(f|0))a[803]=1;return}function K(a){a=a|0;var d=0,e=0,f=0,g=0;g=c[73]|0;d=c[72]|0;while(1){f=d+2|0;if(d>>>0>=g>>>0){d=9;break}e=b[f>>1]|0;if(e<<16>>16==a<<16>>16){d=10;break}if(e<<16>>16==92){e=d+4|0;if((b[e>>1]|0)==13){d=d+6|0;d=(b[d>>1]|0)==10?d:e}else d=e}else if(ta(e)|0){d=9;break}else d=f}if((d|0)==9){c[72]=f;oa()}else if((d|0)==10)c[72]=f;return}function L(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[72]|0;f=b[e>>1]|0;h=(a|0)==(d|0);g=h?0:a;h=h?0:d;if(f<<16>>16==97){c[72]=e+4;e=I(1)|0;a=c[72]|0;if(qa(e)|0){K(e);d=(c[72]|0)+2|0;c[72]=d}else{aa(e)|0;d=c[72]|0}f=I(1)|0;e=c[72]|0}if((e|0)!=(a|0))W(a,d,g,h);return f|0}function M(){var a=0,d=0,e=0;e=c[73]|0;d=c[72]|0;a:while(1){a=d+2|0;if(d>>>0>=e>>>0){d=6;break}switch(b[a>>1]|0){case 13:case 10:{d=6;break a}case 93:{d=7;break a}case 92:{a=d+4|0;break}default:{}}d=a}if((d|0)==6){c[72]=a;oa();a=0}else if((d|0)==7){c[72]=a;a=93}return a|0}function N(){var a=0,d=0,e=0;a:while(1){a=c[72]|0;d=a+2|0;c[72]=d;if(a>>>0>=(c[73]|0)>>>0){e=7;break}switch(b[d>>1]|0){case 13:case 10:{e=7;break a}case 47:break a;case 91:{M()|0;break}case 92:{c[72]=a+4;break}default:{}}}if((e|0)==7)oa();return}function O(a){a=a|0;switch(b[a>>1]|0){case 62:{a=(b[a+-2>>1]|0)==61;break}case 41:case 59:{a=1;break}case 104:{a=X(a+-2|0,210,4)|0;break}case 121:{a=X(a+-2|0,218,6)|0;break}case 101:{a=X(a+-2|0,230,3)|0;break}default:a=0}return a|0}function P(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;g=(c[72]|0)+2|0;c[72]=g;e=c[73]|0;while(1){d=g+2|0;if(g>>>0>=e>>>0)break;f=b[d>>1]|0;if(!a?ta(f)|0:0)break;if(f<<16>>16==42?(b[g+4>>1]|0)==47:0){h=8;break}g=d}if((h|0)==8){c[72]=d;d=g+4|0}c[72]=d;return}function Q(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function S(a){a=a|0;a:do switch(a<<16>>16){case 38:case 37:case 33:{a=1;break}default:if((a&-8)<<16>>16==40|(a+-58&65535)<6)a=1;else{switch(a<<16>>16){case 91:case 93:case 94:{a=1;break a}default:{}}a=(a+-123&65535)<4}}while(0);return a|0}function T(a){a=a|0;a:do switch(a<<16>>16){case 38:case 37:case 33:break;default:if(!((a+-58&65535)<6|(a+-40&65535)<7&a<<16>>16!=41)){switch(a<<16>>16){case 91:case 94:break a;default:{}}return a<<16>>16!=125&(a+-123&65535)<4|0}}while(0);return 1}function U(a){a=a|0;var c=0;c=b[a>>1]|0;a:do if((c+-9&65535)>=5){switch(c<<16>>16){case 160:case 32:{c=1;break a}default:{}}if(S(c)|0)return c<<16>>16!=46|(ea(a)|0)|0;else c=0}else c=1;while(0);return c|0}function V(a){a=a|0;var d=0,e=0,f=0,g=0;e=v;v=v+16|0;f=e;c[f>>2]=0;c[66]=a;d=c[3]|0;g=d+(a<<1)|0;a=g+2|0;b[g>>1]=0;c[f>>2]=a;c[67]=a;c[59]=0;c[63]=0;c[61]=0;c[60]=0;c[65]=0;c[62]=0;v=e;return d|0}function W(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[67]|0;c[67]=g+20;h=c[65]|0;c[((h|0)==0?240:h+16|0)>>2]=g;c[65]=g;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=e;c[g+12>>2]=f;c[g+16>>2]=0;a[803]=1;return}function X(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+(0-d<<1)|0;f=e+2|0;a=c[3]|0;if(f>>>0>=a>>>0?(Q(f,b,d<<1)|0)==0:0)if((f|0)==(a|0))a=1;else a=U(e)|0;else a=0;return a|0}function Y(a){a=a|0;switch(b[a>>1]|0){case 107:{a=X(a+-2|0,144,4)|0;break}case 101:{if((b[a+-2>>1]|0)==117)a=X(a+-4|0,116,6)|0;else a=0;break}default:a=0}return a|0}function Z(a,d){a=a|0;d=d|0;var e=0;e=c[3]|0;if(e>>>0<=a>>>0?(b[a>>1]|0)==d<<16>>16:0)if((e|0)==(a|0))e=1;else e=_(b[a+-2>>1]|0)|0;else e=0;return e|0}function _(a){a=a|0;a:do if((a+-9&65535)<5)a=1;else{switch(a<<16>>16){case 32:case 160:{a=1;break a}default:{}}a=a<<16>>16!=46&(S(a)|0)}while(0);return a|0}function $(){var a=0,d=0,e=0;a=c[73]|0;e=c[72]|0;a:while(1){d=e+2|0;if(e>>>0>=a>>>0)break;switch(b[d>>1]|0){case 13:case 10:break a;default:e=d}}c[72]=d;return}function aa(a){a=a|0;while(1){if(pa(a)|0)break;if(S(a)|0)break;a=(c[72]|0)+2|0;c[72]=a;a=b[a>>1]|0;if(!(a<<16>>16)){a=0;break}}return a|0}function ba(){var a=0;a=c[(c[61]|0)+20>>2]|0;switch(a|0){case 1:{a=-1;break}case 2:{a=-2;break}default:a=a-(c[3]|0)>>1}return a|0}function ca(a){a=a|0;if(!(X(a,190,5)|0)?!(X(a,200,3)|0):0)a=X(a,206,2)|0;else a=1;return a|0}function da(a){a=a|0;switch(a<<16>>16){case 160:case 32:case 12:case 11:case 9:{a=1;break}default:a=0}return a|0}function ea(a){a=a|0;if((b[a>>1]|0)==46?(b[a+-2>>1]|0)==46:0)a=(b[a+-4>>1]|0)==46;else a=0;return a|0}function fa(a){a=a|0;if((c[3]|0)==(a|0))a=1;else a=U(a+-2|0)|0;return a|0}function ga(){var a=0;a=c[(c[62]|0)+12>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ha(){var a=0;a=c[(c[61]|0)+12>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ia(){var a=0;a=c[(c[62]|0)+8>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ja(){var a=0;a=c[(c[61]|0)+16>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ka(){var a=0;a=c[(c[61]|0)+4>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function la(){var a=0;a=c[61]|0;a=c[((a|0)==0?236:a+32|0)>>2]|0;c[61]=a;return (a|0)!=0|0}function ma(){var a=0;a=c[62]|0;a=c[((a|0)==0?240:a+16|0)>>2]|0;c[62]=a;return (a|0)!=0|0}function oa(){a[802]=1;c[68]=(c[72]|0)-(c[3]|0)>>1;c[72]=(c[73]|0)+2;return}function pa(a){a=a|0;return (a|128)<<16>>16==160|(a+-9&65535)<5|0}function qa(a){a=a|0;return a<<16>>16==39|a<<16>>16==34|0}function ra(){return (c[(c[61]|0)+8>>2]|0)-(c[3]|0)>>1|0}function sa(){return (c[(c[62]|0)+4>>2]|0)-(c[3]|0)>>1|0}function ta(a){a=a|0;return a<<16>>16==13|a<<16>>16==10|0}function ua(){return (c[c[61]>>2]|0)-(c[3]|0)>>1|0}function va(){return (c[c[62]>>2]|0)-(c[3]|0)>>1|0}function wa(){return d[(c[61]|0)+24>>0]|0|0}function xa(a){a=a|0;c[3]=a;return}function ya(){return c[(c[61]|0)+28>>2]|0}function Ba(){return (a[803]|0)!=0|0}function Ca(){return (a[804]|0)!=0|0}function Ga(){return c[68]|0} function su(a) { a = a | 0; v = a + 992 + 15 & -16; return 992; } return { - su,ai:ja,e:Fa,ee:sa,ele:ga,els:ia,es:va,f:Ba,id:ba,ie:ka,ip:wa,is:ua,ms:Aa,p:z,re:ma,ri:la,sa:V,se:ha,ses:xa,ss:ra}} \ No newline at end of file + su,ai:ja,e:Ga,ee:sa,ele:ga,els:ia,es:va,f:Ca,id:ba,ie:ka,ip:wa,is:ua,it:ya,ms:Ba,p:z,re:ma,ri:la,sa:V,se:ha,ses:xa,ss:ra}} \ No newline at end of file diff --git a/lib/lexer.emcc.asm.js b/lib/lexer.emcc.asm.js index e892b90..ca321be 100644 --- a/lib/lexer.emcc.asm.js +++ b/lib/lexer.emcc.asm.js @@ -1,9 +1,9 @@ Module["asm"]=(/** @suppress {uselessCode} */ function(global,env,buffer) { -"use asm";var a=new global.Int8Array(buffer),b=new global.Int16Array(buffer),c=new global.Int32Array(buffer),d=new global.Uint8Array(buffer),e=new global.Uint16Array(buffer),f=env.g|0,g=env.h|0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=env.a,q=env.b,r=env.c,s=env.d,t=env.e,u=env.f,v=1024,w=4998992,x=0.0; +"use asm";var a=new global.Int8Array(buffer),b=new global.Int16Array(buffer),c=new global.Int32Array(buffer),d=new global.Uint8Array(buffer),e=new global.Uint16Array(buffer),f=env.g|0,g=env.h|0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=env.a,q=env.b,r=env.c,s=env.d,t=env.e,u=env.f,v=1040,w=4999008,x=0.0; // EMSCRIPTEN_START_FUNCS -function y(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,w=0,x=0;x=v;v=v+16|0;n=x;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[73]|0;d=m>>>a;if(d&3|0){e=(d&1^1)+a|0;f=332+(e<<1<<2)|0;b=f+8|0;a=c[b>>2]|0;g=a+8|0;d=c[g>>2]|0;if((d|0)==(f|0))c[73]=m&~(1<>2]=f;c[b>>2]=d}w=e<<3;c[a+4>>2]=w|3;w=a+w+4|0;c[w>>2]=c[w>>2]|1;w=g;v=x;return w|0}l=c[75]|0;if(k>>>0>l>>>0){if(d|0){i=2<>>12&16;d=d>>>i;a=d>>>5&8;d=d>>>a;g=d>>>2&4;d=d>>>g;b=d>>>1&2;d=d>>>b;e=d>>>1&1;e=(a|i|g|b|e)+(d>>>e)|0;d=332+(e<<1<<2)|0;b=d+8|0;g=c[b>>2]|0;i=g+8|0;a=c[i>>2]|0;if((a|0)==(d|0)){a=m&~(1<>2]=d;c[b>>2]=a;a=m}w=e<<3;h=w-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+w>>2]=h;if(l|0){e=c[78]|0;b=l>>>3;d=332+(b<<1<<2)|0;b=1<>2]|0}c[b>>2]=e;c[a+12>>2]=e;c[e+8>>2]=a;c[e+12>>2]=d}c[75]=h;c[78]=f;w=i;v=x;return w|0}g=c[74]|0;if(g){i=(g&0-g)+-1|0;f=i>>>12&16;i=i>>>f;e=i>>>5&8;i=i>>>e;h=i>>>2&4;i=i>>>h;d=i>>>1&2;i=i>>>d;j=i>>>1&1;j=c[596+((e|f|h|d|j)+(i>>>j)<<2)>>2]|0;i=(c[j+4>>2]&-8)-k|0;d=j;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}d=(c[a+4>>2]&-8)-k|0;h=d>>>0>>0;i=h?d:i;d=a;j=h?a:j}h=j+k|0;if(h>>>0>j>>>0){f=c[j+24>>2]|0;b=c[j+12>>2]|0;do if((b|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[j+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[j+28>>2]|0;a=596+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[74]=g&~(1<>2]|0)==(j|0)?w:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[j+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[j+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(i>>>0<16){w=i+k|0;c[j+4>>2]=w|3;w=j+w+4|0;c[w>>2]=c[w>>2]|1}else{c[j+4>>2]=k|3;c[h+4>>2]=i|1;c[h+i>>2]=i;if(l|0){e=c[78]|0;b=l>>>3;d=332+(b<<1<<2)|0;b=1<>2]|0}c[b>>2]=e;c[a+12>>2]=e;c[e+8>>2]=a;c[e+12>>2]=d}c[75]=i;c[78]=h}w=j+8|0;v=x;return w|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[74]|0;if(e){d=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;a=c[596+(j<<2)>>2]|0;a:do if(!a){f=0;a=0;q=61}else{f=0;h=k<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){g=(c[i+4>>2]&-8)-k|0;if(g>>>0>>0)if(!g){d=0;f=i;a=i;q=65;break a}else{d=g;a=i}q=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;f=(q|0)==0|(q|0)==(i|0)?f:q;if(!i){q=61;break}else h=h<<1}}while(0);if((q|0)==61){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>i;h=a>>>5&8;a=a>>>h;j=a>>>2&4;a=a>>>j;m=a>>>1&2;a=a>>>m;f=a>>>1&1;f=c[596+((h|i|j|m|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;g=a}else q=65}if((q|0)==65)while(1){m=(c[f+4>>2]&-8)-k|0;g=m>>>0>>0;d=g?m:d;g=g?f:a;a=c[f+16>>2]|0;if(!a)a=c[f+20>>2]|0;if(!a){i=d;break}else{f=a;a=g}}if(((g|0)!=0?i>>>0<((c[75]|0)-k|0)>>>0:0)?(l=g+k|0,l>>>0>g>>>0):0){h=c[g+24>>2]|0;b=c[g+12>>2]|0;do if((b|0)==(g|0)){a=g+20|0;b=c[a>>2]|0;if(!b){a=g+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{w=c[g+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(h){a=c[g+28>>2]|0;d=596+(a<<2)|0;if((g|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(g|0)?w:h+20|0)>>2]=b;if(!b)break}c[b+24>>2]=h;a=c[g+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[g+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(i>>>0<16){w=i+k|0;c[g+4>>2]=w|3;w=g+w+4|0;c[w>>2]=c[w>>2]|1}else{c[g+4>>2]=k|3;c[l+4>>2]=i|1;c[l+i>>2]=i;b=i>>>3;if(i>>>0<256){d=332+(b<<1<<2)|0;a=c[73]|0;b=1<>2]|0}c[b>>2]=l;c[a+12>>2]=l;c[l+8>>2]=a;c[l+12>>2]=d;break}b=i>>>8;if(b)if(i>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;d=14-(t|u|d)+(w<>>15)|0;d=i>>>(d+7|0)&1|d<<1}else d=0;b=596+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(i|0)){e=i<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(i|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;w=c[u>>2]|0;c[w+12>>2]=l;c[u>>2]=l;c[l+8>>2]=w;c[l+12>>2]=b;c[l+24>>2]=0}while(0);w=g+8|0;v=x;return w|0}else m=k}else m=k}else m=-1;while(0);d=c[75]|0;if(d>>>0>=m>>>0){a=d-m|0;b=c[78]|0;if(a>>>0>15){w=b+m|0;c[78]=w;c[75]=a;c[w+4>>2]=a|1;c[b+d>>2]=a;c[b+4>>2]=m|3}else{c[75]=0;c[78]=0;c[b+4>>2]=d|3;w=b+d+4|0;c[w>>2]=c[w>>2]|1}w=b+8|0;v=x;return w|0}h=c[76]|0;if(h>>>0>m>>>0){t=h-m|0;c[76]=t;w=c[79]|0;u=w+m|0;c[79]=u;c[u+4>>2]=t|1;c[w+4>>2]=m|3;w=w+8|0;v=x;return w|0}if(!(c[191]|0)){c[193]=4096;c[192]=4096;c[194]=-1;c[195]=-1;c[196]=0;c[184]=0;c[191]=n&-16^1431655768;a=4096}else a=c[193]|0;i=m+48|0;j=m+47|0;g=a+j|0;e=0-a|0;k=g&e;if(k>>>0<=m>>>0){w=0;v=x;return w|0}a=c[183]|0;if(a|0?(l=c[181]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){w=0;v=x;return w|0}d:do if(!(c[184]&4)){d=c[79]|0;e:do if(d){f=740;while(1){n=c[f>>2]|0;if(n>>>0<=d>>>0?(n+(c[f+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[f+8>>2]|0;if(!a){q=128;break e}else f=a}b=g-h&e;if(b>>>0<2147483647){a=R(b)|0;if((a|0)==((c[f>>2]|0)+(c[f+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=a;g=b;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=R(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[192]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[181]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[183]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=R(b)|0;if((a|0)==(d|0)){h=d;g=b;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=e;g=b;q=145;break d}a=c[193]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=e;g=b;q=145;break d}if((R(a)|0)==(-1|0)){R(d)|0;b=0;break}else{h=e;g=a+b|0;q=145;break d}}while(0);c[184]=c[184]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(r=R(k)|0,p=R(0)|0,t=p-r|0,s=t>>>0>(m+40|0)>>>0,!((r|0)==(-1|0)|s^1|r>>>0

>>0&((r|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=r;g=s?t:b;q=145}if((q|0)==145){b=(c[181]|0)+g|0;c[181]=b;if(b>>>0>(c[182]|0)>>>0)c[182]=b;j=c[79]|0;f:do if(j){e=740;while(1){b=c[e>>2]|0;a=c[e+4>>2]|0;if((h|0)==(b+a|0)){q=154;break}d=c[e+8>>2]|0;if(!d)break;else e=d}if(((q|0)==154?(u=e+4|0,(c[e+12>>2]&8|0)==0):0)?h>>>0>j>>>0&b>>>0<=j>>>0:0){c[u>>2]=a+g;w=(c[76]|0)+g|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=w-t|0;c[79]=u;c[76]=t;c[u+4>>2]=t|1;c[j+w+4>>2]=40;c[80]=c[195];break}if(h>>>0<(c[77]|0)>>>0)c[77]=h;d=h+g|0;a=740;while(1){if((c[a>>2]|0)==(d|0)){q=162;break}b=c[a+8>>2]|0;if(!b)break;else a=b}if((q|0)==162?(c[a+12>>2]&8|0)==0:0){c[a>>2]=h;l=a+4|0;c[l>>2]=(c[l>>2]|0)+g;l=h+8|0;l=h+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){w=(c[76]|0)+i|0;c[76]=w;c[79]=k;c[k+4>>2]=w|1}else{if((c[78]|0)==(b|0)){w=(c[75]|0)+i|0;c[75]=w;c[78]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[73]=c[73]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=596+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){w=g+16|0;c[((c[w>>2]|0)==(b|0)?w:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[74]=c[74]&~(1<>2]=g;e=b+16|0;d=c[e>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}d=c[e+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=332+(b<<1<<2)|0;a=c[73]|0;b=1<>2]|0}c[b>>2]=k;c[a+12>>2]=k;c[k+8>>2]=a;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;e=14-(t|u|e)+(w<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);a=596+(e<<2)|0;c[k+28>>2]=e;b=k+16|0;c[b+4>>2]=0;c[b>>2]=0;b=c[74]|0;d=1<>2]=k;c[k+24>>2]=a;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[a>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;w=c[u>>2]|0;c[w+12>>2]=k;c[u>>2]=k;c[k+8>>2]=w;c[k+12>>2]=b;c[k+24>>2]=0}while(0);w=l+8|0;v=x;return w|0}a=740;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=g+-40|0;t=h+8|0;t=(t&7|0)==0?0:0-t&7;u=h+t|0;t=d-t|0;c[79]=u;c[76]=t;c[u+4>>2]=t|1;c[h+d+4>>2]=40;c[80]=c[195];d=a+4|0;c[d>>2]=27;c[b>>2]=c[185];c[b+4>>2]=c[186];c[b+8>>2]=c[187];c[b+12>>2]=c[188];c[185]=h;c[186]=g;c[188]=0;c[187]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=332+(b<<1<<2)|0;a=c[73]|0;b=1<>2]|0}c[b>>2]=j;c[a+12>>2]=j;c[j+8>>2]=a;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;e=14-(t|u|e)+(w<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=596+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[74]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;w=c[u>>2]|0;c[w+12>>2]=j;c[u>>2]=j;c[j+8>>2]=w;c[j+12>>2]=b;c[j+24>>2]=0}}else{w=c[77]|0;if((w|0)==0|h>>>0>>0)c[77]=h;c[185]=h;c[186]=g;c[188]=0;c[82]=c[191];c[81]=-1;c[86]=332;c[85]=332;c[88]=340;c[87]=340;c[90]=348;c[89]=348;c[92]=356;c[91]=356;c[94]=364;c[93]=364;c[96]=372;c[95]=372;c[98]=380;c[97]=380;c[100]=388;c[99]=388;c[102]=396;c[101]=396;c[104]=404;c[103]=404;c[106]=412;c[105]=412;c[108]=420;c[107]=420;c[110]=428;c[109]=428;c[112]=436;c[111]=436;c[114]=444;c[113]=444;c[116]=452;c[115]=452;c[118]=460;c[117]=460;c[120]=468;c[119]=468;c[122]=476;c[121]=476;c[124]=484;c[123]=484;c[126]=492;c[125]=492;c[128]=500;c[127]=500;c[130]=508;c[129]=508;c[132]=516;c[131]=516;c[134]=524;c[133]=524;c[136]=532;c[135]=532;c[138]=540;c[137]=540;c[140]=548;c[139]=548;c[142]=556;c[141]=556;c[144]=564;c[143]=564;c[146]=572;c[145]=572;c[148]=580;c[147]=580;w=g+-40|0;t=h+8|0;t=(t&7|0)==0?0:0-t&7;u=h+t|0;t=w-t|0;c[79]=u;c[76]=t;c[u+4>>2]=t|1;c[h+w+4>>2]=40;c[80]=c[195]}while(0);b=c[76]|0;if(b>>>0>m>>>0){t=b-m|0;c[76]=t;w=c[79]|0;u=w+m|0;c[79]=u;c[u+4>>2]=t|1;c[w+4>>2]=m|3;w=w+8|0;v=x;return w|0}}c[(Ea()|0)>>2]=48;w=0;v=x;return w|0}function z(){var d=0,f=0,g=0,h=0,i=0,j=0;j=v;v=v+10240|0;a[796]=1;a[795]=0;b[395]=0;b[396]=0;c[67]=c[2];a[797]=0;c[66]=0;a[794]=0;c[68]=j+2048;c[69]=j;a[798]=0;d=(c[3]|0)+-2|0;c[70]=d;f=d+(c[64]<<1)|0;c[71]=f;a:while(1){g=d+2|0;c[70]=g;if(d>>>0>=f>>>0){i=18;break}b:do switch(b[g>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if((((b[396]|0)==0?fa(g)|0:0)?(Q(d+4|0,16,10)|0)==0:0)?(B(),(a[796]|0)==0):0){i=9;break a}else i=17;break}case 105:{if(fa(g)|0?(Q(d+4|0,26,10)|0)==0:0){C();i=17}else i=17;break}case 59:{i=17;break}case 47:switch(b[d+4>>1]|0){case 47:{$();break b}case 42:{P(1);break b}default:{i=16;break a}}default:{i=16;break a}}while(0);if((i|0)==17){i=0;c[67]=c[70]}d=c[70]|0;f=c[71]|0}if((i|0)==9){d=c[70]|0;c[67]=d;i=19}else if((i|0)==16){a[796]=0;c[70]=d;i=19}else if((i|0)==18)if(!(a[794]|0)){d=g;i=19}else d=0;do if((i|0)==19){c:while(1){f=d+2|0;c[70]=f;if(d>>>0>=(c[71]|0)>>>0){i=86;break}d:do switch(b[f>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(((b[396]|0)==0?fa(f)|0:0)?(Q(d+4|0,16,10)|0)==0:0){B();i=85}else i=85;break}case 105:{if(fa(f)|0?(Q(d+4|0,26,10)|0)==0:0){C();i=85}else i=85;break}case 99:{if((fa(f)|0?(Q(d+4|0,36,8)|0)==0:0)?pa(b[d+12>>1]|0)|0:0){a[798]=1;i=85}else i=85;break}case 40:{h=c[68]|0;f=b[396]|0;i=f&65535;c[h+(i<<3)>>2]=1;g=c[67]|0;b[396]=f+1<<16>>16;c[h+(i<<3)+4>>2]=g;i=85;break}case 41:{f=b[396]|0;if(!(f<<16>>16)){i=36;break c}i=f+-1<<16>>16;b[396]=i;h=b[395]|0;f=h&65535;if(h<<16>>16!=0?(c[(c[68]|0)+((i&65535)<<3)>>2]|0)==5:0){f=c[(c[69]|0)+(f+-1<<2)>>2]|0;g=f+4|0;if(!(c[g>>2]|0))c[g>>2]=(c[67]|0)+2;c[f+12>>2]=d+4;b[395]=h+-1<<16>>16;i=85}else i=85;break}case 123:{i=c[67]|0;h=c[61]|0;d=i;do if((b[i>>1]|0)==41&(h|0)!=0?(c[h+4>>2]|0)==(i|0):0){f=c[62]|0;c[61]=f;if(!f){c[57]=0;break}else{c[f+28>>2]=0;break}}while(0);h=c[68]|0;g=b[396]|0;i=g&65535;c[h+(i<<3)>>2]=(a[798]|0)==0?2:6;b[396]=g+1<<16>>16;c[h+(i<<3)+4>>2]=d;a[798]=0;i=85;break}case 125:{d=b[396]|0;if(!(d<<16>>16)){i=49;break c}h=c[68]|0;i=d+-1<<16>>16;b[396]=i;if((c[h+((i&65535)<<3)>>2]|0)==4){H();i=85}else i=85;break}case 39:{J(39);i=85;break}case 34:{J(34);i=85;break}case 47:switch(b[d+4>>1]|0){case 47:{$();break d}case 42:{P(1);break d}default:{d=c[67]|0;f=b[d>>1]|0;e:do if(!(T(f)|0)){switch(f<<16>>16){case 41:if(ca(c[(c[68]|0)+(e[396]<<3)+4>>2]|0)|0)break e;else{i=66;break e}case 125:break;default:{i=66;break e}}g=c[68]|0;h=e[396]|0;if(!(O(c[g+(h<<3)+4>>2]|0)|0)?(c[g+(h<<3)>>2]|0)!=6:0)i=66}else switch(f<<16>>16){case 46:if(((b[d+-2>>1]|0)+-48&65535)<10){i=66;break e}else break e;case 43:if((b[d+-2>>1]|0)==43){i=66;break e}else break e;case 45:if((b[d+-2>>1]|0)==45){i=66;break e}else break e;default:break e}while(0);f:do if((i|0)==66?(0,!(E(d)|0)):0){switch(f<<16>>16){case 0:break f;case 47:{if(a[797]|0)break f;break}default:{}}i=c[63]|0;if((i|0?d>>>0>=(c[i>>2]|0)>>>0:0)?d>>>0<=(c[i+4>>2]|0)>>>0:0){N();a[797]=0;i=85;break d}g=c[3]|0;do{if(d>>>0<=g>>>0)break;d=d+-2|0;c[67]=d;f=b[d>>1]|0}while(!(_(f)|0));if(da(f)|0){do{if(d>>>0<=g>>>0)break;d=d+-2|0;c[67]=d}while(da(b[d>>1]|0)|0);if(Y(d)|0){N();a[797]=0;i=85;break d}}a[797]=1;i=85;break d}while(0);N();a[797]=0;i=85;break d}}case 96:{h=c[68]|0;g=b[396]|0;i=g&65535;c[h+(i<<3)+4>>2]=c[67];b[396]=g+1<<16>>16;c[h+(i<<3)>>2]=3;H();i=85;break}default:i=85}while(0);if((i|0)==85){i=0;c[67]=c[70]}d=c[70]|0}if((i|0)==36){oa();d=0;break}else if((i|0)==49){oa();d=0;break}else if((i|0)==86){d=(a[794]|0)==0?(b[395]|b[396])<<16>>16==0:0;break}}while(0);v=j;return d|0}function A(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!a)return;d=a+-8|0;e=c[77]|0;a=c[a+-4>>2]|0;b=a&-8;k=d+b|0;do if(!(a&1)){f=c[d>>2]|0;if(!(a&3))return;g=d+(0-f)|0;h=f+b|0;if(g>>>0>>0)return;if((c[78]|0)==(g|0)){b=k+4|0;a=c[b>>2]|0;if((a&3|0)!=3){i=g;j=g;b=h;break}c[75]=h;c[b>>2]=a&-2;c[g+4>>2]=h|1;c[g+h>>2]=h;return}d=f>>>3;if(f>>>0<256){a=c[g+8>>2]|0;b=c[g+12>>2]|0;if((b|0)==(a|0)){c[73]=c[73]&~(1<>2]=b;c[b+8>>2]=a;i=g;j=g;b=h;break}}f=c[g+24>>2]|0;a=c[g+12>>2]|0;do if((a|0)==(g|0)){d=g+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[g+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(f){a=c[g+28>>2]|0;b=596+(a<<2)|0;if((c[b>>2]|0)==(g|0)){c[b>>2]=d;if(!d){c[74]=c[74]&~(1<>2]|0)==(g|0)?j:f+20|0)>>2]=d;if(!d){i=g;j=g;b=h;break}}c[d+24>>2]=f;b=g+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}a=c[b+4>>2]|0;if(a){c[d+20>>2]=a;c[a+24>>2]=d;i=g;j=g;b=h}else{i=g;j=g;b=h}}else{i=g;j=g;b=h}}else{i=d;j=d}while(0);if(i>>>0>=k>>>0)return;a=k+4|0;d=c[a>>2]|0;if(!(d&1))return;if(!(d&2)){if((c[79]|0)==(k|0)){k=(c[76]|0)+b|0;c[76]=k;c[79]=j;c[j+4>>2]=k|1;if((j|0)!=(c[78]|0))return;c[78]=0;c[75]=0;return}if((c[78]|0)==(k|0)){k=(c[75]|0)+b|0;c[75]=k;c[78]=i;c[j+4>>2]=k|1;c[i+k>>2]=k;return}f=(d&-8)+b|0;e=d>>>3;do if(d>>>0<256){b=c[k+8>>2]|0;a=c[k+12>>2]|0;if((a|0)==(b|0)){c[73]=c[73]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[k+24>>2]|0;a=c[k+12>>2]|0;do if((a|0)==(k|0)){d=k+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[k+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[k+28>>2]|0;b=596+(a<<2)|0;if((c[b>>2]|0)==(k|0)){c[b>>2]=d;if(!d){c[74]=c[74]&~(1<>2]|0)==(k|0)?h:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=k+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}a=c[b+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[j+4>>2]=f|1;c[i+f>>2]=f;if((j|0)==(c[78]|0)){c[75]=f;return}}else{c[a>>2]=d&-2;c[j+4>>2]=b|1;c[i+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=332+(a<<1<<2)|0;b=c[73]|0;a=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{i=(a+1048320|0)>>>16&8;k=a<>>16&4;k=k<>>16&2;e=14-(h|i|e)+(k<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=596+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[j+16>>2]=0;a=c[74]|0;d=1<>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j}else{a=c[b>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=j;c[j+24>>2]=a;c[j+12>>2]=j;c[j+8>>2]=j;break a}while(0);i=a+8|0;k=c[i>>2]|0;c[k+12>>2]=j;c[i>>2]=j;c[j+8>>2]=k;c[j+12>>2]=a;c[j+24>>2]=0}while(0);k=(c[81]|0)+-1|0;c[81]=k;if(k|0)return;a=748;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[81]=-1;return}function B(){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;k=c[70]|0;l=c[63]|0;q=k+12|0;c[70]=q;f=I(1)|0;d=c[70]|0;if(!((d|0)==(q|0)?!(S(f)|0):0))p=3;a:do if((p|0)==3){b:do switch(f<<16>>16){case 123:{c[70]=d+2;d=I(1)|0;e=c[70]|0;while(1){if(qa(d)|0){J(d);d=(c[70]|0)+2|0;c[70]=d}else{aa(d)|0;d=c[70]|0}I(1)|0;d=L(e,d)|0;if(d<<16>>16==44){c[70]=(c[70]|0)+2;d=I(1)|0}if(d<<16>>16==125){p=15;break}q=e;e=c[70]|0;if((e|0)==(q|0)){p=12;break}if(e>>>0>(c[71]|0)>>>0){p=14;break}}if((p|0)==12){oa();break a}else if((p|0)==14){oa();break a}else if((p|0)==15){a[795]=1;c[70]=(c[70]|0)+2;break b}break}case 42:{c[70]=d+2;I(1)|0;q=c[70]|0;L(q,q)|0;break}default:{a[796]=0;switch(f<<16>>16){case 100:{k=d+14|0;c[70]=k;switch((I(1)|0)<<16>>16){case 97:{e=c[70]|0;if((Q(e+2|0,56,8)|0)==0?(h=e+10|0,da(b[h>>1]|0)|0):0){c[70]=h;I(0)|0;p=22}break}case 102:{p=22;break}case 99:{e=c[70]|0;if(((Q(e+2|0,36,8)|0)==0?(g=e+10|0,q=b[g>>1]|0,pa(q)|0|q<<16>>16==123):0)?(c[70]=g,i=I(1)|0,i<<16>>16!=123):0){o=i;p=31}break}default:{}}c:do if((p|0)==22?(j=c[70]|0,(Q(j+2|0,64,14)|0)==0):0){f=j+16|0;e=b[f>>1]|0;if(!(pa(e)|0))switch(e<<16>>16){case 40:case 42:break;default:break c}c[70]=f;e=I(1)|0;if(e<<16>>16==42){c[70]=(c[70]|0)+2;e=I(1)|0}if(e<<16>>16!=40){o=e;p=31}}while(0);if((p|0)==31?(m=c[70]|0,aa(o)|0,n=c[70]|0,n>>>0>m>>>0):0){W(d,k,m,n);c[70]=(c[70]|0)+-2;break a}W(d,k,0,0);c[70]=d+12;break a}case 97:{c[70]=d+10;I(0)|0;d=c[70]|0;p=35;break}case 102:{p=35;break}case 99:{if((Q(d+2|0,36,8)|0)==0?(e=d+10|0,_(b[e>>1]|0)|0):0){c[70]=e;q=I(1)|0;p=c[70]|0;aa(q)|0;q=c[70]|0;W(p,q,p,q);c[70]=(c[70]|0)+-2;break a}d=d+4|0;c[70]=d;break}case 108:case 118:break;default:break a}if((p|0)==35){c[70]=d+16;d=I(1)|0;if(d<<16>>16==42){c[70]=(c[70]|0)+2;d=I(1)|0}p=c[70]|0;aa(d)|0;q=c[70]|0;W(p,q,p,q);c[70]=(c[70]|0)+-2;break a}c[70]=d+6;a[796]=0;f=I(1)|0;d=c[70]|0;f=(aa(f)|0|32)<<16>>16==123;g=c[70]|0;if(f){c[70]=g+2;q=I(1)|0;d=c[70]|0;aa(q)|0}d:while(1){e=c[70]|0;if((e|0)==(d|0))break;W(d,e,d,e);e=I(1)|0;if(f)switch(e<<16>>16){case 93:case 125:break a;default:{}}d=c[70]|0;if(e<<16>>16!=44){p=51;break}c[70]=d+2;e=I(1)|0;d=c[70]|0;switch(e<<16>>16){case 91:case 123:{p=51;break d}default:{}}aa(e)|0}if((p|0)==51)c[70]=d+-2;if(!f)break a;c[70]=g+-2;break a}}while(0);q=(I(1)|0)<<16>>16==102;d=c[70]|0;if(q?(Q(d+2|0,50,6)|0)==0:0){c[70]=d+8;D(k,I(1)|0);d=(l|0)==0?232:l+16|0;while(1){d=c[d>>2]|0;if(!d)break a;c[d+12>>2]=0;c[d+8>>2]=0;d=d+16|0}}c[70]=d+-2}while(0);return}function C(){var d=0,e=0,f=0,g=0,h=0,i=0;h=c[70]|0;d=h+12|0;c[70]=d;a:do switch((I(1)|0)<<16>>16){case 40:{e=c[68]|0;i=b[396]|0;f=i&65535;c[e+(f<<3)>>2]=5;d=c[70]|0;b[396]=i+1<<16>>16;c[e+(f<<3)+4>>2]=d;if((b[c[67]>>1]|0)!=46){c[70]=d+2;i=I(1)|0;K(h,c[70]|0,0,d);e=c[61]|0;f=c[69]|0;h=b[395]|0;b[395]=h+1<<16>>16;c[f+((h&65535)<<2)>>2]=e;switch(i<<16>>16){case 39:{J(39);break}case 34:{J(34);break}default:{c[70]=(c[70]|0)+-2;break a}}d=(c[70]|0)+2|0;c[70]=d;switch((I(1)|0)<<16>>16){case 44:{c[70]=(c[70]|0)+2;I(1)|0;h=c[61]|0;c[h+4>>2]=d;i=c[70]|0;c[h+16>>2]=i;a[h+24>>0]=1;c[70]=i+-2;break a}case 41:{b[396]=(b[396]|0)+-1<<16>>16;i=c[61]|0;c[i+4>>2]=d;c[i+12>>2]=(c[70]|0)+2;a[i+24>>0]=1;b[395]=(b[395]|0)+-1<<16>>16;break a}default:{c[70]=(c[70]|0)+-2;break a}}}break}case 46:{c[70]=(c[70]|0)+2;if((I(1)|0)<<16>>16==109?(e=c[70]|0,(Q(e+2|0,44,6)|0)==0):0){d=c[67]|0;if(!(ea(d)|0)?(b[d>>1]|0)==46:0)break a;K(h,h,e+8|0,2)}break}case 42:case 39:case 34:{g=18;break}case 123:{d=c[70]|0;if(b[396]|0){c[70]=d+-2;break a}while(1){if(d>>>0>=(c[71]|0)>>>0)break;d=I(1)|0;if(!(qa(d)|0)){if(d<<16>>16==125){g=33;break}}else J(d);d=(c[70]|0)+2|0;c[70]=d}if((g|0)==33)c[70]=(c[70]|0)+2;i=(I(1)|0)<<16>>16==102;d=c[70]|0;if(i?Q(d+2|0,50,6)|0:0){oa();break a}c[70]=d+8;d=I(1)|0;if(qa(d)|0){D(h,d);break a}else{oa();break a}}default:if((c[70]|0)==(d|0))c[70]=h+10;else g=18}while(0);do if((g|0)==18){if(b[396]|0){c[70]=(c[70]|0)+-2;break}d=c[71]|0;e=c[70]|0;while(1){if(e>>>0>=d>>>0){g=25;break}f=b[e>>1]|0;if(qa(f)|0){g=23;break}i=e+2|0;c[70]=i;e=i}if((g|0)==23){D(h,f);break}else if((g|0)==25){oa();break}}while(0);return}function D(a,d){a=a|0;d=d|0;var e=0,f=0;e=(c[70]|0)+2|0;switch(d<<16>>16){case 39:{J(39);f=5;break}case 34:{J(34);f=5;break}default:oa()}do if((f|0)==5){K(a,e,c[70]|0,1);c[70]=(c[70]|0)+2;d=I(0)|0;a=d<<16>>16==97;if(a){e=c[70]|0;if(Q(e+2|0,78,10)|0)f=11}else{e=c[70]|0;if(!(((d<<16>>16==119?(b[e+2>>1]|0)==105:0)?(b[e+4>>1]|0)==116:0)?(b[e+6>>1]|0)==104:0))f=11}if((f|0)==11){c[70]=e+-2;break}c[70]=e+((a?6:4)<<1);if((I(1)|0)<<16>>16!=123){c[70]=e;break}a=c[70]|0;d=a;a:while(1){c[70]=d+2;d=I(1)|0;switch(d<<16>>16){case 39:{J(39);c[70]=(c[70]|0)+2;d=I(1)|0;break}case 34:{J(34);c[70]=(c[70]|0)+2;d=I(1)|0;break}default:d=aa(d)|0}if(d<<16>>16!=58){f=20;break}c[70]=(c[70]|0)+2;switch((I(1)|0)<<16>>16){case 39:{J(39);break}case 34:{J(34);break}default:{f=24;break a}}c[70]=(c[70]|0)+2;switch((I(1)|0)<<16>>16){case 125:{f=29;break a}case 44:break;default:{f=28;break a}}c[70]=(c[70]|0)+2;if((I(1)|0)<<16>>16==125){f=29;break}d=c[70]|0}if((f|0)==20){c[70]=e;break}else if((f|0)==24){c[70]=e;break}else if((f|0)==28){c[70]=e;break}else if((f|0)==29){f=c[61]|0;c[f+16>>2]=a;c[f+12>>2]=(c[70]|0)+2;break}}while(0);return}function E(a){a=a|0;a:do switch(b[a>>1]|0){case 100:switch(b[a+-2>>1]|0){case 105:{a=X(a+-4|0,88,2)|0;break a}case 108:{a=X(a+-4|0,92,3)|0;break a}default:{a=0;break a}}case 101:switch(b[a+-2>>1]|0){case 115:switch(b[a+-4>>1]|0){case 108:{a=Z(a+-6|0,101)|0;break a}case 97:{a=Z(a+-6|0,99)|0;break a}default:{a=0;break a}}case 116:{a=X(a+-4|0,98,4)|0;break a}case 117:{a=X(a+-4|0,106,6)|0;break a}default:{a=0;break a}}case 102:{if((b[a+-2>>1]|0)==111?(b[a+-4>>1]|0)==101:0)switch(b[a+-6>>1]|0){case 99:{a=X(a+-8|0,118,6)|0;break a}case 112:{a=X(a+-8|0,130,2)|0;break a}default:{a=0;break a}}else a=0;break}case 107:{a=X(a+-2|0,134,4)|0;break}case 110:{a=a+-2|0;if(Z(a,105)|0)a=1;else a=X(a,142,5)|0;break}case 111:{a=Z(a+-2|0,100)|0;break}case 114:{a=X(a+-2|0,152,7)|0;break}case 116:{a=X(a+-2|0,166,4)|0;break}case 119:switch(b[a+-2>>1]|0){case 101:{a=Z(a+-4|0,110)|0;break a}case 111:{a=X(a+-4|0,174,3)|0;break a}default:{a=0;break a}}default:a=0}while(0);return a|0}function F(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=512){t(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function G(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function H(){var a=0,d=0,e=0,f=0;d=c[71]|0;e=c[70]|0;a:while(1){a=e+2|0;if(e>>>0>=d>>>0){d=10;break}switch(b[a>>1]|0){case 96:{d=7;break a}case 36:{if((b[e+4>>1]|0)==123){d=6;break a}break}case 92:{a=e+4|0;break}default:{}}e=a}if((d|0)==6){a=e+4|0;c[70]=a;d=c[68]|0;f=b[396]|0;e=f&65535;c[d+(e<<3)>>2]=4;b[396]=f+1<<16>>16;c[d+(e<<3)+4>>2]=a}else if((d|0)==7){c[70]=a;e=c[68]|0;f=(b[396]|0)+-1<<16>>16;b[396]=f;if((c[e+((f&65535)<<3)>>2]|0)!=3)oa()}else if((d|0)==10){c[70]=a;oa()}return}function I(a){a=a|0;var d=0,e=0,f=0;e=c[70]|0;a:do{d=b[e>>1]|0;b:do if(d<<16>>16!=47)if(a)if(pa(d)|0)break;else break a;else if(da(d)|0)break;else break a;else switch(b[e+2>>1]|0){case 47:{$();break b}case 42:{P(a);break b}default:{d=47;break a}}while(0);f=c[70]|0;e=f+2|0;c[70]=e}while(f>>>0<(c[71]|0)>>>0);return d|0}function J(a){a=a|0;var d=0,e=0,f=0,g=0;g=c[71]|0;d=c[70]|0;while(1){f=d+2|0;if(d>>>0>=g>>>0){d=9;break}e=b[f>>1]|0;if(e<<16>>16==a<<16>>16){d=10;break}if(e<<16>>16==92){e=d+4|0;if((b[e>>1]|0)==13){d=d+6|0;d=(b[d>>1]|0)==10?d:e}else d=e}else if(ta(e)|0){d=9;break}else d=f}if((d|0)==9){c[70]=f;oa()}else if((d|0)==10)c[70]=f;return}function K(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[65]|0;c[65]=g+32;h=c[61]|0;c[((h|0)==0?228:h+28|0)>>2]=g;c[62]=h;c[61]=g;c[g+8>>2]=b;if(2==(f|0))b=e;else b=1==(f|0)?e+2|0:0;c[g+12>>2]=b;c[g>>2]=d;c[g+4>>2]=e;c[g+16>>2]=0;c[g+20>>2]=f;h=1==(f|0);a[g+24>>0]=h&1;c[g+28>>2]=0;if(h|2==(f|0))a[795]=1;return}function L(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[70]|0;f=b[e>>1]|0;h=(a|0)==(d|0);g=h?0:a;h=h?0:d;if(f<<16>>16==97){c[70]=e+4;e=I(1)|0;a=c[70]|0;if(qa(e)|0){J(e);d=(c[70]|0)+2|0;c[70]=d}else{aa(e)|0;d=c[70]|0}f=I(1)|0;e=c[70]|0}if((e|0)!=(a|0))W(a,d,g,h);return f|0}function M(){var a=0,d=0,e=0;e=c[71]|0;d=c[70]|0;a:while(1){a=d+2|0;if(d>>>0>=e>>>0){d=6;break}switch(b[a>>1]|0){case 13:case 10:{d=6;break a}case 93:{d=7;break a}case 92:{a=d+4|0;break}default:{}}d=a}if((d|0)==6){c[70]=a;oa();a=0}else if((d|0)==7){c[70]=a;a=93}return a|0}function N(){var a=0,d=0,e=0;a:while(1){a=c[70]|0;d=a+2|0;c[70]=d;if(a>>>0>=(c[71]|0)>>>0){e=7;break}switch(b[d>>1]|0){case 13:case 10:{e=7;break a}case 47:break a;case 91:{M()|0;break}case 92:{c[70]=a+4;break}default:{}}}if((e|0)==7)oa();return}function O(a){a=a|0;switch(b[a>>1]|0){case 62:{a=(b[a+-2>>1]|0)==61;break}case 41:case 59:{a=1;break}case 104:{a=X(a+-2|0,200,4)|0;break}case 121:{a=X(a+-2|0,208,6)|0;break}case 101:{a=X(a+-2|0,220,3)|0;break}default:a=0}return a|0}function P(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;g=(c[70]|0)+2|0;c[70]=g;e=c[71]|0;while(1){d=g+2|0;if(g>>>0>=e>>>0)break;f=b[d>>1]|0;if(!a?ta(f)|0:0)break;if(f<<16>>16==42?(b[g+4>>1]|0)==47:0){h=8;break}g=d}if((h|0)==8){c[70]=d;d=g+4|0}c[70]=d;return}function Q(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function R(a){a=a|0;var b=0,d=0,e=0;e=a+3&-4;d=Ca()|0;a=c[d>>2]|0;b=a+e|0;do if((e|0)<1|b>>>0>a>>>0){if(b>>>0>(s()|0)>>>0?(u(b|0)|0)==0:0)break;c[d>>2]=b;e=a;return e|0}while(0);c[(Ea()|0)>>2]=48;e=-1;return e|0}function S(a){a=a|0;a:do switch(a<<16>>16){case 38:case 37:case 33:{a=1;break}default:if((a&-8)<<16>>16==40|(a+-58&65535)<6)a=1;else{switch(a<<16>>16){case 91:case 93:case 94:{a=1;break a}default:{}}a=(a+-123&65535)<4}}while(0);return a|0}function T(a){a=a|0;a:do switch(a<<16>>16){case 38:case 37:case 33:break;default:if(!((a+-58&65535)<6|(a+-40&65535)<7&a<<16>>16!=41)){switch(a<<16>>16){case 91:case 94:break a;default:{}}return a<<16>>16!=125&(a+-123&65535)<4|0}}while(0);return 1}function U(a){a=a|0;var c=0;c=b[a>>1]|0;a:do if((c+-9&65535)>=5){switch(c<<16>>16){case 160:case 32:{c=1;break a}default:{}}if(S(c)|0)return c<<16>>16!=46|(ea(a)|0)|0;else c=0}else c=1;while(0);return c|0}function V(a){a=a|0;var d=0,e=0,f=0,g=0;e=v;v=v+16|0;f=e;c[f>>2]=0;c[64]=a;d=c[3]|0;g=d+(a<<1)|0;a=g+2|0;b[g>>1]=0;c[f>>2]=a;c[65]=a;c[57]=0;c[61]=0;c[59]=0;c[58]=0;c[63]=0;c[60]=0;v=e;return d|0}function W(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[65]|0;c[65]=g+20;h=c[63]|0;c[((h|0)==0?232:h+16|0)>>2]=g;c[63]=g;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=e;c[g+12>>2]=f;c[g+16>>2]=0;a[795]=1;return}function X(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+(0-d<<1)|0;f=e+2|0;a=c[3]|0;if(f>>>0>=a>>>0?(Q(f,b,d<<1)|0)==0:0)if((f|0)==(a|0))a=1;else a=U(e)|0;else a=0;return a|0}function Y(a){a=a|0;switch(b[a>>1]|0){case 107:{a=X(a+-2|0,134,4)|0;break}case 101:{if((b[a+-2>>1]|0)==117)a=X(a+-4|0,106,6)|0;else a=0;break}default:a=0}return a|0}function Z(a,d){a=a|0;d=d|0;var e=0;e=c[3]|0;if(e>>>0<=a>>>0?(b[a>>1]|0)==d<<16>>16:0)if((e|0)==(a|0))e=1;else e=_(b[a+-2>>1]|0)|0;else e=0;return e|0}function _(a){a=a|0;a:do if((a+-9&65535)<5)a=1;else{switch(a<<16>>16){case 32:case 160:{a=1;break a}default:{}}a=a<<16>>16!=46&(S(a)|0)}while(0);return a|0}function $(){var a=0,d=0,e=0;a=c[71]|0;e=c[70]|0;a:while(1){d=e+2|0;if(e>>>0>=a>>>0)break;switch(b[d>>1]|0){case 13:case 10:break a;default:e=d}}c[70]=d;return}function aa(a){a=a|0;while(1){if(pa(a)|0)break;if(S(a)|0)break;a=(c[70]|0)+2|0;c[70]=a;a=b[a>>1]|0;if(!(a<<16>>16)){a=0;break}}return a|0}function ba(){var a=0;a=c[(c[59]|0)+20>>2]|0;switch(a|0){case 1:{a=-1;break}case 2:{a=-2;break}default:a=a-(c[3]|0)>>1}return a|0}function ca(a){a=a|0;if(!(X(a,180,5)|0)?!(X(a,190,3)|0):0)a=X(a,196,2)|0;else a=1;return a|0}function da(a){a=a|0;switch(a<<16>>16){case 160:case 32:case 12:case 11:case 9:{a=1;break}default:a=0}return a|0}function ea(a){a=a|0;if((b[a>>1]|0)==46?(b[a+-2>>1]|0)==46:0)a=(b[a+-4>>1]|0)==46;else a=0;return a|0}function fa(a){a=a|0;if((c[3]|0)==(a|0))a=1;else a=U(a+-2|0)|0;return a|0}function ga(){var a=0;a=c[(c[60]|0)+12>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ha(){var a=0;a=c[(c[59]|0)+12>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ia(){var a=0;a=c[(c[60]|0)+8>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ja(){var a=0;a=c[(c[59]|0)+16>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ka(){var a=0;a=c[(c[59]|0)+4>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function la(){var a=0;a=c[59]|0;a=c[((a|0)==0?228:a+28|0)>>2]|0;c[59]=a;return (a|0)!=0|0}function ma(){var a=0;a=c[60]|0;a=c[((a|0)==0?232:a+16|0)>>2]|0;c[60]=a;return (a|0)!=0|0}function na(a){a=a|0;var b=0;b=v;v=v+a|0;v=v+15&-16;return b|0}function oa(){a[794]=1;c[66]=(c[70]|0)-(c[3]|0)>>1;c[70]=(c[71]|0)+2;return}function pa(a){a=a|0;return (a|128)<<16>>16==160|(a+-9&65535)<5|0}function qa(a){a=a|0;return a<<16>>16==39|a<<16>>16==34|0}function ra(){return (c[(c[59]|0)+8>>2]|0)-(c[3]|0)>>1|0}function sa(){return (c[(c[60]|0)+4>>2]|0)-(c[3]|0)>>1|0}function ta(a){a=a|0;return a<<16>>16==13|a<<16>>16==10|0}function ua(){return (c[c[59]>>2]|0)-(c[3]|0)>>1|0}function va(){return (c[c[60]>>2]|0)-(c[3]|0)>>1|0}function wa(){return d[(c[59]|0)+24>>0]|0|0}function xa(a){a=a|0;c[3]=a;return}function ya(){c[3]=g}function za(a){a=a|0;v=a}function Aa(){return (a[795]|0)!=0|0}function Ba(){return (a[796]|0)!=0|0}function Ca(){return 816}function Da(){return v|0}function Ea(){return 288}function Fa(){return c[66]|0} +function y(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,w=0,x=0;x=v;v=v+16|0;n=x;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[75]|0;d=m>>>a;if(d&3|0){e=(d&1^1)+a|0;f=340+(e<<1<<2)|0;b=f+8|0;a=c[b>>2]|0;g=a+8|0;d=c[g>>2]|0;if((d|0)==(f|0))c[75]=m&~(1<>2]=f;c[b>>2]=d}w=e<<3;c[a+4>>2]=w|3;w=a+w+4|0;c[w>>2]=c[w>>2]|1;w=g;v=x;return w|0}l=c[77]|0;if(k>>>0>l>>>0){if(d|0){i=2<>>12&16;d=d>>>i;a=d>>>5&8;d=d>>>a;g=d>>>2&4;d=d>>>g;b=d>>>1&2;d=d>>>b;e=d>>>1&1;e=(a|i|g|b|e)+(d>>>e)|0;d=340+(e<<1<<2)|0;b=d+8|0;g=c[b>>2]|0;i=g+8|0;a=c[i>>2]|0;if((a|0)==(d|0)){a=m&~(1<>2]=d;c[b>>2]=a;a=m}w=e<<3;h=w-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+w>>2]=h;if(l|0){e=c[80]|0;b=l>>>3;d=340+(b<<1<<2)|0;b=1<>2]|0}c[b>>2]=e;c[a+12>>2]=e;c[e+8>>2]=a;c[e+12>>2]=d}c[77]=h;c[80]=f;w=i;v=x;return w|0}g=c[76]|0;if(g){i=(g&0-g)+-1|0;f=i>>>12&16;i=i>>>f;e=i>>>5&8;i=i>>>e;h=i>>>2&4;i=i>>>h;d=i>>>1&2;i=i>>>d;j=i>>>1&1;j=c[604+((e|f|h|d|j)+(i>>>j)<<2)>>2]|0;i=(c[j+4>>2]&-8)-k|0;d=j;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}d=(c[a+4>>2]&-8)-k|0;h=d>>>0>>0;i=h?d:i;d=a;j=h?a:j}h=j+k|0;if(h>>>0>j>>>0){f=c[j+24>>2]|0;b=c[j+12>>2]|0;do if((b|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[j+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[j+28>>2]|0;a=604+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[76]=g&~(1<>2]|0)==(j|0)?w:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[j+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[j+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(i>>>0<16){w=i+k|0;c[j+4>>2]=w|3;w=j+w+4|0;c[w>>2]=c[w>>2]|1}else{c[j+4>>2]=k|3;c[h+4>>2]=i|1;c[h+i>>2]=i;if(l|0){e=c[80]|0;b=l>>>3;d=340+(b<<1<<2)|0;b=1<>2]|0}c[b>>2]=e;c[a+12>>2]=e;c[e+8>>2]=a;c[e+12>>2]=d}c[77]=i;c[80]=h}w=j+8|0;v=x;return w|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[76]|0;if(e){d=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;a=c[604+(j<<2)>>2]|0;a:do if(!a){f=0;a=0;q=61}else{f=0;h=k<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){g=(c[i+4>>2]&-8)-k|0;if(g>>>0>>0)if(!g){d=0;f=i;a=i;q=65;break a}else{d=g;a=i}q=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;f=(q|0)==0|(q|0)==(i|0)?f:q;if(!i){q=61;break}else h=h<<1}}while(0);if((q|0)==61){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>i;h=a>>>5&8;a=a>>>h;j=a>>>2&4;a=a>>>j;m=a>>>1&2;a=a>>>m;f=a>>>1&1;f=c[604+((h|i|j|m|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;g=a}else q=65}if((q|0)==65)while(1){m=(c[f+4>>2]&-8)-k|0;g=m>>>0>>0;d=g?m:d;g=g?f:a;a=c[f+16>>2]|0;if(!a)a=c[f+20>>2]|0;if(!a){i=d;break}else{f=a;a=g}}if(((g|0)!=0?i>>>0<((c[77]|0)-k|0)>>>0:0)?(l=g+k|0,l>>>0>g>>>0):0){h=c[g+24>>2]|0;b=c[g+12>>2]|0;do if((b|0)==(g|0)){a=g+20|0;b=c[a>>2]|0;if(!b){a=g+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{w=c[g+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(h){a=c[g+28>>2]|0;d=604+(a<<2)|0;if((g|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(g|0)?w:h+20|0)>>2]=b;if(!b)break}c[b+24>>2]=h;a=c[g+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[g+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(i>>>0<16){w=i+k|0;c[g+4>>2]=w|3;w=g+w+4|0;c[w>>2]=c[w>>2]|1}else{c[g+4>>2]=k|3;c[l+4>>2]=i|1;c[l+i>>2]=i;b=i>>>3;if(i>>>0<256){d=340+(b<<1<<2)|0;a=c[75]|0;b=1<>2]|0}c[b>>2]=l;c[a+12>>2]=l;c[l+8>>2]=a;c[l+12>>2]=d;break}b=i>>>8;if(b)if(i>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;d=14-(t|u|d)+(w<>>15)|0;d=i>>>(d+7|0)&1|d<<1}else d=0;b=604+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(i|0)){e=i<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(i|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;w=c[u>>2]|0;c[w+12>>2]=l;c[u>>2]=l;c[l+8>>2]=w;c[l+12>>2]=b;c[l+24>>2]=0}while(0);w=g+8|0;v=x;return w|0}else m=k}else m=k}else m=-1;while(0);d=c[77]|0;if(d>>>0>=m>>>0){a=d-m|0;b=c[80]|0;if(a>>>0>15){w=b+m|0;c[80]=w;c[77]=a;c[w+4>>2]=a|1;c[b+d>>2]=a;c[b+4>>2]=m|3}else{c[77]=0;c[80]=0;c[b+4>>2]=d|3;w=b+d+4|0;c[w>>2]=c[w>>2]|1}w=b+8|0;v=x;return w|0}h=c[78]|0;if(h>>>0>m>>>0){t=h-m|0;c[78]=t;w=c[81]|0;u=w+m|0;c[81]=u;c[u+4>>2]=t|1;c[w+4>>2]=m|3;w=w+8|0;v=x;return w|0}if(!(c[193]|0)){c[195]=4096;c[194]=4096;c[196]=-1;c[197]=-1;c[198]=0;c[186]=0;c[193]=n&-16^1431655768;a=4096}else a=c[195]|0;i=m+48|0;j=m+47|0;g=a+j|0;e=0-a|0;k=g&e;if(k>>>0<=m>>>0){w=0;v=x;return w|0}a=c[185]|0;if(a|0?(l=c[183]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){w=0;v=x;return w|0}d:do if(!(c[186]&4)){d=c[81]|0;e:do if(d){f=748;while(1){n=c[f>>2]|0;if(n>>>0<=d>>>0?(n+(c[f+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[f+8>>2]|0;if(!a){q=128;break e}else f=a}b=g-h&e;if(b>>>0<2147483647){a=R(b)|0;if((a|0)==((c[f>>2]|0)+(c[f+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=a;g=b;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=R(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[194]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[183]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[185]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=R(b)|0;if((a|0)==(d|0)){h=d;g=b;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=e;g=b;q=145;break d}a=c[195]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=e;g=b;q=145;break d}if((R(a)|0)==(-1|0)){R(d)|0;b=0;break}else{h=e;g=a+b|0;q=145;break d}}while(0);c[186]=c[186]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(r=R(k)|0,p=R(0)|0,t=p-r|0,s=t>>>0>(m+40|0)>>>0,!((r|0)==(-1|0)|s^1|r>>>0

>>0&((r|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=r;g=s?t:b;q=145}if((q|0)==145){b=(c[183]|0)+g|0;c[183]=b;if(b>>>0>(c[184]|0)>>>0)c[184]=b;j=c[81]|0;f:do if(j){e=748;while(1){b=c[e>>2]|0;a=c[e+4>>2]|0;if((h|0)==(b+a|0)){q=154;break}d=c[e+8>>2]|0;if(!d)break;else e=d}if(((q|0)==154?(u=e+4|0,(c[e+12>>2]&8|0)==0):0)?h>>>0>j>>>0&b>>>0<=j>>>0:0){c[u>>2]=a+g;w=(c[78]|0)+g|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=w-t|0;c[81]=u;c[78]=t;c[u+4>>2]=t|1;c[j+w+4>>2]=40;c[82]=c[197];break}if(h>>>0<(c[79]|0)>>>0)c[79]=h;d=h+g|0;a=748;while(1){if((c[a>>2]|0)==(d|0)){q=162;break}b=c[a+8>>2]|0;if(!b)break;else a=b}if((q|0)==162?(c[a+12>>2]&8|0)==0:0){c[a>>2]=h;l=a+4|0;c[l>>2]=(c[l>>2]|0)+g;l=h+8|0;l=h+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){w=(c[78]|0)+i|0;c[78]=w;c[81]=k;c[k+4>>2]=w|1}else{if((c[80]|0)==(b|0)){w=(c[77]|0)+i|0;c[77]=w;c[80]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[75]=c[75]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=604+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){w=g+16|0;c[((c[w>>2]|0)==(b|0)?w:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[76]=c[76]&~(1<>2]=g;e=b+16|0;d=c[e>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}d=c[e+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=340+(b<<1<<2)|0;a=c[75]|0;b=1<>2]|0}c[b>>2]=k;c[a+12>>2]=k;c[k+8>>2]=a;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;e=14-(t|u|e)+(w<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);a=604+(e<<2)|0;c[k+28>>2]=e;b=k+16|0;c[b+4>>2]=0;c[b>>2]=0;b=c[76]|0;d=1<>2]=k;c[k+24>>2]=a;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[a>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;w=c[u>>2]|0;c[w+12>>2]=k;c[u>>2]=k;c[k+8>>2]=w;c[k+12>>2]=b;c[k+24>>2]=0}while(0);w=l+8|0;v=x;return w|0}a=748;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=g+-40|0;t=h+8|0;t=(t&7|0)==0?0:0-t&7;u=h+t|0;t=d-t|0;c[81]=u;c[78]=t;c[u+4>>2]=t|1;c[h+d+4>>2]=40;c[82]=c[197];d=a+4|0;c[d>>2]=27;c[b>>2]=c[187];c[b+4>>2]=c[188];c[b+8>>2]=c[189];c[b+12>>2]=c[190];c[187]=h;c[188]=g;c[190]=0;c[189]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=340+(b<<1<<2)|0;a=c[75]|0;b=1<>2]|0}c[b>>2]=j;c[a+12>>2]=j;c[j+8>>2]=a;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;e=14-(t|u|e)+(w<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=604+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[76]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;w=c[u>>2]|0;c[w+12>>2]=j;c[u>>2]=j;c[j+8>>2]=w;c[j+12>>2]=b;c[j+24>>2]=0}}else{w=c[79]|0;if((w|0)==0|h>>>0>>0)c[79]=h;c[187]=h;c[188]=g;c[190]=0;c[84]=c[193];c[83]=-1;c[88]=340;c[87]=340;c[90]=348;c[89]=348;c[92]=356;c[91]=356;c[94]=364;c[93]=364;c[96]=372;c[95]=372;c[98]=380;c[97]=380;c[100]=388;c[99]=388;c[102]=396;c[101]=396;c[104]=404;c[103]=404;c[106]=412;c[105]=412;c[108]=420;c[107]=420;c[110]=428;c[109]=428;c[112]=436;c[111]=436;c[114]=444;c[113]=444;c[116]=452;c[115]=452;c[118]=460;c[117]=460;c[120]=468;c[119]=468;c[122]=476;c[121]=476;c[124]=484;c[123]=484;c[126]=492;c[125]=492;c[128]=500;c[127]=500;c[130]=508;c[129]=508;c[132]=516;c[131]=516;c[134]=524;c[133]=524;c[136]=532;c[135]=532;c[138]=540;c[137]=540;c[140]=548;c[139]=548;c[142]=556;c[141]=556;c[144]=564;c[143]=564;c[146]=572;c[145]=572;c[148]=580;c[147]=580;c[150]=588;c[149]=588;w=g+-40|0;t=h+8|0;t=(t&7|0)==0?0:0-t&7;u=h+t|0;t=w-t|0;c[81]=u;c[78]=t;c[u+4>>2]=t|1;c[h+w+4>>2]=40;c[82]=c[197]}while(0);b=c[78]|0;if(b>>>0>m>>>0){t=b-m|0;c[78]=t;w=c[81]|0;u=w+m|0;c[81]=u;c[u+4>>2]=t|1;c[w+4>>2]=m|3;w=w+8|0;v=x;return w|0}}c[(Fa()|0)>>2]=48;w=0;v=x;return w|0}function z(){var d=0,f=0,g=0,h=0,i=0,j=0;j=v;v=v+10240|0;a[804]=1;a[803]=0;b[399]=0;b[400]=0;c[69]=c[2];a[805]=0;c[68]=0;a[802]=0;c[70]=j+2048;c[71]=j;a[806]=0;d=(c[3]|0)+-2|0;c[72]=d;f=d+(c[66]<<1)|0;c[73]=f;a:while(1){g=d+2|0;c[72]=g;if(d>>>0>=f>>>0){i=18;break}b:do switch(b[g>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if((((b[400]|0)==0?fa(g)|0:0)?(Q(d+4|0,16,10)|0)==0:0)?(B(),(a[804]|0)==0):0){i=9;break a}else i=17;break}case 105:{if(fa(g)|0?(Q(d+4|0,26,10)|0)==0:0){C();i=17}else i=17;break}case 59:{i=17;break}case 47:switch(b[d+4>>1]|0){case 47:{$();break b}case 42:{P(1);break b}default:{i=16;break a}}default:{i=16;break a}}while(0);if((i|0)==17){i=0;c[69]=c[72]}d=c[72]|0;f=c[73]|0}if((i|0)==9){d=c[72]|0;c[69]=d;i=19}else if((i|0)==16){a[804]=0;c[72]=d;i=19}else if((i|0)==18)if(!(a[802]|0)){d=g;i=19}else d=0;do if((i|0)==19){c:while(1){f=d+2|0;c[72]=f;if(d>>>0>=(c[73]|0)>>>0){i=86;break}d:do switch(b[f>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(((b[400]|0)==0?fa(f)|0:0)?(Q(d+4|0,16,10)|0)==0:0){B();i=85}else i=85;break}case 105:{if(fa(f)|0?(Q(d+4|0,26,10)|0)==0:0){C();i=85}else i=85;break}case 99:{if((fa(f)|0?(Q(d+4|0,36,8)|0)==0:0)?pa(b[d+12>>1]|0)|0:0){a[806]=1;i=85}else i=85;break}case 40:{h=c[70]|0;f=b[400]|0;i=f&65535;c[h+(i<<3)>>2]=1;g=c[69]|0;b[400]=f+1<<16>>16;c[h+(i<<3)+4>>2]=g;i=85;break}case 41:{f=b[400]|0;if(!(f<<16>>16)){i=36;break c}i=f+-1<<16>>16;b[400]=i;h=b[399]|0;f=h&65535;if(h<<16>>16!=0?(c[(c[70]|0)+((i&65535)<<3)>>2]|0)==5:0){f=c[(c[71]|0)+(f+-1<<2)>>2]|0;g=f+4|0;if(!(c[g>>2]|0))c[g>>2]=(c[69]|0)+2;c[f+12>>2]=d+4;b[399]=h+-1<<16>>16;i=85}else i=85;break}case 123:{i=c[69]|0;h=c[63]|0;d=i;do if((b[i>>1]|0)==41&(h|0)!=0?(c[h+4>>2]|0)==(i|0):0){f=c[64]|0;c[63]=f;if(!f){c[59]=0;break}else{c[f+32>>2]=0;break}}while(0);h=c[70]|0;g=b[400]|0;i=g&65535;c[h+(i<<3)>>2]=(a[806]|0)==0?2:6;b[400]=g+1<<16>>16;c[h+(i<<3)+4>>2]=d;a[806]=0;i=85;break}case 125:{d=b[400]|0;if(!(d<<16>>16)){i=49;break c}h=c[70]|0;i=d+-1<<16>>16;b[400]=i;if((c[h+((i&65535)<<3)>>2]|0)==4){H();i=85}else i=85;break}case 39:{K(39);i=85;break}case 34:{K(34);i=85;break}case 47:switch(b[d+4>>1]|0){case 47:{$();break d}case 42:{P(1);break d}default:{d=c[69]|0;f=b[d>>1]|0;e:do if(!(T(f)|0)){switch(f<<16>>16){case 41:if(ca(c[(c[70]|0)+(e[400]<<3)+4>>2]|0)|0)break e;else{i=66;break e}case 125:break;default:{i=66;break e}}g=c[70]|0;h=e[400]|0;if(!(O(c[g+(h<<3)+4>>2]|0)|0)?(c[g+(h<<3)>>2]|0)!=6:0)i=66}else switch(f<<16>>16){case 46:if(((b[d+-2>>1]|0)+-48&65535)<10){i=66;break e}else break e;case 43:if((b[d+-2>>1]|0)==43){i=66;break e}else break e;case 45:if((b[d+-2>>1]|0)==45){i=66;break e}else break e;default:break e}while(0);f:do if((i|0)==66?(0,!(E(d)|0)):0){switch(f<<16>>16){case 0:break f;case 47:{if(a[805]|0)break f;break}default:{}}i=c[65]|0;if((i|0?d>>>0>=(c[i>>2]|0)>>>0:0)?d>>>0<=(c[i+4>>2]|0)>>>0:0){N();a[805]=0;i=85;break d}g=c[3]|0;do{if(d>>>0<=g>>>0)break;d=d+-2|0;c[69]=d;f=b[d>>1]|0}while(!(_(f)|0));if(da(f)|0){do{if(d>>>0<=g>>>0)break;d=d+-2|0;c[69]=d}while(da(b[d>>1]|0)|0);if(Y(d)|0){N();a[805]=0;i=85;break d}}a[805]=1;i=85;break d}while(0);N();a[805]=0;i=85;break d}}case 96:{h=c[70]|0;g=b[400]|0;i=g&65535;c[h+(i<<3)+4>>2]=c[69];b[400]=g+1<<16>>16;c[h+(i<<3)>>2]=3;H();i=85;break}default:i=85}while(0);if((i|0)==85){i=0;c[69]=c[72]}d=c[72]|0}if((i|0)==36){oa();d=0;break}else if((i|0)==49){oa();d=0;break}else if((i|0)==86){d=(a[802]|0)==0?(b[399]|b[400])<<16>>16==0:0;break}}while(0);v=j;return d|0}function A(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!a)return;d=a+-8|0;e=c[79]|0;a=c[a+-4>>2]|0;b=a&-8;k=d+b|0;do if(!(a&1)){f=c[d>>2]|0;if(!(a&3))return;g=d+(0-f)|0;h=f+b|0;if(g>>>0>>0)return;if((c[80]|0)==(g|0)){b=k+4|0;a=c[b>>2]|0;if((a&3|0)!=3){i=g;j=g;b=h;break}c[77]=h;c[b>>2]=a&-2;c[g+4>>2]=h|1;c[g+h>>2]=h;return}d=f>>>3;if(f>>>0<256){a=c[g+8>>2]|0;b=c[g+12>>2]|0;if((b|0)==(a|0)){c[75]=c[75]&~(1<>2]=b;c[b+8>>2]=a;i=g;j=g;b=h;break}}f=c[g+24>>2]|0;a=c[g+12>>2]|0;do if((a|0)==(g|0)){d=g+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[g+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(f){a=c[g+28>>2]|0;b=604+(a<<2)|0;if((c[b>>2]|0)==(g|0)){c[b>>2]=d;if(!d){c[76]=c[76]&~(1<>2]|0)==(g|0)?j:f+20|0)>>2]=d;if(!d){i=g;j=g;b=h;break}}c[d+24>>2]=f;b=g+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}a=c[b+4>>2]|0;if(a){c[d+20>>2]=a;c[a+24>>2]=d;i=g;j=g;b=h}else{i=g;j=g;b=h}}else{i=g;j=g;b=h}}else{i=d;j=d}while(0);if(i>>>0>=k>>>0)return;a=k+4|0;d=c[a>>2]|0;if(!(d&1))return;if(!(d&2)){if((c[81]|0)==(k|0)){k=(c[78]|0)+b|0;c[78]=k;c[81]=j;c[j+4>>2]=k|1;if((j|0)!=(c[80]|0))return;c[80]=0;c[77]=0;return}if((c[80]|0)==(k|0)){k=(c[77]|0)+b|0;c[77]=k;c[80]=i;c[j+4>>2]=k|1;c[i+k>>2]=k;return}f=(d&-8)+b|0;e=d>>>3;do if(d>>>0<256){b=c[k+8>>2]|0;a=c[k+12>>2]|0;if((a|0)==(b|0)){c[75]=c[75]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[k+24>>2]|0;a=c[k+12>>2]|0;do if((a|0)==(k|0)){d=k+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[k+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[k+28>>2]|0;b=604+(a<<2)|0;if((c[b>>2]|0)==(k|0)){c[b>>2]=d;if(!d){c[76]=c[76]&~(1<>2]|0)==(k|0)?h:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=k+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}a=c[b+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[j+4>>2]=f|1;c[i+f>>2]=f;if((j|0)==(c[80]|0)){c[77]=f;return}}else{c[a>>2]=d&-2;c[j+4>>2]=b|1;c[i+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=340+(a<<1<<2)|0;b=c[75]|0;a=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{i=(a+1048320|0)>>>16&8;k=a<>>16&4;k=k<>>16&2;e=14-(h|i|e)+(k<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=604+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[j+16>>2]=0;a=c[76]|0;d=1<>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j}else{a=c[b>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=j;c[j+24>>2]=a;c[j+12>>2]=j;c[j+8>>2]=j;break a}while(0);i=a+8|0;k=c[i>>2]|0;c[k+12>>2]=j;c[i>>2]=j;c[j+8>>2]=k;c[j+12>>2]=a;c[j+24>>2]=0}while(0);k=(c[83]|0)+-1|0;c[83]=k;if(k|0)return;a=756;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[83]=-1;return}function B(){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;k=c[72]|0;l=c[65]|0;q=k+12|0;c[72]=q;f=I(1)|0;d=c[72]|0;if(!((d|0)==(q|0)?!(S(f)|0):0))p=3;a:do if((p|0)==3){b:do switch(f<<16>>16){case 123:{c[72]=d+2;d=I(1)|0;e=c[72]|0;while(1){if(qa(d)|0){K(d);d=(c[72]|0)+2|0;c[72]=d}else{aa(d)|0;d=c[72]|0}I(1)|0;d=L(e,d)|0;if(d<<16>>16==44){c[72]=(c[72]|0)+2;d=I(1)|0}if(d<<16>>16==125){p=15;break}q=e;e=c[72]|0;if((e|0)==(q|0)){p=12;break}if(e>>>0>(c[73]|0)>>>0){p=14;break}}if((p|0)==12){oa();break a}else if((p|0)==14){oa();break a}else if((p|0)==15){a[803]=1;c[72]=(c[72]|0)+2;break b}break}case 42:{c[72]=d+2;I(1)|0;q=c[72]|0;L(q,q)|0;break}default:{a[804]=0;switch(f<<16>>16){case 100:{k=d+14|0;c[72]=k;switch((I(1)|0)<<16>>16){case 97:{e=c[72]|0;if((Q(e+2|0,66,8)|0)==0?(h=e+10|0,da(b[h>>1]|0)|0):0){c[72]=h;I(0)|0;p=22}break}case 102:{p=22;break}case 99:{e=c[72]|0;if(((Q(e+2|0,36,8)|0)==0?(g=e+10|0,q=b[g>>1]|0,pa(q)|0|q<<16>>16==123):0)?(c[72]=g,i=I(1)|0,i<<16>>16!=123):0){o=i;p=31}break}default:{}}c:do if((p|0)==22?(j=c[72]|0,(Q(j+2|0,74,14)|0)==0):0){f=j+16|0;e=b[f>>1]|0;if(!(pa(e)|0))switch(e<<16>>16){case 40:case 42:break;default:break c}c[72]=f;e=I(1)|0;if(e<<16>>16==42){c[72]=(c[72]|0)+2;e=I(1)|0}if(e<<16>>16!=40){o=e;p=31}}while(0);if((p|0)==31?(m=c[72]|0,aa(o)|0,n=c[72]|0,n>>>0>m>>>0):0){W(d,k,m,n);c[72]=(c[72]|0)+-2;break a}W(d,k,0,0);c[72]=d+12;break a}case 97:{c[72]=d+10;I(0)|0;d=c[72]|0;p=35;break}case 102:{p=35;break}case 99:{if((Q(d+2|0,36,8)|0)==0?(e=d+10|0,_(b[e>>1]|0)|0):0){c[72]=e;q=I(1)|0;p=c[72]|0;aa(q)|0;q=c[72]|0;W(p,q,p,q);c[72]=(c[72]|0)+-2;break a}d=d+4|0;c[72]=d;break}case 108:case 118:break;default:break a}if((p|0)==35){c[72]=d+16;d=I(1)|0;if(d<<16>>16==42){c[72]=(c[72]|0)+2;d=I(1)|0}p=c[72]|0;aa(d)|0;q=c[72]|0;W(p,q,p,q);c[72]=(c[72]|0)+-2;break a}c[72]=d+6;a[804]=0;f=I(1)|0;d=c[72]|0;f=(aa(f)|0|32)<<16>>16==123;g=c[72]|0;if(f){c[72]=g+2;q=I(1)|0;d=c[72]|0;aa(q)|0}d:while(1){e=c[72]|0;if((e|0)==(d|0))break;W(d,e,d,e);e=I(1)|0;if(f)switch(e<<16>>16){case 93:case 125:break a;default:{}}d=c[72]|0;if(e<<16>>16!=44){p=51;break}c[72]=d+2;e=I(1)|0;d=c[72]|0;switch(e<<16>>16){case 91:case 123:{p=51;break d}default:{}}aa(e)|0}if((p|0)==51)c[72]=d+-2;if(!f)break a;c[72]=g+-2;break a}}while(0);q=(I(1)|0)<<16>>16==102;d=c[72]|0;if(q?(Q(d+2|0,60,6)|0)==0:0){c[72]=d+8;D(k,I(1)|0,0);d=(l|0)==0?240:l+16|0;while(1){d=c[d>>2]|0;if(!d)break a;c[d+12>>2]=0;c[d+8>>2]=0;d=d+16|0}}c[72]=d+-2}while(0);return}function C(){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=c[72]|0;f=h+12|0;c[72]=f;g=I(1)|0;e=c[72]|0;a:do if(g<<16>>16!=46)if(g<<16>>16==115&e>>>0>f>>>0)if((Q(e+2|0,50,10)|0)==0?(d=e+12|0,pa(b[d>>1]|0)|0):0)i=14;else{e=6;f=0;i=46}else{d=g;f=0;i=15}else{c[72]=e+2;switch((I(1)|0)<<16>>16){case 109:{d=c[72]|0;if(Q(d+2|0,44,6)|0)break a;e=c[69]|0;if(!(ea(e)|0)?(b[e>>1]|0)==46:0)break a;J(h,h,d+8|0,2);break a}case 115:{d=c[72]|0;if(Q(d+2|0,50,10)|0)break a;e=c[69]|0;if(!(ea(e)|0)?(b[e>>1]|0)==46:0)break a;d=d+12|0;i=14;break a}default:break a}}while(0);if((i|0)==14){c[72]=d;d=I(1)|0;f=1;i=15}b:do if((i|0)==15)switch(d<<16>>16){case 40:{e=c[70]|0;j=b[400]|0;g=j&65535;c[e+(g<<3)>>2]=5;d=c[72]|0;b[400]=j+1<<16>>16;c[e+(g<<3)+4>>2]=d;if((b[c[69]>>1]|0)==46)break b;c[72]=d+2;e=I(1)|0;J(h,c[72]|0,0,d);if(f){d=c[63]|0;c[d+28>>2]=5}else d=c[63]|0;h=c[71]|0;j=b[399]|0;b[399]=j+1<<16>>16;c[h+((j&65535)<<2)>>2]=d;switch(e<<16>>16){case 39:{K(39);break}case 34:{K(34);break}default:{c[72]=(c[72]|0)+-2;break b}}d=(c[72]|0)+2|0;c[72]=d;switch((I(1)|0)<<16>>16){case 44:{c[72]=(c[72]|0)+2;I(1)|0;h=c[63]|0;c[h+4>>2]=d;j=c[72]|0;c[h+16>>2]=j;a[h+24>>0]=1;c[72]=j+-2;break b}case 41:{b[400]=(b[400]|0)+-1<<16>>16;j=c[63]|0;c[j+4>>2]=d;c[j+12>>2]=(c[72]|0)+2;a[j+24>>0]=1;b[399]=(b[399]|0)+-1<<16>>16;break b}default:{c[72]=(c[72]|0)+-2;break b}}}case 123:{if(f){e=12;f=1;i=46;break b}d=c[72]|0;if(b[400]|0){c[72]=d+-2;break b}while(1){if(d>>>0>=(c[73]|0)>>>0)break;d=I(1)|0;if(!(qa(d)|0)){if(d<<16>>16==125){i=36;break}}else K(d);d=(c[72]|0)+2|0;c[72]=d}if((i|0)==36)c[72]=(c[72]|0)+2;j=(I(1)|0)<<16>>16==102;d=c[72]|0;if(j?Q(d+2|0,60,6)|0:0){oa();break b}c[72]=d+8;d=I(1)|0;if(qa(d)|0){D(h,d,0);break b}else{oa();break b}}default:{if(f){e=12;f=1;i=46;break b}switch(d<<16>>16){case 42:case 39:case 34:{f=0;i=48;break b}default:{e=6;f=0;i=46;break b}}}}while(0);if((i|0)==46){d=c[72]|0;if((d|0)==(h+(e<<1)|0))c[72]=d+-2;else i=48}do if((i|0)==48){if(b[400]|0){c[72]=(c[72]|0)+-2;break}d=c[73]|0;e=c[72]|0;while(1){if(e>>>0>=d>>>0){i=55;break}g=b[e>>1]|0;if(qa(g)|0){i=53;break}j=e+2|0;c[72]=j;e=j}if((i|0)==53){D(h,g,f);break}else if((i|0)==55){oa();break}}while(0);return}function D(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;f=(c[72]|0)+2|0;switch(d<<16>>16){case 39:{K(39);g=5;break}case 34:{K(34);g=5;break}default:oa()}do if((g|0)==5){J(a,f,c[72]|0,1);if(e)c[(c[63]|0)+28>>2]=4;c[72]=(c[72]|0)+2;d=I(0)|0;e=d<<16>>16==97;if(e){f=c[72]|0;if(Q(f+2|0,88,10)|0)g=13}else{f=c[72]|0;if(!(((d<<16>>16==119?(b[f+2>>1]|0)==105:0)?(b[f+4>>1]|0)==116:0)?(b[f+6>>1]|0)==104:0))g=13}if((g|0)==13){c[72]=f+-2;break}c[72]=f+((e?6:4)<<1);if((I(1)|0)<<16>>16!=123){c[72]=f;break}e=c[72]|0;d=e;a:while(1){c[72]=d+2;d=I(1)|0;switch(d<<16>>16){case 39:{K(39);c[72]=(c[72]|0)+2;d=I(1)|0;break}case 34:{K(34);c[72]=(c[72]|0)+2;d=I(1)|0;break}default:d=aa(d)|0}if(d<<16>>16!=58){g=22;break}c[72]=(c[72]|0)+2;switch((I(1)|0)<<16>>16){case 39:{K(39);break}case 34:{K(34);break}default:{g=26;break a}}c[72]=(c[72]|0)+2;switch((I(1)|0)<<16>>16){case 125:{g=31;break a}case 44:break;default:{g=30;break a}}c[72]=(c[72]|0)+2;if((I(1)|0)<<16>>16==125){g=31;break}d=c[72]|0}if((g|0)==22){c[72]=f;break}else if((g|0)==26){c[72]=f;break}else if((g|0)==30){c[72]=f;break}else if((g|0)==31){g=c[63]|0;c[g+16>>2]=e;c[g+12>>2]=(c[72]|0)+2;break}}while(0);return}function E(a){a=a|0;a:do switch(b[a>>1]|0){case 100:switch(b[a+-2>>1]|0){case 105:{a=X(a+-4|0,98,2)|0;break a}case 108:{a=X(a+-4|0,102,3)|0;break a}default:{a=0;break a}}case 101:switch(b[a+-2>>1]|0){case 115:switch(b[a+-4>>1]|0){case 108:{a=Z(a+-6|0,101)|0;break a}case 97:{a=Z(a+-6|0,99)|0;break a}default:{a=0;break a}}case 116:{a=X(a+-4|0,108,4)|0;break a}case 117:{a=X(a+-4|0,116,6)|0;break a}default:{a=0;break a}}case 102:{if((b[a+-2>>1]|0)==111?(b[a+-4>>1]|0)==101:0)switch(b[a+-6>>1]|0){case 99:{a=X(a+-8|0,128,6)|0;break a}case 112:{a=X(a+-8|0,140,2)|0;break a}default:{a=0;break a}}else a=0;break}case 107:{a=X(a+-2|0,144,4)|0;break}case 110:{a=a+-2|0;if(Z(a,105)|0)a=1;else a=X(a,152,5)|0;break}case 111:{a=Z(a+-2|0,100)|0;break}case 114:{a=X(a+-2|0,162,7)|0;break}case 116:{a=X(a+-2|0,176,4)|0;break}case 119:switch(b[a+-2>>1]|0){case 101:{a=Z(a+-4|0,110)|0;break a}case 111:{a=X(a+-4|0,184,3)|0;break a}default:{a=0;break a}}default:a=0}while(0);return a|0}function F(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=512){t(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function G(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function H(){var a=0,d=0,e=0,f=0;d=c[73]|0;e=c[72]|0;a:while(1){a=e+2|0;if(e>>>0>=d>>>0){d=10;break}switch(b[a>>1]|0){case 96:{d=7;break a}case 36:{if((b[e+4>>1]|0)==123){d=6;break a}break}case 92:{a=e+4|0;break}default:{}}e=a}if((d|0)==6){a=e+4|0;c[72]=a;d=c[70]|0;f=b[400]|0;e=f&65535;c[d+(e<<3)>>2]=4;b[400]=f+1<<16>>16;c[d+(e<<3)+4>>2]=a}else if((d|0)==7){c[72]=a;e=c[70]|0;f=(b[400]|0)+-1<<16>>16;b[400]=f;if((c[e+((f&65535)<<3)>>2]|0)!=3)oa()}else if((d|0)==10){c[72]=a;oa()}return}function I(a){a=a|0;var d=0,e=0,f=0;e=c[72]|0;a:do{d=b[e>>1]|0;b:do if(d<<16>>16!=47)if(a)if(pa(d)|0)break;else break a;else if(da(d)|0)break;else break a;else switch(b[e+2>>1]|0){case 47:{$();break b}case 42:{P(a);break b}default:{d=47;break a}}while(0);f=c[72]|0;e=f+2|0;c[72]=e}while(f>>>0<(c[73]|0)>>>0);return d|0}function J(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[67]|0;c[67]=h+36;g=c[63]|0;c[((g|0)==0?236:g+32|0)>>2]=h;c[64]=g;c[63]=h;c[h+8>>2]=b;if(2==(f|0)){b=3;g=e}else{g=1==(f|0);b=g?2:1;g=g?e+2|0:0}c[h+12>>2]=g;c[h+28>>2]=b;c[h>>2]=d;c[h+4>>2]=e;c[h+16>>2]=0;c[h+20>>2]=f;d=1==(f|0);a[h+24>>0]=d&1;c[h+32>>2]=0;if(d|2==(f|0))a[803]=1;return}function K(a){a=a|0;var d=0,e=0,f=0,g=0;g=c[73]|0;d=c[72]|0;while(1){f=d+2|0;if(d>>>0>=g>>>0){d=9;break}e=b[f>>1]|0;if(e<<16>>16==a<<16>>16){d=10;break}if(e<<16>>16==92){e=d+4|0;if((b[e>>1]|0)==13){d=d+6|0;d=(b[d>>1]|0)==10?d:e}else d=e}else if(ta(e)|0){d=9;break}else d=f}if((d|0)==9){c[72]=f;oa()}else if((d|0)==10)c[72]=f;return}function L(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[72]|0;f=b[e>>1]|0;h=(a|0)==(d|0);g=h?0:a;h=h?0:d;if(f<<16>>16==97){c[72]=e+4;e=I(1)|0;a=c[72]|0;if(qa(e)|0){K(e);d=(c[72]|0)+2|0;c[72]=d}else{aa(e)|0;d=c[72]|0}f=I(1)|0;e=c[72]|0}if((e|0)!=(a|0))W(a,d,g,h);return f|0}function M(){var a=0,d=0,e=0;e=c[73]|0;d=c[72]|0;a:while(1){a=d+2|0;if(d>>>0>=e>>>0){d=6;break}switch(b[a>>1]|0){case 13:case 10:{d=6;break a}case 93:{d=7;break a}case 92:{a=d+4|0;break}default:{}}d=a}if((d|0)==6){c[72]=a;oa();a=0}else if((d|0)==7){c[72]=a;a=93}return a|0}function N(){var a=0,d=0,e=0;a:while(1){a=c[72]|0;d=a+2|0;c[72]=d;if(a>>>0>=(c[73]|0)>>>0){e=7;break}switch(b[d>>1]|0){case 13:case 10:{e=7;break a}case 47:break a;case 91:{M()|0;break}case 92:{c[72]=a+4;break}default:{}}}if((e|0)==7)oa();return}function O(a){a=a|0;switch(b[a>>1]|0){case 62:{a=(b[a+-2>>1]|0)==61;break}case 41:case 59:{a=1;break}case 104:{a=X(a+-2|0,210,4)|0;break}case 121:{a=X(a+-2|0,218,6)|0;break}case 101:{a=X(a+-2|0,230,3)|0;break}default:a=0}return a|0}function P(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;g=(c[72]|0)+2|0;c[72]=g;e=c[73]|0;while(1){d=g+2|0;if(g>>>0>=e>>>0)break;f=b[d>>1]|0;if(!a?ta(f)|0:0)break;if(f<<16>>16==42?(b[g+4>>1]|0)==47:0){h=8;break}g=d}if((h|0)==8){c[72]=d;d=g+4|0}c[72]=d;return}function Q(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function R(a){a=a|0;var b=0,d=0,e=0;e=a+3&-4;d=Da()|0;a=c[d>>2]|0;b=a+e|0;do if((e|0)<1|b>>>0>a>>>0){if(b>>>0>(s()|0)>>>0?(u(b|0)|0)==0:0)break;c[d>>2]=b;e=a;return e|0}while(0);c[(Fa()|0)>>2]=48;e=-1;return e|0}function S(a){a=a|0;a:do switch(a<<16>>16){case 38:case 37:case 33:{a=1;break}default:if((a&-8)<<16>>16==40|(a+-58&65535)<6)a=1;else{switch(a<<16>>16){case 91:case 93:case 94:{a=1;break a}default:{}}a=(a+-123&65535)<4}}while(0);return a|0}function T(a){a=a|0;a:do switch(a<<16>>16){case 38:case 37:case 33:break;default:if(!((a+-58&65535)<6|(a+-40&65535)<7&a<<16>>16!=41)){switch(a<<16>>16){case 91:case 94:break a;default:{}}return a<<16>>16!=125&(a+-123&65535)<4|0}}while(0);return 1}function U(a){a=a|0;var c=0;c=b[a>>1]|0;a:do if((c+-9&65535)>=5){switch(c<<16>>16){case 160:case 32:{c=1;break a}default:{}}if(S(c)|0)return c<<16>>16!=46|(ea(a)|0)|0;else c=0}else c=1;while(0);return c|0}function V(a){a=a|0;var d=0,e=0,f=0,g=0;e=v;v=v+16|0;f=e;c[f>>2]=0;c[66]=a;d=c[3]|0;g=d+(a<<1)|0;a=g+2|0;b[g>>1]=0;c[f>>2]=a;c[67]=a;c[59]=0;c[63]=0;c[61]=0;c[60]=0;c[65]=0;c[62]=0;v=e;return d|0}function W(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[67]|0;c[67]=g+20;h=c[65]|0;c[((h|0)==0?240:h+16|0)>>2]=g;c[65]=g;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=e;c[g+12>>2]=f;c[g+16>>2]=0;a[803]=1;return}function X(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+(0-d<<1)|0;f=e+2|0;a=c[3]|0;if(f>>>0>=a>>>0?(Q(f,b,d<<1)|0)==0:0)if((f|0)==(a|0))a=1;else a=U(e)|0;else a=0;return a|0}function Y(a){a=a|0;switch(b[a>>1]|0){case 107:{a=X(a+-2|0,144,4)|0;break}case 101:{if((b[a+-2>>1]|0)==117)a=X(a+-4|0,116,6)|0;else a=0;break}default:a=0}return a|0}function Z(a,d){a=a|0;d=d|0;var e=0;e=c[3]|0;if(e>>>0<=a>>>0?(b[a>>1]|0)==d<<16>>16:0)if((e|0)==(a|0))e=1;else e=_(b[a+-2>>1]|0)|0;else e=0;return e|0}function _(a){a=a|0;a:do if((a+-9&65535)<5)a=1;else{switch(a<<16>>16){case 32:case 160:{a=1;break a}default:{}}a=a<<16>>16!=46&(S(a)|0)}while(0);return a|0}function $(){var a=0,d=0,e=0;a=c[73]|0;e=c[72]|0;a:while(1){d=e+2|0;if(e>>>0>=a>>>0)break;switch(b[d>>1]|0){case 13:case 10:break a;default:e=d}}c[72]=d;return}function aa(a){a=a|0;while(1){if(pa(a)|0)break;if(S(a)|0)break;a=(c[72]|0)+2|0;c[72]=a;a=b[a>>1]|0;if(!(a<<16>>16)){a=0;break}}return a|0}function ba(){var a=0;a=c[(c[61]|0)+20>>2]|0;switch(a|0){case 1:{a=-1;break}case 2:{a=-2;break}default:a=a-(c[3]|0)>>1}return a|0}function ca(a){a=a|0;if(!(X(a,190,5)|0)?!(X(a,200,3)|0):0)a=X(a,206,2)|0;else a=1;return a|0}function da(a){a=a|0;switch(a<<16>>16){case 160:case 32:case 12:case 11:case 9:{a=1;break}default:a=0}return a|0}function ea(a){a=a|0;if((b[a>>1]|0)==46?(b[a+-2>>1]|0)==46:0)a=(b[a+-4>>1]|0)==46;else a=0;return a|0}function fa(a){a=a|0;if((c[3]|0)==(a|0))a=1;else a=U(a+-2|0)|0;return a|0}function ga(){var a=0;a=c[(c[62]|0)+12>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ha(){var a=0;a=c[(c[61]|0)+12>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ia(){var a=0;a=c[(c[62]|0)+8>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ja(){var a=0;a=c[(c[61]|0)+16>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function ka(){var a=0;a=c[(c[61]|0)+4>>2]|0;if(!a)a=-1;else a=a-(c[3]|0)>>1;return a|0}function la(){var a=0;a=c[61]|0;a=c[((a|0)==0?236:a+32|0)>>2]|0;c[61]=a;return (a|0)!=0|0}function ma(){var a=0;a=c[62]|0;a=c[((a|0)==0?240:a+16|0)>>2]|0;c[62]=a;return (a|0)!=0|0}function na(a){a=a|0;var b=0;b=v;v=v+a|0;v=v+15&-16;return b|0}function oa(){a[802]=1;c[68]=(c[72]|0)-(c[3]|0)>>1;c[72]=(c[73]|0)+2;return}function pa(a){a=a|0;return (a|128)<<16>>16==160|(a+-9&65535)<5|0}function qa(a){a=a|0;return a<<16>>16==39|a<<16>>16==34|0}function ra(){return (c[(c[61]|0)+8>>2]|0)-(c[3]|0)>>1|0}function sa(){return (c[(c[62]|0)+4>>2]|0)-(c[3]|0)>>1|0}function ta(a){a=a|0;return a<<16>>16==13|a<<16>>16==10|0}function ua(){return (c[c[61]>>2]|0)-(c[3]|0)>>1|0}function va(){return (c[c[62]>>2]|0)-(c[3]|0)>>1|0}function wa(){return d[(c[61]|0)+24>>0]|0|0}function xa(a){a=a|0;c[3]=a;return}function ya(){return c[(c[61]|0)+28>>2]|0}function za(){c[3]=g}function Aa(a){a=a|0;v=a}function Ba(){return (a[803]|0)!=0|0}function Ca(){return (a[804]|0)!=0|0}function Da(){return 832}function Ea(){return v|0}function Fa(){return 296}function Ga(){return c[68]|0} // EMSCRIPTEN_END_FUNCS -return{___errno_location:Ea,__apply_relocations:ya,_ai:ja,_e:Fa,_ee:sa,_ele:ga,_els:ia,_emscripten_get_sbrk_ptr:Ca,_es:va,_f:Ba,_free:A,_id:ba,_ie:ka,_ip:wa,_is:ua,_malloc:y,_memcpy:F,_memset:G,_ms:Aa,_parse:z,_re:ma,_ri:la,_sa:V,_se:ha,_setSource:xa,_ss:ra,stackAlloc:na,stackRestore:za,stackSave:Da}}) +return{___errno_location:Fa,__apply_relocations:za,_ai:ja,_e:Ga,_ee:sa,_ele:ga,_els:ia,_emscripten_get_sbrk_ptr:Da,_es:va,_f:Ca,_free:A,_id:ba,_ie:ka,_ip:wa,_is:ua,_it:ya,_malloc:y,_memcpy:F,_memset:G,_ms:Ba,_parse:z,_re:ma,_ri:la,_sa:V,_se:ha,_setSource:xa,_ss:ra,stackAlloc:na,stackRestore:Aa,stackSave:Ea}}) diff --git a/lib/lexer.wasm b/lib/lexer.wasm index 8813dec..3572fb7 100755 Binary files a/lib/lexer.wasm and b/lib/lexer.wasm differ diff --git a/src/lexer.asm.js b/src/lexer.asm.js index 9e55009..449371d 100644 --- a/src/lexer.asm.js +++ b/src/lexer.asm.js @@ -13,7 +13,7 @@ const copy = new Uint8Array(new Uint16Array([1]).buffer)[0] === 1 ? function (sr outBuf16[i++] = (ch & 0xff) << 8 | ch >>> 8; } }; -const words = 'xportmportlassetaromsyncunctionssertvoyiedelecontininstantybreareturdebuggeawaithrwhileforifcatcfinallels'; +const words = 'xportmportlassetaourceromsyncunctionssertvoyiedelecontininstantybreareturdebuggeawaithrwhileforifcatcfinallels'; let source, name; export function parse (_source, _name = '@') { @@ -44,11 +44,11 @@ export function parse (_source, _name = '@') { const imports = [], exports = []; while (asm.ri()) { - const s = asm.is(), e = asm.ie(), a = asm.ai(), d = asm.id(), ss = asm.ss(), se = asm.se(); + const s = asm.is(), e = asm.ie(), a = asm.ai(), d = asm.id(), ss = asm.ss(), se = asm.se(), t = asm.it(); let n; if (asm.ip()) n = readString(d === -1 ? s : s + 1, source.charCodeAt(d === -1 ? s - 1 : s)); - imports.push({ n, s, e, ss, se, d, a }); + imports.push({ t, n, s, e, ss, se, d, a }); } while (asm.re()) { const s = asm.es(), e = asm.ee(), ls = asm.els(), le = asm.ele(); diff --git a/src/lexer.c b/src/lexer.c index ec7de3b..817a7a9 100755 --- a/src/lexer.c +++ b/src/lexer.c @@ -28,6 +28,7 @@ static const char16_t BREA[] = { 'b', 'r', 'e', 'a' }; static const char16_t CONTIN[] = { 'c', 'o', 'n', 't', 'i', 'n' }; static const char16_t SYNC[] = {'s', 'y', 'n', 'c'}; static const char16_t UNCTION[] = {'u', 'n', 'c', 't', 'i', 'o', 'n'}; +static const char16_t OURCE[] = {'o', 'u', 'r', 'c', 'e'}; // Note: parsing is based on the _assumption_ that the source is already valid bool parse () { @@ -239,124 +240,136 @@ void tryParseImportStatement () { char16_t ch = commentWhitespace(true); - switch (ch) { - // dynamic import - case '(': - openTokenStack[openTokenDepth].token = ImportParen; - openTokenStack[openTokenDepth++].pos = pos; - if (*lastTokenPos == '.') - return; - // dynamic import indicated by positive d - char16_t* dynamicPos = pos; - // try parse a string, to record a safe dynamic import string - pos++; - ch = commentWhitespace(true); - addImport(startPos, pos, 0, dynamicPos); - dynamicImportStack[dynamicImportStackDepth++] = import_write_head; - if (ch == '\'') { - stringLiteral(ch); - } - else if (ch == '"') { - stringLiteral(ch); - } - else { - pos--; - return; - } - pos++; - char16_t* endPos = pos; + bool source_keyword = false; + + if (ch == '.') { + // import.meta + pos++; + ch = commentWhitespace(true); + // import.meta indicated by d == -2 + if (ch == 'm' && memcmp(pos + 1, &ETA[0], 3 * 2) == 0 && (isSpread(lastTokenPos) || *lastTokenPos != '.')) { + addImport(startPos, startPos, pos + 4, IMPORT_META); + return; + } + else if (ch == 's' && memcmp(pos + 1, &OURCE[0], 5 * 2) == 0 && (isSpread(lastTokenPos) || *lastTokenPos != '.')) { + source_keyword = true; + pos += 6; ch = commentWhitespace(true); - if (ch == ',') { - pos++; - ch = commentWhitespace(true); - import_write_head->end = endPos; - import_write_head->assert_index = pos; - import_write_head->safe = true; - pos--; - } - else if (ch == ')') { - openTokenDepth--; - import_write_head->end = endPos; - import_write_head->statement_end = pos + 1; - import_write_head->safe = true; - dynamicImportStackDepth--; - } - else { - pos--; - } + } + else { return; - // import.meta - case '.': + } + } + else if (pos > startPos + 6 && ch == 's' && memcmp(pos + 1, &OURCE[0], 5 * 2) == 0 && isBrOrWs(*(pos + 6))) { + source_keyword = true; + pos += 6; + ch = commentWhitespace(true); + } + + // dynamic import + if (ch == '(') { + openTokenStack[openTokenDepth].token = ImportParen; + openTokenStack[openTokenDepth++].pos = pos; + if (*lastTokenPos == '.') + return; + // dynamic import indicated by positive d + char16_t* dynamicPos = pos; + // try parse a string, to record a safe dynamic import string + pos++; + ch = commentWhitespace(true); + addImport(startPos, pos, 0, dynamicPos); + if (source_keyword) + import_write_head->import_ty = DynamicSourcePhase; + dynamicImportStack[dynamicImportStackDepth++] = import_write_head; + if (ch == '\'') { + stringLiteral(ch); + } + else if (ch == '"') { + stringLiteral(ch); + } + else { + pos--; + return; + } + pos++; + char16_t* endPos = pos; + ch = commentWhitespace(true); + if (ch == ',') { pos++; ch = commentWhitespace(true); - // import.meta indicated by d == -2 - if (ch == 'm' && memcmp(pos + 1, &ETA[0], 3 * 2) == 0 && (isSpread(lastTokenPos) || *lastTokenPos != '.')) - addImport(startPos, startPos, pos + 4, IMPORT_META); + import_write_head->end = endPos; + import_write_head->assert_index = pos; + import_write_head->safe = true; + pos--; + } + else if (ch == ')') { + openTokenDepth--; + import_write_head->end = endPos; + import_write_head->statement_end = pos + 1; + import_write_head->safe = true; + dynamicImportStackDepth--; + } + else { + pos--; + } + return; + } + + if (ch == '{' && !source_keyword) { + // import statement only permitted at base-level + if (openTokenDepth != 0) { + pos--; return; + } - default: - // no space after "import" -> not an import keyword - if (pos == startPos + 6) { - pos--; - break; - } - case '"': - case '\'': - case '*': { - // import statement only permitted at base-level - if (openTokenDepth != 0) { - pos--; - return; - } - while (pos < end) { - ch = *pos; - if (isQuote(ch)) { - readImportString(startPos, ch); - return; - } + while (pos < end) { + ch = commentWhitespace(true); + if (isQuote(ch)) { + stringLiteral(ch); + } else if (ch == '}') { pos++; + break; } - syntaxError(); - break; + pos++; } - case '{': { - // import statement only permitted at base-level - if (openTokenDepth != 0) { - pos--; - return; - } - - while (pos < end) { - ch = commentWhitespace(true); + ch = commentWhitespace(true); + if (ch == 'f' && memcmp(pos + 1, &ROM[0], 3 * 2) != 0) { + syntaxError(); + return; + } - if (isQuote(ch)) { - stringLiteral(ch); - } else if (ch == '}') { - pos++; - break; - } + pos += 4; + ch = commentWhitespace(true); - pos++; - } + if (!isQuote(ch)) { + return syntaxError(); + } - ch = commentWhitespace(true); - if (ch == 'f' && memcmp(pos + 1, &ROM[0], 3 * 2) != 0) { - syntaxError(); - break; + readImportString(startPos, ch, false); + } + else { + if (source_keyword || !(ch == '"' || ch == '\'' || ch == '*')) { + // no space after "import" -> not an import keyword + if (pos == startPos + (source_keyword ? 12 : 6)) { + pos--; + return; } - - pos += 4; - ch = commentWhitespace(true); - - if (!isQuote(ch)) { - return syntaxError(); + } + // import statement only permitted at base-level + if (openTokenDepth != 0 ) { + pos--; + return; + } + while (pos < end) { + ch = *pos; + if (isQuote(ch)) { + readImportString(startPos, ch, source_keyword); + return; } - - readImportString(startPos, ch); - - break; + pos++; } + syntaxError(); } } @@ -572,7 +585,7 @@ void tryParseExportStatement () { // from ... if (ch == 'f' && memcmp(pos + 1, &ROM[0], 3 * 2) == 0) { pos += 4; - readImportString(sStartPos, commentWhitespace(true)); + readImportString(sStartPos, commentWhitespace(true), false); // There were no local names. for (Export* exprt = prev_export_write_head == NULL ? first_export : prev_export_write_head->next; exprt != NULL; exprt = exprt->next) { @@ -619,7 +632,7 @@ char16_t readExportAs (char16_t* startPos, char16_t* endPos) { return ch; } -void readImportString (const char16_t* ss, char16_t ch) { +void readImportString (const char16_t* ss, char16_t ch, bool source_phase) { const char16_t* startPos = pos + 1; if (ch == '\'') { stringLiteral(ch); @@ -632,6 +645,9 @@ void readImportString (const char16_t* ss, char16_t ch) { return; } addImport(ss, startPos, pos, STANDARD_IMPORT); + if (source_phase) { + import_write_head->import_ty = StaticSourcePhase; + } pos++; ch = commentWhitespace(false); if (!(ch == 'a' && memcmp(pos + 1, &SSERT[0], 5 * 2) == 0) && !(ch == 'w' && *(pos + 1) == 'i' && *(pos + 2) == 't' && *(pos + 3) == 'h')) { diff --git a/src/lexer.h b/src/lexer.h index 658a0ea..eff134d 100755 --- a/src/lexer.h +++ b/src/lexer.h @@ -15,6 +15,14 @@ void setSource (void* ptr) { source = ptr; } +enum ImportType { + Static = 1, + Dynamic = 2, + ImportMeta = 3, + StaticSourcePhase = 4, + DynamicSourcePhase = 5, +}; + struct Import { const char16_t* start; const char16_t* end; @@ -23,6 +31,7 @@ struct Import { const char16_t* assert_index; const char16_t* dynamic; bool safe; + enum ImportType import_ty; struct Import* next; }; typedef struct Import Import; @@ -111,12 +120,18 @@ void addImport (const char16_t* statement_start, const char16_t* start, const ch import_write_head_last = import_write_head; import_write_head = import; import->statement_start = statement_start; - if (dynamic == IMPORT_META) + if (dynamic == IMPORT_META) { import->statement_end = end; - else if (dynamic == STANDARD_IMPORT) + import->import_ty = ImportMeta; + } + else if (dynamic == STANDARD_IMPORT) { import->statement_end = end + 1; - else + import->import_ty = Dynamic; + } + else { import->statement_end = 0; + import->import_ty = Static; + } import->start = start; import->end = end; import->assert_index = 0; @@ -164,6 +179,10 @@ uint32_t ss () { uint32_t se () { return import_read_head->statement_end == 0 ? -1 : import_read_head->statement_end - source; } +// getImportType +uint32_t it () { + return import_read_head->import_ty; +} // getAssertIndex uint32_t ai () { return import_read_head->assert_index == 0 ? -1 : import_read_head->assert_index - source; @@ -229,7 +248,7 @@ bool parse (); void tryParseImportStatement (); void tryParseExportStatement (); -void readImportString (const char16_t* ss, char16_t ch); +void readImportString (const char16_t* ss, char16_t ch, bool source_phase); char16_t readExportAs (char16_t* startPos, char16_t* endPos); char16_t commentWhitespace (bool br); diff --git a/src/lexer.ts b/src/lexer.ts index 2757144..6548f6d 100755 --- a/src/lexer.ts +++ b/src/lexer.ts @@ -1,3 +1,29 @@ +export enum ImportType { + /** + * A normal static using any syntax variations + * import .. from 'module' + */ + Static = 1, + /** + * A dynamic import expression `import(specifier)` + * or `import(specifier, opts)` + */ + Dynamic = 2, + /** + * An import.meta expression + */ + ImportMeta = 3, + /** + * A source phase import + * import source x from 'module' + */ + StaticSourcePhase = 4, + /** + * A dynamic source phase import + * import.source('module') + */ + DynamicSourcePhase = 5, +} export interface ImportSpecifier { /** @@ -21,6 +47,10 @@ export interface ImportSpecifier { * // Returns undefined */ readonly n: string | undefined; + /** + * Type of import statement + */ + readonly t: ImportType; /** * Start of module specifier * @@ -179,11 +209,11 @@ export function parse (source: string, name = '@'): readonly [ const imports: ImportSpecifier[] = [], exports: ExportSpecifier[] = []; while (wasm.ri()) { - const s = wasm.is(), e = wasm.ie(), a = wasm.ai(), d = wasm.id(), ss = wasm.ss(), se = wasm.se(); + const s = wasm.is(), e = wasm.ie(), t = wasm.it(), a = wasm.ai(), d = wasm.id(), ss = wasm.ss(), se = wasm.se(); let n; if (wasm.ip()) n = decode(source.slice(d === -1 ? s - 1 : s, d === -1 ? e + 1 : e)); - imports.push({ n, s, e, ss, se, d, a }); + imports.push({ n, t, s, e, ss, se, d, a }); } while (wasm.re()) { const s = wasm.es(), e = wasm.ee(), ls = wasm.els(), le = wasm.ele(); @@ -226,6 +256,8 @@ let wasm: { __heap_base: {value: number} | number & {value: undefined}; memory: WebAssembly.Memory; parse(): boolean; + /** importType */ + it(): number; /** getAssertIndex */ ai(): number; /** getErr */ diff --git a/test/_unit.cjs b/test/_unit.cjs index 023390d..0aae21d 100755 --- a/test/_unit.cjs +++ b/test/_unit.cjs @@ -39,6 +39,43 @@ function assertExportIs(source, actual, expected) { suite('Lexer', () => { beforeEach(async () => await init); + test(`Source phase imports`, () => { + const source = ` + import source + source from 'specifier' + + import source blah from './x.js' with { type: 'css' } + + import.source('blah'); + + `; + try { + const [impts] = parse(source); + assert.strictEqual(impts.length, 3); + + assert.strictEqual(impts[0].t, 4); + assert.strictEqual(source.slice(impts[0].ss, impts[0].se), source.slice(7, 52)); + assert.strictEqual(source.slice(impts[0].s, impts[0].e), 'specifier'); + assert.strictEqual(impts[0].d, -1); + assert.strictEqual(impts[0].a, -1); + + assert.strictEqual(impts[1].t, 4); + assert.strictEqual(source.slice(impts[1].ss, impts[1].se), `import source blah from './x.js' with { type: 'css' }`); + assert.strictEqual(source.slice(impts[1].s, impts[1].e), './x.js'); + assert.strictEqual(impts[1].d, -1); + assert.strictEqual(source.slice(impts[1].a, impts[1].se), `{ type: 'css' }`); + + assert.strictEqual(impts[2].t, 5); + assert.strictEqual(source.slice(impts[2].ss, impts[2].se), `import.source('blah')`); + assert.strictEqual(source.slice(impts[2].s, impts[2].e), "'blah'"); + assert.strictEqual(source.slice(impts[2].d, impts[2].se), `('blah')`); + assert.strictEqual(impts[2].a, -1); + } + catch (e) { + throw e; + } + }); + test(`Dynamic import expression range`, () => { const source = `import(("asdf")) aaaa`; const [[impt]] = parse(source);