d3-graphviz
Version:
Graphviz DOT rendering and animated transitions for D3
1 lines • 762 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("d3-selection"),require("d3-dispatch"),require("d3-transition"),require("d3-timer"),require("d3-interpolate"),require("d3-zoom"),require("d3-format"),require("d3-path")):"function"==typeof define&&define.amd?define(["exports","d3-selection","d3-dispatch","d3-transition","d3-timer","d3-interpolate","d3-zoom","d3-format","d3-path"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["d3-graphviz"]={},t.d3,t.d3,t.d3,t.d3,t.d3,t.d3,t.d3,t.d3)}(this,(function(t,e,r,o,n,i,a,s,u){"use strict";function l(t){var e=Object.create(null);return t&&Object.keys(t).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o.get?o:{enumerable:!0,get:function(){return t[r]}})}})),e.default=t,Object.freeze(e)}var c=l(e);function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=Array(e);r<e;r++)o[r]=t[r];return o}function p(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,e||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function h(t){return function(t){if(Array.isArray(t))return d(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return d(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(t){var e={},r=t.node().nodeName;e.tag=r,"#text"==r?e.text=t.text():"#comment"==r&&(e.comment=t.text()),e.attributes={};var o=t.node().attributes;if(o)for(var n=0;n<o.length;n++){var i=o[n],a=i.name,s=i.value;e.attributes[a]=s}var u=t.node().transform;if(u&&0!=u.baseVal.numberOfItems){var l=u.baseVal.consolidate().matrix;e.translation={x:l.e,y:l.f},e.scale=l.a}if("ellipse"==r&&(e.center={x:e.attributes.cx,y:e.attributes.cy}),"polygon"==r){var c=(g=t.attr("points").split(" ")).map((function(t){return t.split(",")[0]})),d=g.map((function(t){return t.split(",")[1]})),p=Math.min.apply(null,c),h=Math.max.apply(null,c),f={x:p,y:v=Math.min.apply(null,d),width:h-p,height:(_=Math.max.apply(null,d))-v};e.bbox=f,e.center={x:(p+h)/2,y:(v+_)/2}}if("path"==r){var g;(g=t.attr("d").split(/[A-Z ]/)).shift();var v,_;c=g.map((function(t){return+t.split(",")[0]})),d=g.map((function(t){return+t.split(",")[1]})),p=Math.min.apply(null,c),h=Math.max.apply(null,c),f={x:p,y:v=Math.min.apply(null,d),width:h-p,height:(_=Math.max.apply(null,d))-v};e.bbox=f,e.center={x:(p+h)/2,y:(v+_)/2},e.totalLength=t.node().getTotalLength()}return"text"==r&&(e.center={x:t.attr("x"),y:t.attr("y")}),"#text"==r?e.text=t.text():"#comment"==r&&(e.comment=t.text()),e}function g(t){var e=f(t);return e.children=[],c.selectAll(t.node().childNodes).each((function(){var t=g(c.select(this));t.parent=e,e.children.push(t)})),e}function v(t){return"#text"==t.tag?document.createTextNode(""):"#comment"==t.tag?document.createComment(t.comment):document.createElementNS("http://www.w3.org/2000/svg",t.tag)}function _(t){for(var e=v(t),r=c.select(e),o=t.attributes,n=0,i=Object.keys(o);n<i.length;n++){var a=i[n],s=o[a];r.attr(a,s)}return e}function m(t,e){var r=c.select(t.node().parentNode),o=_(e),n=r.insert((function(){return o}),(function(){return t.node()}));return t.remove(),n}function y(t,e){!function(t,e){t.datum(e),t.data([e],(function(t){return t.key}))}(t,e),c.selectAll(t.node().childNodes).each((function(t,r){y(c.select(this),e.children[r])}))}function w(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=c.select(this);t.tag;var o=t.attributes,n=r.node().attributes;if(n)for(var i=0;i<n.length;i++){var a=n[i],s=a.name;if("xmlns"!=s.split(":")[0]&&a.namespaceURI){var u=a.namespaceURI.split("/");s=u[u.length-1]+":"+s}s in o||(o[s]=null)}for(var l=0,d=Object.keys(o);l<d.length;l++){var p=d[l];r.attr(p,o[p])}t.text&&r.text(t.text),function(t,e){var r=t.selectAll((function(){return t.node().childNodes})),o=(r=r.data((function(t){return t.children}),(function(t){return t.tag+"-"+e}))).enter().append((function(t){return v(t)})),n=r.exit();n=n.remove(),r=o.merge(r);var i={};r.each((function(t){var e=t.tag;null==i[e]&&(i[e]=0);var r=i[e]++;w.call(this,t,r)}))}(r,e)}function b(){var t=this;var e=this._selection,r=c.select(e.node().querySelector("svg"));if(0==r.size())return this;this._zoomSelection=r;var o=a.zoom().scaleExtent(this._options.zoomScaleExtent).translateExtent(this._options.zoomTranslateExtent).interpolate(i.interpolate).on("zoom",(function(e){c.select(r.node().querySelector("g")).attr("transform",e.transform),t._dispatch.call("zoom",t)}));this._zoomBehavior=o;var n=c.select(r.node().querySelector("g"));return r.call(o),this._active||M.call(this,n),this._originalTransform=a.zoomTransform(r.node()),this}function E(t){var e=this._translation,r=this._scale,o=t.datum().translation,n=t.datum().scale,i=a.zoomTransform(this._zoomSelection.node());return e&&(i=(i=i.scale(1/r)).translate(-e.x,-e.y)),i=(i=i.translate(o.x,o.y)).scale(n)}function M(t){this._zoomBehavior.transform(this._zoomSelection,E.call(this,t)),this._translation=t.datum().translation,this._scale=t.datum().scale,this._originalTransform=a.zoomIdentity.translate(t.datum().translation.x,t.datum().translation.y).scale(t.datum().scale)}function D(t,e){return function(){var r=t.map((function(t){return i.interpolate([t[0][0],t[0][1]],[t[1][0],t[1][1]])}));return function(t){return t<1?"M"+r.map((function(e){return e(t)})).join("L"):e}}}function x(t){return"edge"==t.attributes.class||"a"==t.tag&&"g"==t.parent.tag&&"edge"==t.parent.parent.attributes.class}function k(t){return t.parent&&x(t.parent)}function L(t){var e=this._transition,r=this._options.fade&&null!=e,o=this._options.tweenPaths,n=this._options.tweenShapes,s=this._options.convertEqualSidedPolygons,u=this._options.growEnteringEdges&&null!=e,l=this._attributer,d=this;function p(t){var h=c.select(this);if("svg"==t.tag){var g=d._options;if(null!=g.width||null!=g.height){var _=g.width,y=g.height;null==_?_=4*t.attributes.width.replace("pt","")/3:(h.attr("width",_),t.attributes.width=_),null==y?y=4*t.attributes.height.replace("pt","")/3:(h.attr("height",y),t.attributes.height=y),g.fit||(h.attr("viewBox","0 0 ".concat(3*_/4/g.scale," ").concat(3*y/4/g.scale)),t.attributes.viewBox="0 0 ".concat(3*_/4/g.scale," ").concat(3*y/4/g.scale))}1!=g.scale&&(g.fit||null==g.width&&null==g.height)&&(_=t.attributes.viewBox.split(" ")[2],y=t.attributes.viewBox.split(" ")[3],h.attr("viewBox","0 0 ".concat(_/g.scale," ").concat(y/g.scale)),t.attributes.viewBox="0 0 ".concat(_/g.scale," ").concat(y/g.scale))}l&&h.each(l);var w=t.tag,b=t.attributes,L=h.node().attributes;if(L)for(var R=0;R<L.length;R++){var B=L[R],X=B.name;if("xmlns"!=X.split(":")[0]&&B.namespaceURI){var F=B.namespaceURI.split("/");X=F[F.length-1]+":"+X}X in b||(b[X]=null)}var O=!1,G=!1;if(n&&e){if("polygon"!=this.nodeName&&"ellipse"!=this.nodeName||!t.alternativeOld||(G=!0),"polygon"!=w&&"ellipse"!=w||!t.alternativeNew||(O=!0),"polygon"==this.nodeName&&"polygon"==w&&t.alternativeOld){var N=f(h).attributes.points;if(!s){var U=N.split(" ").length;($=t.attributes.points).split(" ").length==U&&(O=!1,G=!1)}}if(G){var I=t.alternativeOld,V=m(h,I);V.data([t],(function(){return t.key})),h=V}if(O)w="path",b=t.alternativeNew.attributes}var C=h;if(e&&(C=C.transition(e),r&&C.filter((function(t){return"#"==t.tag[0]?null:this})).style("opacity",1),C.filter((function(t){return"#"==t.tag[0]?null:this})).on("end",(function(t){c.select(this).attr("style",t&&t.attributes&&t.attributes.style||null)}))),u&&"path"==w&&t.offset){var z=t.totalLength;h.attr("stroke-dasharray",z+" "+z).attr("stroke-dashoffset",z).attr("transform","translate("+t.offset.x+","+t.offset.y+")"),b["stroke-dashoffset"]=0,b.transform="translate(0,0)",C.attr("stroke-dashoffset",b["stroke-dashoffset"]).attr("transform",b.transform).on("start",(function(){c.select(this).style("opacity",null)})).on("end",(function(){c.select(this).attr("stroke-dashoffset",null).attr("stroke-dasharray",null).attr("transform",null)}))}if(u&&"polygon"==w&&k(t)&&t.offset&&"path"==t.parent.children[3].tag){var K=c.select(h.node().parentNode.querySelector("path")),P=K.node().getPointAtLength(0),Z=K.node().getPointAtLength(t.totalLength),j=K.node().getPointAtLength(t.totalLength-1),S=180*Math.atan2(Z.y-j.y,Z.x-j.x)/Math.PI,Y=P.x-Z.x+t.offset.x,T=P.y-Z.y+t.offset.y;h.attr("transform","translate("+Y+","+T+")"),C.attrTween("transform",(function(){return function(e){var r=K.node().getPointAtLength(t.totalLength*e),o=K.node().getPointAtLength(t.totalLength*e+1),n=180*Math.atan2(o.y-r.y,o.x-r.x)/Math.PI-S;return Y=r.x-Z.x+t.offset.x*(1-e),T=r.y-Z.y+t.offset.y*(1-e),"translate("+Y+","+T+") rotate("+n+" "+Z.x+" "+Z.y+")"}})).on("start",(function(){c.select(this).style("opacity",null)})).on("end",(function(){c.select(this).attr("transform",null)}))}for(var J=o&&e&&"path"==w&&null!=h.attr("d"),H=0,Q=Object.keys(b);H<Q.length;H++){var q=Q[H],W=b[q];if(J&&"d"==q){var $;($=(t.alternativeOld||t).points)&&C.attrTween("d",D($,W))}else{if("transform"==q&&t.translation)if(e){var A=C.on("end");C.on("start",(function(){d._zoomBehavior&&C.tween("attr.transform",(function(){var t=this;return function(e){t.setAttribute("transform",i.interpolateTransformSvg(a.zoomTransform(d._zoomSelection.node()).toString(),E.call(d,h).toString())(e))}}))})).on("end",(function(){A.call(this),d._zoomBehavior&&M.call(d,h)}))}else d._zoomBehavior&&(M.call(d,h),W=E.call(d,h).toString());C.attr(q,W)}}O&&C.on("end",(function(t,e,r){m(V=c.select(this),t).data([t],(function(){return t.key}))})),t.text&&C.text(t.text),function(t){var o=t.selectAll((function(){return t.node().childNodes})),n=(o=o.data((function(t){return t.children}),(function(t){return t.key}))).enter().append((function(t){var e=v(t);return"#text"==t.tag&&r&&(e.nodeValue=t.text),e}));(r||u&&x(t.datum()))&&n.filter((function(t){return"#"==t.tag[0]?null:this})).each((function(t){for(var e=c.select(this),r=0,o=Object.keys(t.attributes);r<o.length;r++){var n=o[r],i=t.attributes[n];e.attr(n,i)}})).filter((function(t){return"svg"==t.tag||"g"==t.tag?null:this})).style("opacity",0);var i=o.exit();l&&i.each(l),e&&(i=i.transition(e),r&&i.filter((function(t){return"#"==t.tag[0]?null:this})).style("opacity",0)),i=i.remove(),(o=n.merge(o).order()).each(p)}(h)}var h=this._selection;if(null!=e){var g=this._jobs;if(d._active)return g.push(null),this;h.transition(e).transition().duration(0).on("end",(function(){d._active=!1,0!=g.length&&(g.shift(),d.render())})),this._active=!0}null!=e&&h.transition(e).on("start",(function(){d._dispatch.call("transitionStart",d)})).on("end",(function(){d._dispatch.call("transitionEnd",d)})).transition().duration(0).on("start",(function(){d._dispatch.call("restoreEnd",d),d._dispatch.call("end",d),t&&t.call(d)}));var _=this._data,y=h.selectAll("svg").data([_],(function(t){return t.key}));return y=y.enter().append("svg").merge(y),p.call(y.node(),_),this._options.zoom&&!this._zoomBehavior&&b.call(this),d._dispatch.call("renderEnd",d),null==e&&(this._dispatch.call("end",this),t&&t.call(this)),this}var R=ArrayBuffer,B=Uint8Array,X=Uint16Array,F=Int16Array,O=Int32Array,G=function(t,e,r){if(B.prototype.slice)return B.prototype.slice.call(t,e,r);(null==e||e<0)&&(e=0),(null==r||r>t.length)&&(r=t.length);var o=new B(r-e);return o.set(t.subarray(e,r)),o},N=function(t,e,r,o){if(B.prototype.fill)return B.prototype.fill.call(t,e,r,o);for((null==r||r<0)&&(r=0),(null==o||o>t.length)&&(o=t.length);r<o;++r)t[r]=e;return t},U=function(t,e,r,o){if(B.prototype.copyWithin)return B.prototype.copyWithin.call(t,e,r,o);for((null==r||r<0)&&(r=0),(null==o||o>t.length)&&(o=t.length);r<o;)t[e++]=t[r++]},I=["invalid zstd data","window size too large (>2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],V=function(t,e,r){var o=new Error(e||I[t]);if(o.code=t,Error.captureStackTrace&&Error.captureStackTrace(o,V),!r)throw o;return o},C=function(t,e,r){for(var o=0,n=0;o<r;++o)n|=t[e++]<<(o<<3);return n},z=function(t,e){var r=t[0]|t[1]<<8|t[2]<<16;if(3126568==r&&253==t[3]){var o=t[4],n=o>>5&1,i=o>>2&1,a=3&o,s=o>>6;8&o&&V(0);var u=6-n,l=3==a?4:a,c=C(t,u,l),d=s?1<<s:n,p=C(t,u+=l,d)+(1==s&&256),h=p;if(!n){var f=1<<10+(t[5]>>3);h=f+(f>>3)*(7&t[5])}h>2145386496&&V(1);var g=new B((1==e?p||h:e?0:h)+12);return g[0]=1,g[4]=4,g[8]=8,{b:u+d,y:0,l:0,d:c,w:e&&1!=e?e:g.subarray(12),e:h,o:new O(g.buffer,0,3),u:p,c:i,m:Math.min(131072,h)}}if(25481893==(r>>4|t[3]<<20))return function(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0}(t,4)+8;V(0)},K=function(t){for(var e=0;1<<e<=t;++e);return e-1},P=function(t,e,r){var o=4+(e<<3),n=5+(15&t[e]);n>r&&V(3);for(var i=1<<n,a=i,s=-1,u=-1,l=-1,c=i,d=new R(512+(i<<2)),p=new F(d,0,256),h=new X(d,0,256),f=new X(d,512,i),g=512+(i<<1),v=new B(d,g,i),_=new B(d,g+i);s<255&&a>0;){var m=K(a+1),y=o>>3,w=(1<<m+1)-1,b=(t[y]|t[y+1]<<8|t[y+2]<<16)>>(7&o)&w,E=(1<<m)-1,M=w-a-1,D=b&E;if(D<M?(o+=m,b=D):(o+=m+1,b>E&&(b-=M)),p[++s]=--b,-1==b?(a+=b,v[--c]=s):a-=b,!b)do{var x=o>>3;u=(t[x]|t[x+1]<<8)>>(7&o)&3,o+=2,s+=u}while(3==u)}(s>255||a)&&V(0);for(var k=0,L=(i>>1)+(i>>3)+3,O=i-1,G=0;G<=s;++G){var N=p[G];if(N<1)h[G]=-N;else for(l=0;l<N;++l){v[k]=G;do{k=k+L&O}while(k>=c)}}for(k&&V(0),l=0;l<i;++l){var U=h[v[l]]++,I=_[l]=n-K(U);f[l]=(U<<I)-i}return[o+7>>3,{b:n,s:v,n:_,t:f}]},Z=P(new B([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1],j=P(new B([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1],S=P(new B([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1],Y=function(t,e){for(var r=t.length,o=new O(r),n=0;n<r;++n)o[n]=e,e+=1<<t[n];return o},T=new B(new O([0,0,0,0,16843009,50528770,134678020,202050057,269422093]).buffer,0,36),J=Y(T,0),H=new B(new O([0,0,0,0,0,0,0,0,16843009,50528770,117769220,185207048,252579084,16]).buffer,0,53),Q=Y(H,3),q=function(t,e,r){var o=t.length,n=e.length,i=t[o-1],a=(1<<r.b)-1,s=-r.b;i||V(0);for(var u=0,l=r.b,c=(o<<3)-8+K(i)-l,d=-1;c>s&&d<n;){var p=c>>3;u=(u<<l|(t[p]|t[p+1]<<8|t[p+2]<<16)>>(7&c))&a,e[++d]=r.s[u],c-=l=r.n[u]}(c!=s||d+1!=n)&&V(0)},W=function(t,e,r){var o=6,n=e.length+3>>2,i=n<<1,a=n+i;q(t.subarray(o,o+=t[0]|t[1]<<8),e.subarray(0,n),r),q(t.subarray(o,o+=t[2]|t[3]<<8),e.subarray(n,i),r),q(t.subarray(o,o+=t[4]|t[5]<<8),e.subarray(i,a),r),q(t.subarray(o),e.subarray(a),r)},$=function(t,e,r){var o,n=e.b,i=t[n],a=i>>1&3;e.l=1&i;var s=i>>3|t[n+1]<<5|t[n+2]<<13,u=(n+=3)+s;if(1==a)return n>=t.length?void 0:(e.b=n+1,r?(N(r,t[n],e.y,e.y+=s),r):N(new B(s),t[n]));if(!(u>t.length)){if(0==a)return e.b=u,r?(r.set(t.subarray(n,u),e.y),e.y+=s,r):G(t,n,u);if(2==a){var l=t[n],c=3&l,d=l>>2&3,p=l>>4,h=0,f=0;c<2?1&d?p|=t[++n]<<4|(2&d&&t[++n]<<12):p=l>>3:(f=d,d<2?(p|=(63&t[++n])<<4,h=t[n]>>6|t[++n]<<2):2==d?(p|=t[++n]<<4|(3&t[++n])<<12,h=t[n]>>2|t[++n]<<6):(p|=t[++n]<<4|(63&t[++n])<<12,h=t[n]>>6|t[++n]<<2|t[++n]<<10)),++n;var g=r?r.subarray(e.y,e.y+e.m):new B(e.m),v=g.length-p;if(0==c)g.set(t.subarray(n,n+=p),v);else if(1==c)N(g,t[n++],v);else{var _=e.h;if(2==c){var m=function(t,e){var r=0,o=-1,n=new B(292),i=t[e],a=n.subarray(0,256),s=n.subarray(256,268),u=new X(n.buffer,268);if(i<128){var l=P(t,e+1,6),c=l[0],d=l[1],p=c<<3,h=t[e+=i];h||V(0);for(var f=0,g=0,v=d.b,_=v,m=(++e<<3)-8+K(h);!((m-=v)<p);){var y=m>>3;if(f+=(t[y]|t[y+1]<<8)>>(7&m)&(1<<v)-1,a[++o]=d.s[f],(m-=_)<p)break;g+=(t[y=m>>3]|t[y+1]<<8)>>(7&m)&(1<<_)-1,a[++o]=d.s[g],v=d.n[f],f=d.t[f],_=d.n[g],g=d.t[g]}++o>255&&V(0)}else{for(o=i-127;r<o;r+=2){var w=t[++e];a[r]=w>>4,a[r+1]=15&w}++e}var b=0;for(r=0;r<o;++r)(x=a[r])>11&&V(0),b+=x&&1<<x-1;var E=K(b)+1,M=1<<E,D=M-b;for(D&D-1&&V(0),a[o++]=K(D)+1,r=0;r<o;++r){var x=a[r];++s[a[r]=x&&E+1-x]}var k=new B(M<<1),L=k.subarray(0,M),R=k.subarray(M);for(u[E]=0,r=E;r>0;--r){var F=u[r];N(R,r,F,u[r-1]=F+s[r]*(1<<E-r))}for(u[0]!=M&&V(0),r=0;r<o;++r){var O=a[r];if(O){var G=u[O];N(L,r,G,u[O]=G+(1<<E-O))}}return[e,{n:R,b:E,s:L}]}(t,n);h+=n-(n=m[0]),e.h=_=m[1]}else _||V(0);(f?W:q)(t.subarray(n,n+=h),g.subarray(v),_)}var y=t[n++];if(y){255==y?y=32512+(t[n++]|t[n++]<<8):y>127&&(y=y-128<<8|t[n++]);var w=t[n++];3&w&&V(0);for(var b=[j,S,Z],E=2;E>-1;--E){var M=w>>2+(E<<1)&3;if(1==M){var D=new B([0,0,t[n++]]);b[E]={s:D.subarray(2,3),n:D.subarray(0,1),t:new X(D.buffer,0,1),b:0}}else 2==M?(n=(o=P(t,n,9-(1&E)))[0],b[E]=o[1]):3==M&&(e.t||V(0),b[E]=e.t[E])}var x=e.t=b,k=x[0],L=x[1],R=x[2],F=t[u-1];F||V(0);var O=(u<<3)-8+K(F)-R.b,U=O>>3,I=0,C=(t[U]|t[U+1]<<8)>>(7&O)&(1<<R.b)-1,z=(t[U=(O-=L.b)>>3]|t[U+1]<<8)>>(7&O)&(1<<L.b)-1,Y=(t[U=(O-=k.b)>>3]|t[U+1]<<8)>>(7&O)&(1<<k.b)-1;for(++y;--y;){var $=R.s[C],A=R.n[C],tt=k.s[Y],et=k.n[Y],rt=L.s[z],ot=L.n[z],nt=1<<rt,it=nt+((t[U=(O-=rt)>>3]|t[U+1]<<8|t[U+2]<<16|t[U+3]<<24)>>>(7&O)&nt-1);U=(O-=H[tt])>>3;var at=Q[tt]+((t[U]|t[U+1]<<8|t[U+2]<<16)>>(7&O)&(1<<H[tt])-1);U=(O-=T[$])>>3;var st=J[$]+((t[U]|t[U+1]<<8|t[U+2]<<16)>>(7&O)&(1<<T[$])-1);if(U=(O-=A)>>3,C=R.t[C]+((t[U]|t[U+1]<<8)>>(7&O)&(1<<A)-1),U=(O-=et)>>3,Y=k.t[Y]+((t[U]|t[U+1]<<8)>>(7&O)&(1<<et)-1),U=(O-=ot)>>3,z=L.t[z]+((t[U]|t[U+1]<<8)>>(7&O)&(1<<ot)-1),it>3)e.o[2]=e.o[1],e.o[1]=e.o[0],e.o[0]=it-=3;else{var ut=it-(0!=st);ut?(it=3==ut?e.o[0]-1:e.o[ut],ut>1&&(e.o[2]=e.o[1]),e.o[1]=e.o[0],e.o[0]=it):it=e.o[0]}for(E=0;E<st;++E)g[I+E]=g[v+E];v+=st;var lt=(I+=st)-it;if(lt<0){var ct=-lt,dt=e.e+lt;ct>at&&(ct=at);for(E=0;E<ct;++E)g[I+E]=e.w[dt+E];I+=ct,at-=ct,lt=0}for(E=0;E<at;++E)g[I+E]=g[lt+E];I+=at}if(I!=v)for(;v<g.length;)g[I++]=g[v++];else I=g.length;r?e.y+=I:g=G(g,0,I)}else if(r){if(e.y+=p,v)for(E=0;E<p;++E)g[E]=g[v+E]}else v&&(g=G(g,v));return e.b=u,g}V(2)}},A=function(t,e){if(1==t.length)return t[0];for(var r=new B(e),o=0,n=0;o<t.length;++o){var i=t[o];r.set(i,n),n+=i.length}return r};var tt=(typeof document<"u"&&document.currentScript,function(t={}){var e,r,o,n,i=t,a=new Promise(((t,o)=>{e=t,r=o})),s=Object.assign({},i),u="",l=console.log.bind(console),c=console.error.bind(console);Object.assign(i,s),s=null,i.wasmBinary&&(n=i.wasmBinary);var d,p,h,f,g,v,_,m=!1;function y(t,e){t||R(e)}function w(){var t=d.buffer;i.HEAP8=p=new Int8Array(t),i.HEAP16=f=new Int16Array(t),i.HEAPU8=h=new Uint8Array(t),i.HEAPU16=new Uint16Array(t),i.HEAP32=g=new Int32Array(t),i.HEAPU32=v=new Uint32Array(t),i.HEAPF32=new Float32Array(t),i.HEAPF64=_=new Float64Array(t)}var b=[],E=[],M=[],D=0,x=null;function k(t){D++}function L(t){if(0==--D&&x){var e=x;x=null,e()}}function R(t){c(t="Aborted("+t+")"),m=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw r(e),e}var B,X=t=>t.startsWith("data:application/octet-stream;base64,"),F=t=>t.startsWith("file://");function O(){var t="graphvizlib.wasm";return X(t)?t:function(t){return u+t}(t)}function G(t){if(t==B&&n)return new Uint8Array(n);throw"both async and sync fetching of the wasm failed"}function N(t,e,r){return function(t){return n?Promise.resolve().then((()=>G(t))):o(t).then((t=>new Uint8Array(t)),(()=>G(t)))}(t).then((t=>WebAssembly.instantiate(t,e))).then(r,(t=>{c(`failed to asynchronously prepare wasm: ${t}`),R(t)}))}var U,I,V={172808:(t,e)=>{var r=ot(t),o=ot(e);rt.createPath("/",P.dirname(r)),rt.writeFile(P.join("/",r),o)}};function C(t){this.name="ExitStatus",this.message=`Program terminated with exit(${t})`,this.status=t}var z=t=>{for(;t.length>0;)t.shift()(i)};class K{constructor(t){this.excPtr=t,this.ptr=t-24}set_type(t){v[this.ptr+4>>2]=t}get_type(){return v[this.ptr+4>>2]}set_destructor(t){v[this.ptr+8>>2]=t}get_destructor(){return v[this.ptr+8>>2]}set_caught(t){t=t?1:0,p[this.ptr+12]=t}get_caught(){return 0!=p[this.ptr+12]}set_rethrown(t){t=t?1:0,p[this.ptr+13]=t}get_rethrown(){return 0!=p[this.ptr+13]}init(t,e){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(e)}set_adjusted_ptr(t){v[this.ptr+16>>2]=t}get_adjusted_ptr(){return v[this.ptr+16>>2]}get_exception_ptr(){if(zt(this.get_type()))return v[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}var P={isAbs:t=>"/"===t.charAt(0),splitPath:t=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1),normalizeArray:(t,e)=>{for(var r=0,o=t.length-1;o>=0;o--){var n=t[o];"."===n?t.splice(o,1):".."===n?(t.splice(o,1),r++):r&&(t.splice(o,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:t=>{var e=P.isAbs(t),r="/"===t.substr(-1);return!(t=P.normalizeArray(t.split("/").filter((t=>!!t)),!e).join("/"))&&!e&&(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:t=>{var e=P.splitPath(t),r=e[0],o=e[1];return r||o?(o&&(o=o.substr(0,o.length-1)),r+o):"."},basename:t=>{if("/"===t)return"/";var e=(t=(t=P.normalize(t)).replace(/\/$/,"")).lastIndexOf("/");return-1===e?t:t.substr(e+1)},join:(...t)=>P.normalize(t.join("/")),join2:(t,e)=>P.normalize(t+"/"+e)},Z=t=>(Z=(()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return t=>crypto.getRandomValues(t);R("initRandomDevice")})())(t),j={resolve:(...t)=>{for(var e="",r=!1,o=t.length-1;o>=-1&&!r;o--){var n=o>=0?t[o]:rt.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=P.isAbs(n)}return(r?"/":"")+(e=P.normalizeArray(e.split("/").filter((t=>!!t)),!r).join("/"))||"."},relative:(t,e)=>{function r(t){for(var e=0;e<t.length&&""===t[e];e++);for(var r=t.length-1;r>=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=j.resolve(t).substr(1),e=j.resolve(e).substr(1);for(var o=r(t.split("/")),n=r(e.split("/")),i=Math.min(o.length,n.length),a=i,s=0;s<i;s++)if(o[s]!==n[s]){a=s;break}var u=[];for(s=a;s<o.length;s++)u.push("..");return(u=u.concat(n.slice(a))).join("/")}},S=typeof TextDecoder<"u"?new TextDecoder:void 0,Y=(t,e,r)=>{for(var o=e+r,n=e;t[n]&&!(n>=o);)++n;if(n-e>16&&t.buffer&&S)return S.decode(t.subarray(e,n));for(var i="";e<n;){var a=t[e++];if(128&a){var s=63&t[e++];if(192!=(224&a)){var u=63&t[e++];if((a=224==(240&a)?(15&a)<<12|s<<6|u:(7&a)<<18|s<<12|u<<6|63&t[e++])<65536)i+=String.fromCharCode(a);else{var l=a-65536;i+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i},T=[],J=t=>{for(var e=0,r=0;r<t.length;++r){var o=t.charCodeAt(r);o<=127?e++:o<=2047?e+=2:o>=55296&&o<=57343?(e+=4,++r):e+=3}return e},H=(t,e,r,o)=>{if(!(o>0))return 0;for(var n=r,i=r+o-1,a=0;a<t.length;++a){var s=t.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++a)),s<=127){if(r>=i)break;e[r++]=s}else if(s<=2047){if(r+1>=i)break;e[r++]=192|s>>6,e[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;e[r++]=224|s>>12,e[r++]=128|s>>6&63,e[r++]=128|63&s}else{if(r+3>=i)break;e[r++]=240|s>>18,e[r++]=128|s>>12&63,e[r++]=128|s>>6&63,e[r++]=128|63&s}}return e[r]=0,r-n};function Q(t,e,r){var o=J(t)+1,n=new Array(o),i=H(t,n,0,n.length);return e&&(n.length=i),n}var q={ttys:[],init(){},shutdown(){},register(t,e){q.ttys[t]={input:[],output:[],ops:e},rt.registerDevice(t,q.stream_ops)},stream_ops:{open(t){var e=q.ttys[t.node.rdev];if(!e)throw new rt.ErrnoError(43);t.tty=e,t.seekable=!1},close(t){t.tty.ops.fsync(t.tty)},fsync(t){t.tty.ops.fsync(t.tty)},read(t,e,r,o,n){if(!t.tty||!t.tty.ops.get_char)throw new rt.ErrnoError(60);for(var i=0,a=0;a<o;a++){var s;try{s=t.tty.ops.get_char(t.tty)}catch{throw new rt.ErrnoError(29)}if(void 0===s&&0===i)throw new rt.ErrnoError(6);if(null==s)break;i++,e[r+a]=s}return i&&(t.node.timestamp=Date.now()),i},write(t,e,r,o,n){if(!t.tty||!t.tty.ops.put_char)throw new rt.ErrnoError(60);try{for(var i=0;i<o;i++)t.tty.ops.put_char(t.tty,e[r+i])}catch{throw new rt.ErrnoError(29)}return o&&(t.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:t=>T.length?T.shift():null,put_char(t,e){null===e||10===e?(l(Y(t.output,0)),t.output=[]):0!=e&&t.output.push(e)},fsync(t){t.output&&t.output.length>0&&(l(Y(t.output,0)),t.output=[])},ioctl_tcgets:t=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(t,e,r)=>0,ioctl_tiocgwinsz:t=>[24,80]},default_tty1_ops:{put_char(t,e){null===e||10===e?(c(Y(t.output,0)),t.output=[]):0!=e&&t.output.push(e)},fsync(t){t.output&&t.output.length>0&&(c(Y(t.output,0)),t.output=[])}}},W=(t,e)=>Math.ceil(t/e)*e,$=t=>{t=W(t,65536);var e=Ct(65536,t);return e?((t,e)=>(h.fill(0,t,t+e),t))(e,t):0},A={ops_table:null,mount:t=>A.createNode(null,"/",16895,0),createNode(t,e,r,o){if(rt.isBlkdev(r)||rt.isFIFO(r))throw new rt.ErrnoError(63);A.ops_table||={dir:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr,lookup:A.node_ops.lookup,mknod:A.node_ops.mknod,rename:A.node_ops.rename,unlink:A.node_ops.unlink,rmdir:A.node_ops.rmdir,readdir:A.node_ops.readdir,symlink:A.node_ops.symlink},stream:{llseek:A.stream_ops.llseek}},file:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr},stream:{llseek:A.stream_ops.llseek,read:A.stream_ops.read,write:A.stream_ops.write,allocate:A.stream_ops.allocate,mmap:A.stream_ops.mmap,msync:A.stream_ops.msync}},link:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr,readlink:A.node_ops.readlink},stream:{}},chrdev:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr},stream:rt.chrdev_stream_ops}};var n=rt.createNode(t,e,r,o);return rt.isDir(n.mode)?(n.node_ops=A.ops_table.dir.node,n.stream_ops=A.ops_table.dir.stream,n.contents={}):rt.isFile(n.mode)?(n.node_ops=A.ops_table.file.node,n.stream_ops=A.ops_table.file.stream,n.usedBytes=0,n.contents=null):rt.isLink(n.mode)?(n.node_ops=A.ops_table.link.node,n.stream_ops=A.ops_table.link.stream):rt.isChrdev(n.mode)&&(n.node_ops=A.ops_table.chrdev.node,n.stream_ops=A.ops_table.chrdev.stream),n.timestamp=Date.now(),t&&(t.contents[e]=n,t.timestamp=n.timestamp),n},getFileDataAsTypedArray:t=>t.contents?t.contents.subarray?t.contents.subarray(0,t.usedBytes):new Uint8Array(t.contents):new Uint8Array(0),expandFileStorage(t,e){var r=t.contents?t.contents.length:0;if(!(r>=e)){e=Math.max(e,r*(r<1048576?2:1.125)>>>0),0!=r&&(e=Math.max(e,256));var o=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(o.subarray(0,t.usedBytes),0)}},resizeFileStorage(t,e){if(t.usedBytes!=e)if(0==e)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr(t){var e={};return e.dev=rt.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,rt.isDir(t.mode)?e.size=4096:rt.isFile(t.mode)?e.size=t.usedBytes:rt.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr(t,e){void 0!==e.mode&&(t.mode=e.mode),void 0!==e.timestamp&&(t.timestamp=e.timestamp),void 0!==e.size&&A.resizeFileStorage(t,e.size)},lookup(t,e){throw rt.genericErrors[44]},mknod:(t,e,r,o)=>A.createNode(t,e,r,o),rename(t,e,r){if(rt.isDir(t.mode)){var o;try{o=rt.lookupNode(e,r)}catch{}if(o)for(var n in o.contents)throw new rt.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp},unlink(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir(t,e){var r=rt.lookupNode(t,e);for(var o in r.contents)throw new rt.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir(t){var e=[".",".."];for(var r of Object.keys(t.contents))e.push(r);return e},symlink(t,e,r){var o=A.createNode(t,e,41471,0);return o.link=r,o},readlink(t){if(!rt.isLink(t.mode))throw new rt.ErrnoError(28);return t.link}},stream_ops:{read(t,e,r,o,n){var i=t.node.contents;if(n>=t.node.usedBytes)return 0;var a=Math.min(t.node.usedBytes-n,o);if(a>8&&i.subarray)e.set(i.subarray(n,n+a),r);else for(var s=0;s<a;s++)e[r+s]=i[n+s];return a},write(t,e,r,o,n,i){if(e.buffer===p.buffer&&(i=!1),!o)return 0;var a=t.node;if(a.timestamp=Date.now(),e.subarray&&(!a.contents||a.contents.subarray)){if(i)return a.contents=e.subarray(r,r+o),a.usedBytes=o,o;if(0===a.usedBytes&&0===n)return a.contents=e.slice(r,r+o),a.usedBytes=o,o;if(n+o<=a.usedBytes)return a.contents.set(e.subarray(r,r+o),n),o}if(A.expandFileStorage(a,n+o),a.contents.subarray&&e.subarray)a.contents.set(e.subarray(r,r+o),n);else for(var s=0;s<o;s++)a.contents[n+s]=e[r+s];return a.usedBytes=Math.max(a.usedBytes,n+o),o},llseek(t,e,r){var o=e;if(1===r?o+=t.position:2===r&&rt.isFile(t.node.mode)&&(o+=t.node.usedBytes),o<0)throw new rt.ErrnoError(28);return o},allocate(t,e,r){A.expandFileStorage(t.node,e+r),t.node.usedBytes=Math.max(t.node.usedBytes,e+r)},mmap(t,e,r,o,n){if(!rt.isFile(t.node.mode))throw new rt.ErrnoError(43);var i,a,s=t.node.contents;if(2&n||s.buffer!==p.buffer){if((r>0||r+e<s.length)&&(s=s.subarray?s.subarray(r,r+e):Array.prototype.slice.call(s,r,r+e)),a=!0,!(i=$(e)))throw new rt.ErrnoError(48);p.set(s,i)}else a=!1,i=s.byteOffset;return{ptr:i,allocated:a}},msync:(t,e,r,o,n)=>(A.stream_ops.write(t,e,0,o,r,!1),0)}},tt=[],et=(t,e)=>{var r=0;return t&&(r|=365),e&&(r|=146),r},rt={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{constructor(t){this.name="ErrnoError",this.errno=t}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(t){this.node=t}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return!!(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(t){this.shared.flags=t}get position(){return this.shared.position}set position(t){this.shared.position=t}},FSNode:class{constructor(t,e,r,o){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=rt.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=o,this.readMode=365,this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(t){t?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(t){t?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return rt.isDir(this.mode)}get isDevice(){return rt.isChrdev(this.mode)}},lookupPath(t,e={}){if(!(t=j.resolve(t)))return{path:"",node:null};if((e=Object.assign({follow_mount:!0,recurse_count:0},e)).recurse_count>8)throw new rt.ErrnoError(32);for(var r=t.split("/").filter((t=>!!t)),o=rt.root,n="/",i=0;i<r.length;i++){var a=i===r.length-1;if(a&&e.parent)break;if(o=rt.lookupNode(o,r[i]),n=P.join2(n,r[i]),rt.isMountpoint(o)&&(!a||a&&e.follow_mount)&&(o=o.mounted.root),!a||e.follow)for(var s=0;rt.isLink(o.mode);){var u=rt.readlink(n);if(n=j.resolve(P.dirname(n),u),o=rt.lookupPath(n,{recurse_count:e.recurse_count+1}).node,s++>40)throw new rt.ErrnoError(32)}}return{path:n,node:o}},getPath(t){for(var e;;){if(rt.isRoot(t)){var r=t.mount.mountpoint;return e?"/"!==r[r.length-1]?`${r}/${e}`:r+e:r}e=e?`${t.name}/${e}`:t.name,t=t.parent}},hashName(t,e){for(var r=0,o=0;o<e.length;o++)r=(r<<5)-r+e.charCodeAt(o)|0;return(t+r>>>0)%rt.nameTable.length},hashAddNode(t){var e=rt.hashName(t.parent.id,t.name);t.name_next=rt.nameTable[e],rt.nameTable[e]=t},hashRemoveNode(t){var e=rt.hashName(t.parent.id,t.name);if(rt.nameTable[e]===t)rt.nameTable[e]=t.name_next;else for(var r=rt.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode(t,e){var r=rt.mayLookup(t);if(r)throw new rt.ErrnoError(r);for(var o=rt.hashName(t.id,e),n=rt.nameTable[o];n;n=n.name_next){var i=n.name;if(n.parent.id===t.id&&i===e)return n}return rt.lookup(t,e)},createNode(t,e,r,o){var n=new rt.FSNode(t,e,r,o);return rt.hashAddNode(n),n},destroyNode(t){rt.hashRemoveNode(t)},isRoot:t=>t===t.parent,isMountpoint:t=>!!t.mounted,isFile:t=>32768==(61440&t),isDir:t=>16384==(61440&t),isLink:t=>40960==(61440&t),isChrdev:t=>8192==(61440&t),isBlkdev:t=>24576==(61440&t),isFIFO:t=>4096==(61440&t),isSocket:t=>!(49152&~t),flagsToPermissionString(t){var e=["r","w","rw"][3&t];return 512&t&&(e+="w"),e},nodePermissions:(t,e)=>rt.ignorePermissions?0:e.includes("r")&&!(292&t.mode)||e.includes("w")&&!(146&t.mode)||e.includes("x")&&!(73&t.mode)?2:0,mayLookup:t=>rt.isDir(t.mode)?rt.nodePermissions(t,"x")||(t.node_ops.lookup?0:2):54,mayCreate(t,e){try{return rt.lookupNode(t,e),20}catch{}return rt.nodePermissions(t,"wx")},mayDelete(t,e,r){var o;try{o=rt.lookupNode(t,e)}catch(t){return t.errno}var n=rt.nodePermissions(t,"wx");if(n)return n;if(r){if(!rt.isDir(o.mode))return 54;if(rt.isRoot(o)||rt.getPath(o)===rt.cwd())return 10}else if(rt.isDir(o.mode))return 31;return 0},mayOpen:(t,e)=>t?rt.isLink(t.mode)?32:rt.isDir(t.mode)&&("r"!==rt.flagsToPermissionString(e)||512&e)?31:rt.nodePermissions(t,rt.flagsToPermissionString(e)):44,MAX_OPEN_FDS:4096,nextfd(){for(var t=0;t<=rt.MAX_OPEN_FDS;t++)if(!rt.streams[t])return t;throw new rt.ErrnoError(33)},getStreamChecked(t){var e=rt.getStream(t);if(!e)throw new rt.ErrnoError(8);return e},getStream:t=>rt.streams[t],createStream:(t,e=-1)=>(t=Object.assign(new rt.FSStream,t),-1==e&&(e=rt.nextfd()),t.fd=e,rt.streams[e]=t,t),closeStream(t){rt.streams[t]=null},dupStream(t,e=-1){var r=rt.createStream(t,e);return r.stream_ops?.dup?.(r),r},chrdev_stream_ops:{open(t){var e=rt.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open?.(t)},llseek(){throw new rt.ErrnoError(70)}},major:t=>t>>8,minor:t=>255&t,makedev:(t,e)=>t<<8|e,registerDevice(t,e){rt.devices[t]={stream_ops:e}},getDevice:t=>rt.devices[t],getMounts(t){for(var e=[],r=[t];r.length;){var o=r.pop();e.push(o),r.push(...o.mounts)}return e},syncfs(t,e){"function"==typeof t&&(e=t,t=!1),rt.syncFSRequests++,rt.syncFSRequests>1&&c(`warning: ${rt.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=rt.getMounts(rt.root.mount),o=0;function n(t){return rt.syncFSRequests--,e(t)}function i(t){if(t)return i.errored?void 0:(i.errored=!0,n(t));++o>=r.length&&n(null)}r.forEach((e=>{if(!e.type.syncfs)return i(null);e.type.syncfs(e,t,i)}))},mount(t,e,r){var o,n="/"===r,i=!r;if(n&&rt.root)throw new rt.ErrnoError(10);if(!n&&!i){var a=rt.lookupPath(r,{follow_mount:!1});if(r=a.path,o=a.node,rt.isMountpoint(o))throw new rt.ErrnoError(10);if(!rt.isDir(o.mode))throw new rt.ErrnoError(54)}var s={type:t,opts:e,mountpoint:r,mounts:[]},u=t.mount(s);return u.mount=s,s.root=u,n?rt.root=u:o&&(o.mounted=s,o.mount&&o.mount.mounts.push(s)),u},unmount(t){var e=rt.lookupPath(t,{follow_mount:!1});if(!rt.isMountpoint(e.node))throw new rt.ErrnoError(28);var r=e.node,o=r.mounted,n=rt.getMounts(o);Object.keys(rt.nameTable).forEach((t=>{for(var e=rt.nameTable[t];e;){var r=e.name_next;n.includes(e.mount)&&rt.destroyNode(e),e=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(o);r.mount.mounts.splice(i,1)},lookup:(t,e)=>t.node_ops.lookup(t,e),mknod(t,e,r){var o=rt.lookupPath(t,{parent:!0}).node,n=P.basename(t);if(!n||"."===n||".."===n)throw new rt.ErrnoError(28);var i=rt.mayCreate(o,n);if(i)throw new rt.ErrnoError(i);if(!o.node_ops.mknod)throw new rt.ErrnoError(63);return o.node_ops.mknod(o,n,e,r)},create:(t,e)=>(e=void 0!==e?e:438,e&=4095,e|=32768,rt.mknod(t,e,0)),mkdir:(t,e)=>(e=void 0!==e?e:511,e&=1023,e|=16384,rt.mknod(t,e,0)),mkdirTree(t,e){for(var r=t.split("/"),o="",n=0;n<r.length;++n)if(r[n]){o+="/"+r[n];try{rt.mkdir(o,e)}catch(t){if(20!=t.errno)throw t}}},mkdev:(t,e,r)=>(typeof r>"u"&&(r=e,e=438),e|=8192,rt.mknod(t,e,r)),symlink(t,e){if(!j.resolve(t))throw new rt.ErrnoError(44);var r=rt.lookupPath(e,{parent:!0}).node;if(!r)throw new rt.ErrnoError(44);var o=P.basename(e),n=rt.mayCreate(r,o);if(n)throw new rt.ErrnoError(n);if(!r.node_ops.symlink)throw new rt.ErrnoError(63);return r.node_ops.symlink(r,o,t)},rename(t,e){var r,o,n=P.dirname(t),i=P.dirname(e),a=P.basename(t),s=P.basename(e);if(r=rt.lookupPath(t,{parent:!0}).node,o=rt.lookupPath(e,{parent:!0}).node,!r||!o)throw new rt.ErrnoError(44);if(r.mount!==o.mount)throw new rt.ErrnoError(75);var u,l=rt.lookupNode(r,a),c=j.relative(t,i);if("."!==c.charAt(0))throw new rt.ErrnoError(28);if("."!==(c=j.relative(e,n)).charAt(0))throw new rt.ErrnoError(55);try{u=rt.lookupNode(o,s)}catch{}if(l!==u){var d=rt.isDir(l.mode),p=rt.mayDelete(r,a,d);if(p)throw new rt.ErrnoError(p);if(p=u?rt.mayDelete(o,s,d):rt.mayCreate(o,s))throw new rt.ErrnoError(p);if(!r.node_ops.rename)throw new rt.ErrnoError(63);if(rt.isMountpoint(l)||u&&rt.isMountpoint(u))throw new rt.ErrnoError(10);if(o!==r&&(p=rt.nodePermissions(r,"w")))throw new rt.ErrnoError(p);rt.hashRemoveNode(l);try{r.node_ops.rename(l,o,s),l.parent=o}catch(t){throw t}finally{rt.hashAddNode(l)}}},rmdir(t){var e=rt.lookupPath(t,{parent:!0}).node,r=P.basename(t),o=rt.lookupNode(e,r),n=rt.mayDelete(e,r,!0);if(n)throw new rt.ErrnoError(n);if(!e.node_ops.rmdir)throw new rt.ErrnoError(63);if(rt.isMountpoint(o))throw new rt.ErrnoError(10);e.node_ops.rmdir(e,r),rt.destroyNode(o)},readdir(t){var e=rt.lookupPath(t,{follow:!0}).node;if(!e.node_ops.readdir)throw new rt.ErrnoError(54);return e.node_ops.readdir(e)},unlink(t){var e=rt.lookupPath(t,{parent:!0}).node;if(!e)throw new rt.ErrnoError(44);var r=P.basename(t),o=rt.lookupNode(e,r),n=rt.mayDelete(e,r,!1);if(n)throw new rt.ErrnoError(n);if(!e.node_ops.unlink)throw new rt.ErrnoError(63);if(rt.isMountpoint(o))throw new rt.ErrnoError(10);e.node_ops.unlink(e,r),rt.destroyNode(o)},readlink(t){var e=rt.lookupPath(t).node;if(!e)throw new rt.ErrnoError(44);if(!e.node_ops.readlink)throw new rt.ErrnoError(28);return j.resolve(rt.getPath(e.parent),e.node_ops.readlink(e))},stat(t,e){var r=rt.lookupPath(t,{follow:!e}).node;if(!r)throw new rt.ErrnoError(44);if(!r.node_ops.getattr)throw new rt.ErrnoError(63);return r.node_ops.getattr(r)},lstat:t=>rt.stat(t,!0),chmod(t,e,r){var o;if(!(o="string"==typeof t?rt.lookupPath(t,{follow:!r}).node:t).node_ops.setattr)throw new rt.ErrnoError(63);o.node_ops.setattr(o,{mode:4095&e|-4096&o.mode,timestamp:Date.now()})},lchmod(t,e){rt.chmod(t,e,!0)},fchmod(t,e){var r=rt.getStreamChecked(t);rt.chmod(r.node,e)},chown(t,e,r,o){var n;if(!(n="string"==typeof t?rt.lookupPath(t,{follow:!o}).node:t).node_ops.setattr)throw new rt.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(t,e,r){rt.chown(t,e,r,!0)},fchown(t,e,r){var o=rt.getStreamChecked(t);rt.chown(o.node,e,r)},truncate(t,e){if(e<0)throw new rt.ErrnoError(28);var r;if(!(r="string"==typeof t?rt.lookupPath(t,{follow:!0}).node:t).node_ops.setattr)throw new rt.ErrnoError(63);if(rt.isDir(r.mode))throw new rt.ErrnoError(31);if(!rt.isFile(r.mode))throw new rt.ErrnoError(28);var o=rt.nodePermissions(r,"w");if(o)throw new rt.ErrnoError(o);r.node_ops.setattr(r,{size:e,timestamp:Date.now()})},ftruncate(t,e){var r=rt.getStreamChecked(t);if(!(2097155&r.flags))throw new rt.ErrnoError(28);rt.truncate(r.node,e)},utime(t,e,r){var o=rt.lookupPath(t,{follow:!0}).node;o.node_ops.setattr(o,{timestamp:Math.max(e,r)})},open(t,e,r){if(""===t)throw new rt.ErrnoError(44);var o;if(e="string"==typeof e?(t=>{var e={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[t];if(typeof e>"u")throw new Error(`Unknown file open mode: ${t}`);return e})(e):e,r=64&e?4095&(r=typeof r>"u"?438:r)|32768:0,"object"==typeof t)o=t;else{t=P.normalize(t);try{o=rt.lookupPath(t,{follow:!(131072&e)}).node}catch{}}var n=!1;if(64&e)if(o){if(128&e)throw new rt.ErrnoError(20)}else o=rt.mknod(t,r,0),n=!0;if(!o)throw new rt.ErrnoError(44);if(rt.isChrdev(o.mode)&&(e&=-513),65536&e&&!rt.isDir(o.mode))throw new rt.ErrnoError(54);if(!n){var a=rt.mayOpen(o,e);if(a)throw new rt.ErrnoError(a)}512&e&&!n&&rt.truncate(o,0),e&=-131713;var s=rt.createStream({node:o,path:rt.getPath(o),flags:e,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),i.logReadFiles&&!(1&e)&&(rt.readFiles||(rt.readFiles={}),t in rt.readFiles||(rt.readFiles[t]=1)),s},close(t){if(rt.isClosed(t))throw new rt.ErrnoError(8);t.getdents&&(t.getdents=null);try{t.stream_ops.close&&t.stream_ops.close(t)}catch(t){throw t}finally{rt.closeStream(t.fd)}t.fd=null},isClosed:t=>null===t.fd,llseek(t,e,r){if(rt.isClosed(t))throw new rt.ErrnoError(8);if(!t.seekable||!t.stream_ops.llseek)throw new rt.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new rt.ErrnoError(28);return t.position=t.stream_ops.llseek(t,e,r),t.ungotten=[],t.position},read(t,e,r,o,n){if(o<0||n<0)throw new rt.ErrnoError(28);if(rt.isClosed(t))throw new rt.ErrnoError(8);if(1==(2097155&t.flags))throw new rt.ErrnoError(8);if(rt.isDir(t.node.mode))throw new rt.ErrnoError(31);if(!t.stream_ops.read)throw new rt.ErrnoError(28);var i=typeof n<"u";if(i){if(!t.seekable)throw new rt.ErrnoError(70)}else n=t.position;var a=t.stream_ops.read(t,e,r,o,n);return i||(t.position+=a),a},write(t,e,r,o,n,i){if(o<0||n<0)throw new rt.ErrnoError(28);if(rt.isClosed(t))throw new rt.ErrnoError(8);if(!(2097155&t.flags))throw new rt.ErrnoError(8);if(rt.isDir(t.node.mode))throw new rt.ErrnoError(31);if(!t.stream_ops.write)throw new rt.ErrnoError(28);t.seekable&&1024&t.flags&&rt.llseek(t,0,2);var a=typeof n<"u";if(a){if(!t.seekable)throw new rt.ErrnoError(70)}else n=t.position;var s=t.stream_ops.write(t,e,r,o,n,i);return a||(t.position+=s),s},allocate(t,e,r){if(rt.isClosed(t))throw new rt.ErrnoError(8);if(e<0||r<=0)throw new rt.ErrnoError(28);if(!(2097155&t.flags))throw new rt.ErrnoError(8);if(!rt.isFile(t.node.mode)&&!rt.isDir(t.node.mode))throw new rt.ErrnoError(43);if(!t.stream_ops.allocate)throw new rt.ErrnoError(138);t.stream_ops.allocate(t,e,r)},mmap(t,e,r,o,n){if(2&o&&!(2&n)&&2!=(2097155&t.flags))throw new rt.ErrnoError(2);if(1==(2097155&t.flags))throw new rt.ErrnoError(2);if(!t.stream_ops.mmap)throw new rt.ErrnoError(43);return t.stream_ops.mmap(t,e,r,o,n)},msync:(t,e,r,o,n)=>t.stream_ops.msync?t.stream_ops.msync(t,e,r,o,n):0,ioctl(t,e,r){if(!t.stream_ops.ioctl)throw new rt.ErrnoError(59);return t.stream_ops.ioctl(t,e,r)},readFile(t,e={}){if(e.flags=e.flags||0,e.encoding=e.encoding||"binary","utf8"!==e.encoding&&"binary"!==e.encoding)throw new Error(`Invalid encoding type "${e.encoding}"`);var r,o=rt.open(t,e.flags),n=rt.stat(t).size,i=new Uint8Array(n);return rt.read(o,i,0,n,0),"utf8"===e.encoding?r=Y(i,0):"binary"===e.encoding&&(r=i),rt.close(o),r},writeFile(t,e,r={}){r.flags=r.flags||577;var o=rt.open(t,r.flags,r.mode);if("string"==typeof e){var n=new Uint8Array(J(e)+1),i=H(e,n,0,n.length);rt.write(o,n,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(e))throw new Error("Unsupported data type");rt.write(o,e,0,e.byteLength,void 0,r.canOwn)}rt.close(o)},cwd:()=>rt.currentPath,chdir(t){var e=rt.lookupPath(t,{follow:!0});if(null===e.node)throw new rt.ErrnoError(44);if(!rt.isDir(e.node.mode))throw new rt.ErrnoError(54);var r=rt.nodePermissions(e.node,"x");if(r)throw new rt.ErrnoError(r);rt.currentPath=e.path},createDefaultDirectories(){rt.mkdir("/tmp"),rt.mkdir("/home"),rt.mkdir("/home/web_user")},createDefaultDevices(){rt.mkdir("/dev"),rt.registerDevice(rt.makedev(1,3),{read:()=>0,write:(t,e,r,o,n)=>o}),rt.mkdev("/dev/null",rt.makedev(1,3)),q.register(rt.makedev(5,0),q.default_tty_ops),q.register(rt.makedev(6,0),q.default_tty1_ops),rt.mkdev("/dev/tty",rt.makedev(5,0)),rt.mkdev("/dev/tty1",rt.makedev(6,0));var t=new Uint8Array(1024),e=0,r=()=>(0===e&&(e=Z(t).byteLength),t[--e]);rt.createDevice("/dev","random",r),rt.createDevice("/dev","urandom",r),rt.mkdir("/dev/shm"),rt.mkdir("/dev/shm/tmp")},createSpecialDirectories(){rt.mkdir("/proc");var t=rt.mkdir("/proc/self");rt.mkdir("/proc/self/fd"),rt.mount({mount(){var e=rt.createNode(t,"fd",16895,73);return e.node_ops={lookup(t,e){var r=+e,o=rt.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>o.path}};return n.parent=n,n}},e}},{},"/proc/self/fd")},createStandardStreams(){i.stdin?rt.createDevice("/dev","stdin",i.stdin):rt.symlink("/dev/tty","/dev/stdin"),i.stdout?rt.createDevice("/dev","stdout",null,i.stdout):rt.symlink("/dev/tty","/dev/stdout"),i.stderr?rt.createDevice("/dev","stderr",null,i.stderr):rt.symlink("/dev/tty1","/dev/stderr"),rt.open("/dev/stdin",0),rt.open("/dev/stdout",1),rt.open("/dev/stderr",1)},staticInit(){[44].forEach((t=>{rt.genericErrors[t]=new rt.ErrnoError(t),rt.genericErrors[t].stack="<generic error, no stack>"})),rt.nameTable=new Array(4096),rt.mount(A,{},"/"),rt.createDefaultDirectories(),rt.createDefaultDevices(),rt.createSpecialDirectories(),rt.filesystems={MEMFS:A}},init(t,e,r){rt.init.initialized=!0,i.stdin=t||i.stdin,i.stdout=e||i.stdout,i.stderr=r||i.stderr,rt.createStandardStreams()},quit(){rt.init.initialized=!1;for(var t=0;t<rt.streams.length;t++){var e=rt.streams[t];e&&rt.close(e)}},findObject(t,e){var r=rt.analyzePath(t,e);return r.exists?r.object:null},analyzePath(t,e){try{t=(o=rt.lookupPath(t,{follow:!e})).path}catch{}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var o=rt.lookupPath(t,{parent:!0});r.parentExists=!0,r.parentPath=o.path,r.parentObject=o.node,r.name=P.basename(t),o=rt.lookupPath(t,{follow:!e}),r.exists=!0,r.path=o.path,r.object=o.node,r.name=o.node.name,r.isRoot="/"===o.path}catch(t){r.error=t.errno}return r},createPath(t,e,r,o){t="string"==typeof t?t:rt.getPath(t);for(var n=e.split("/").reverse();n.length;){var i=n.pop();if(i){var a=P.join2(t,i);try{rt.mkdir(a)}catch{}t=a}}return a},createFile(t,e,r,o,n){var i=P.join2("string"==typeof t?t:rt.getPath(t),e),a=et(o,n);return rt.create(i,a)},createDataFile(t,e,r,o,n,i){var a=e;t&&(t="string"==typeof t?t:rt.getPath(t),a=e?P.join2(t,e):t);var s=et(o,n),u=rt.create(a,s);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,d=r.length;c<d;++c)l[c]=r.charCodeAt(c);r=l}rt.chmod(u,146|s);var p=rt.open(u,577);rt.write(p,r,0,r.length,0,i),rt.close(p),rt.chmod(u,s)}},createDevice(t,e,r,o){var n=P.join2("string"==typeof t?t:rt.getPath(t),e),i=et(!!r,!!o);rt.createDevice.major||(rt.createDevice.major=64);var a=rt.makedev(rt.createDevice.major++,0);return rt.registerDevice(a,{open(t){t.seekable=!1},close(t){o?.buffer?.length&&o(10)},read(t,e,o,n,i){for(var a=0,s=0;s<n;s++){var u;try{u=r()}catch{throw new rt.ErrnoError(29)}if(void 0===u&&0===a)throw new rt.ErrnoError(6);if(null==u)break;a++,e[o+s]=u}return a&&(t.node.timestamp=Date.now()),a},write(t,e,r,n,i){for(var a=0;a<n;a++)try{o(e[r+a])}catch{throw new rt.ErrnoError(29)}return n&&(t.node.timestamp=Date.now()),a}}),rt.mkdev(n,i,a)},forceLoadFile(t){if(t.isDevice||t.isFolder||t.link||t.contents)return!0;if(typeof XMLHttpRequest<"u")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");try{t.contents=(void 0)(t.url),t.usedBytes=t.contents.length}catch{throw new rt.ErrnoError(29)}},createLazyFile(t,e,r,o,n){if(typeof XMLHttpRequest<"u")throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i={isDevice:!1,url:r},a=rt.createFile(t,e,i,o,n);i.contents?a.contents=i.contents:i.url&&(a.contents=null,a.url=i.url),Object.defineProperties(a,{usedBytes:{get:function(){return this.contents.length}}});var s={};function u(t,e,r,o,n){var i=t.node.contents;if(n>=i.length)return 0;var a=Math.min(i.length-n,o);if(i.slice)for(var s=0;s<a;s++)e[r+s]=i[n+s];else for(s=0;s<a;s++)e[r+s]=i.get(n+s);return a}return Object.keys(a.stream_ops).forEach((t=>{var e=a.stream_ops[t];s[t]=(...t)=>(rt.forceLoadFile(a),e(...t))})),s.read=(t,e,r,o,n)=>(rt.forceLoadFile(a),u(t,e,r,o,n)),s.mmap=(t,e,r,o,n)=>{rt.forceLoadFile(a);var i=$(e);if(!i)throw new rt.ErrnoError(48);return u(t,p,i,e,r),{ptr:i,allocated:!0}},a.stream_ops=s,a}},ot=(t,e)=>t?Y(h,t,e):"",nt={DEFAULT_POLLMASK:5,calculateAt(t,e,r){if(P.isAbs(e))return e;var o;if(o=-100===t?rt.cwd():nt.getStreamFromFD(t).path,0==e.length){if(!r)throw new rt.ErrnoError(44);return o}return P.join2(o,e)},doStat(t,e,r){var o=t(e);g[r>>2]=o.dev,g[r+4>>2]=o.mode,v[r+8>>2]=o.nlink,g[r+12>>2]=o.uid,g[r+16>>2]=o.gid,g[r+20>>2]=o.rdev,I=[o.size>>>0,(U=o.size,+Math.abs(U)>=1?U>0?+Math.floor(U/4294967296)>>>0:~~+Math.ceil((U-+(~~U>>>0))/4294967296)>>>0:0)],g[r+24>>2]=I[0],g[r+28>>2]=I[1],g[r+32>>2]=4096,g[r+36>>2]=o.blocks;var n=o.atime.getTime(),i=o.mtime.getTime(),a=o.ctime.getTime();return I=[Math.floor(n/1e3)>>>0,(U=Math.floor(n/1e3),+Math.abs(U)>=1?U>0?+Math.floor(U/4294967296)>>>0:~~+Math.ceil((U-+(~~U>>>0))/4294967296)>>>0:0)],g[r+40>>2]=I[0],g[r+44>>2]=I[1],v[r+48>>2]=n%1e3*1e3,I=[Math.floor(i/1e3)>>>0,(U=Math.floor(i/1e3),+Math.abs(U)>=1?U>0?+Math.floor(U/4294967296)>>>0:~~+Math.ceil((U-+(~~U>>>0))/4294967296)>>>0:0)],g[r+56>>2]=I[0],g[r+60>>2]=I[1],v[r+64>>2]=i%1e3*1e3,I=[Math.floor(a/1e3)>>>0,(U=Math.floor(a/1e3),+Math.abs(U)>=1?U>0?+Math.floor(U/4294967296)>>>0:~~+Math.ceil((U-+(~~U>>>0))/4294967296)>>>0:0)],g[r+72>>2]=I[0],g[r+76>>2]=I[1],v[r+80>>2]=a%1e3*1e3,I=[o.ino>>>0,(U=o.ino,+Math.abs(U)>=1?U>0?+Math.floor(U/4294967296)>>>0:~~+Math.ceil((U-+(~~U>>>0))/4294967296)>>>0:0)],g[r+88>>2]=I[0],g[r+92>>2]=I[1],0},doMsync(t,e,r,o,n){if(!rt.isFile(e.node.mode))throw new rt.ErrnoError(43);if(2&o)return 0;var i=h.slice(t,t+r);rt.msync(e,i,n,r,o)},getStreamFromFD:t=>rt.getStreamChecked(t),varargs:void 0,getStr:t=>ot(t)};function it(){var t=g[+nt.varargs>>2];return nt.varargs+=4,t}var at=it,st=(t,e,r)=>H(t,h,e,r),ut=(t,e)=>e+2097152>>>0<4194305-!!t?(t>>>0)+4294967296*e:NaN,lt=[],ct=(t,e,r)=>{var o=((t,e)=>{lt.length=0;for(var r;r=h[t++];){var o=105!=r;e+=(o&=112!=r)&&e%8?4:0,lt.push(112==r?v[e>>2]:105==r?g[e>>2]:_[e>>3]),e+=o?8:4}return lt})(e,r);return