yosysjs
Version:
YosysJS is a JavaScript port of Yosys done with Emscripten. It is primarily meant for building educational web applications.
100 lines • 2.52 MB
JavaScript
function k($a){throw $a;}var p=void 0,q=!0,r=null,G=!1;function M(){return function(){}}
window.Viz=function($a,ec,ab){function ob(a){eval.call(r,a)}function J(a,b){a||aa("Assertion failed: "+b)}function pb(a){try{var b=e["_"+a];b||(b=eval("_"+a))}catch(c){}J(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return b}function qb(a,b,c,f){function d(a,b){if("string"==b){if(a===r||a===p||0===a)return 0;a=V(a);b="array"}if("array"==b){i||(i=l.kd());var c=l.hd(a.length);rb(a,c);return c}return a}var i=0,e=0,f=f?f.map(function(a){return d(a,c[e++])}):
[];a=a.apply(r,f);"string"==b?b=R(a):(J("array"!=b),b=a);i&&l.jd(i);return b}function ta(a,b,c){c=c||"i8";"*"===c.charAt(c.length-1)&&(c="i32");switch(c){case "i1":v[a]=b;break;case "i8":v[a]=b;break;case "i16":ea[a>>1]=b;break;case "i32":t[a>>2]=b;break;case "i64":na=[b>>>0,(N=b,1<=+ua(N)?0<N?(va(+Ia(N/4294967296),4294967295)|0)>>>0:~~+Ja((N-+(~~N>>>0))/4294967296)>>>0:0)];t[a>>2]=na[0];t[a+4>>2]=na[1];break;case "float":wa[a>>2]=b;break;case "double":oa[a>>3]=b;break;default:aa("invalid type for setValue: "+
c)}}function pa(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return v[a];case "i8":return v[a];case "i16":return ea[a>>1];case "i32":return t[a>>2];case "i64":return t[a>>2];case "float":return wa[a>>2];case "double":return oa[a>>3];default:aa("invalid type for setValue: "+b)}return r}function D(a,b,c,f){var d,i;"number"===typeof a?(d=q,i=a):(d=G,i=a.length);var e="string"===typeof b?b:r,c=c==L?f:[ia,l.hd,l.md,l.Ub][c===p?S:c](Math.max(i,e?1:b.length));if(d){f=c;J(0==(c&
3));for(a=c+(i&-4);f<a;f+=4)t[f>>2]=0;for(a=c+i;f<a;)v[f++|0]=0;return c}if("i8"===e)return a.subarray||a.slice?T.set(a,c):T.set(new Uint8Array(a),c),c;for(var f=0,j,g;f<i;){var x=a[f];"function"===typeof x&&(x=l.Ni(x));d=e||b[f];0===d?f++:("i64"==d&&(d="i32"),ta(c+f,x,d),g!==d&&(j=l.Lc(d),g=d),f+=j)}return c}function R(a,b){for(var c=G,f,d=0;;){f=T[a+d|0];if(128<=f)c=q;else if(0==f&&!b)break;d++;if(b&&d==b)break}b||(b=d);var i="";if(!c){for(;0<b;)f=String.fromCharCode.apply(String,T.subarray(a,a+
Math.min(b,1024))),i=i?i+f:f,a+=1024,b-=1024;return i}c=new l.pb;for(d=0;d<b;d++)f=T[a+d|0],i+=c.ic(f);return i}function fc(a){try{if("Object._main"==a||"_main"==a)return"main()";"number"===typeof a&&(a=R(a));if("_"!==a[0]||"_"!==a[1]||"Z"!==a[2])return a;switch(a[3]){case "n":return"operator new()";case "d":return"operator delete()"}var b=3,c={v:"void",b:"bool",c:"char",s:"short",i:"int",l:"long",f:"float",d:"double",w:"wchar_t",a:"signed char",h:"unsigned char",t:"unsigned short",j:"unsigned int",
m:"unsigned long",x:"long long",y:"unsigned long long",z:"..."},f=[],d=q,i=function(e,h,g){var h=h||Infinity,m="",s=[],y;if("N"===a[b]){b++;"K"===a[b]&&b++;for(y=[];"E"!==a[b];)if("S"===a[b]){b++;var A=a.indexOf("_",b);y.push(f[a.substring(b,A)||0]||"?");b=A+1}else if("C"===a[b])y.push(y[y.length-1]),b+=2;else{var A=parseInt(a.substr(b)),F=A.toString().length;if(!A||!F){b--;break}var P=a.substr(b+F,A);y.push(P);f.push(P);b+=F+A}b++;y=y.join("::");h--;if(0===h)return e?[y]:y}else if(("K"===a[b]||d&&
"L"===a[b])&&b++,A=parseInt(a.substr(b)))F=A.toString().length,y=a.substr(b+F,A),b+=F+A;d=G;"I"===a[b]?(b++,A=i(q),F=i(q,1,q),m+=F[0]+" "+y+"<"+A.join(", ")+">"):m=y;a:for(;b<a.length&&0<h--;)if(y=a[b++],y in c)s.push(c[y]);else switch(y){case "P":s.push(i(q,1,q)[0]+"*");break;case "R":s.push(i(q,1,q)[0]+"&");break;case "L":b++;A=a.indexOf("E",b)-b;s.push(a.substr(b,A));b+=A+2;break;case "A":A=parseInt(a.substr(b));b+=A.toString().length;"_"!==a[b]&&k("?");b++;s.push(i(q,1,q)[0]+" ["+A+"]");break;
case "E":break a;default:m+="?"+y;break a}!g&&(1===s.length&&"void"===s[0])&&(s=[]);return e?s:m+("("+s.join(", ")+")")};return i()}catch(e){return a}}function bb(){var a=Error().stack;return a?a.replace(/__Z[\w\d_]+/g,function(a){var c=fc(a);return a===c?a:a+" ["+c+"]"}):"(no stack trace available)"}function qa(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b();else{var c=b.Ka;"number"===typeof c?b.uc===p?l.Dc("v",c):l.Dc("vi",c,[b.uc]):c(b.uc===p?r:b.uc)}}}function sb(a){cb.unshift(a)}
function tb(a){ub.unshift(a)}function V(a,b,c){a=(new l.pb).re(a);c&&(a.length=c);b||a.push(0);return a}function rb(a,b){for(var c=0;c<a.length;c++)v[b+c|0]=a[c]}function Ka(a,b,c){for(var f=0;f<a.length;f++)v[b+f|0]=a.charCodeAt(f);c||(v[b+a.length|0]=0)}function La(a,b){return 0<=a?a:32>=b?2*Math.abs(1<<b-1)+a:Math.pow(2,b)+a}function vb(a,b){if(0>=a)return a;var c=32>=b?Math.abs(1<<b-1):Math.pow(2,b-1);if(a>=c&&(32>=b||a>c))a=-2*c+a;return a}function db(){fa++;e.monitorRunDependencies&&e.monitorRunDependencies(fa)}
function Ma(){fa--;e.monitorRunDependencies&&e.monitorRunDependencies(fa);if(0==fa&&(eb!==r&&(clearInterval(eb),eb=r),xa)){var a=xa;xa=r;a()}}function H(a){return t[Na>>2]=a}function fb(a,b,c){a=d.D(a);if(!a)return H(g.H),-1;try{return d.P(a,v,b,c)}catch(f){return d.sa(f),-1}}function wb(a,b,c){if(a in Oa){if(Oa[a].length>c-1)return H(g.qc);Ka(Oa[a],b);return 0}return H(g.B)}function ya(a){ya.buffer||(ya.buffer=ia(256));wb(a,ya.buffer,256);return ya.buffer}function Pa(a){return 0>a||0===a&&-Infinity===
1/a}function gb(a,b){function c(a){var c;"double"===a?c=oa[b+d>>3]:"i64"==a?(c=[t[b+d>>2],t[b+(d+8)>>2]],d+=8):(a="i32",c=t[b+d>>2]);d+=Math.max(l.$d(a),l.Aa(a,r,q));return c}for(var f=a,d=0,e=[],h,j;;){var g=f;h=v[f];if(0===h)break;j=v[f+1|0];if(37==h){var x=G,m=G,s=G,y=G,A=G;a:for(;;){switch(j){case 43:x=q;break;case 45:m=q;break;case 35:s=q;break;case 48:if(y)break a;else{y=q;break}case 32:A=q;break;default:break a}f++;j=v[f+1|0]}var F=0;if(42==j)F=c("i32"),f++,j=v[f+1|0];else for(;48<=j&&57>=
j;)F=10*F+(j-48),f++,j=v[f+1|0];var P=G,E=-1;if(46==j){E=0;P=q;f++;j=v[f+1|0];if(42==j)E=c("i32"),f++;else for(;;){j=v[f+1|0];if(48>j||57<j)break;E=10*E+(j-48);f++}j=v[f+1|0]}-1===E&&(E=6,P=G);var C;switch(String.fromCharCode(j)){case "h":j=v[f+2|0];104==j?(f++,C=1):C=2;break;case "l":j=v[f+2|0];108==j?(f++,C=8):C=4;break;case "L":case "q":case "j":C=8;break;case "z":case "t":case "I":C=4;break;default:C=r}C&&f++;j=v[f+1|0];switch(String.fromCharCode(j)){case "d":case "i":case "u":case "o":case "x":case "X":case "p":g=
100==j||105==j;C=C||4;var n=h=c("i"+8*C),w;8==C&&(h=l.Mf(h[0],h[1],117==j));4>=C&&(h=(g?vb:La)(h&Math.pow(256,C)-1,8*C));var u=Math.abs(h),g="";if(100==j||105==j)w=8==C&&za?za.stringify(n[0],n[1],r):vb(h,8*C).toString(10);else if(117==j)w=8==C&&za?za.stringify(n[0],n[1],q):La(h,8*C).toString(10),h=Math.abs(h);else if(111==j)w=(s?"0":"")+u.toString(8);else if(120==j||88==j){g=s&&0!=h?"0x":"";if(8==C&&za)if(n[1]){w=(n[1]>>>0).toString(16);for(s=(n[0]>>>0).toString(16);8>s.length;)s="0"+s;w+=s}else w=
(n[0]>>>0).toString(16);else if(0>h){h=-h;w=(u-1).toString(16);n=[];for(s=0;s<w.length;s++)n.push((15-parseInt(w[s],16)).toString(16));for(w=n.join("");w.length<2*C;)w="f"+w}else w=u.toString(16);88==j&&(g=g.toUpperCase(),w=w.toUpperCase())}else 112==j&&(0===u?w="(nil)":(g="0x",w=u.toString(16)));if(P)for(;w.length<E;)w="0"+w;0<=h&&(x?g="+"+g:A&&(g=" "+g));"-"==w.charAt(0)&&(g="-"+g,w=w.substr(1));for(;g.length+w.length<F;)m?w+=" ":y?w="0"+w:g=" "+g;w=g+w;w.split("").forEach(function(a){e.push(a.charCodeAt(0))});
break;case "f":case "F":case "e":case "E":case "g":case "G":h=c("double");if(isNaN(h))w="nan",y=G;else if(isFinite(h)){P=G;C=Math.min(E,20);if(103==j||71==j)P=q,E=E||1,C=parseInt(h.toExponential(C).split("e")[1],10),E>C&&-4<=C?(j=(103==j?"f":"F").charCodeAt(0),E-=C+1):(j=(103==j?"e":"E").charCodeAt(0),E--),C=Math.min(E,20);if(101==j||69==j)w=h.toExponential(C),/[eE][-+]\d$/.test(w)&&(w=w.slice(0,-1)+"0"+w.slice(-1));else if(102==j||70==j)w=h.toFixed(C),0===h&&Pa(h)&&(w="-"+w);g=w.split("e");if(P&&
!s)for(;1<g[0].length&&-1!=g[0].indexOf(".")&&("0"==g[0].slice(-1)||"."==g[0].slice(-1));)g[0]=g[0].slice(0,-1);else for(s&&-1==w.indexOf(".")&&(g[0]+=".");E>C++;)g[0]+="0";w=g[0]+(1<g.length?"e"+g[1]:"");69==j&&(w=w.toUpperCase());0<=h&&(x?w="+"+w:A&&(w=" "+w))}else w=(0>h?"-":"")+"inf",y=G;for(;w.length<F;)w=m?w+" ":y&&("-"==w[0]||"+"==w[0])?w[0]+"0"+w.slice(1):(y?"0":" ")+w;97>j&&(w=w.toUpperCase());w.split("").forEach(function(a){e.push(a.charCodeAt(0))});break;case "s":y=(x=c("i8*"))?Aa(x):6;
P&&(y=Math.min(y,E));if(!m)for(;y<F--;)e.push(32);if(x)for(s=0;s<y;s++)e.push(T[x++|0]);else e=e.concat(V("(null)".substr(0,y),q));if(m)for(;y<F--;)e.push(32);break;case "c":for(m&&e.push(c("i8"));0<--F;)e.push(32);m||e.push(c("i8"));break;case "n":m=c("i32*");t[m>>2]=e.length;break;case "%":e.push(h);break;default:for(s=g;s<f+2;s++)e.push(v[s])}f+=2}else e.push(h),f+=1}return e}function hb(a,b,c,f){c=gb(c,f);f=b===p?c.length:Math.min(c.length,Math.max(b-1,0));if(0>a)var a=-a,d=ia(f+1),a=t[a>>2]=
d;for(d=0;d<f;d++)v[a+d|0]=c[d];if(f<b||b===p)v[a+d|0]=0;return c.length}function xb(a,b,c){for(var f=0;f<c;){var d=T[a+f|0],e=T[b+f|0];if(d==e&&0==d)break;if(0==d)return-1;if(0==e)return 1;if(d==e)f++;else return d>e?1:-1}return 0}function yb(a){return 32==a||9<=a&&13>=a}function zb(a,b,c,f,d,e,h){for(;yb(v[a]);)a++;var j=1;45==v[a]?(j=-1,a++):43==v[a]&&a++;if(c){if(16==c&&48==v[a]&&(120==v[a+1|0]||88==v[a+1|0]))a+=2}else 48==v[a]&&(120==v[a+1|0]||88==v[a+1|0]?(c=16,a+=2):(c=8,a++));c||(c=10);for(var l,
x=0;0!=(l=v[a])&&!(l=parseInt(String.fromCharCode(l),c),isNaN(l));)x=x*c+l,a++;x*=j;b&&(t[b>>2]=a);h&&(Math.abs(x)>d?(x=d,H(g.qc)):x=La(x,e));if(x>d||x<f)x=x>d?d:f,H(g.qc);return 64==e?(u.setTempRet0((N=x,1<=+ua(N)?0<N?(va(+Ia(N/4294967296),4294967295)|0)>>>0:~~+Ja((N-+(~~N>>>0))/4294967296)>>>0:0)),x>>>0)|0:x}function Ab(a,b,c){return zb(a,b,c,-2147483648,2147483647,32)}function Bb(a){return/^[+-]?[0-9]*\.?[0-9]+([eE][+-]?[0-9]+)?/.exec(a)}function Q(a,b,c,f){Q.whiteSpace||(Q.whiteSpace={},Q.whiteSpace[32]=
1,Q.whiteSpace[9]=1,Q.whiteSpace[10]=1,Q.whiteSpace[11]=1,Q.whiteSpace[12]=1,Q.whiteSpace[13]=1);var a=R(a),d=0;if(0<=a.indexOf("%n"))var e=b,b=function(){d++;return e()},h=c,c=function(){d--;return h()};var j=0,g=0,x=0,m,j=0;a:for(;j<a.length;)if("%"===a[j]&&"n"==a[j+1]){var s=t[f+x>>2],x=x+l.Aa("void*",r,q);t[s>>2]=d;j+=2}else{if("%"===a[j]){var y=a.indexOf("c",j+1);if(0<y){var A=1;y>j+1&&(m=a.substring(j+1,y),A=parseInt(m),A!=m&&(A=0));if(A){s=t[f+x>>2];x+=l.Aa("void*",r,q);g++;for(var F=0;F<A;F++)m=
b(),v[s++|0]=m;j+=y-j+1;continue}}}if("%"===a[j]&&0<a.indexOf("[",j+1)&&(y=/\%([0-9]*)\[(\^)?(\]?[^\]]*)\]/.exec(a.substring(j)))){for(var A=parseInt(y[1])||Infinity,P="^"===y[2],E=y[3];m=/([^\-])\-([^\-])/.exec(E);){for(var s=m[1].charCodeAt(0),F=m[2].charCodeAt(0),C="";s<=F;C+=String.fromCharCode(s++));E=E.replace(m[1]+"-"+m[2],C)}s=t[f+x>>2];x+=l.Aa("void*",r,q);g++;for(F=0;F<A;F++)if(m=b(),P)if(0>E.indexOf(String.fromCharCode(m)))v[s++|0]=m;else{c();break}else if(0<=E.indexOf(String.fromCharCode(m)))v[s++|
0]=m;else{c();break}v[s++|0]=0;j+=y[0].length;continue}for(;;){m=b();if(0==m)return g;if(!(m in Q.whiteSpace))break}c();if("%"===a[j]){j++;s=G;"*"==a[j]&&(s=q,j++);for(m=j;48<=a[j].charCodeAt(0)&&57>=a[j].charCodeAt(0);)j++;var n;j!=m&&(n=parseInt(a.slice(m,j),10));P=A=y=G;"l"==a[j]?(y=q,j++,"l"==a[j]&&(P=q,j++)):"h"==a[j]&&(A=q,j++);E=a[j];j++;F=0;C=[];if("f"==E||"e"==E||"g"==E||"F"==E||"E"==E||"G"==E){for(m=b();0<m&&!(m in Q.whiteSpace);)C.push(String.fromCharCode(m)),m=b();m=(m=Bb(C.join("")))?
m[0].length:0;for(F=0;F<C.length-m+1;F++)c();C.length=m}else{m=b();var w=q;if(("x"==E||"X"==E)&&48==m){var u=b();120==u||88==u?m=b():c()}for(;(F<n||isNaN(n))&&0<m;)if(!(m in Q.whiteSpace)&&("s"==E||("d"===E||"u"==E||"i"==E)&&(48<=m&&57>=m||w&&45==m)||("x"===E||"X"===E)&&(48<=m&&57>=m||97<=m&&102>=m||65<=m&&70>=m))&&(j>=a.length||m!==a[j].charCodeAt(0)))C.push(String.fromCharCode(m)),m=b(),F++,w=G;else break;c()}if(0===C.length)return 0;if(!s){m=C.join("");s=t[f+x>>2];x+=l.Aa("void*",r,q);switch(E){case "d":case "u":case "i":A?
ea[s>>1]=parseInt(m,10):P?(na=[parseInt(m,10)>>>0,(N=parseInt(m,10),1<=+ua(N)?0<N?(va(+Ia(N/4294967296),4294967295)|0)>>>0:~~+Ja((N-+(~~N>>>0))/4294967296)>>>0:0)],t[s>>2]=na[0],t[s+4>>2]=na[1]):t[s>>2]=parseInt(m,10);break;case "X":case "x":t[s>>2]=parseInt(m,16);break;case "F":case "f":case "E":case "e":case "G":case "g":case "E":y?oa[s>>3]=parseFloat(m):wa[s>>2]=parseFloat(m);break;case "s":m=V(m);for(F=0;F<m.length;F++)v[s+F|0]=m[F]}g++}}else{if(a[j].charCodeAt(0)in Q.whiteSpace){for(m=b();m in
Q.whiteSpace;){if(0>=m)break a;m=b()}c(m)}else if(m=b(),a[j].charCodeAt(0)!==m){c(m);break a}j++}}return g}function Cb(a,b,c){return hb(a,p,b,c)}function Qa(){Qa.$||(Qa.$=D([0],"i8",ja));return Qa.$}function Ba(a,b,c){a=d.D(a);if(!a)return H(g.H),-1;try{return d.write(a,v,b,c)}catch(f){return d.sa(f),-1}}function Db(a,b,c,f){c*=b;if(0==c)return 0;a=Ba(f,a,c);if(-1==a){if(b=d.D(f))b.error=q;return 0}return Math.floor(a/b)}function Eb(a,b,c){c=gb(b,c);b=l.kd();a=Db(D(c,"i8",ib),1,c.length,a);l.jd(b);
return a}function Fb(a,b,c){var f,d,e,h;if(0==a&&0==(a=pa(c,"i8*")))return 0;a:for(;;){d=pa(a++,"i8");for(f=b;0!=(e=pa(f++,"i8"));)if(d==e)continue a;break}if(0==d)return ta(c,0,"i8*"),0;for(h=a-1;;){d=pa(a++,"i8");f=b;do if((e=pa(f++,"i8"))==d)return 0==d?a=0:ta(a-1,0,"i8"),ta(c,a,"i8*"),h;while(0!=e)}aa("strtok_r error!")}function Gb(a){e.exit(a)}function Ca(a){var b,c;Ca.xc?(c=t[Hb>>2],b=t[c>>2]):(Ca.xc=q,U.USER="root",U.PATH="/",U.PWD="/",U.HOME="/home/emscripten",U.LANG="en_US.UTF-8",U._="./this.program",
b=D(1024,"i8",S),c=D(256,"i8*",S),t[c>>2]=b,t[Hb>>2]=c);var f=[],d=0,e;for(e in a)if("string"===typeof a[e]){var h=e+"="+a[e];f.push(h);d+=h.length}1024<d&&k(Error("Environment size exceeded TOTAL_ENV_SIZE!"));for(a=0;a<f.length;a++)h=f[a],Ka(h,b),t[c+4*a>>2]=b,b+=h.length+1;t[c+4*f.length>>2]=0}function Da(a){if(0===a)return 0;a=R(a);if(!U.hasOwnProperty(a))return 0;Da.$&&Ib(Da.$);Da.$=D(V(U[a]),"i8",ja);return Da.$}function Jb(a,b,c){c=t[c>>2];a=R(a);try{return d.open(a,b,c).da}catch(f){return d.sa(f),
-1}}function Kb(a,b){var c,b=R(b);if("r"==b[0])c=-1!=b.indexOf("+")?2:0;else if("w"==b[0])c=-1!=b.indexOf("+")?2:1,c|=576;else if("a"==b[0])c=-1!=b.indexOf("+")?2:1,c|=64,c|=1024;else return H(g.B),0;c=Jb(a,c,D([511,0,0,0],"i32",ib));return-1==c?0:c}function Lb(a){a=d.D(a);if(!a)return H(g.H),-1;try{return d.close(a),0}catch(b){return d.sa(b),-1}}function Mb(a){if(d.D(a))return 0;H(g.H);return-1}function ra(a,b){var c=La(a&255);v[ra.$|0]=c;if(-1==Ba(b,ra.$,1)){if(c=d.D(b))c.error=q;return-1}return c}
function Nb(a,b,c,f){c*=b;if(0==c)return 0;var e=0,i=d.D(f);if(!i)return H(g.H),0;for(;i.pd.length&&0<c;)v[a++|0]=i.pd.pop(),c--,e++;a=fb(f,a,c);if(-1==a)return i&&(i.error=q),0;e+=a;e<c&&(i.Ua=q);return Math.floor(e/b)}function Ea(a){var b=d.D(a);if(!b||b.Ua||b.error)return-1;a=Nb(Ea.$,1,1,a);return 0==a?-1:-1==a?(b.error=q,-1):T[Ea.$|0]}function Ob(a,b,c){a="string"!==typeof a?R(a):a;try{var f=c?d.Kf(a):d.ld(a);t[b>>2]=f.Cc;t[b+4>>2]=0;t[b+8>>2]=f.ac;t[b+12>>2]=f.mode;t[b+16>>2]=f.Wc;t[b+20>>2]=
f.uid;t[b+24>>2]=f.Mc;t[b+28>>2]=f.Pa;t[b+32>>2]=0;t[b+36>>2]=f.size;t[b+40>>2]=4096;t[b+44>>2]=f.sb;t[b+48>>2]=Math.floor(f.wc.getTime()/1E3);t[b+52>>2]=0;t[b+56>>2]=Math.floor(f.Uc.getTime()/1E3);t[b+60>>2]=0;t[b+64>>2]=Math.floor(f.Ac.getTime()/1E3);t[b+68>>2]=0;t[b+72>>2]=f.ac;return 0}catch(e){return d.sa(e),-1}}function Pb(a,b,c){a=d.D(a);if(!a)return H(g.H),-1;try{return d.ga(a,b,c)}catch(f){return d.sa(f),-1}}function Qb(a,b){return Ba(b,a,Aa(a))}function Fa(a,b,c){var f=d.Ud(b||"/tmp");if(!f||
!f.Pc)if(b="/tmp",f=d.Ud(b),!f||!f.Pc)return 0;c=c||"file";do c+=String.fromCharCode(65+Math.floor(25*Math.random()));while(c in f.u);b=b+"/"+c;Fa.buffer||(Fa.buffer=ia(256));a||(a=Fa.buffer);Ka(b,a);return a}function Ra(){Ra.mode&&(Ra.mode=D(V("w+"),"i8",ja));return Kb(Fa(0),Ra.mode)}function Rb(a){var b=Rb;b.xc||(Z=Z+4095&-4096,b.xc=q,J(l.Ub),b.We=l.Ub,l.Ub=function(){aa("cannot dynamically allocate, sbrk now has control")});var c=Z;0!=a&&b.We(a);return c}function jb(a){this.name="ExitStatus";this.message=
"Program terminated with exit("+a+")";this.status=a}function kb(a){function b(){if(!e.calledRun){e.calledRun=q;Sa||(Sa=q,qa(ka));qa(lb);e._main&&mb&&e.callMain(a);if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)tb(e.postRun.shift());qa(ub)}}a=a||e.arguments;Ta===r&&(Ta=Date.now());if(0<fa)e.ab("run() called, but dependencies remain, so not running");else{if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)sb(e.preRun.shift());
qa(cb);!(0<fa)&&!e.calledRun&&(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1);ba||b()},1)):b())}}function Sb(a){ba=q;X=Tb;qa(Ua);k(new jb(a))}function aa(a){a&&(e.print(a),e.ab(a));ba=q;k("abort() at "+bb())}"undefined"===typeof ab&&(ab="dot");var e={"return":"",print:function(a){e["return"]+=a+"\n"}},Va={},ga;for(ga in e)e.hasOwnProperty(ga)&&(Va[ga]=e[ga]);var ca="object"===typeof process&&"function"===typeof require,Wa="object"===typeof window,
Xa="function"===typeof importScripts,gc=!Wa&&!ca&&!Xa;if(ca){e.print||(e.print=function(a){process.stdout.write(a+"\n")});e.printErr||(e.printErr=function(a){process.stderr.write(a+"\n")});var Ub=require("fs"),Vb=require("path");e.read=function(a,b){var a=Vb.normalize(a),c=Ub.readFileSync(a);!c&&a!=Vb.resolve(a)&&(a=path.join(__dirname,"..","src",a),c=Ub.readFileSync(a));c&&!b&&(c=c.toString());return c};e.readBinary=function(a){return e.read(a,q)};e.load=function(a){ob(read(a))};e.arguments=process.argv.slice(2);
module.exports=e}else gc?(e.print||(e.print=print),"undefined"!=typeof printErr&&(e.printErr=printErr),e.read="undefined"!=typeof read?read:function(){k("no read() available (jsc?)")},e.readBinary=function(a){return read(a,"binary")},"undefined"!=typeof scriptArgs?e.arguments=scriptArgs:"undefined"!=typeof arguments&&(e.arguments=arguments),this.Module=e,eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined")):Wa||Xa?(e.read=function(a){var b=new XMLHttpRequest;
b.open("GET",a,G);b.send(r);return b.responseText},"undefined"!=typeof arguments&&(e.arguments=arguments),"undefined"!==typeof console?(e.print||(e.print=function(a){console.log(a)}),e.printErr||(e.printErr=function(a){console.log(a)})):e.print||(e.print=M()),Wa?this.Module=e:e.load=importScripts):k("Unknown runtime environment. Where are we?");"undefined"==!e.load&&e.read&&(e.load=function(a){ob(e.read(a))});e.print||(e.print=M());e.printErr||(e.printErr=e.print);e.arguments||(e.arguments=[]);e.print=
e.print;e.ab=e.printErr;e.preRun=[];e.postRun=[];for(ga in Va)Va.hasOwnProperty(ga)&&(e[ga]=Va[ga]);var l={kd:function(){return X},jd:function(a){X=a},Ii:function(a,b){b=b||4;return 1==b?a:isNumber(a)&&isNumber(b)?Math.ceil(a/b)*b:isNumber(b)&&isPowerOfTwo(b)?"((("+a+")+"+(b-1)+")&"+-b+")":"Math.ceil(("+a+")/"+b+")*"+b},Ff:function(a){return a in l.Re||a in l.Pe},Gf:function(a){return"*"==a[a.length-1]},If:function(a){return isPointerType(a)?G:isArrayType(a)||/<?{ ?[^}]* ?}>?/.test(a)?q:"%"==a[0]},
Re:{i1:0,i8:0,i16:0,i32:0,i64:0},Pe:{"float":0,"double":0},cj:function(a,b){return(a|0|b|0)+4294967296*(Math.round(a/4294967296)|Math.round(b/4294967296))},ti:function(a,b){return((a|0)&(b|0))+4294967296*(Math.round(a/4294967296)&Math.round(b/4294967296))},Ij:function(a,b){return((a|0)^(b|0))+4294967296*(Math.round(a/4294967296)^Math.round(b/4294967296))},Lc:function(a){switch(a){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;
default:return"*"===a[a.length-1]?l.Fa:"i"===a[0]?(a=parseInt(a.substr(1)),J(0===a%8),a/8):0}},$d:function(a){return Math.max(l.Lc(a),l.Fa)},lf:function(a,b){var c={};return b?a.filter(function(a){return c[a[b]]?G:c[a[b]]=q}):a.filter(function(a){return c[a]?G:c[a]=q})},set:function(){for(var a="object"===typeof arguments[0]?arguments[0]:arguments,b={},c=0;c<a.length;c++)b[a[c]]=0;return b},fi:8,Aa:function(a,b,c){return c||!c&&("i64"==a||"double"==a)?8:!a?Math.min(b,8):Math.min(b||(a?l.$d(a):0),
l.Fa)},Ye:function(a){a.ja=0;a.Ta=0;var b=[],c=-1,f=0;a.Xd=a.Gc.map(function(d){f++;var e,h;l.Ff(d)||l.Gf(d)?(e=l.Lc(d),h=l.Aa(d,e)):l.If(d)?"0"===d[1]?(e=0,h=Types.types[d]?l.Aa(r,Types.types[d].Ta):a.Ta||QUANTUM_SIZE):(e=Types.types[d].ja,h=l.Aa(r,Types.types[d].Ta)):"b"==d[0]?(e=d.substr(1)|0,h=1):"<"===d[0]?e=h=Types.types[d].ja:"i"===d[0]?(e=h=parseInt(d.substr(1))/8,J(0===e%1,"cannot handle non-byte-size field "+d)):J(G,"invalid type for calculateStructAlignment");a.dj&&(h=1);a.Ta=Math.max(a.Ta,
h);d=l.qb(a.ja,h);a.ja=d+e;0<=c&&b.push(d-c);return c=d});a.ne&&"["===a.ne[0]&&(a.ja=parseInt(a.ne.substr(1))*a.ja/2);a.ja=l.qb(a.ja,a.Ta);0==b.length?a.Wd=a.ja:1==l.lf(b).length&&(a.Wd=b[0]);a.$i=1!=a.Wd;return a.Xd},sf:function(a,b,c){var f,d;if(b){c=c||0;f=("undefined"===typeof Types?l.zj:Types.types)[b];if(!f)return r;if(f.Gc.length!=a.length)return printErr("Number of named fields must match the type for "+b+": possibly duplicate struct names. Cannot return structInfo"),r;d=f.Xd}else f={Gc:a.map(function(a){return a[0]})},
d=l.Ye(f);var e={ki:f.ja};b?a.forEach(function(a,b){if("string"===typeof a)e[a]=d[b]+c;else{var g,x;for(x in a)g=x;e[g]=l.sf(a[g],f.Gc[b],d[b])}}):a.forEach(function(a,b){e[a[1]]=d[b]});return e},Dc:function(a,b,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,b),e["dynCall_"+a].apply(r,c)):e["dynCall_"+a].call(r,b)},Wb:[],mi:function(a){for(var b=0;b<l.Wb.length;b++)if(!l.Wb[b])return l.Wb[b]=a,2*(1+b);k("Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.")},
lj:function(a){l.Wb[(a-2)/2]=r},Li:function(a,b){l.vc||(l.vc={});var c=l.vc[a];if(c)return c;for(var c=[],f=0;f<b;f++)c.push(String.fromCharCode(36)+f);a=R(a);'"'===a[0]&&(a.indexOf('"',1)===a.length-1?a=a.substr(1,a.length-2):aa("invalid EM_ASM input |"+a+"|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)"));return l.vc[a]=eval("(function("+c.join(",")+"){ "+a+" })")},Fb:function(a){l.Fb.fd||(l.Fb.fd={});l.Fb.fd[a]||(l.Fb.fd[a]=1,e.ab(a))},Ic:{},Mi:function(a,
b){J(b);l.Ic[a]||(l.Ic[a]=function(){return l.Dc(b,a,arguments)});return l.Ic[a]},pb:function(){var a=[],b=0;this.ic=function(c){c&=255;if(0==a.length){if(0==(c&128))return String.fromCharCode(c);a.push(c);b=192==(c&224)?1:224==(c&240)?2:3;return""}if(b&&(a.push(c),b--,0<b))return"";var c=a[0],f=a[1],d=a[2],e=a[3];2==a.length?c=String.fromCharCode((c&31)<<6|f&63):3==a.length?c=String.fromCharCode((c&15)<<12|(f&63)<<6|d&63):(c=(c&7)<<18|(f&63)<<12|(d&63)<<6|e&63,c=String.fromCharCode(Math.floor((c-
65536)/1024)+55296,(c-65536)%1024+56320));a.length=0;return c};this.re=function(a){for(var a=unescape(encodeURIComponent(a)),b=[],d=0;d<a.length;d++)b.push(a.charCodeAt(d));return b}},hd:function(a){var b=X;X=X+a|0;X=X+7&-8;return b},md:function(a){var b=la;la=la+a|0;la=la+7&-8;return b},Ub:function(a){var b=Z;Z=Z+a|0;Z=Z+7&-8;Z>=ha&&aa("Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+ha+", or (2) set Module.TOTAL_MEMORY before the program runs.");
return b},qb:function(a,b){return Math.ceil(a/(b?b:8))*(b?b:8)},Mf:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},J:8,Fa:4,ji:0};e.Runtime=l;var ba=G,N,na;e.ccall=function(a,b,c,f){return qb(pb(a),b,c,f)};e.cwrap=function(a,b,c){var f=pb(a);return function(){return qb(f,b,c,Array.prototype.slice.call(arguments))}};e.setValue=ta;e.getValue=pa;var ja=0,ib=1,S=2,L=4;e.ALLOC_NORMAL=ja;e.ALLOC_STACK=ib;e.ALLOC_STATIC=S;e.ALLOC_DYNAMIC=3;e.ALLOC_NONE=L;e.allocate=D;e.Pointer_stringify=
R;e.UTF16ToString=function(a){for(var b=0,c="";;){var f=ea[a+2*b>>1];if(0==f)return c;++b;c+=String.fromCharCode(f)}};e.stringToUTF16=function(a,b){for(var c=0;c<a.length;++c)ea[b+2*c>>1]=a.charCodeAt(c);ea[b+2*a.length>>1]=0};e.UTF32ToString=function(a){for(var b=0,c="";;){var f=t[a+4*b>>2];if(0==f)return c;++b;65536<=f?(f-=65536,c+=String.fromCharCode(55296|f>>10,56320|f&1023)):c+=String.fromCharCode(f)}};e.stringToUTF32=function(a,b){for(var c=0,f=0;f<a.length;++f){var d=a.charCodeAt(f);if(55296<=
d&&57343>=d)var e=a.charCodeAt(++f),d=65536+((d&1023)<<10)|e&1023;t[b+4*c>>2]=d;++c}t[b+4*c>>2]=0};for(var v,T,ea,Wb,t,Ya,wa,oa,Xb=0,la=0,Zb=0,X=0,nb=0,$b=0,Z=0,hc=e.TOTAL_STACK||5242880,ha=e.TOTAL_MEMORY||16777216,da=4096;da<ha||da<2*hc;)da=16777216>da?2*da:da+16777216;da!==ha&&(e.ab("increasing TOTAL_MEMORY to "+da+" to be more reasonable"),ha=da);J("undefined"!==typeof Int32Array&&"undefined"!==typeof Float64Array&&!!(new Int32Array(1)).subarray&&!!(new Int32Array(1)).set,"Cannot fallback to non-typed array case: Code is too specialized");
var $=new ArrayBuffer(ha);v=new Int8Array($);ea=new Int16Array($);t=new Int32Array($);T=new Uint8Array($);Wb=new Uint16Array($);Ya=new Uint32Array($);wa=new Float32Array($);oa=new Float64Array($);t[0]=255;J(255===T[0]&&0===T[3],"Typed arrays 2 must be run on a little-endian system");e.HEAP=p;e.HEAP8=v;e.HEAP16=ea;e.HEAP32=t;e.HEAPU8=T;e.HEAPU16=Wb;e.HEAPU32=Ya;e.HEAPF32=wa;e.HEAPF64=oa;var cb=[],ka=[],lb=[],Ua=[],ub=[],Sa=G;e.addOnPreRun=e.ri=sb;e.addOnInit=e.oi=function(a){ka.unshift(a)};e.addOnPreMain=
e.qi=function(a){lb.unshift(a)};e.addOnExit=e.ni=function(a){Ua.unshift(a)};e.addOnPostRun=e.pi=tb;e.intArrayFromString=V;e.intArrayToString=function(a){for(var b=[],c=0;c<a.length;c++){var f=a[c];255<f&&(f&=255);b.push(String.fromCharCode(f))}return b.join("")};e.writeStringToMemory=function(a,b,c){a=V(a,c);for(c=0;c<a.length;)v[b+c|0]=a[c],c+=1};e.writeArrayToMemory=rb;e.writeAsciiToMemory=Ka;if(!Math.imul||-5!==Math.imul(4294967295,5))Math.imul=function(a,b){var c=a&65535,f=b&65535;return c*f+
((a>>>16)*f+c*(b>>>16)<<16)|0};Math.Pi=Math.imul;var ua=Math.abs,ic=Math.cos,jc=Math.sin,kc=Math.tan,lc=Math.acos,mc=Math.asin,nc=Math.atan2,oc=Math.exp,ac=Math.sqrt,Ja=Math.ceil,Ia=Math.floor,pc=Math.pow,va=Math.min,fa=0,eb=r,xa=r;e.addRunDependency=db;e.removeRunDependency=Ma;e.preloadedImages={};e.preloadedAudios={};Xb=8;la=Xb+215424;ka.push({Ka:function(){qc()}});var ma;ma=ma=D([0,0,0,0,0,0,0,0],"i8",S);var Ga;Ga=Ga=D([0,0,0,0,0,0,0,0],"i8",S);var Ha;Ha=Ha=D([0,0,0,0,0,0,0,0],"i8",S);D([31,139,
8,0,0,0,0,0,0,3,0,0,0,0,0,0,56,98,1,0,128,40,2,0,152,65,3,0,32,181,1,0,168,155,1,0,72,133,1,0,144,111,1,0,88,90,1,0,16,71,1,0,152,65,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,54,0,0,0,36,0,0,0,6,0,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,128,169,2,0,144,169,2,0,160,169,2,0,176,169,2,0,192,169,2,0,208,169,2,0,224,169,2,0,240,169,2,0,144,169,2,0,144,169,2,0,208,169,2,0,208,169,2,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,51,51,51,211,63,0,0,0,0,0,0,248,63,0,0,0,0,0,0,0,0,97,108,110,117,109,0,97,108,112,104,97,0,98,108,97,110,107,0,99,110,116,114,108,0,100,105,103,105,116,0,103,114,97,112,104,0,108,111,119,101,114,0,112,114,105,110,116,0,112,117,110,99,116,0,115,112,97,99,101,0,117,112,112,101,114,0,120,100,105,103,105,
116,0,0,0,0,0,0,0,0,216,122,2,0,192,107,2,0,232,87,2,0,248,75,2,0,168,64,2,0,104,52,2,0,144,40,2,0,160,28,2,0,152,18,2,0,136,8,2,0,232,255,1,0,56,246,1,0,248,233,1,0,176,224,1,0,192,218,1,0,128,215,1,0,48,0,0,0,0,0,0,0,116,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,122,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,8,0,0,0,46,0,0,0,14,0,0,0,48,0,0,0,42,0,0,0,0,0,0,0,38,0,0,0,96,0,0,0,36,0,0,0,100,0,0,0,70,0,0,0,26,
0,0,0,4,0,0,0,156,0,0,0,42,0,0,0,106,0,0,0,112,0,0,0,54,0,0,0,28,0,0,0,74,0,0,0,20,0,0,0,32,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,16,12,19,28,30,3,13,31,32,33,34,35,27,26,17,25,25,25,25,25,25,25,25,25,25,22,18,2,14,11,15,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,20,28,4,28,22,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,36,28,28,28,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,0,0,0,0,0,0,0,0,0,1,1,188,0,0,0,186,0,0,0,84,0,0,0,12,0,0,0,14,0,0,0,84,0,0,0,70,0,0,0,72,0,0,0,74,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,52,0,0,0,116,0,0,0,88,132,1,0,110,0,0,0,224,59,2,0,114,0,0,0,176,217,1,0,102,0,0,0,208,189,1,0,97,0,0,0,216,162,1,0,101,0,0,0,112,140,1,0,119,0,0,0,
224,118,1,0,87,0,0,0,96,98,1,0,115,0,0,0,224,77,1,0,83,0,0,0,192,59,1,0,100,0,0,0,144,140,2,0,68,0,0,0,64,124,2,0,0,0,0,0,0,0,0,0,104,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,60,0,0,0,38,0,0,0,8,0,0,0,16,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,
0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,
208,63,88,168,53,205,59,78,213,63,37,117,2,154,8,27,218,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,44,212,154,230,29,167,234,63,106,222,113,138,142,228,232,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,93,220,70,3,120,11,226,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,
0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,93,220,70,3,120,11,226,63,93,220,70,3,120,11,226,63,93,220,70,3,120,11,226,63,13,113,172,139,219,104,220,63,100,93,220,70,3,120,237,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,16,122,54,171,62,87,229,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,181,21,251,203,238,201,225,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,88,168,53,205,59,78,213,
63,136,133,90,211,188,227,216,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,196,66,173,105,222,113,236,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,181,21,251,203,238,201,225,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,181,21,251,203,238,201,225,63,120,11,36,40,126,140,227,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,134,56,214,197,109,52,238,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,88,168,53,205,59,78,213,
63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,166,10,70,37,117,2,222,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,106,222,113,138,142,228,232,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,
0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,136,133,90,211,188,227,216,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,210,111,95,7,206,25,231,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,244,108,86,125,174,182,222,63,17,54,60,189,82,150,201,63,244,108,86,125,174,182,222,63,59,1,77,132,13,79,225,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,
0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,
0,208,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,62,232,217,172,250,92,197,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,130,115,70,148,246,6,199,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,7,240,22,72,80,252,
220,63,162,180,55,248,194,100,214,63,88,168,53,205,59,78,213,63,13,113,172,139,219,104,220,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,208,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,88,168,53,205,59,
78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,196,66,173,105,222,113,236,63,0,0,0,0,0,0,
208,63,127,217,61,121,88,168,209,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,120,11,36,40,126,140,227,63,210,111,95,7,206,25,231,63,196,66,173,105,222,113,236,63,19,242,65,207,102,213,211,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,16,122,54,171,62,87,229,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,
0,0,0,0,0,0,224,63,210,111,95,7,206,25,231,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,72,210,1,0,64,0,0,0,144,164,1,0,144,0,0,0,232,161,1,0,76,0,0,0,72,66,1,0,174,0,0,0,56,160,1,0,196,0,0,0,128,158,1,0,10,0,0,0,96,188,1,0,102,0,0,0,16,64,1,0,92,0,0,0,248,154,1,0,130,0,0,0,88,153,1,0,190,0,0,0,104,151,1,0,78,0,0,0,8,149,1,0,36,0,0,0,128,146,1,0,116,0,0,0,208,142,1,0,54,0,0,0,72,61,1,0,158,0,0,0,80,138,1,0,32,0,0,0,136,136,1,0,38,0,0,0,120,134,
1,0,58,0,0,0,208,132,1,0,58,0,0,0,80,131,1,0,128,0,0,0,152,129,1,0,136,0,0,0,18,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,17,34,35,36,17,37,38,39,40,41,42,43,44,17,45,46,47,16,16,48,16,16,16,16,16,16,16,49,50,51,16,52,53,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,54,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,55,17,17,17,17,56,17,57,58,59,60,61,62,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,63,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,64,65,17,66,67,68,69,70,71,72,73,16,16,16,74,75,76,77,78,16,16,16,79,80,16,16,16,16,81,16,16,16,16,16,16,16,16,16,17,17,17,82,83,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,84,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,85,16,16,16,16,86,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,87,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,88,89,90,91,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,92,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,254,255,255,7,254,255,255,7,0,0,0,0,0,4,32,4,255,255,127,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,195,255,3,0,
31,80,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,223,60,64,215,255,255,251,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,254,255,255,255,127,2,254,255,255,255,255,0,0,0,0,0,255,191,182,0,255,255,255,7,7,0,0,0,255,7,255,255,255,255,255,255,255,254,255,195,255,255,255,255,255,255,255,255,255,255,255,255,239,31,254,225,255,159,0,0,255,255,255,255,255,255,0,224,255,255,
255,255,255,255,255,255,255,255,255,255,3,0,255,255,255,255,255,7,48,4,255,255,255,252,255,31,0,0,255,255,255,1,0,0,0,0,0,0,0,0,253,31,0,0,0,0,0,0,240,3,255,127,255,255,255,255,255,255,255,239,255,223,225,255,207,255,254,254,238,159,249,255,255,253,197,227,159,89,128,176,207,255,3,0,238,135,249,255,255,253,109,195,135,25,2,94,192,255,63,0,238,191,251,255,255,253,237,227,191,27,1,0,207,255,0,0,238,159,249,255,255,253,237,227,159,25,192,176,207,255,2,0,236,199,61,214,24,199,255,195,199,29,129,0,192,
255,0,0,238,223,253,255,255,253,239,227,223,29,96,3,207,255,0,0,236,223,253,255,255,253,239,227,223,29,96,64,207,255,6,0,236,223,253,255,255,255,255,231,223,93,128,0,207,255,0,252,236,255,127,252,255,255,251,47,127,128,95,255,0,0,12,0,254,255,255,255,255,127,255,7,63,32,255,3,0,0,0,0,150,37,240,254,174,236,255,59,95,32,255,243,0,0,0,0,1,0,0,0,255,3,0,0,255,254,255,255,255,31,254,255,3,255,255,254,255,255,255,31,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,249,255,3,255,255,231,193,255,255,127,64,255,
51,255,255,255,255,191,32,255,255,255,255,255,247,255,255,255,255,255,255,255,255,255,61,127,61,255,255,255,255,255,61,255,255,255,255,61,127,61,255,127,255,255,255,255,255,255,255,61,255,255,255,255,255,255,255,255,135,0,0,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,31,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,159,255,255,254,255,255,7,255,255,255,
255,255,255,255,255,255,199,1,0,255,223,15,0,255,255,15,0,255,255,15,0,255,223,13,0,255,255,255,255,255,255,207,255,255,1,128,16,255,3,0,0,0,0,255,3,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,7,255,255,255,255,255,255,255,255,63,0,255,255,255,31,255,15,255,1,192,255,255,255,255,63,31,0,255,255,255,255,255,15,255,255,255,3,255,3,0,0,0,0,255,255,255,15,255,255,255,255,255,255,255,127,254,255,31,0,255,3,255,3,128,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,239,255,239,15,255,
3,0,0,0,0,255,255,255,255,255,243,255,255,255,255,255,255,191,255,3,0,255,255,255,255,255,255,63,0,255,227,255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,222,111,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,255,255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,132,252,47,62,80,189,255,243,224,67,
0,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,0,255,255,255,255,255,127,255,255,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,120,12,0,255,255,255,255,191,32,255,255,255,255,255,255,255,128,0,0,255,255,127,0,127,127,127,127,127,127,127,127,255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,254,3,62,31,254,255,255,255,255,255,255,255,255,
255,127,224,254,255,255,255,255,255,255,255,255,255,255,247,224,255,255,255,255,63,254,255,255,255,255,255,255,255,255,255,255,127,0,0,255,255,255,7,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,255,255,255,255,255,63,
255,31,255,255,255,15,0,0,255,255,255,255,255,127,240,143,255,255,255,128,255,255,255,255,255,255,255,255,255,255,0,0,0,0,128,255,252,255,255,255,255,255,255,255,255,255,255,255,255,121,15,0,255,7,0,0,0,0,0,0,0,0,0,255,187,247,255,255,255,0,0,0,255,255,255,255,255,255,15,0,255,255,255,255,255,255,255,255,15,0,255,3,0,0,252,8,255,255,255,255,255,7,255,255,255,255,7,0,255,255,255,31,255,255,255,255,255,255,247,255,0,128,255,3,0,0,0,0,255,255,255,255,255,255,127,0,255,63,255,3,255,255,127,4,255,255,
255,255,255,255,255,127,5,0,0,56,255,255,60,0,126,126,126,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,7,255,3,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,255,127,248,255,255,255,255,255,15,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,0,127,0,248,224,255,253,127,95,219,255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,248,255,255,255,255,255,255,255,255,
255,255,255,255,63,0,0,255,255,255,255,255,255,255,255,252,255,255,255,255,255,255,0,0,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,255,3,254,255,255,7,254,255,255,7,192,255,255,255,255,255,255,255,255,255,255,127,252,252,252,28,0,0,0,0,255,239,255,255,127,255,255,183,255,63,255,63,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,255,255,255,1,0,0,0,0,0,255,255,255,127,0,0,255,255,255,7,0,0,0,0,0,0,255,255,255,63,255,255,255,255,15,255,62,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,3,0,0,0,0,0,0,0,0,0,0,63,253,255,255,255,255,191,145,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,63,0,255,255,255,3,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,111,240,239,254,255,255,15,0,0,0,0,0,255,
255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,63,0,255,255,63,0,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,63,0,0,0,192,255,0,0,252,255,255,255,255,255,255,1,0,0,255,255,255,1,255,3,255,255,255,255,255,255,199,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,30,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,63,0,255,3,0,0,0,0,0,0,255,255,
255,255,255,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,31,0,255,255,255,255,255,127,0,0,248,255,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,
255,255,255,255,255,255,223,255,255,255,255,255,255,255,255,223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,255,123,95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,253,255,255,247,255,255,255,247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,255,253,255,255,255,253,255,255,247,207,255,255,255,255,255,255,239,255,
255,255,150,254,247,10,132,234,150,170,150,247,247,94,255,251,255,15,238,251,255,15,0,0,0,0,0,0,0,0,18,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,16,16,34,35,16,36,37,38,39,40,41,42,43,16,44,45,46,17,47,48,17,17,49,17,17,17,50,51,52,53,54,55,56,57,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,58,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,59,16,60,61,62,63,64,65,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,66,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,67,16,16,68,16,69,70,71,16,72,16,73,16,16,16,16,74,75,76,77,16,16,78,16,79,80,16,16,16,16,81,16,16,16,16,16,16,16,16,16,16,16,16,16,82,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,83,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,84,85,86,87,
16,16,88,89,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,90,16,91,92,93,94,95,96,97,98,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,254,255,0,252,1,0,0,248,1,0,0,120,0,0,0,0,255,251,223,251,0,0,128,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,252,255,224,175,255,255,255,255,255,255,
255,255,255,255,223,255,255,255,255,255,32,64,176,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,0,134,254,255,255,255,0,64,73,0,0,0,0,0,24,0,223,255,0,200,0,0,0,0,0,0,0,1,0,60,0,0,0,0,0,0,0,0,0,0,0,0,16,224,1,30,0,96,255,191,0,0,0,0,0,0,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,207,3,0,0,0,3,0,32,255,127,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,0,0,16,0,32,30,0,48,0,1,0,0,0,0,0,0,0,0,16,
0,32,0,0,0,0,252,15,0,0,0,0,0,0,0,16,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,3,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,253,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,255,7,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,255,0,0,0,0,0,0,0,16,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,63,2,0,0,0,0,0,0,0,0,0,4,0,0,0,0,16,0,0,0,0,0,0,128,0,128,192,223,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,254,255,255,255,0,252,255,255,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,192,255,223,255,7,0,0,0,0,0,0,0,0,0,0,128,6,0,252,0,0,24,62,0,0,128,191,
0,204,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,96,255,255,255,31,0,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,1,0,0,24,0,0,0,0,0,0,0,0,0,56,0,0,0,0,16,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,254,127,47,0,0,255,3,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,255,255,255,0,0,0,192,0,0,0,0,0,0,0,0,1,0,224,159,0,0,0,0,127,
63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,0,252,255,255,255,31,0,0,0,0,0,12,0,0,0,0,0,0,64,0,12,240,0,0,0,0,0,0,192,248,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,255,0,255,255,255,33,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,127,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,3,224,0,224,0,224,0,96,128,248,255,255,255,252,255,255,255,255,255,127,31,252,241,127,255,127,0,0,255,255,255,3,0,0,255,255,255,255,1,0,123,3,208,193,175,66,0,12,31,188,255,255,0,0,0,0,0,2,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,255,255,255,127,0,0,0,255,7,0,0,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,0,252,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,135,3,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,127,255,15,0,0,0,0,0,0,0,0,255,255,255,251,255,255,255,255,255,255,255,255,255,255,15,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,255,15,30,255,255,255,1,252,193,224,0,0,0,0,0,0,0,0,0,0,0,30,1,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,255,255,255,255,
15,0,0,0,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,25