@genome-spy/core 0.31.2 → 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +18500 -7057
- package/dist/index.js +237 -50
- package/dist/schema.json +147 -23
- package/package.json +7 -2
package/dist/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
(function(
|
|
2
|
-
\r]`),n=
|
|
3
|
-
`)}function
|
|
4
|
-
`)}function
|
|
5
|
-
`)}function c(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?zd(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:o,formatBody:a,formatRows:u,formatRow:c,formatValue:f}}var Pd=Su(" "),Od=Pd.parseRows;function kd(t){return t}function Rd(t){if(t==null)return kd;var e,n,r=t.scale[0],i=t.scale[1],s=t.translate[0],o=t.translate[1];return function(a,u){u||(e=n=0);var c=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+s,l[1]=(n+=a[1])*i+o;c<f;)l[c]=a[c],++c;return l}}function jd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Ud(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Iu(t,n)})}:Iu(t,e)}function Iu(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,s=Tu(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:s}:r==null?{type:"Feature",id:n,properties:i,geometry:s}:{type:"Feature",id:n,bbox:r,properties:i,geometry:s}}function Tu(t,e){var n=Rd(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],g=0,d=h.length;g<d;++g)l.push(n(h[g],g));f<0&&jd(l,d)}function s(f){return n(f)}function o(f){for(var l=[],h=0,g=f.length;h<g;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=o(f);l.length<4;)l.push(l[0]);return l}function u(f){return f.map(a)}function c(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(c)};case"Point":h=s(f.coordinates);break;case"MultiPoint":h=f.coordinates.map(s);break;case"LineString":h=o(f.arcs);break;case"MultiLineString":h=f.arcs.map(o);break;case"Polygon":h=u(f.arcs);break;case"MultiPolygon":h=f.arcs.map(u);break;default:return null}return{type:l,coordinates:h}}return c(e)}function Gd(t,e){var n={},r={},i={},s=[],o=-1;e.forEach(function(c,f){var l=t.arcs[c<0?~c:c],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++o],e[o]=c,e[f]=h)}),e.forEach(function(c){var f=a(c),l=f[0],h=f[1],g,d;if(g=i[l])if(delete i[g.end],g.push(c),g.end=h,d=r[h]){delete r[d.start];var p=d===g?g:g.concat(d);r[p.start=g.start]=i[p.end=d.end]=p}else r[g.start]=i[g.end]=g;else if(g=r[h])if(delete r[g.start],g.unshift(c),g.start=l,d=i[l]){delete i[d.end];var m=d===g?g:d.concat(g);r[m.start=d.start]=i[m.end=g.end]=m}else r[g.start]=i[g.end]=g;else g=[c],r[g.start=l]=i[g.end=h]=g});function a(c){var f=t.arcs[c<0?~c:c],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(g){h[0]+=g[0],h[1]+=g[1]})):h=f[f.length-1],c<0?[h,l]:[l,h]}function u(c,f){for(var l in c){var h=c[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(g){n[g<0?~g:g]=1}),s.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||s.push([c])}),s}function Qd(t){return Tu(t,Hd.apply(this,arguments))}function Hd(t,e,n){var r,i,s;if(arguments.length>1)r=Yd(t,e,n);else for(i=0,r=new Array(s=t.arcs.length);i<s;++i)r[i]=i;return{type:"MultiLineString",arcs:Gd(t,r)}}function Yd(t,e,n){var r=[],i=[],s;function o(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:s})}function a(l){l.forEach(o)}function u(l){l.forEach(a)}function c(l){l.forEach(u)}function f(l){switch(s=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":u(l.arcs);break;case"MultiPolygon":c(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Kn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Vd(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function hi(t){let e,n,r;t.length!==2?(e=Kn,n=(a,u)=>Kn(t(a),u),r=(a,u)=>t(a)-u):(e=t===Kn||t===Vd?t:Wd,n=t,r=t);function i(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<0?c=l+1:f=l}while(c<f)}return c}function s(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function o(a,u,c=0,f=a.length){const l=i(a,u,c,f-1);return l>c&&r(a[l-1],u)>-r(a[l],u)?l-1:l}return{left:i,center:o,right:s}}function Wd(){return 0}function Nu(t){return t===null?NaN:+t}const Bu=hi(Kn),Us=Bu.right;Bu.left,hi(Nu).center;const an=Us;function Xd(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let s of t)(s=e(s,++i,t))!=null&&(n===void 0?s>=s&&(n=r=s):(n>s&&(n=s),r<s&&(r=s)))}return[n,r]}class Lt extends Map{constructor(e,n=Jd){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Fu(this,e))}has(e){return super.has(Fu(this,e))}set(e,n){return super.set(Zd(this,e),n)}delete(e){return super.delete(Kd(this,e))}}function Fu({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Zd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Kd({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Jd(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Gs(t){return t}function di(t,...e){return Lu(t,Gs,Gs,e)}function qd(t,...e){return Lu(t,Array.from,Gs,e)}function Lu(t,e,n,r){return function i(s,o){if(o>=r.length)return n(s);const a=new Lt,u=r[o++];let c=-1;for(const f of s){const l=u(f,++c,s),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,o));return e(a)}(t,0)}var Qs=Math.sqrt(50),Hs=Math.sqrt(10),Ys=Math.sqrt(2);function gi(t,e,n){var r,i=-1,s,o,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(s=t,t=e,e=s),(a=zu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,o=new Array(s=c-u+1);++i<s;)o[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,o=new Array(s=c-u+1);++i<s;)o[i]=(u+i)/a}return r&&o.reverse(),o}function zu(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),s=r/Math.pow(10,i);return i>=0?(s>=Qs?10:s>=Hs?5:s>=Ys?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(s>=Qs?10:s>=Hs?5:s>=Ys?2:1)}function zt(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),s=r/i;return s>=Qs?i*=10:s>=Hs?i*=5:s>=Ys&&(i*=2),e<t?-i:i}function Pu(t,e,n=Nu){if(r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,s=Math.floor(i),o=+n(t[s],s,t),a=+n(t[s+1],s+1,t);return o+(a-o)*(i-s)}}function Jn(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,s=new Array(i);++r<i;)s[r]=t+r*n;return s}function pi(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function _d(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function mi(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function un(t){return t=mi(Math.abs(t)),t?t[1]:NaN}function $d(t,e){return function(n,r){for(var i=n.length,s=[],o=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),s.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[o=(o+1)%t.length];return s.reverse().join(e)}}function eg(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var tg=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ft(t){if(!(e=tg.exec(t)))throw new Error("invalid format: "+t);var e;return new Vs({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}ft.prototype=Vs.prototype;function Vs(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Vs.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function ng(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Ou;function rg(t,e){var n=mi(t,e);if(!n)return t+"";var r=n[0],i=n[1],s=i-(Ou=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return s===o?r:s>o?r+new Array(s-o+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+mi(t,Math.max(0,e+s-1))[0]}function ku(t,e){var n=mi(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Ru={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:_d,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>ku(t*100,e),r:ku,s:rg,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function ju(t){return t}var Uu=Array.prototype.map,Gu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ig(t){var e=t.grouping===void 0||t.thousands===void 0?ju:$d(Uu.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",s=t.numerals===void 0?ju:eg(Uu.call(t.numerals,String)),o=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"−":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=ft(l);var h=l.fill,g=l.align,d=l.sign,p=l.symbol,m=l.zero,A=l.width,x=l.comma,w=l.precision,v=l.trim,M=l.type;M==="n"?(x=!0,M="g"):Ru[M]||(w===void 0&&(w=12),v=!0,M="g"),(m||h==="0"&&g==="=")&&(m=!0,h="0",g="=");var C=p==="$"?n:p==="#"&&/[boxX]/.test(M)?"0"+M.toLowerCase():"",b=p==="$"?r:/[%p]/.test(M)?o:"",X=Ru[M],me=/[defgprs%]/.test(M);w=w===void 0?6:/[gprs]/.test(M)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function R(N){var he=C,se=b,Ee,et,Se;if(M==="c")se=X(N)+se,N="";else{N=+N;var Yn=N<0||1/N<0;if(N=isNaN(N)?u:X(Math.abs(N),w),v&&(N=ng(N)),Yn&&+N==0&&d!=="+"&&(Yn=!1),he=(Yn?d==="("?d:a:d==="-"||d==="("?"":d)+he,se=(M==="s"?Gu[8+Ou/3]:"")+se+(Yn&&d==="("?")":""),me){for(Ee=-1,et=N.length;++Ee<et;)if(Se=N.charCodeAt(Ee),48>Se||Se>57){se=(Se===46?i+N.slice(Ee+1):N.slice(Ee))+se,N=N.slice(0,Ee);break}}}x&&!m&&(N=e(N,1/0));var Vn=he.length+N.length+se.length,Ye=Vn<A?new Array(A-Vn+1).join(h):"";switch(x&&m&&(N=e(Ye+N,Ye.length?A-se.length:1/0),Ye=""),g){case"<":N=he+N+se+Ye;break;case"=":N=he+Ye+N+se;break;case"^":N=Ye.slice(0,Vn=Ye.length>>1)+he+N+se+Ye.slice(Vn);break;default:N=Ye+he+N+se;break}return s(N)}return R.toString=function(){return l+""},R}function f(l,h){var g=c((l=ft(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(un(h)/3)))*3,p=Math.pow(10,-d),m=Gu[8+d/3];return function(A){return g(p*A)+m}}return{format:c,formatPrefix:f}}var Ai,ae,Ws;sg({thousands:",",grouping:[3],currency:["$",""]});function sg(t){return Ai=ig(t),ae=Ai.format,Ws=Ai.formatPrefix,Ai}function Qu(t){return Math.max(0,-un(Math.abs(t)))}function Hu(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(un(e)/3)))*3-un(Math.abs(t)))}function Yu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,un(e)-un(t))+1}var Xs=new Date,Zs=new Date;function $(t,e,n,r){function i(s){return t(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=function(s){return t(s=new Date(+s)),s},i.ceil=function(s){return t(s=new Date(s-1)),e(s,1),t(s),s},i.round=function(s){var o=i(s),a=i.ceil(s);return s-o<a-s?o:a},i.offset=function(s,o){return e(s=new Date(+s),o==null?1:Math.floor(o)),s},i.range=function(s,o,a){var u=[],c;if(s=i.ceil(s),a=a==null?1:Math.floor(a),!(s<o)||!(a>0))return u;do u.push(c=new Date(+s)),e(s,a),t(s);while(c<s&&s<o);return u},i.filter=function(s){return $(function(o){if(o>=o)for(;t(o),!s(o);)o.setTime(o-1)},function(o,a){if(o>=o)if(a<0)for(;++a<=0;)for(;e(o,-1),!s(o););else for(;--a>=0;)for(;e(o,1),!s(o););})},n&&(i.count=function(s,o){return Xs.setTime(+s),Zs.setTime(+o),t(Xs),t(Zs),Math.floor(n(Xs,Zs))},i.every=function(s){return s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?function(o){return r(o)%s===0}:function(o){return i.count(0,o)%s===0}):i}),i}var yi=$(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});yi.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?$(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):yi};const Ks=yi;yi.range;const tt=1e3,Be=tt*60,nt=Be*60,Pt=nt*24,Js=Pt*7,Vu=Pt*30,qs=Pt*365;var Wu=$(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getUTCSeconds()});const ht=Wu;Wu.range;var Xu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tt)},function(t,e){t.setTime(+t+e*Be)},function(t,e){return(e-t)/Be},function(t){return t.getMinutes()});const _s=Xu;Xu.range;var Zu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tt-t.getMinutes()*Be)},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getHours()});const $s=Zu;Zu.range;var Ku=$(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Be)/Pt,t=>t.getDate()-1);const Ot=Ku;Ku.range;function kt(t){return $(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Be)/Js})}var qn=kt(0),xi=kt(1),og=kt(2),ag=kt(3),cn=kt(4),ug=kt(5),cg=kt(6);qn.range,xi.range,og.range,ag.range,cn.range,ug.range,cg.range;var Ju=$(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const wi=Ju;Ju.range;var eo=$(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});eo.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const dt=eo;eo.range;var qu=$(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Be)},function(t,e){return(e-t)/Be},function(t){return t.getUTCMinutes()});const to=qu;qu.range;var _u=$(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getUTCHours()});const no=_u;_u.range;var $u=$(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Pt},function(t){return t.getUTCDate()-1});const Rt=$u;$u.range;function jt(t){return $(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Js})}var _n=jt(0),bi=jt(1),lg=jt(2),fg=jt(3),ln=jt(4),hg=jt(5),dg=jt(6);_n.range,bi.range,lg.range,fg.range,ln.range,hg.range,dg.range;var ec=$(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const Di=ec;ec.range;var ro=$(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});ro.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const gt=ro;ro.range;function tc(t,e,n,r,i,s){const o=[[ht,1,tt],[ht,5,5*tt],[ht,15,15*tt],[ht,30,30*tt],[s,1,Be],[s,5,5*Be],[s,15,15*Be],[s,30,30*Be],[i,1,nt],[i,3,3*nt],[i,6,6*nt],[i,12,12*nt],[r,1,Pt],[r,2,2*Pt],[n,1,Js],[e,1,Vu],[e,3,3*Vu],[t,1,qs]];function a(c,f,l){const h=f<c;h&&([c,f]=[f,c]);const g=l&&typeof l.range=="function"?l:u(c,f,l),d=g?g.range(c,+f+1):[];return h?d.reverse():d}function u(c,f,l){const h=Math.abs(f-c)/l,g=hi(([,,m])=>m).right(o,h);if(g===o.length)return t.every(zt(c/qs,f/qs,l));if(g===0)return Ks.every(Math.max(zt(c,f,l),1));const[d,p]=o[h/o[g-1][2]<o[g][2]/h?g-1:g];return d.every(p)}return[a,u]}const[gg,pg]=tc(gt,Di,_n,Rt,no,to),[mg,Ag]=tc(dt,wi,qn,Ot,$s,_s),$n="year",er="quarter",tr="month",nr="week",rr="date",vi="day",io="dayofyear",ir="hours",sr="minutes",or="seconds",Ci="milliseconds";[$n,er,tr,nr,rr,vi,io,ir,sr,or,Ci].reduce((t,e,n)=>(t[e]=1+n,t),{});const yg={[$n]:dt,[er]:wi.every(3),[tr]:wi,[nr]:qn,[rr]:Ot,[vi]:Ot,[io]:Ot,[ir]:$s,[sr]:_s,[or]:ht,[Ci]:Ks},xg={[$n]:gt,[er]:Di.every(3),[tr]:Di,[nr]:_n,[rr]:Rt,[vi]:Rt,[io]:Rt,[ir]:no,[sr]:to,[or]:ht,[Ci]:Ks};function wg(t){return yg[t]}function bg(t){return xg[t]}function so(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function oo(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function ar(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function nc(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,s=t.days,o=t.shortDays,a=t.months,u=t.shortMonths,c=ur(i),f=cr(i),l=ur(s),h=cr(s),g=ur(o),d=cr(o),p=ur(a),m=cr(a),A=ur(u),x=cr(u),w={a:Yn,A:Vn,b:Ye,B:MC,c:null,d:uc,e:uc,f:Yg,g:ep,G:np,H:Gg,I:Qg,j:Hg,L:cc,m:Vg,M:Wg,p:EC,q:SC,Q:pc,s:mc,S:Xg,u:Zg,U:Kg,V:Jg,w:qg,W:_g,x:null,X:null,y:$g,Y:tp,Z:rp,"%":gc},v={a:IC,A:TC,b:NC,B:BC,c:null,d:fc,e:fc,f:ap,g:Ap,G:xp,H:ip,I:sp,j:op,L:hc,m:up,M:cp,p:FC,q:LC,Q:pc,s:mc,S:lp,u:fp,U:hp,V:dp,w:gp,W:pp,x:null,X:null,y:mp,Y:yp,Z:wp,"%":gc},M={a:R,A:N,b:he,B:se,c:Ee,d:oc,e:oc,f:kg,g:sc,G:ic,H:ac,I:ac,j:Lg,L:Og,m:Fg,M:zg,p:me,q:Bg,Q:jg,s:Ug,S:Pg,u:Eg,U:Sg,V:Ig,w:Mg,W:Tg,x:et,X:Se,y:sc,Y:ic,Z:Ng,"%":Rg};w.x=C(n,w),w.X=C(r,w),w.c=C(e,w),v.x=C(n,v),v.X=C(r,v),v.c=C(e,v);function C(S,F){return function(P){var D=[],ve=-1,U=0,Ie=S.length,Te,on,td;for(P instanceof Date||(P=new Date(+P));++ve<Ie;)S.charCodeAt(ve)===37&&(D.push(S.slice(U,ve)),(on=rc[Te=S.charAt(++ve)])!=null?Te=S.charAt(++ve):on=Te==="e"?" ":"0",(td=F[Te])&&(Te=td(P,on)),D.push(Te),U=ve+1);return D.push(S.slice(U,ve)),D.join("")}}function b(S,F){return function(P){var D=ar(1900,void 0,1),ve=X(D,S,P+="",0),U,Ie;if(ve!=P.length)return null;if("Q"in D)return new Date(D.Q);if("s"in D)return new Date(D.s*1e3+("L"in D?D.L:0));if(F&&!("Z"in D)&&(D.Z=0),"p"in D&&(D.H=D.H%12+D.p*12),D.m===void 0&&(D.m="q"in D?D.q:0),"V"in D){if(D.V<1||D.V>53)return null;"w"in D||(D.w=1),"Z"in D?(U=oo(ar(D.y,0,1)),Ie=U.getUTCDay(),U=Ie>4||Ie===0?bi.ceil(U):bi(U),U=Rt.offset(U,(D.V-1)*7),D.y=U.getUTCFullYear(),D.m=U.getUTCMonth(),D.d=U.getUTCDate()+(D.w+6)%7):(U=so(ar(D.y,0,1)),Ie=U.getDay(),U=Ie>4||Ie===0?xi.ceil(U):xi(U),U=Ot.offset(U,(D.V-1)*7),D.y=U.getFullYear(),D.m=U.getMonth(),D.d=U.getDate()+(D.w+6)%7)}else("W"in D||"U"in D)&&("w"in D||(D.w="u"in D?D.u%7:"W"in D?1:0),Ie="Z"in D?oo(ar(D.y,0,1)).getUTCDay():so(ar(D.y,0,1)).getDay(),D.m=0,D.d="W"in D?(D.w+6)%7+D.W*7-(Ie+5)%7:D.w+D.U*7-(Ie+6)%7);return"Z"in D?(D.H+=D.Z/100|0,D.M+=D.Z%100,oo(D)):so(D)}}function X(S,F,P,D){for(var ve=0,U=F.length,Ie=P.length,Te,on;ve<U;){if(D>=Ie)return-1;if(Te=F.charCodeAt(ve++),Te===37){if(Te=F.charAt(ve++),on=M[Te in rc?F.charAt(ve++):Te],!on||(D=on(S,P,D))<0)return-1}else if(Te!=P.charCodeAt(D++))return-1}return D}function me(S,F,P){var D=c.exec(F.slice(P));return D?(S.p=f.get(D[0].toLowerCase()),P+D[0].length):-1}function R(S,F,P){var D=g.exec(F.slice(P));return D?(S.w=d.get(D[0].toLowerCase()),P+D[0].length):-1}function N(S,F,P){var D=l.exec(F.slice(P));return D?(S.w=h.get(D[0].toLowerCase()),P+D[0].length):-1}function he(S,F,P){var D=A.exec(F.slice(P));return D?(S.m=x.get(D[0].toLowerCase()),P+D[0].length):-1}function se(S,F,P){var D=p.exec(F.slice(P));return D?(S.m=m.get(D[0].toLowerCase()),P+D[0].length):-1}function Ee(S,F,P){return X(S,e,F,P)}function et(S,F,P){return X(S,n,F,P)}function Se(S,F,P){return X(S,r,F,P)}function Yn(S){return o[S.getDay()]}function Vn(S){return s[S.getDay()]}function Ye(S){return u[S.getMonth()]}function MC(S){return a[S.getMonth()]}function EC(S){return i[+(S.getHours()>=12)]}function SC(S){return 1+~~(S.getMonth()/3)}function IC(S){return o[S.getUTCDay()]}function TC(S){return s[S.getUTCDay()]}function NC(S){return u[S.getUTCMonth()]}function BC(S){return a[S.getUTCMonth()]}function FC(S){return i[+(S.getUTCHours()>=12)]}function LC(S){return 1+~~(S.getUTCMonth()/3)}return{format:function(S){var F=C(S+="",w);return F.toString=function(){return S},F},parse:function(S){var F=b(S+="",!1);return F.toString=function(){return S},F},utcFormat:function(S){var F=C(S+="",v);return F.toString=function(){return S},F},utcParse:function(S){var F=b(S+="",!0);return F.toString=function(){return S},F}}}var rc={"-":"",_:" ",0:"0"},ee=/^\s*\d+/,Dg=/^%/,vg=/[\\^$*+?|[\]().{}]/g;function L(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",s=i.length;return r+(s<n?new Array(n-s+1).join(e)+i:i)}function Cg(t){return t.replace(vg,"\\$&")}function ur(t){return new RegExp("^(?:"+t.map(Cg).join("|")+")","i")}function cr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function Mg(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Eg(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Sg(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Ig(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Tg(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function ic(t,e,n){var r=ee.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function sc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Ng(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Bg(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Fg(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function oc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Lg(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function ac(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function zg(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Pg(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Og(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function kg(t,e,n){var r=ee.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Rg(t,e,n){var r=Dg.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function jg(t,e,n){var r=ee.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Ug(t,e,n){var r=ee.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function uc(t,e){return L(t.getDate(),e,2)}function Gg(t,e){return L(t.getHours(),e,2)}function Qg(t,e){return L(t.getHours()%12||12,e,2)}function Hg(t,e){return L(1+Ot.count(dt(t),t),e,3)}function cc(t,e){return L(t.getMilliseconds(),e,3)}function Yg(t,e){return cc(t,e)+"000"}function Vg(t,e){return L(t.getMonth()+1,e,2)}function Wg(t,e){return L(t.getMinutes(),e,2)}function Xg(t,e){return L(t.getSeconds(),e,2)}function Zg(t){var e=t.getDay();return e===0?7:e}function Kg(t,e){return L(qn.count(dt(t)-1,t),e,2)}function lc(t){var e=t.getDay();return e>=4||e===0?cn(t):cn.ceil(t)}function Jg(t,e){return t=lc(t),L(cn.count(dt(t),t)+(dt(t).getDay()===4),e,2)}function qg(t){return t.getDay()}function _g(t,e){return L(xi.count(dt(t)-1,t),e,2)}function $g(t,e){return L(t.getFullYear()%100,e,2)}function ep(t,e){return t=lc(t),L(t.getFullYear()%100,e,2)}function tp(t,e){return L(t.getFullYear()%1e4,e,4)}function np(t,e){var n=t.getDay();return t=n>=4||n===0?cn(t):cn.ceil(t),L(t.getFullYear()%1e4,e,4)}function rp(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+L(e/60|0,"0",2)+L(e%60,"0",2)}function fc(t,e){return L(t.getUTCDate(),e,2)}function ip(t,e){return L(t.getUTCHours(),e,2)}function sp(t,e){return L(t.getUTCHours()%12||12,e,2)}function op(t,e){return L(1+Rt.count(gt(t),t),e,3)}function hc(t,e){return L(t.getUTCMilliseconds(),e,3)}function ap(t,e){return hc(t,e)+"000"}function up(t,e){return L(t.getUTCMonth()+1,e,2)}function cp(t,e){return L(t.getUTCMinutes(),e,2)}function lp(t,e){return L(t.getUTCSeconds(),e,2)}function fp(t){var e=t.getUTCDay();return e===0?7:e}function hp(t,e){return L(_n.count(gt(t)-1,t),e,2)}function dc(t){var e=t.getUTCDay();return e>=4||e===0?ln(t):ln.ceil(t)}function dp(t,e){return t=dc(t),L(ln.count(gt(t),t)+(gt(t).getUTCDay()===4),e,2)}function gp(t){return t.getUTCDay()}function pp(t,e){return L(bi.count(gt(t)-1,t),e,2)}function mp(t,e){return L(t.getUTCFullYear()%100,e,2)}function Ap(t,e){return t=dc(t),L(t.getUTCFullYear()%100,e,2)}function yp(t,e){return L(t.getUTCFullYear()%1e4,e,4)}function xp(t,e){var n=t.getUTCDay();return t=n>=4||n===0?ln(t):ln.ceil(t),L(t.getUTCFullYear()%1e4,e,4)}function wp(){return"+0000"}function gc(){return"%"}function pc(t){return+t}function mc(t){return Math.floor(+t/1e3)}var fn,ao,Ac,uo,yc;bp({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function bp(t){return fn=nc(t),ao=fn.format,Ac=fn.parse,uo=fn.utcFormat,yc=fn.utcParse,fn}function lr(t){const e={};return n=>e[n]||(e[n]=t(n))}function Dp(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let s=vp(r,i);const o=s<r.length?r.slice(s):"";for(;--s>i;)if(r[s]!=="0"){++s;break}return r.slice(0,s)+o}}function vp(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function Cp(t){const e=lr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=ft(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return Dp(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,s,o){o=ft(o??",f");const a=zt(r,i,s),u=Math.max(Math.abs(r),Math.abs(i));let c;if(o.precision==null)switch(o.type){case"s":return isNaN(c=Hu(a,u))||(o.precision=c),n(o,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Yu(a,u))||(o.precision=c-(o.type==="e"));break}case"f":case"%":{isNaN(c=Qu(a))||(o.precision=c-(o.type==="%")*2);break}}return e(o)}}}Mp();function Mp(){return Cp({format:ae,formatPrefix:Ws})}function xc(t,e,n){n=n||{},Pe(n)||V("Invalid time multi-format specifier: ".concat(n));const r=e(or),i=e(sr),s=e(ir),o=e(rr),a=e(nr),u=e(tr),c=e(er),f=e($n),l=t(n[Ci]||".%L"),h=t(n[or]||":%S"),g=t(n[sr]||"%I:%M"),d=t(n[ir]||"%I %p"),p=t(n[rr]||n[vi]||"%a %d"),m=t(n[nr]||"%b %d"),A=t(n[tr]||"%B"),x=t(n[er]||"%B"),w=t(n[$n]||"%Y");return v=>(r(v)<v?l:i(v)<v?h:s(v)<v?g:o(v)<v?d:u(v)<v?a(v)<v?p:m:f(v)<v?c(v)<v?A:x:w)(v)}function wc(t){const e=lr(t.format),n=lr(t.utcFormat);return{timeFormat:r=>W(r)?e(r):xc(e,wg,r),utcFormat:r=>W(r)?n(r):xc(n,bg,r),timeParse:lr(t.parse),utcParse:lr(t.utcParse)}}let co;Ep();function Ep(){return co=wc({format:ao,parse:Ac,utcFormat:uo,utcParse:yc})}function Sp(t){return wc(nc(t))}function Ip(t){return arguments.length?co=Sp(t):co}const Tp=/^(data:|([A-Za-z]+:)?\/\/)/,Np=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Bp=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,bc="file://";function Fp(t,e){return n=>({options:n||{},sanitize:zp,load:Lp,fileAccess:!!e,file:Pp(e),http:kp(t)})}async function Lp(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function zp(t,e){e=Os({},this.options,e);const n=this.fileAccess,r={href:null};let i,s,o;const a=Np.test(t.replace(Bp,""));(t==null||typeof t!="string"||!a)&&V("Sanitize failure, invalid URI: "+li(t));const u=Tp.test(t);return(o=e.baseURL)&&!u&&(!t.startsWith("/")&&!o.endsWith("/")&&(t="/"+t),t=o+t),s=(i=t.startsWith(bc))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(bc.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),s=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!s}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function Pp(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,s)=>{i?r(i):n(s)})}):Op}async function Op(){V("No file system access.")}function kp(t){return t?async function(e,n){const r=Os({},this.options.http,n),i=n&&n.response,s=await t(e,r);return s.ok?Ae(s[i])?s[i]():s.text():V(s.status+""+s.statusText)}:Rp}async function Rp(){V("No HTTP fetch method available.")}const jp=t=>t!=null&&t===t,Up=t=>t==="true"||t==="false"||t===!0||t===!1,Gp=t=>!Number.isNaN(Date.parse(t)),Dc=t=>!Number.isNaN(+t)&&!(t instanceof Date),Qp=t=>Dc(t)&&Number.isInteger(+t),vc={boolean:Id,integer:Xn,number:Xn,date:Nd,string:Bd,unknown:si},Mi=[Up,Qp,Dc,Gp],Hp=["boolean","integer","number","date"];function Yp(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Mi.length,i=Mi.map((s,o)=>o+1);for(let s=0,o=0,a,u;s<n;++s)for(u=e?t[s][e]:t[s],a=0;a<r;++a)if(i[a]&&jp(u)&&!Mi[a](u)&&(i[a]=0,++o,o===Mi.length))return"string";return Hp[i.reduce((s,o)=>s===0?o:s,0)-1]}function Vp(t,e){return e.reduce((n,r)=>(n[r]=Yp(t,r),n),{})}function Cc(t){const e=function(n,r){const i={delimiter:t};return lo(n,r?Os(r,i):i)};return e.responseType="text",e}function lo(t,e){return e.header&&(t=e.header.map(li).join(e.delimiter)+`
|
|
6
|
-
`+
|
|
1
|
+
(function(re,ne){typeof exports=="object"&&typeof module<"u"?ne(exports):typeof define=="function"&&define.amd?define(["exports"],ne):(re=typeof globalThis<"u"?globalThis:re||self,ne(re.genomeSpyEmbed={}))})(this,function(re){var au,cg,ao,oo,rn,so,ou,lg,Gn,Kr,Nc,Dv,Bc,_v,Zi,pu,su,hg,uu,dg,fu,gg,Fc,Iv,cu;"use strict";var B9=Object.defineProperty;var F9=(re,ne,Pe)=>ne in re?B9(re,ne,{enumerable:!0,configurable:!0,writable:!0,value:Pe}):re[ne]=Pe;var Vn=(re,ne,Pe)=>(F9(re,typeof ne!="symbol"?ne+"":ne,Pe),Pe),fg=(re,ne,Pe)=>{if(!ne.has(re))throw TypeError("Cannot "+Pe)};var Ie=(re,ne,Pe)=>(fg(re,ne,"read from private field"),Pe?Pe.call(re):ne.get(re)),dt=(re,ne,Pe)=>{if(ne.has(re))throw TypeError("Cannot add the same private member more than once");ne instanceof WeakSet?ne.add(re):ne.set(re,Pe)},ho=(re,ne,Pe,Jr)=>(fg(re,ne,"write to private field"),Jr?Jr.call(re,Pe):ne.set(re,Pe),Pe),Cv=(re,ne,Pe,Jr)=>({set _(Pc){ho(re,ne,Pc,Pe)},get _(){return Ie(re,ne,Jr)}}),st=(re,ne,Pe)=>(fg(re,ne,"access private method"),Pe);function ne(e,t,n){return e.fields=t||[],e.fname=n,e}function Pe(e){return e==null?null:e.fname}function Jr(e){return e==null?null:e.fields}function Pc(e){return e.length===1?Mv(e[0]):Tv(e)}const Mv=e=>function(t){return t[e]},Tv=e=>{const t=e.length;return function(n){for(let r=0;r<t;++r)n=n[e[r]];return n}};function Le(e){throw Error(e)}function Nv(e){const t=[],n=e.length;let r=null,i=0,a="",o,s,f;e=e+"";function u(){t.push(a+e.substring(o,s)),a="",o=s+1}for(o=s=0;s<n;++s)if(f=e[s],f==="\\")a+=e.substring(o,s),a+=e.substring(++s,++s),o=s;else if(f===r)u(),r=null,i=-1;else{if(r)continue;o===i&&f==='"'||o===i&&f==="'"?(o=s+1,r=f):f==="."&&!i?s>o?u():o=s+1:f==="["?(s>o&&u(),i=o=s+1):f==="]"&&(i||Le("Access path missing open bracket: "+e),i>0&&u(),i=0,o=s+1)}return i&&Le("Access path missing closing bracket: "+e),r&&Le("Access path missing closing quote: "+e),s>o&&(s++,u()),t}function mu(e,t,n){const r=Nv(e);return e=r.length===1?r[0]:e,ne((n&&n.get||Pc)(r),[e],t||e)}mu("id");const bu=ne(e=>e,[],"identity");ne(()=>0,[],"zero"),ne(()=>1,[],"one"),ne(()=>!0,[],"true"),ne(()=>!1,[],"false");var Ut=Array.isArray;function on(e){return e===Object(e)}function sn(e){return e[e.length-1]}function go(e){return e==null||e===""?null:+e}const pg=e=>t=>e*Math.exp(t),mg=e=>t=>Math.log(e*t),Bv=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),Fv=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,yu=e=>t=>t<0?-Math.pow(-t,e):Math.pow(t,e);function Uc(e,t,n,r){const i=n(e[0]),a=n(sn(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function kv(e,t){return Uc(e,t,go,bu)}function Lv(e,t){var n=Math.sign(e[0]);return Uc(e,t,mg(n),pg(n))}function zv(e,t,n){return Uc(e,t,yu(n),yu(1/n))}function wu(e,t,n,r,i){const a=r(e[0]),o=r(sn(e)),s=t!=null?r(t):(a+o)/2;return[i(s+(a-s)*n),i(s+(o-s)*n)]}function bg(e,t,n){return wu(e,t,n,go,bu)}function yg(e,t,n){const r=Math.sign(e[0]);return wu(e,t,n,mg(r),pg(r))}function jc(e,t,n,r){return wu(e,t,n,yu(r),yu(1/r))}function Rv(e,t,n,r){return wu(e,t,n,Bv(r),Fv(r))}function Gc(e){return e!=null?Ut(e)?e:[e]:[]}function Ov(e,t,n){let r=e[0],i=e[1],a;return i<r&&(a=i,i=r,r=a),a=i-r,a>=n-t?[t,n]:[r=Math.min(Math.max(r,t),n-a),r+a]}function At(e){return typeof e=="function"}const Pv="descending";function wg(e,t,n){n=n||{},t=Gc(t)||[];const r=[],i=[],a={},o=n.comparator||Uv;return Gc(e).forEach((s,f)=>{s!=null&&(r.push(t[f]===Pv?-1:1),i.push(s=At(s)?s:mu(s,null,n)),(Jr(s)||[]).forEach(u=>a[u]=1))}),i.length===0?null:ne(o(i,r),Object.keys(a))}const xg=(e,t)=>(e<t||e==null)&&t!=null?-1:(e>t||t==null)&&e!=null?1:(t=t instanceof Date?+t:t,(e=e instanceof Date?+e:e)!==e&&t===t?-1:t!==t&&e===e?1:0),Uv=(e,t)=>e.length===1?jv(e[0],t[0]):Gv(e,t,e.length),jv=(e,t)=>function(n,r){return xg(e(n),e(r))*t},Gv=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=xg(a(r),a(i));return o*t[s]});function Hv(e){return At(e)?e:()=>e}function Hc(e){for(let t,n,r=1,i=arguments.length;r<i;++r){t=arguments[r];for(n in t)e[n]=t[n]}return e}const Qv=Object.prototype.hasOwnProperty;function $r(e,t){return Qv.call(e,t)}function xu(e){return typeof e=="boolean"}function Vv(e){return Object.prototype.toString.call(e)==="[object Date]"}function Zv(e){return e&&At(e[Symbol.iterator])}function vt(e){return typeof e=="number"}function ze(e){return typeof e=="string"}function Yv(e,t){const n=e[0],r=sn(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Au(e){return e&&sn(e)-e[0]||0}function vu(e){return Ut(e)?"["+e.map(vu)+"]":on(e)||ze(e)?JSON.stringify(e).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):e}function qv(e){return e==null||e===""?null:!e||e==="false"||e==="0"?!1:!!e}const Wv=e=>vt(e)||Vv(e)?e:Date.parse(e);function Xv(e,t){return t=t||Wv,e==null||e===""?null:t(e)}function Kv(e){return e==null||e===""?null:e+""}function Eu(e){const t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Ag={},Qc={},Vc=34,po=10,Zc=13;function vg(e){return new Function("d","return {"+e.map(function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'}).join(",")+"}")}function Jv(e,t){var n=vg(e);return function(r,i){return t(n(r),i,e)}}function Eg(e){var t=Object.create(null),n=[];return e.forEach(function(r){for(var i in r)i in t||n.push(t[i]=i)}),n}function Et(e,t){var n=e+"",r=n.length;return r<t?new Array(t-r+1).join(0)+n:n}function $v(e){return e<0?"-"+Et(-e,6):e>9999?"+"+Et(e,6):Et(e,4)}function eE(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?"Invalid Date":$v(e.getUTCFullYear())+"-"+Et(e.getUTCMonth()+1,2)+"-"+Et(e.getUTCDate(),2)+(i?"T"+Et(t,2)+":"+Et(n,2)+":"+Et(r,2)+"."+Et(i,3)+"Z":r?"T"+Et(t,2)+":"+Et(n,2)+":"+Et(r,2)+"Z":n||t?"T"+Et(t,2)+":"+Et(n,2)+"Z":"")}function Cg(e){var t=new RegExp('["'+e+`
|
|
2
|
+
\r]`),n=e.charCodeAt(0);function r(l,h){var d,p,b=i(l,function(x,A){if(d)return d(x,A-1);p=x,d=h?Jv(x,h):vg(x)});return b.columns=p||[],b}function i(l,h){var d=[],p=l.length,b=0,x=0,A,D=p<=0,I=!1;l.charCodeAt(p-1)===po&&--p,l.charCodeAt(p-1)===Zc&&--p;function C(){if(D)return Qc;if(I)return I=!1,Ag;var B,S=b,z;if(l.charCodeAt(S)===Vc){for(;b++<p&&l.charCodeAt(b)!==Vc||l.charCodeAt(++b)===Vc;);return(B=b)>=p?D=!0:(z=l.charCodeAt(b++))===po?I=!0:z===Zc&&(I=!0,l.charCodeAt(b)===po&&++b),l.slice(S+1,B-1).replace(/""/g,'"')}for(;b<p;){if((z=l.charCodeAt(B=b++))===po)I=!0;else if(z===Zc)I=!0,l.charCodeAt(b)===po&&++b;else if(z!==n)continue;return l.slice(S,B)}return D=!0,l.slice(S,p)}for(;(A=C())!==Qc;){for(var T=[];A!==Ag&&A!==Qc;)T.push(A),A=C();h&&(T=h(T,x++))==null||d.push(T)}return d}function a(l,h){return l.map(function(d){return h.map(function(p){return c(d[p])}).join(e)})}function o(l,h){return h==null&&(h=Eg(l)),[h.map(c).join(e)].concat(a(l,h)).join(`
|
|
3
|
+
`)}function s(l,h){return h==null&&(h=Eg(l)),a(l,h).join(`
|
|
4
|
+
`)}function f(l){return l.map(u).join(`
|
|
5
|
+
`)}function u(l){return l.map(c).join(e)}function c(l){return l==null?"":l instanceof Date?eE(l):t.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:f,formatRow:u,formatValue:c}}var tE=Cg(" "),nE=tE.parseRows;function rE(e){return e}function iE(e){if(e==null)return rE;var t,n,r=e.scale[0],i=e.scale[1],a=e.translate[0],o=e.translate[1];return function(s,f){f||(t=n=0);var u=2,c=s.length,l=new Array(c);for(l[0]=(t+=s[0])*r+a,l[1]=(n+=s[1])*i+o;u<c;)l[u]=s[u],++u;return l}}function aE(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function oE(e,t){return typeof t=="string"&&(t=e.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(n){return Sg(e,n)})}:Sg(e,t)}function Sg(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=Dg(e,t);return n==null&&r==null?{type:"Feature",properties:i,geometry:a}:r==null?{type:"Feature",id:n,properties:i,geometry:a}:{type:"Feature",id:n,bbox:r,properties:i,geometry:a}}function Dg(e,t){var n=iE(e.transform),r=e.arcs;function i(c,l){l.length&&l.pop();for(var h=r[c<0?~c:c],d=0,p=h.length;d<p;++d)l.push(n(h[d],d));c<0&&aE(l,p)}function a(c){return n(c)}function o(c){for(var l=[],h=0,d=c.length;h<d;++h)i(c[h],l);return l.length<2&&l.push(l[0]),l}function s(c){for(var l=o(c);l.length<4;)l.push(l[0]);return l}function f(c){return c.map(s)}function u(c){var l=c.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:c.geometries.map(u)};case"Point":h=a(c.coordinates);break;case"MultiPoint":h=c.coordinates.map(a);break;case"LineString":h=o(c.arcs);break;case"MultiLineString":h=c.arcs.map(o);break;case"Polygon":h=f(c.arcs);break;case"MultiPolygon":h=c.arcs.map(f);break;default:return null}return{type:l,coordinates:h}}return u(t)}function sE(e,t){var n={},r={},i={},a=[],o=-1;t.forEach(function(u,c){var l=e.arcs[u<0?~u:u],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=t[++o],t[o]=u,t[c]=h)}),t.forEach(function(u){var c=s(u),l=c[0],h=c[1],d,p;if(d=i[l])if(delete i[d.end],d.push(u),d.end=h,p=r[h]){delete r[p.start];var b=p===d?d:d.concat(p);r[b.start=d.start]=i[b.end=p.end]=b}else r[d.start]=i[d.end]=d;else if(d=r[h])if(delete r[d.start],d.unshift(u),d.start=l,p=i[l]){delete i[p.end];var x=p===d?d:p.concat(d);r[x.start=p.start]=i[x.end=d.end]=x}else r[d.start]=i[d.end]=d;else d=[u],r[d.start=l]=i[d.end=h]=d});function s(u){var c=e.arcs[u<0?~u:u],l=c[0],h;return e.transform?(h=[0,0],c.forEach(function(d){h[0]+=d[0],h[1]+=d[1]})):h=c[c.length-1],u<0?[h,l]:[l,h]}function f(u,c){for(var l in u){var h=u[l];delete c[h.start],delete h.start,delete h.end,h.forEach(function(d){n[d<0?~d:d]=1}),a.push(h)}}return f(i,r),f(r,i),t.forEach(function(u){n[u<0?~u:u]||a.push([u])}),a}function uE(e){return Dg(e,fE.apply(this,arguments))}function fE(e,t,n){var r,i,a;if(arguments.length>1)r=cE(e,t,n);else for(i=0,r=new Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:"MultiLineString",arcs:sE(e,r)}}function cE(e,t,n){var r=[],i=[],a;function o(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:a})}function s(l){l.forEach(o)}function f(l){l.forEach(s)}function u(l){l.forEach(f)}function c(l){switch(a=l,l.type){case"GeometryCollection":l.geometries.forEach(c);break;case"LineString":s(l.arcs);break;case"MultiLineString":case"Polygon":f(l.arcs);break;case"MultiPolygon":u(l.arcs);break}}return c(t),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function mo(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function lE(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Cu(e){let t,n,r;e.length!==2?(t=mo,n=(s,f)=>mo(e(s),f),r=(s,f)=>e(s)-f):(t=e===mo||e===lE?e:hE,n=e,r=e);function i(s,f,u=0,c=s.length){if(u<c){if(t(f,f)!==0)return c;do{const l=u+c>>>1;n(s[l],f)<0?u=l+1:c=l}while(u<c)}return u}function a(s,f,u=0,c=s.length){if(u<c){if(t(f,f)!==0)return c;do{const l=u+c>>>1;n(s[l],f)<=0?u=l+1:c=l}while(u<c)}return u}function o(s,f,u=0,c=s.length){const l=i(s,f,u,c-1);return l>u&&r(s[l-1],f)>-r(s[l],f)?l-1:l}return{left:i,center:o,right:a}}function hE(){return 0}function _g(e){return e===null?NaN:+e}const Ig=Cu(mo),Yc=Ig.right;Ig.left,Cu(_g).center;const Xi=Yc;function dE(e,t){let n,r;if(t===void 0)for(const i of e)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(n===void 0?a>=a&&(n=r=a):(n>a&&(n=a),r<a&&(r=a)))}return[n,r]}class ei extends Map{constructor(t,n=mE){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),t!=null)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(Mg(this,t))}has(t){return super.has(Mg(this,t))}set(t,n){return super.set(gE(this,t),n)}delete(t){return super.delete(pE(this,t))}}function Mg({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):n}function gE({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function pE({_intern:e,_key:t},n){const r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function mE(e){return e!==null&&typeof e=="object"?e.valueOf():e}function qc(e){return e}function Su(e,...t){return Tg(e,qc,qc,t)}function bE(e,...t){return Tg(e,Array.from,qc,t)}function Tg(e,t,n,r){return function i(a,o){if(o>=r.length)return n(a);const s=new ei,f=r[o++];let u=-1;for(const c of a){const l=f(c,++u,a),h=s.get(l);h?h.push(c):s.set(l,[c])}for(const[c,l]of s)s.set(c,i(l,o));return t(s)}(e,0)}var Wc=Math.sqrt(50),Xc=Math.sqrt(10),Kc=Math.sqrt(2);function Du(e,t,n){var r,i=-1,a,o,s;if(t=+t,e=+e,n=+n,e===t&&n>0)return[e];if((r=t<e)&&(a=e,e=t,t=a),(s=Ng(e,t,n))===0||!isFinite(s))return[];if(s>0){let f=Math.round(e/s),u=Math.round(t/s);for(f*s<e&&++f,u*s>t&&--u,o=new Array(a=u-f+1);++i<a;)o[i]=(f+i)*s}else{s=-s;let f=Math.round(e*s),u=Math.round(t*s);for(f/s<e&&++f,u/s>t&&--u,o=new Array(a=u-f+1);++i<a;)o[i]=(f+i)/s}return r&&o.reverse(),o}function Ng(e,t,n){var r=(t-e)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),a=r/Math.pow(10,i);return i>=0?(a>=Wc?10:a>=Xc?5:a>=Kc?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=Wc?10:a>=Xc?5:a>=Kc?2:1)}function ti(e,t,n){var r=Math.abs(t-e)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=Wc?i*=10:a>=Xc?i*=5:a>=Kc&&(i*=2),t<e?-i:i}function Bg(e,t,n=_g){if(r=e.length){if((t=+t)<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e),s=+n(e[a+1],a+1,e);return o+(s-o)*(i-a)}}function bo(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=new Array(i);++r<i;)a[r]=e+r*n;return a}function _u(e,t){let n=0;if(t===void 0)for(let r of e)(r=+r)&&(n+=r);else{let r=-1;for(let i of e)(i=+t(i,++r,e))&&(n+=i)}return n}function yE(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Iu(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Ki(e){return e=Iu(Math.abs(e)),e?e[1]:NaN}function wE(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],f=0;i>0&&s>0&&(f+s+1>r&&(s=Math.max(1,r-f)),a.push(n.substring(i-=s,i+s)),!((f+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function xE(e){return function(t){return t.replace(/[0-9]/g,function(n){return e[+n]})}}var AE=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function dr(e){if(!(t=AE.exec(e)))throw new Error("invalid format: "+e);var t;return new Jc({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}dr.prototype=Jc.prototype;function Jc(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Jc.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function vE(e){e:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+e[n])break e;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var Fg;function EE(e,t){var n=Iu(e,t);if(!n)return e+"";var r=n[0],i=n[1],a=i-(Fg=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Iu(e,Math.max(0,t+a-1))[0]}function kg(e,t){var n=Iu(e,t);if(!n)return e+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Lg={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:yE,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>kg(e*100,t),r:kg,s:EE,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function zg(e){return e}var Rg=Array.prototype.map,Og=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function CE(e){var t=e.grouping===void 0||e.thousands===void 0?zg:wE(Rg.call(e.grouping,Number),e.thousands+""),n=e.currency===void 0?"":e.currency[0]+"",r=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?zg:xE(Rg.call(e.numerals,String)),o=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"−":e.minus+"",f=e.nan===void 0?"NaN":e.nan+"";function u(l){l=dr(l);var h=l.fill,d=l.align,p=l.sign,b=l.symbol,x=l.zero,A=l.width,D=l.comma,I=l.precision,C=l.trim,T=l.type;T==="n"?(D=!0,T="g"):Lg[T]||(I===void 0&&(I=12),C=!0,T="g"),(x||h==="0"&&d==="=")&&(x=!0,h="0",d="=");var B=b==="$"?n:b==="#"&&/[boxX]/.test(T)?"0"+T.toLowerCase():"",S=b==="$"?r:/[%p]/.test(T)?o:"",z=Lg[T],E=/[defgprs%]/.test(T);I=I===void 0?6:/[gprs]/.test(T)?Math.max(1,Math.min(21,I)):Math.max(0,Math.min(20,I));function N(F){var Z=B,W=S,Y,be,Ee;if(T==="c")W=z(F)+W,F="";else{F=+F;var Ze=F<0||1/F<0;if(F=isNaN(F)?f:z(Math.abs(F),I),C&&(F=vE(F)),Ze&&+F==0&&p!=="+"&&(Ze=!1),Z=(Ze?p==="("?p:s:p==="-"||p==="("?"":p)+Z,W=(T==="s"?Og[8+Fg/3]:"")+W+(Ze&&p==="("?")":""),E){for(Y=-1,be=F.length;++Y<be;)if(Ee=F.charCodeAt(Y),48>Ee||Ee>57){W=(Ee===46?i+F.slice(Y+1):F.slice(Y))+W,F=F.slice(0,Y);break}}}D&&!x&&(F=t(F,1/0));var yt=Z.length+F.length+W.length,wt=yt<A?new Array(A-yt+1).join(h):"";switch(D&&x&&(F=t(wt+F,wt.length?A-W.length:1/0),wt=""),d){case"<":F=Z+F+W+wt;break;case"=":F=Z+wt+F+W;break;case"^":F=wt.slice(0,yt=wt.length>>1)+Z+F+W+wt.slice(yt);break;default:F=wt+Z+F+W;break}return a(F)}return N.toString=function(){return l+""},N}function c(l,h){var d=u((l=dr(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(Ki(h)/3)))*3,b=Math.pow(10,-p),x=Og[8+p/3];return function(A){return d(b*A)+x}}return{format:u,formatPrefix:c}}var Mu,nt,$c;SE({thousands:",",grouping:[3],currency:["$",""]});function SE(e){return Mu=CE(e),nt=Mu.format,$c=Mu.formatPrefix,Mu}function Pg(e){return Math.max(0,-Ki(Math.abs(e)))}function Ug(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ki(t)/3)))*3-Ki(Math.abs(e)))}function jg(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Ki(t)-Ki(e))+1}var el=new Date,tl=new Date;function qe(e,t,n,r){function i(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return i.floor=function(a){return e(a=new Date(+a)),a},i.ceil=function(a){return e(a=new Date(a-1)),t(a,1),e(a),a},i.round=function(a){var o=i(a),s=i.ceil(a);return a-o<s-a?o:s},i.offset=function(a,o){return t(a=new Date(+a),o==null?1:Math.floor(o)),a},i.range=function(a,o,s){var f=[],u;if(a=i.ceil(a),s=s==null?1:Math.floor(s),!(a<o)||!(s>0))return f;do f.push(u=new Date(+a)),t(a,s),e(a);while(u<a&&a<o);return f},i.filter=function(a){return qe(function(o){if(o>=o)for(;e(o),!a(o);)o.setTime(o-1)},function(o,s){if(o>=o)if(s<0)for(;++s<=0;)for(;t(o,-1),!a(o););else for(;--s>=0;)for(;t(o,1),!a(o););})},n&&(i.count=function(a,o){return el.setTime(+a),tl.setTime(+o),e(el),e(tl),Math.floor(n(el,tl))},i.every=function(a){return a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(r?function(o){return r(o)%a===0}:function(o){return i.count(0,o)%a===0}):i}),i}var Tu=qe(function(){},function(e,t){e.setTime(+e+t)},function(e,t){return t-e});Tu.every=function(e){return e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?qe(function(t){t.setTime(Math.floor(t/e)*e)},function(t,n){t.setTime(+t+n*e)},function(t,n){return(n-t)/e}):Tu};const nl=Tu;Tu.range;const Zn=1e3,jt=Zn*60,Yn=jt*60,ni=Yn*24,rl=ni*7,Gg=ni*30,il=ni*365;var Hg=qe(function(e){e.setTime(e-e.getMilliseconds())},function(e,t){e.setTime(+e+t*Zn)},function(e,t){return(t-e)/Zn},function(e){return e.getUTCSeconds()});const gr=Hg;Hg.range;var Qg=qe(function(e){e.setTime(e-e.getMilliseconds()-e.getSeconds()*Zn)},function(e,t){e.setTime(+e+t*jt)},function(e,t){return(t-e)/jt},function(e){return e.getMinutes()});const al=Qg;Qg.range;var Vg=qe(function(e){e.setTime(e-e.getMilliseconds()-e.getSeconds()*Zn-e.getMinutes()*jt)},function(e,t){e.setTime(+e+t*Yn)},function(e,t){return(t-e)/Yn},function(e){return e.getHours()});const ol=Vg;Vg.range;var Zg=qe(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*jt)/ni,e=>e.getDate()-1);const ri=Zg;Zg.range;function ii(e){return qe(function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n*7)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*jt)/rl})}var yo=ii(0),Nu=ii(1),DE=ii(2),_E=ii(3),Ji=ii(4),IE=ii(5),ME=ii(6);yo.range,Nu.range,DE.range,_E.range,Ji.range,IE.range,ME.range;var Yg=qe(function(e){e.setDate(1),e.setHours(0,0,0,0)},function(e,t){e.setMonth(e.getMonth()+t)},function(e,t){return t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12},function(e){return e.getMonth()});const Bu=Yg;Yg.range;var sl=qe(function(e){e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,t){e.setFullYear(e.getFullYear()+t)},function(e,t){return t.getFullYear()-e.getFullYear()},function(e){return e.getFullYear()});sl.every=function(e){return!isFinite(e=Math.floor(e))||!(e>0)?null:qe(function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n*e)})};const pr=sl;sl.range;var qg=qe(function(e){e.setUTCSeconds(0,0)},function(e,t){e.setTime(+e+t*jt)},function(e,t){return(t-e)/jt},function(e){return e.getUTCMinutes()});const ul=qg;qg.range;var Wg=qe(function(e){e.setUTCMinutes(0,0,0)},function(e,t){e.setTime(+e+t*Yn)},function(e,t){return(t-e)/Yn},function(e){return e.getUTCHours()});const fl=Wg;Wg.range;var Xg=qe(function(e){e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCDate(e.getUTCDate()+t)},function(e,t){return(t-e)/ni},function(e){return e.getUTCDate()-1});const ai=Xg;Xg.range;function oi(e){return qe(function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n*7)},function(t,n){return(n-t)/rl})}var wo=oi(0),Fu=oi(1),TE=oi(2),NE=oi(3),$i=oi(4),BE=oi(5),FE=oi(6);wo.range,Fu.range,TE.range,NE.range,$i.range,BE.range,FE.range;var Kg=qe(function(e){e.setUTCDate(1),e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCMonth(e.getUTCMonth()+t)},function(e,t){return t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12},function(e){return e.getUTCMonth()});const ku=Kg;Kg.range;var cl=qe(function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)},function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()},function(e){return e.getUTCFullYear()});cl.every=function(e){return!isFinite(e=Math.floor(e))||!(e>0)?null:qe(function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)})};const mr=cl;cl.range;function Jg(e,t,n,r,i,a){const o=[[gr,1,Zn],[gr,5,5*Zn],[gr,15,15*Zn],[gr,30,30*Zn],[a,1,jt],[a,5,5*jt],[a,15,15*jt],[a,30,30*jt],[i,1,Yn],[i,3,3*Yn],[i,6,6*Yn],[i,12,12*Yn],[r,1,ni],[r,2,2*ni],[n,1,rl],[t,1,Gg],[t,3,3*Gg],[e,1,il]];function s(u,c,l){const h=c<u;h&&([u,c]=[c,u]);const d=l&&typeof l.range=="function"?l:f(u,c,l),p=d?d.range(u,+c+1):[];return h?p.reverse():p}function f(u,c,l){const h=Math.abs(c-u)/l,d=Cu(([,,x])=>x).right(o,h);if(d===o.length)return e.every(ti(u/il,c/il,l));if(d===0)return nl.every(Math.max(ti(u,c,l),1));const[p,b]=o[h/o[d-1][2]<o[d][2]/h?d-1:d];return p.every(b)}return[s,f]}const[kE,LE]=Jg(mr,ku,wo,ai,fl,ul),[zE,RE]=Jg(pr,Bu,yo,ri,ol,al),xo="year",Ao="quarter",vo="month",Eo="week",Co="date",Lu="day",ll="dayofyear",So="hours",Do="minutes",_o="seconds",zu="milliseconds";[xo,Ao,vo,Eo,Co,Lu,ll,So,Do,_o,zu].reduce((e,t,n)=>(e[t]=1+n,e),{});const OE={[xo]:pr,[Ao]:Bu.every(3),[vo]:Bu,[Eo]:yo,[Co]:ri,[Lu]:ri,[ll]:ri,[So]:ol,[Do]:al,[_o]:gr,[zu]:nl},PE={[xo]:mr,[Ao]:ku.every(3),[vo]:ku,[Eo]:wo,[Co]:ai,[Lu]:ai,[ll]:ai,[So]:fl,[Do]:ul,[_o]:gr,[zu]:nl};function UE(e){return OE[e]}function jE(e){return PE[e]}function hl(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function dl(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Io(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function $g(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,a=e.days,o=e.shortDays,s=e.months,f=e.shortMonths,u=Mo(i),c=To(i),l=Mo(a),h=To(a),d=Mo(o),p=To(o),b=Mo(s),x=To(s),A=Mo(f),D=To(f),I={a:Ze,A:yt,b:wt,B:lu,c:null,d:ap,e:ap,f:c3,g:x3,G:v3,H:s3,I:u3,j:f3,L:op,m:l3,M:h3,p:Re,q:Ye,Q:hp,s:dp,S:d3,u:g3,U:p3,V:m3,w:b3,W:y3,x:null,X:null,y:w3,Y:A3,Z:E3,"%":lp},C={a:uo,A:Yi,b:fo,B:qi,c:null,d:up,e:up,f:_3,g:R3,G:P3,H:C3,I:S3,j:D3,L:fp,m:I3,M:M3,p:co,q:vn,Q:hp,s:dp,S:T3,u:N3,U:B3,V:F3,w:k3,W:L3,x:null,X:null,y:z3,Y:O3,Z:U3,"%":lp},T={a:N,A:F,b:Z,B:W,c:Y,d:rp,e:rp,f:r3,g:np,G:tp,H:ip,I:ip,j:$E,L:n3,m:JE,M:e3,p:E,q:KE,Q:a3,s:o3,S:t3,u:ZE,U:YE,V:qE,w:VE,W:WE,x:be,X:Ee,y:np,Y:tp,Z:XE,"%":i3};I.x=B(n,I),I.X=B(r,I),I.c=B(t,I),C.x=B(n,C),C.X=B(r,C),C.c=B(t,C);function B(Q,$){return function(ie){var P=[],Oe=-1,se=0,ot=Q.length,tt,Ot,Wi;for(ie instanceof Date||(ie=new Date(+ie));++Oe<ot;)Q.charCodeAt(Oe)===37&&(P.push(Q.slice(se,Oe)),(Ot=ep[tt=Q.charAt(++Oe)])!=null?tt=Q.charAt(++Oe):Ot=tt==="e"?" ":"0",(Wi=$[tt])&&(tt=Wi(ie,Ot)),P.push(tt),se=Oe+1);return P.push(Q.slice(se,Oe)),P.join("")}}function S(Q,$){return function(ie){var P=Io(1900,void 0,1),Oe=z(P,Q,ie+="",0),se,ot;if(Oe!=ie.length)return null;if("Q"in P)return new Date(P.Q);if("s"in P)return new Date(P.s*1e3+("L"in P?P.L:0));if($&&!("Z"in P)&&(P.Z=0),"p"in P&&(P.H=P.H%12+P.p*12),P.m===void 0&&(P.m="q"in P?P.q:0),"V"in P){if(P.V<1||P.V>53)return null;"w"in P||(P.w=1),"Z"in P?(se=dl(Io(P.y,0,1)),ot=se.getUTCDay(),se=ot>4||ot===0?Fu.ceil(se):Fu(se),se=ai.offset(se,(P.V-1)*7),P.y=se.getUTCFullYear(),P.m=se.getUTCMonth(),P.d=se.getUTCDate()+(P.w+6)%7):(se=hl(Io(P.y,0,1)),ot=se.getDay(),se=ot>4||ot===0?Nu.ceil(se):Nu(se),se=ri.offset(se,(P.V-1)*7),P.y=se.getFullYear(),P.m=se.getMonth(),P.d=se.getDate()+(P.w+6)%7)}else("W"in P||"U"in P)&&("w"in P||(P.w="u"in P?P.u%7:"W"in P?1:0),ot="Z"in P?dl(Io(P.y,0,1)).getUTCDay():hl(Io(P.y,0,1)).getDay(),P.m=0,P.d="W"in P?(P.w+6)%7+P.W*7-(ot+5)%7:P.w+P.U*7-(ot+6)%7);return"Z"in P?(P.H+=P.Z/100|0,P.M+=P.Z%100,dl(P)):hl(P)}}function z(Q,$,ie,P){for(var Oe=0,se=$.length,ot=ie.length,tt,Ot;Oe<se;){if(P>=ot)return-1;if(tt=$.charCodeAt(Oe++),tt===37){if(tt=$.charAt(Oe++),Ot=T[tt in ep?$.charAt(Oe++):tt],!Ot||(P=Ot(Q,ie,P))<0)return-1}else if(tt!=ie.charCodeAt(P++))return-1}return P}function E(Q,$,ie){var P=u.exec($.slice(ie));return P?(Q.p=c.get(P[0].toLowerCase()),ie+P[0].length):-1}function N(Q,$,ie){var P=d.exec($.slice(ie));return P?(Q.w=p.get(P[0].toLowerCase()),ie+P[0].length):-1}function F(Q,$,ie){var P=l.exec($.slice(ie));return P?(Q.w=h.get(P[0].toLowerCase()),ie+P[0].length):-1}function Z(Q,$,ie){var P=A.exec($.slice(ie));return P?(Q.m=D.get(P[0].toLowerCase()),ie+P[0].length):-1}function W(Q,$,ie){var P=b.exec($.slice(ie));return P?(Q.m=x.get(P[0].toLowerCase()),ie+P[0].length):-1}function Y(Q,$,ie){return z(Q,t,$,ie)}function be(Q,$,ie){return z(Q,n,$,ie)}function Ee(Q,$,ie){return z(Q,r,$,ie)}function Ze(Q){return o[Q.getDay()]}function yt(Q){return a[Q.getDay()]}function wt(Q){return f[Q.getMonth()]}function lu(Q){return s[Q.getMonth()]}function Re(Q){return i[+(Q.getHours()>=12)]}function Ye(Q){return 1+~~(Q.getMonth()/3)}function uo(Q){return o[Q.getUTCDay()]}function Yi(Q){return a[Q.getUTCDay()]}function fo(Q){return f[Q.getUTCMonth()]}function qi(Q){return s[Q.getUTCMonth()]}function co(Q){return i[+(Q.getUTCHours()>=12)]}function vn(Q){return 1+~~(Q.getUTCMonth()/3)}return{format:function(Q){var $=B(Q+="",I);return $.toString=function(){return Q},$},parse:function(Q){var $=S(Q+="",!1);return $.toString=function(){return Q},$},utcFormat:function(Q){var $=B(Q+="",C);return $.toString=function(){return Q},$},utcParse:function(Q){var $=S(Q+="",!0);return $.toString=function(){return Q},$}}}var ep={"-":"",_:" ",0:"0"},We=/^\s*\d+/,GE=/^%/,HE=/[\\^$*+?|[\]().{}]/g;function fe(e,t,n){var r=e<0?"-":"",i=(r?-e:e)+"",a=i.length;return r+(a<n?new Array(n-a+1).join(t)+i:i)}function QE(e){return e.replace(HE,"\\$&")}function Mo(e){return new RegExp("^(?:"+e.map(QE).join("|")+")","i")}function To(e){return new Map(e.map((t,n)=>[t.toLowerCase(),n]))}function VE(e,t,n){var r=We.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function ZE(e,t,n){var r=We.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function YE(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function qE(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function WE(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function tp(e,t,n){var r=We.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function np(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function XE(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function KE(e,t,n){var r=We.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function JE(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function rp(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function $E(e,t,n){var r=We.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function ip(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function e3(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function t3(e,t,n){var r=We.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function n3(e,t,n){var r=We.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function r3(e,t,n){var r=We.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function i3(e,t,n){var r=GE.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function a3(e,t,n){var r=We.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function o3(e,t,n){var r=We.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function ap(e,t){return fe(e.getDate(),t,2)}function s3(e,t){return fe(e.getHours(),t,2)}function u3(e,t){return fe(e.getHours()%12||12,t,2)}function f3(e,t){return fe(1+ri.count(pr(e),e),t,3)}function op(e,t){return fe(e.getMilliseconds(),t,3)}function c3(e,t){return op(e,t)+"000"}function l3(e,t){return fe(e.getMonth()+1,t,2)}function h3(e,t){return fe(e.getMinutes(),t,2)}function d3(e,t){return fe(e.getSeconds(),t,2)}function g3(e){var t=e.getDay();return t===0?7:t}function p3(e,t){return fe(yo.count(pr(e)-1,e),t,2)}function sp(e){var t=e.getDay();return t>=4||t===0?Ji(e):Ji.ceil(e)}function m3(e,t){return e=sp(e),fe(Ji.count(pr(e),e)+(pr(e).getDay()===4),t,2)}function b3(e){return e.getDay()}function y3(e,t){return fe(Nu.count(pr(e)-1,e),t,2)}function w3(e,t){return fe(e.getFullYear()%100,t,2)}function x3(e,t){return e=sp(e),fe(e.getFullYear()%100,t,2)}function A3(e,t){return fe(e.getFullYear()%1e4,t,4)}function v3(e,t){var n=e.getDay();return e=n>=4||n===0?Ji(e):Ji.ceil(e),fe(e.getFullYear()%1e4,t,4)}function E3(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+fe(t/60|0,"0",2)+fe(t%60,"0",2)}function up(e,t){return fe(e.getUTCDate(),t,2)}function C3(e,t){return fe(e.getUTCHours(),t,2)}function S3(e,t){return fe(e.getUTCHours()%12||12,t,2)}function D3(e,t){return fe(1+ai.count(mr(e),e),t,3)}function fp(e,t){return fe(e.getUTCMilliseconds(),t,3)}function _3(e,t){return fp(e,t)+"000"}function I3(e,t){return fe(e.getUTCMonth()+1,t,2)}function M3(e,t){return fe(e.getUTCMinutes(),t,2)}function T3(e,t){return fe(e.getUTCSeconds(),t,2)}function N3(e){var t=e.getUTCDay();return t===0?7:t}function B3(e,t){return fe(wo.count(mr(e)-1,e),t,2)}function cp(e){var t=e.getUTCDay();return t>=4||t===0?$i(e):$i.ceil(e)}function F3(e,t){return e=cp(e),fe($i.count(mr(e),e)+(mr(e).getUTCDay()===4),t,2)}function k3(e){return e.getUTCDay()}function L3(e,t){return fe(Fu.count(mr(e)-1,e),t,2)}function z3(e,t){return fe(e.getUTCFullYear()%100,t,2)}function R3(e,t){return e=cp(e),fe(e.getUTCFullYear()%100,t,2)}function O3(e,t){return fe(e.getUTCFullYear()%1e4,t,4)}function P3(e,t){var n=e.getUTCDay();return e=n>=4||n===0?$i(e):$i.ceil(e),fe(e.getUTCFullYear()%1e4,t,4)}function U3(){return"+0000"}function lp(){return"%"}function hp(e){return+e}function dp(e){return Math.floor(+e/1e3)}var ea,gl,gp,pl,pp;j3({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function j3(e){return ea=$g(e),gl=ea.format,gp=ea.parse,pl=ea.utcFormat,pp=ea.utcParse,ea}function No(e){const t={};return n=>t[n]||(t[n]=e(n))}function G3(e,t){return n=>{const r=e(n),i=r.indexOf(t);if(i<0)return r;let a=H3(r,i);const o=a<r.length?r.slice(a):"";for(;--a>i;)if(r[a]!=="0"){++a;break}return r.slice(0,a)+o}}function H3(e,t){let n=e.lastIndexOf("e"),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}function Q3(e){const t=No(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(r){const i=dr(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return G3(t(i),t(".1f")(1)[1])}else return t(i)},formatSpan(r,i,a,o){o=dr(o??",f");const s=ti(r,i,a),f=Math.max(Math.abs(r),Math.abs(i));let u;if(o.precision==null)switch(o.type){case"s":return isNaN(u=Ug(s,f))||(o.precision=u),n(o,f);case"":case"e":case"g":case"p":case"r":{isNaN(u=jg(s,f))||(o.precision=u-(o.type==="e"));break}case"f":case"%":{isNaN(u=Pg(s))||(o.precision=u-(o.type==="%")*2);break}}return t(o)}}}V3();function V3(){return Q3({format:nt,formatPrefix:$c})}function mp(e,t,n){n=n||{},on(n)||Le("Invalid time multi-format specifier: ".concat(n));const r=t(_o),i=t(Do),a=t(So),o=t(Co),s=t(Eo),f=t(vo),u=t(Ao),c=t(xo),l=e(n[zu]||".%L"),h=e(n[_o]||":%S"),d=e(n[Do]||"%I:%M"),p=e(n[So]||"%I %p"),b=e(n[Co]||n[Lu]||"%a %d"),x=e(n[Eo]||"%b %d"),A=e(n[vo]||"%B"),D=e(n[Ao]||"%B"),I=e(n[xo]||"%Y");return C=>(r(C)<C?l:i(C)<C?h:a(C)<C?d:o(C)<C?p:f(C)<C?s(C)<C?b:x:c(C)<C?u(C)<C?A:D:I)(C)}function bp(e){const t=No(e.format),n=No(e.utcFormat);return{timeFormat:r=>ze(r)?t(r):mp(t,UE,r),utcFormat:r=>ze(r)?n(r):mp(n,jE,r),timeParse:No(e.parse),utcParse:No(e.utcParse)}}let ml;Z3();function Z3(){return ml=bp({format:gl,parse:gp,utcFormat:pl,utcParse:pp})}function Y3(e){return bp($g(e))}function q3(e){return arguments.length?ml=Y3(e):ml}const W3=/^(data:|([A-Za-z]+:)?\/\/)/,X3=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,K3=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,yp="file://";function J3(e,t){return n=>({options:n||{},sanitize:eC,load:$3,fileAccess:!!t,file:tC(t),http:rC(e)})}async function $3(e,t){const n=await this.sanitize(e,t),r=n.href;return n.localFile?this.file(r):this.http(r,t)}async function eC(e,t){t=Hc({},this.options,t);const n=this.fileAccess,r={href:null};let i,a,o;const s=X3.test(e.replace(K3,""));(e==null||typeof e!="string"||!s)&&Le("Sanitize failure, invalid URI: "+vu(e));const f=W3.test(e);return(o=t.baseURL)&&!f&&(!e.startsWith("/")&&!o.endsWith("/")&&(e="/"+e),e=o+e),a=(i=e.startsWith(yp))||t.mode==="file"||t.mode!=="http"&&!f&&n,i?e=e.slice(yp.length):e.startsWith("//")&&(t.defaultProtocol==="file"?(e=e.slice(2),a=!0):e=(t.defaultProtocol||"http")+":"+e),Object.defineProperty(r,"localFile",{value:!!a}),r.href=e,t.target&&(r.target=t.target+""),t.rel&&(r.rel=t.rel+""),t.context==="image"&&t.crossOrigin&&(r.crossOrigin=t.crossOrigin+""),r}function tC(e){return e?t=>new Promise((n,r)=>{e.readFile(t,(i,a)=>{i?r(i):n(a)})}):nC}async function nC(){Le("No file system access.")}function rC(e){return e?async function(t,n){const r=Hc({},this.options.http,n),i=n&&n.response,a=await e(t,r);return a.ok?At(a[i])?a[i]():a.text():Le(a.status+""+a.statusText)}:iC}async function iC(){Le("No HTTP fetch method available.")}const aC=e=>e!=null&&e===e,oC=e=>e==="true"||e==="false"||e===!0||e===!1,sC=e=>!Number.isNaN(Date.parse(e)),wp=e=>!Number.isNaN(+e)&&!(e instanceof Date),uC=e=>wp(e)&&Number.isInteger(+e),xp={boolean:qv,integer:go,number:go,date:Xv,string:Kv,unknown:bu},Ru=[oC,uC,wp,sC],fC=["boolean","integer","number","date"];function cC(e,t){if(!e||!e.length)return"unknown";const n=e.length,r=Ru.length,i=Ru.map((a,o)=>o+1);for(let a=0,o=0,s,f;a<n;++a)for(f=t?e[a][t]:e[a],s=0;s<r;++s)if(i[s]&&aC(f)&&!Ru[s](f)&&(i[s]=0,++o,o===Ru.length))return"string";return fC[i.reduce((a,o)=>a===0?o:a,0)-1]}function lC(e,t){return t.reduce((n,r)=>(n[r]=cC(e,r),n),{})}function Ap(e){const t=function(n,r){const i={delimiter:e};return bl(n,r?Hc(r,i):i)};return t.responseType="text",t}function bl(e,t){return t.header&&(e=t.header.map(vu).join(t.delimiter)+`
|
|
6
|
+
`+e),Cg(t.delimiter).parse(e+"")}bl.responseType="text";function hC(e){return typeof Buffer=="function"&&At(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function yl(e,t){const n=t&&t.property?mu(t.property):bu;return on(e)&&!hC(e)?dC(n(e),t):n(JSON.parse(e))}yl.responseType="json";function dC(e,t){return!Ut(e)&&Zv(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}const gC={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function vp(e,t){let n,r,i,a;return e=yl(e,t),t&&t.feature?(n=oE,i=t.feature):t&&t.mesh?(n=uE,i=t.mesh,a=gC[t.filter]):Le("Missing TopoJSON feature or mesh parameter."),r=(r=e.objects[i])?n(e,r,a):Le("Invalid TopoJSON object: "+i),r&&r.features||[r]}vp.responseType="json";const wl={dsv:bl,csv:Ap(","),tsv:Ap(" "),json:yl,topojson:vp};function Ep(e,t){return arguments.length>1?(wl[e]=t,this):$r(wl,e)?wl[e]:null}function Cp(e,t,n,r){t=t||{};const i=Ep(t.type||"json");return i||Le("Unknown data format type: "+t.type),e=i(e,t),t.parse&&pC(e,t.parse,n,r),$r(e,"columns")&&delete e.columns,e}function pC(e,t,n,r){if(!e.length)return;const i=q3();n=n||i.timeParse,r=r||i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,f,u,c,l;t==="auto"&&(t=lC(e,a)),a=Object.keys(t);const h=a.map(d=>{const p=t[d];let b,x;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return b=p.split(/:(.+)?/,2),x=b[1],(x[0]==="'"&&x[x.length-1]==="'"||x[0]==='"'&&x[x.length-1]==='"')&&(x=x.slice(1,-1)),(b[0]==="utc"?r:n)(x);if(!xp[p])throw Error("Illegal format pattern: "+d+":"+p);return xp[p]});for(f=0,c=e.length,l=a.length;f<c;++f)for(o=e[f],u=0;u<l;++u)s=a[u],o[s]=h[u](o[s])}const Ou=J3(typeof fetch<"u"&&fetch,null);/**
|
|
7
7
|
* @license
|
|
8
8
|
* Copyright 2017 Google LLC
|
|
9
9
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
10
|
-
*/var
|
|
10
|
+
*/var xl;const Pu=window,ta=Pu.trustedTypes,Sp=ta?ta.createPolicy("lit-html",{createHTML:e=>e}):void 0,br=`lit$${(Math.random()+"").slice(9)}$`,Dp="?"+br,mC=`<${Dp}>`,na=document,Bo=(e="")=>na.createComment(e),Fo=e=>e===null||typeof e!="object"&&typeof e!="function",_p=Array.isArray,bC=e=>_p(e)||typeof(e==null?void 0:e[Symbol.iterator])=="function",ko=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Ip=/-->/g,Mp=/>/g,si=RegExp(`>|[
|
|
11
11
|
\f\r](?:([^\\s"'>=/]+)([
|
|
12
12
|
\f\r]*=[
|
|
13
13
|
\f\r]*(?:[^
|
|
14
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),Lc=/'/g,zc=/"/g,Pc=/^(?:script|style|textarea|title)$/i,_p=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),rt=_p(1),gr=Symbol.for("lit-noChange"),te=Symbol.for("lit-nothing"),Oc=new WeakMap,gn=dn.createTreeWalker(dn,129,null,!1),$p=(t,e)=>{const n=t.length-1,r=[];let i,s=e===2?"<svg>":"",o=dr;for(let u=0;u<n;u++){const c=t[u];let f,l,h=-1,g=0;for(;g<c.length&&(o.lastIndex=g,l=o.exec(c),l!==null);)g=o.lastIndex,o===dr?l[1]==="!--"?o=Bc:l[1]!==void 0?o=Fc:l[2]!==void 0?(Pc.test(l[2])&&(i=RegExp("</"+l[2],"g")),o=Ut):l[3]!==void 0&&(o=Ut):o===Ut?l[0]===">"?(o=i??dr,h=-1):l[1]===void 0?h=-2:(h=o.lastIndex-l[2].length,f=l[1],o=l[3]===void 0?Ut:l[3]==='"'?zc:Lc):o===zc||o===Lc?o=Ut:o===Bc||o===Fc?o=dr:(o=Ut,i=void 0);const d=o===Ut&&t[u+1].startsWith("/>")?" ":"";s+=o===dr?c+Jp:h>=0?(r.push(f),c.slice(0,h)+"$lit$"+c.slice(h)+pt+d):c+pt+(h===-2?(r.push(void 0),u):d)}const a=s+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Ic!==void 0?Ic.createHTML(a):a,r]};let po=class id{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let s=0,o=0;const a=e.length-1,u=this.parts,[c,f]=$p(e,n);if(this.el=id.createElement(c,r),gn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=gn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(pt)){const g=f[o++];if(l.push(h),g!==void 0){const d=i.getAttribute(g.toLowerCase()+"$lit$").split(pt),p=/([.?@])?(.*)/.exec(g);u.push({type:1,index:s,name:p[2],strings:d,ctor:p[1]==="."?tm:p[1]==="?"?rm:p[1]==="@"?im:Ii})}else u.push({type:6,index:s})}for(const h of l)i.removeAttribute(h)}if(Pc.test(i.tagName)){const l=i.textContent.split(pt),h=l.length-1;if(h>0){i.textContent=hn?hn.emptyScript:"";for(let g=0;g<h;g++)i.append(l[g],fr()),gn.nextNode(),u.push({type:2,index:++s});i.append(l[h],fr())}}}else if(i.nodeType===8)if(i.data===Tc)u.push({type:2,index:s});else{let l=-1;for(;(l=i.data.indexOf(pt,l+1))!==-1;)u.push({type:7,index:s}),l+=pt.length-1}s++}}static createElement(e,n){const r=dn.createElement("template");return r.innerHTML=e,r}};function pn(t,e,n=t,r){var i,s,o,a;if(e===gr)return e;let u=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const c=hr(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((s=u==null?void 0:u._$AO)===null||s===void 0||s.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((o=(a=n)._$Co)!==null&&o!==void 0?o:a._$Co=[])[r]=u:n._$Cl=u),u!==void 0&&(e=pn(t,u._$AS(t,e.values),u,r)),e}class em{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,s=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:dn).importNode(r,!0);gn.currentNode=s;let o=gn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let f;c.type===2?f=new pr(o,o.nextSibling,this,e):c.type===1?f=new c.ctor(o,c.name,c.strings,this,e):c.type===6&&(f=new sm(o,this,e)),this.u.push(f),c=i[++u]}a!==(c==null?void 0:c.index)&&(o=gn.nextNode(),a++)}return s}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class pr{constructor(e,n,r,i){var s;this.type=2,this._$AH=te,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(s=i==null?void 0:i.isConnected)===null||s===void 0||s}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=pn(this,e,n),hr(e)?e===te||e==null||e===""?(this._$AH!==te&&this._$AR(),this._$AH=te):e!==this._$AH&&e!==gr&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):qp(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==te&&hr(this._$AH)?this._$AA.nextSibling.data=e:this.T(dn.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,s=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=po.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===s)this._$AH.p(r);else{const o=new em(s,this),a=o.v(this.options);o.p(r),this.T(a),this._$AH=o}}_$AC(e){let n=Oc.get(e.strings);return n===void 0&&Oc.set(e.strings,n=new po(e)),n}k(e){Nc(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const s of e)i===n.length?n.push(r=new pr(this.O(fr()),this.O(fr()),this,this.options)):r=n[i],r._$AI(s),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Ii{constructor(e,n,r,i,s){this.type=1,this._$AH=te,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=s,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=te}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const s=this.strings;let o=!1;if(s===void 0)e=pn(this,e,n,0),o=!hr(e)||e!==this._$AH&&e!==gr,o&&(this._$AH=e);else{const a=e;let u,c;for(e=s[0],u=0;u<s.length-1;u++)c=pn(this,a[r+u],n,u),c===gr&&(c=this._$AH[u]),o||(o=!hr(c)||c!==this._$AH[u]),c===te?e=te:e!==te&&(e+=(c??"")+s[u+1]),this._$AH[u]=c}o&&!i&&this.j(e)}j(e){e===te?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class tm extends Ii{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===te?void 0:e}}const nm=hn?hn.emptyScript:"";class rm extends Ii{constructor(){super(...arguments),this.type=4}j(e){e&&e!==te?this.element.setAttribute(this.name,nm):this.element.removeAttribute(this.name)}}class im extends Ii{constructor(e,n,r,i,s){super(e,n,r,i,s),this.type=5}_$AI(e,n=this){var r;if((e=(r=pn(this,e,n,0))!==null&&r!==void 0?r:te)===gr)return;const i=this._$AH,s=e===te&&i!==te||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,o=e!==te&&(i===te||s);s&&this.element.removeEventListener(this.name,this,i),o&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class sm{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){pn(this,e)}}const kc=Si.litHtmlPolyfillSupport;kc==null||kc(po,pr),((go=Si.litHtmlVersions)!==null&&go!==void 0?go:Si.litHtmlVersions=[]).push("2.4.0");const Rc=(t,e,n)=>{var r,i;const s=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let o=s._$litPart$;if(o===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;s._$litPart$=o=new pr(e.insertBefore(fr(),a),a,void 0,n??{})}return o._$AI(t),o},jc=1;function mo(){let t=[0,1],e=[0,1],n=1,r=1,i=0,s=0,o=.5,a=0;const c=f=>(f+o-t[0])/n*r+e[0];return c.invert=f=>(f-e[0])/r*n+t[0]-o,c.domain=function(f){if(arguments.length){if(t=Xd(f),n=t[1]-t[0],n<jc){n=jc;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return c}else return t},c.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],c):e},c.numberingOffset=function(f){return arguments.length?(a=f,c):a},c.padding=function(f){return arguments.length?(s=f,i=Math.min(1,f),c):i},c.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),c):i},c.paddingOuter=function(f){return arguments.length?(s=f,c):s},c.align=function(f){return arguments.length?(o=Math.max(0,Math.min(1,f)),c):o},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=f=>{const l=c.align(),h=c.numberingOffset();return gi(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(g=>g-a)},c.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const g=zt(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?ae(","):ae(".3s");return d=>g(d+a)},c.copy=()=>mo().domain(t).range(e).paddingInner(i).paddingOuter(s).numberingOffset(a),c}function om(){const t=mo().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),s=t.numberingOffset(),[o,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),u=Math.max(1,zt(i[0],i[1],r)),c=[];for(let f=o.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+u,i[0]-(i[0]-l.continuousStart)%u),g=Math.min(l.continuousEnd-u/4,i[1]+1);for(let d=h;d<=g;d+=u){const p=d-s;p>=i[0]&&p<i[1]&&c.push(p)}}return c},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const s=t.domain(),o=s[1]-s[0],a=t.numberingOffset(),c=zt(s[0],s[1],Math.min(r,Math.ceil(o)))<1e6?ae(","):ae(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>c(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function am(t){return t.type=="locus"}function Ve(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function mt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const Ao=Symbol("implicit");function yo(){var t=new Lt,e=[],n=[],r=Ao;function i(s){let o=t.get(s);if(o===void 0){if(r!==Ao)return r;t.set(s,o=e.push(s)-1)}return n[o%n.length]}return i.domain=function(s){if(!arguments.length)return e.slice();e=[],t=new Lt;for(const o of s)t.has(o)||t.set(o,e.push(o)-1);return i},i.range=function(s){return arguments.length?(n=Array.from(s),i):n.slice()},i.unknown=function(s){return arguments.length?(r=s,i):r},i.copy=function(){return yo(e,n).unknown(r)},Ve.apply(i,arguments),i}function mn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function mr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function At(){}var Gt=.7,An=1/Gt,yn="\\s*([+-]?\\d+)\\s*",Ar="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",We="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",um=/^#([0-9a-f]{3,8})$/,cm=new RegExp(`^rgb\\(${yn},${yn},${yn}\\)$`),lm=new RegExp(`^rgb\\(${We},${We},${We}\\)$`),fm=new RegExp(`^rgba\\(${yn},${yn},${yn},${Ar}\\)$`),hm=new RegExp(`^rgba\\(${We},${We},${We},${Ar}\\)$`),dm=new RegExp(`^hsl\\(${Ar},${We},${We}\\)$`),gm=new RegExp(`^hsla\\(${Ar},${We},${We},${Ar}\\)$`),Uc={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};mn(At,Qt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Gc,formatHex:Gc,formatHex8:pm,formatHsl:mm,formatRgb:Qc,toString:Qc});function Gc(){return this.rgb().formatHex()}function pm(){return this.rgb().formatHex8()}function mm(){return Xc(this).formatHsl()}function Qc(){return this.rgb().formatRgb()}function Qt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=um.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Hc(e):n===3?new ne(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Ti(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Ti(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=cm.exec(t))?new ne(e[1],e[2],e[3],1):(e=lm.exec(t))?new ne(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=fm.exec(t))?Ti(e[1],e[2],e[3],e[4]):(e=hm.exec(t))?Ti(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=dm.exec(t))?Wc(e[1],e[2]/100,e[3]/100,1):(e=gm.exec(t))?Wc(e[1],e[2]/100,e[3]/100,e[4]):Uc.hasOwnProperty(t)?Hc(Uc[t]):t==="transparent"?new ne(NaN,NaN,NaN,0):null}function Hc(t){return new ne(t>>16&255,t>>8&255,t&255,1)}function Ti(t,e,n,r){return r<=0&&(t=e=n=NaN),new ne(t,e,n,r)}function xo(t){return t instanceof At||(t=Qt(t)),t?(t=t.rgb(),new ne(t.r,t.g,t.b,t.opacity)):new ne}function Ni(t,e,n,r){return arguments.length===1?xo(t):new ne(t,e,n,r??1)}function ne(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}mn(ne,Ni,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ne(Ht(this.r),Ht(this.g),Ht(this.b),Bi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Yc,formatHex:Yc,formatHex8:Am,formatRgb:Vc,toString:Vc}));function Yc(){return`#${Yt(this.r)}${Yt(this.g)}${Yt(this.b)}`}function Am(){return`#${Yt(this.r)}${Yt(this.g)}${Yt(this.b)}${Yt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Vc(){const t=Bi(this.opacity);return`${t===1?"rgb(":"rgba("}${Ht(this.r)}, ${Ht(this.g)}, ${Ht(this.b)}${t===1?")":`, ${t})`}`}function Bi(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ht(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Yt(t){return t=Ht(t),(t<16?"0":"")+t.toString(16)}function Wc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new ke(t,e,n,r)}function Xc(t){if(t instanceof ke)return new ke(t.h,t.s,t.l,t.opacity);if(t instanceof At||(t=Qt(t)),!t)return new ke;if(t instanceof ke)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),s=Math.max(e,n,r),o=NaN,a=s-i,u=(s+i)/2;return a?(e===s?o=(n-r)/a+(n<r)*6:n===s?o=(r-e)/a+2:o=(e-n)/a+4,a/=u<.5?s+i:2-s-i,o*=60):a=u>0&&u<1?0:o,new ke(o,a,u,t.opacity)}function wo(t,e,n,r){return arguments.length===1?Xc(t):new ke(t,e,n,r??1)}function ke(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(ke,wo,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new ke(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new ke(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new ne(bo(t>=240?t-240:t+120,i,r),bo(t,i,r),bo(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new ke(Zc(this.h),Fi(this.s),Fi(this.l),Bi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Bi(this.opacity);return`${t===1?"hsl(":"hsla("}${Zc(this.h)}, ${Fi(this.s)*100}%, ${Fi(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Zc(t){return t=(t||0)%360,t<0?t+360:t}function Fi(t){return Math.max(0,Math.min(1,t||0))}function bo(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Kc=Math.PI/180,Jc=180/Math.PI,Li=18,qc=.96422,_c=1,$c=.82521,el=4/29,xn=6/29,tl=3*xn*xn,ym=xn*xn*xn;function nl(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof it)return rl(t);t instanceof ne||(t=xo(t));var e=Eo(t.r),n=Eo(t.g),r=Eo(t.b),i=vo((.2225045*e+.7168786*n+.0606169*r)/_c),s,o;return e===n&&n===r?s=o=i:(s=vo((.4360747*e+.3850649*n+.1430804*r)/qc),o=vo((.0139322*e+.0971045*n+.7141733*r)/$c)),new Xe(116*i-16,500*(s-i),200*(i-o),t.opacity)}function Do(t,e,n,r){return arguments.length===1?nl(t):new Xe(t,e,n,r??1)}function Xe(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}mn(Xe,Do,mr(At,{brighter(t){return new Xe(this.l+Li*(t??1),this.a,this.b,this.opacity)},darker(t){return new Xe(this.l-Li*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=qc*Co(e),t=_c*Co(t),n=$c*Co(n),new ne(Mo(3.1338561*e-1.6168667*t-.4906146*n),Mo(-.9787684*e+1.9161415*t+.033454*n),Mo(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function vo(t){return t>ym?Math.pow(t,1/3):t/tl+el}function Co(t){return t>xn?t*t*t:tl*(t-el)}function Mo(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Eo(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function xm(t){if(t instanceof it)return new it(t.h,t.c,t.l,t.opacity);if(t instanceof Xe||(t=nl(t)),t.a===0&&t.b===0)return new it(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Jc;return new it(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function So(t,e,n,r){return arguments.length===1?xm(t):new it(t,e,n,r??1)}function it(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function rl(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Kc;return new Xe(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}mn(it,So,mr(At,{brighter(t){return new it(this.h,this.c,this.l+Li*(t??1),this.opacity)},darker(t){return new it(this.h,this.c,this.l-Li*(t??1),this.opacity)},rgb(){return rl(this).rgb()}}));var il=-.14861,Io=1.78277,To=-.29227,zi=-.90649,yr=1.97294,sl=yr*zi,ol=yr*Io,al=Io*To-zi*il;function wm(t){if(t instanceof Vt)return new Vt(t.h,t.s,t.l,t.opacity);t instanceof ne||(t=xo(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(al*r+sl*e-ol*n)/(al+sl-ol),s=r-i,o=(yr*(n-i)-To*s)/zi,a=Math.sqrt(o*o+s*s)/(yr*i*(1-i)),u=a?Math.atan2(o,s)*Jc-120:NaN;return new Vt(u<0?u+360:u,a,i,t.opacity)}function No(t,e,n,r){return arguments.length===1?wm(t):new Vt(t,e,n,r??1)}function Vt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(Vt,No,mr(At,{brighter(t){return t=t==null?An:Math.pow(An,t),new Vt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new Vt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Kc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ne(255*(e+n*(il*r+Io*i)),255*(e+n*(To*r+zi*i)),255*(e+n*(yr*r)),this.opacity)}}));function ul(t,e,n,r,i){var s=t*t,o=s*t;return((1-3*t+3*s-o)*e+(4-6*s+3*o)*n+(1+3*t+3*s-3*o)*r+o*i)/6}function cl(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],s=t[r+1],o=r>0?t[r-1]:2*i-s,a=r<e-1?t[r+2]:2*s-i;return ul((n-r/e)*e,o,i,s,a)}}function ll(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],s=t[r%e],o=t[(r+1)%e],a=t[(r+2)%e];return ul((n-r/e)*e,i,s,o,a)}}const Pi=t=>()=>t;function fl(t,e){return function(n){return t+n*e}}function bm(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Oi(t,e){var n=e-t;return n?fl(t,n>180||n<-180?n-360*Math.round(n/360):n):Pi(isNaN(t)?e:t)}function Dm(t){return(t=+t)==1?re:function(e,n){return n-e?bm(e,n,t):Pi(isNaN(e)?n:e)}}function re(t,e){var n=e-t;return n?fl(t,n):Pi(isNaN(t)?e:t)}const Bo=function t(e){var n=Dm(e);function r(i,s){var o=n((i=Ni(i)).r,(s=Ni(s)).r),a=n(i.g,s.g),u=n(i.b,s.b),c=re(i.opacity,s.opacity);return function(f){return i.r=o(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r}(1);function hl(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),s=new Array(n),o,a;for(o=0;o<n;++o)a=Ni(e[o]),r[o]=a.r||0,i[o]=a.g||0,s[o]=a.b||0;return r=t(r),i=t(i),s=t(s),a.opacity=1,function(u){return a.r=r(u),a.g=i(u),a.b=s(u),a+""}}}var vm=hl(cl),Cm=hl(ll);function Fo(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(s){for(i=0;i<n;++i)r[i]=t[i]*(1-s)+e[i]*s;return r}}function dl(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Mm(t,e){return(dl(e)?Fo:gl)(t,e)}function gl(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),s=new Array(n),o;for(o=0;o<r;++o)i[o]=yt(t[o],e[o]);for(;o<n;++o)s[o]=e[o];return function(a){for(o=0;o<r;++o)s[o]=i[o](a);return s}}function pl(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Re(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function ml(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=yt(t[i],e[i]):r[i]=e[i];return function(s){for(i in n)r[i]=n[i](s);return r}}var Lo=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,zo=new RegExp(Lo.source,"g");function Em(t){return function(){return t}}function Sm(t){return function(e){return t(e)+""}}function Al(t,e){var n=Lo.lastIndex=zo.lastIndex=0,r,i,s,o=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Lo.exec(t))&&(i=zo.exec(e));)(s=i.index)>n&&(s=e.slice(n,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,u.push({i:o,x:Re(r,i)})),n=zo.lastIndex;return n<e.length&&(s=e.slice(n),a[o]?a[o]+=s:a[++o]=s),a.length<2?u[0]?Sm(u[0].x):Em(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)a[(l=u[f]).i]=l.x(c);return a.join("")})}function yt(t,e){var n=typeof e,r;return e==null||n==="boolean"?Pi(e):(n==="number"?Re:n==="string"?(r=Qt(e))?(e=r,Bo):Al:e instanceof Qt?Bo:e instanceof Date?pl:dl(e)?Fo:Array.isArray(e)?gl:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?ml:Re)(t,e)}function Im(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Tm(t,e){var n=Oi(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function xr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var yl=180/Math.PI,Po={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function xl(t,e,n,r,i,s){var o,a,u;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,o=-o),{translateX:i,translateY:s,rotate:Math.atan2(e,t)*yl,skewX:Math.atan(u)*yl,scaleX:o,scaleY:a}}var ki;function Nm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Po:xl(e.a,e.b,e.c,e.d,e.e,e.f)}function Bm(t){return t==null||(ki||(ki=document.createElementNS("http://www.w3.org/2000/svg","g")),ki.setAttribute("transform",t),!(t=ki.transform.baseVal.consolidate()))?Po:(t=t.matrix,xl(t.a,t.b,t.c,t.d,t.e,t.f))}function wl(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function s(c,f,l,h,g,d){if(c!==l||f!==h){var p=g.push("translate(",null,e,null,n);d.push({i:p-4,x:Re(c,l)},{i:p-2,x:Re(f,h)})}else(l||h)&&g.push("translate("+l+e+h+n)}function o(c,f,l,h){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:Re(c,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(c,f,l,h){c!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:Re(c,f)}):f&&l.push(i(l)+"skewX("+f+r)}function u(c,f,l,h,g,d){if(c!==l||f!==h){var p=g.push(i(g)+"scale(",null,",",null,")");d.push({i:p-4,x:Re(c,l)},{i:p-2,x:Re(f,h)})}else(l!==1||h!==1)&&g.push(i(g)+"scale("+l+","+h+")")}return function(c,f){var l=[],h=[];return c=t(c),f=t(f),s(c.translateX,c.translateY,f.translateX,f.translateY,l,h),o(c.rotate,f.rotate,l,h),a(c.skewX,f.skewX,l,h),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,l,h),c=f=null,function(g){for(var d=-1,p=h.length,m;++d<p;)l[(m=h[d]).i]=m.x(g);return l.join("")}}}var Fm=wl(Nm,"px, ","px)","deg)"),Lm=wl(Bm,", ",")",")"),zm=1e-12;function bl(t){return((t=Math.exp(t))+1/t)/2}function Pm(t){return((t=Math.exp(t))-1/t)/2}function Om(t){return((t=Math.exp(2*t))-1)/(t+1)}const Dl=function t(e,n,r){function i(s,o){var a=s[0],u=s[1],c=s[2],f=o[0],l=o[1],h=o[2],g=f-a,d=l-u,p=g*g+d*d,m,A;if(p<zm)A=Math.log(h/c)/e,m=function(b){return[a+b*g,u+b*d,c*Math.exp(e*b*A)]};else{var x=Math.sqrt(p),w=(h*h-c*c+r*p)/(2*c*n*x),v=(h*h-c*c-r*p)/(2*h*n*x),M=Math.log(Math.sqrt(w*w+1)-w),C=Math.log(Math.sqrt(v*v+1)-v);A=(C-M)/e,m=function(b){var X=b*A,me=bl(M),R=c/(n*x)*(me*Om(e*X+M)-Pm(M));return[a+R*g,u+R*d,c*me/bl(e*X+M)]}}return m.duration=A*1e3*e/Math.SQRT2,m}return i.rho=function(s){var o=Math.max(.001,+s),a=o*o,u=a*a;return t(o,a,u)},i}(Math.SQRT2,2,4);function vl(t){return function(e,n){var r=t((e=wo(e)).h,(n=wo(n)).h),i=re(e.s,n.s),s=re(e.l,n.l),o=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=s(a),e.opacity=o(a),e+""}}}const km=vl(Oi);var Rm=vl(re);function jm(t,e){var n=re((t=Do(t)).l,(e=Do(e)).l),r=re(t.a,e.a),i=re(t.b,e.b),s=re(t.opacity,e.opacity);return function(o){return t.l=n(o),t.a=r(o),t.b=i(o),t.opacity=s(o),t+""}}function Cl(t){return function(e,n){var r=t((e=So(e)).h,(n=So(n)).h),i=re(e.c,n.c),s=re(e.l,n.l),o=re(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=s(a),e.opacity=o(a),e+""}}}const Um=Cl(Oi);var Gm=Cl(re);function Ml(t){return function e(n){n=+n;function r(i,s){var o=t((i=No(i)).h,(s=No(s)).h),a=re(i.s,s.s),u=re(i.l,s.l),c=re(i.opacity,s.opacity);return function(f){return i.h=o(f),i.s=a(f),i.l=u(Math.pow(f,n)),i.opacity=c(f),i+""}}return r.gamma=e,r}(1)}const Qm=Ml(Oi);var Hm=Ml(re);function Oo(t,e){e===void 0&&(e=t,t=yt);for(var n=0,r=e.length-1,i=e[0],s=new Array(r<0?0:r);n<r;)s[n]=t(i,i=e[++n]);return function(o){var a=Math.max(0,Math.min(r-1,Math.floor(o*=r)));return s[a](o-a)}}function Ym(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Vm=Object.freeze(Object.defineProperty({__proto__:null,interpolate:yt,interpolateArray:Mm,interpolateBasis:cl,interpolateBasisClosed:ll,interpolateCubehelix:Qm,interpolateCubehelixLong:Hm,interpolateDate:pl,interpolateDiscrete:Im,interpolateHcl:Um,interpolateHclLong:Gm,interpolateHsl:km,interpolateHslLong:Rm,interpolateHue:Tm,interpolateLab:jm,interpolateNumber:Re,interpolateNumberArray:Fo,interpolateObject:ml,interpolateRgb:Bo,interpolateRgbBasis:vm,interpolateRgbBasisClosed:Cm,interpolateRound:xr,interpolateString:Al,interpolateTransformCss:Fm,interpolateTransformSvg:Lm,interpolateZoom:Dl,piecewise:Oo,quantize:Ym},Symbol.toStringTag,{value:"Module"}));function Wm(t){return function(){return t}}function ko(t){return+t}var El=[0,1];function we(t){return t}function Ro(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Wm(isNaN(e)?NaN:.5)}function Xm(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Zm(t,e,n){var r=t[0],i=t[1],s=e[0],o=e[1];return i<r?(r=Ro(i,r),s=n(o,s)):(r=Ro(r,i),s=n(s,o)),function(a){return s(r(a))}}function Km(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),s=new Array(r),o=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<r;)i[o]=Ro(t[o],t[o+1]),s[o]=n(e[o],e[o+1]);return function(a){var u=an(t,a,1,r)-1;return s[u](i[u](a))}}function wr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ri(){var t=El,e=El,n=yt,r,i,s,o=we,a,u,c;function f(){var h=Math.min(t.length,e.length);return o!==we&&(o=Xm(t[0],t[h-1])),a=h>2?Km:Zm,u=c=null,l}function l(h){return h==null||isNaN(h=+h)?s:(u||(u=a(t.map(r),e,n)))(r(o(h)))}return l.invert=function(h){return o(i((c||(c=a(e,t.map(r),Re)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,ko),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=xr,f()},l.clamp=function(h){return arguments.length?(o=h?!0:we,f()):o!==we},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(s=h,l):s},function(h,g){return r=h,i=g,f()}}function Sl(){return Ri()(we,we)}function Il(t,e,n,r){var i=zt(t,e,n),s;switch(r=ft(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(s=Hu(i,o))&&(r.precision=s),Ws(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=Yu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=Qu(i))&&(r.precision=s-(r.type==="%")*2);break}}return ae(r)}function Wt(t){var e=t.domain;return t.ticks=function(n){var r=e();return gi(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return Il(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,s=r.length-1,o=r[i],a=r[s],u,c,f=10;for(a<o&&(c=o,o=a,a=c,c=i,i=s,s=c);f-- >0;){if(c=zu(o,a,n),c===u)return r[i]=o,r[s]=a,e(r);if(c>0)o=Math.floor(o/c)*c,a=Math.ceil(a/c)*c;else if(c<0)o=Math.ceil(o*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function Tl(){var t=Sl();return t.copy=function(){return wr(t,Tl())},Ve.apply(t,arguments),Wt(t)}function Nl(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,ko),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Nl(t).unknown(e)},t=arguments.length?Array.from(t,ko):[0,1],Wt(n)}function Bl(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],s=t[r],o;return s<i&&(o=n,n=r,r=o,o=i,i=s,s=o),t[n]=e.floor(i),t[r]=e.ceil(s),t}function Fl(t){return Math.log(t)}function Ll(t){return Math.exp(t)}function Jm(t){return-Math.log(-t)}function qm(t){return-Math.exp(-t)}function _m(t){return isFinite(t)?+("1e"+t):t<0?0:t}function $m(t){return t===10?_m:t===Math.E?Math.exp:e=>Math.pow(t,e)}function eA(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function zl(t){return(e,n)=>-t(-e,n)}function jo(t){const e=t(Fl,Ll),n=e.domain;let r=10,i,s;function o(){return i=eA(r),s=$m(r),n()[0]<0?(i=zl(i),s=zl(s),t(Jm,qm)):t(Fl,Ll),e}return e.base=function(a){return arguments.length?(r=+a,o()):r},e.domain=function(a){return arguments.length?(n(a),o()):n()},e.ticks=a=>{const u=n();let c=u[0],f=u[u.length-1];const l=f<c;l&&([c,f]=[f,c]);let h=i(c),g=i(f),d,p;const m=a==null?10:+a;let A=[];if(!(r%1)&&g-h<m){if(h=Math.floor(h),g=Math.ceil(g),c>0){for(;h<=g;++h)for(d=1;d<r;++d)if(p=h<0?d/s(-h):d*s(h),!(p<c)){if(p>f)break;A.push(p)}}else for(;h<=g;++h)for(d=r-1;d>=1;--d)if(p=h>0?d/s(-h):d*s(h),!(p<c)){if(p>f)break;A.push(p)}A.length*2<m&&(A=gi(c,f,m))}else A=gi(h,g,Math.min(g-h,m)).map(s);return l?A.reverse():A},e.tickFormat=(a,u)=>{if(a==null&&(a=10),u==null&&(u=r===10?"s":","),typeof u!="function"&&(!(r%1)&&(u=ft(u)).precision==null&&(u.trim=!0),u=ae(u)),a===1/0)return u;const c=Math.max(1,r*a/e.ticks().length);return f=>{let l=f/s(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=c?u(f):""}},e.nice=()=>n(Bl(n(),{floor:a=>s(Math.floor(i(a))),ceil:a=>s(Math.ceil(i(a)))})),e}function Uo(){const t=jo(Ri()).domain([1,10]);return t.copy=()=>wr(t,Uo()).base(t.base()),Ve.apply(t,arguments),t}function Pl(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Ol(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Go(t){var e=1,n=t(Pl(e),Ol(e));return n.constant=function(r){return arguments.length?t(Pl(e=+r),Ol(e)):e},Wt(n)}function kl(){var t=Go(Ri());return t.copy=function(){return wr(t,kl()).constant(t.constant())},Ve.apply(t,arguments)}function Rl(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function tA(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function nA(t){return t<0?-t*t:t*t}function Qo(t){var e=t(we,we),n=1;function r(){return n===1?t(we,we):n===.5?t(tA,nA):t(Rl(n),Rl(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Wt(e)}function Ho(){var t=Qo(Ri());return t.copy=function(){return wr(t,Ho()).exponent(t.exponent())},Ve.apply(t,arguments),t}function rA(){return Ho.apply(null,arguments).exponent(.5)}function jl(){var t=[],e=[],n=[],r;function i(){var o=0,a=Math.max(1,e.length);for(n=new Array(a-1);++o<a;)n[o-1]=Pu(t,o/a);return s}function s(o){return o==null||isNaN(o=+o)?r:e[an(n,o)]}return s.invertExtent=function(o){var a=e.indexOf(o);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},s.domain=function(o){if(!arguments.length)return t.slice();t=[];for(let a of o)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(Kn),i()},s.range=function(o){return arguments.length?(e=Array.from(o),i()):e.slice()},s.unknown=function(o){return arguments.length?(r=o,s):r},s.quantiles=function(){return n.slice()},s.copy=function(){return jl().domain(t).range(e).unknown(r)},Ve.apply(s,arguments)}function Ul(){var t=0,e=1,n=1,r=[.5],i=[0,1],s;function o(u){return u!=null&&u<=u?i[an(r,u,0,n)]:s}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return o}return o.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},o.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},o.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},o.unknown=function(u){return arguments.length&&(s=u),o},o.thresholds=function(){return r.slice()},o.copy=function(){return Ul().domain([t,e]).range(i).unknown(s)},Ve.apply(Wt(o),arguments)}function Gl(){var t=[.5],e=[0,1],n,r=1;function i(s){return s!=null&&s<=s?e[an(t,s,0,r)]:n}return i.domain=function(s){return arguments.length?(t=Array.from(s),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(s){return arguments.length?(e=Array.from(s),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(s){var o=e.indexOf(s);return[t[o-1],t[o]]},i.unknown=function(s){return arguments.length?(n=s,i):n},i.copy=function(){return Gl().domain(t).range(e).unknown(n)},Ve.apply(i,arguments)}function iA(t){return new Date(t)}function sA(t){return t instanceof Date?+t:+new Date(+t)}function Yo(t,e,n,r,i,s,o,a,u,c){var f=Sl(),l=f.invert,h=f.domain,g=c(".%L"),d=c(":%S"),p=c("%I:%M"),m=c("%I %p"),A=c("%a %d"),x=c("%b %d"),w=c("%B"),v=c("%Y");function M(C){return(u(C)<C?g:a(C)<C?d:o(C)<C?p:s(C)<C?m:r(C)<C?i(C)<C?A:x:n(C)<C?w:v)(C)}return f.invert=function(C){return new Date(l(C))},f.domain=function(C){return arguments.length?h(Array.from(C,sA)):h().map(iA)},f.ticks=function(C){var b=h();return t(b[0],b[b.length-1],C??10)},f.tickFormat=function(C,b){return b==null?M:c(b)},f.nice=function(C){var b=h();return(!C||typeof C.range!="function")&&(C=e(b[0],b[b.length-1],C??10)),C?h(Bl(b,C)):f},f.copy=function(){return wr(f,Yo(t,e,n,r,i,s,o,a,u,c))},f}function oA(){return Ve.apply(Yo(mg,Ag,dt,wi,qn,Ot,$s,_s,ht,ao).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function aA(){return Ve.apply(Yo(gg,pg,gt,Di,_n,Rt,no,to,ht,uo).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function ji(){var t=0,e=1,n,r,i,s,o=we,a=!1,u;function c(l){return l==null||isNaN(l=+l)?u:o(i===0?.5:(l=(s(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}c.domain=function(l){return arguments.length?([t,e]=l,n=s(t=+t),r=s(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(l){return arguments.length?(a=!!l,c):a},c.interpolator=function(l){return arguments.length?(o=l,c):o};function f(l){return function(h){var g,d;return arguments.length?([g,d]=h,o=l(g,d),c):[o(0),o(1)]}}return c.range=f(yt),c.rangeRound=f(xr),c.unknown=function(l){return arguments.length?(u=l,c):u},function(l){return s=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),c}}function xt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Vo(){var t=Wt(ji()(we));return t.copy=function(){return xt(t,Vo())},mt.apply(t,arguments)}function Ql(){var t=jo(ji()).domain([1,10]);return t.copy=function(){return xt(t,Ql()).base(t.base())},mt.apply(t,arguments)}function Hl(){var t=Go(ji());return t.copy=function(){return xt(t,Hl()).constant(t.constant())},mt.apply(t,arguments)}function Wo(){var t=Qo(ji());return t.copy=function(){return xt(t,Wo()).exponent(t.exponent())},mt.apply(t,arguments)}function uA(){return Wo.apply(null,arguments).exponent(.5)}function Ui(){var t=0,e=.5,n=1,r=1,i,s,o,a,u,c=we,f,l=!1,h;function g(p){return isNaN(p=+p)?h:(p=.5+((p=+f(p))-s)*(r*p<r*s?a:u),c(l?Math.max(0,Math.min(1,p)):p))}g.domain=function(p){return arguments.length?([t,e,n]=p,i=f(t=+t),s=f(e=+e),o=f(n=+n),a=i===s?0:.5/(s-i),u=s===o?0:.5/(o-s),r=s<i?-1:1,g):[t,e,n]},g.clamp=function(p){return arguments.length?(l=!!p,g):l},g.interpolator=function(p){return arguments.length?(c=p,g):c};function d(p){return function(m){var A,x,w;return arguments.length?([A,x,w]=m,c=Oo(p,[A,x,w]),g):[c(0),c(.5),c(1)]}}return g.range=d(yt),g.rangeRound=d(xr),g.unknown=function(p){return arguments.length?(h=p,g):h},function(p){return f=p,i=p(t),s=p(e),o=p(n),a=i===s?0:.5/(s-i),u=s===o?0:.5/(o-s),r=s<i?-1:1,g}}function Yl(){var t=Wt(Ui()(we));return t.copy=function(){return xt(t,Yl())},mt.apply(t,arguments)}function Vl(){var t=jo(Ui()).domain([.1,1,10]);return t.copy=function(){return xt(t,Vl()).base(t.base())},mt.apply(t,arguments)}function Wl(){var t=Go(Ui());return t.copy=function(){return xt(t,Wl()).constant(t.constant())},mt.apply(t,arguments)}function Xo(){var t=Qo(Ui());return t.copy=function(){return xt(t,Xo()).exponent(t.exponent())},mt.apply(t,arguments)}function cA(){return Xo.apply(null,arguments).exponent(.5)}function Zo(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const lA="identity",wn="linear",wt="log",br="pow",Dr="sqrt",Gi="symlog",Xl="time",Zl="utc",Ze="sequential",bn="diverging",Ko="quantile",Kl="quantize",Jl="threshold",Jo="ordinal",qo="point",ql="band",_o="bin-ordinal",_="continuous",vr="discrete",Cr="discretizing",Fe="interpolating",_l="temporal";function fA(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function hA(t){return function(e){const n=t.range();let r=e[0],i=e[1],s=-1,o,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(s<0&&(s=u),o=u);if(!(s<0))return r=t.invertExtent(n[s]),i=t.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function $o(){const t=yo().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,s,o=!1,a=0,u=0,c=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],g=r[1-h],d=Zo(l,a,u);let p=r[h-0];i=(g-p)/(d||1),o&&(i=Math.floor(i)),p+=(g-p-i*(l-a))*c,s=i*(1-a),o&&(p=Math.round(p),s=Math.round(s));const m=Jn(l).map(A=>p+i*A);return n(h?m.reverse():m)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],o=!0,f()},t.bandwidth=function(){return s},t.step=function(){return i},t.round=function(l){return arguments.length?(o=!!l,f()):o},t.padding=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),a=u,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.align=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],g=h?n().reverse():n(),d=g.length-1;let p=+l[0],m=+l[1],A,x,w;if(!(p!==p||m!==m)&&(m<p&&(w=p,p=m,m=w),!(m<g[0]||p>r[1-h])))return A=Math.max(0,Us(g,p)-1),x=p===m?A:Us(g,m)-1,p-g[A]>s+1e-10&&++A,h&&(w=A,A=d-x,x=d-w),A>x?void 0:e().slice(A,x+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return $o().domain(e()).range(r).round(o).paddingInner(a).paddingOuter(u).align(c)},f()}function $l(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return $l(e())},t}function dA(){return $l($o().paddingInner(1))}var gA=Array.prototype.map;function pA(t){return gA.call(t,Xn)}const mA=Array.prototype.slice;function ef(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(an(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=pA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=mA.call(r),n):e.slice()},n.tickFormat=function(r,i){return Il(t[0],Oe(t),r??10,i)},n.copy=function(){return ef().domain(n.domain()).range(n.range())},n}const Qi={};function AA(t,e,n){const r=function(){const s=e();return s.invertRange||(s.invertRange=s.invert?fA(s):s.invertExtent?hA(s):void 0),s.type=t,s};return r.metadata=fi(Ps(n)),r}function O(t,e,n){return arguments.length>1?(Qi[t]=AA(t,e,n),this):yA(t)?Qi[t]:void 0}O(lA,Nl),O(wn,Tl,_),O(wt,Uo,[_,wt]),O(br,Ho,_),O(Dr,rA,_),O(Gi,kl,_),O(Xl,oA,[_,_l]),O(Zl,aA,[_,_l]),O(Ze,Vo,[_,Fe]),O("".concat(Ze,"-").concat(wn),Vo,[_,Fe]),O("".concat(Ze,"-").concat(wt),Ql,[_,Fe,wt]),O("".concat(Ze,"-").concat(br),Wo,[_,Fe]),O("".concat(Ze,"-").concat(Dr),uA,[_,Fe]),O("".concat(Ze,"-").concat(Gi),Hl,[_,Fe]),O("".concat(bn,"-").concat(wn),Yl,[_,Fe]),O("".concat(bn,"-").concat(wt),Vl,[_,Fe,wt]),O("".concat(bn,"-").concat(br),Xo,[_,Fe]),O("".concat(bn,"-").concat(Dr),cA,[_,Fe]),O("".concat(bn,"-").concat(Gi),Wl,[_,Fe]),O(Ko,jl,[Cr,Ko]),O(Kl,Ul,Cr),O(Jl,Gl,Cr),O(_o,ef,[vr,Cr]),O(Jo,yo,vr),O(ql,$o,vr),O(qo,dA,vr);function yA(t){return Ft(Qi,t)}function Mr(t,e){const n=Qi[t];return n&&n.metadata[e]}function Ce(t){return Mr(t,_)}function Xt(t){return Mr(t,vr)}function Dn(t){return Mr(t,Cr)}function tf(t){return Mr(t,wt)}function Hi(t){return Mr(t,Fe)}function xA(t,e){const n=e[0],r=Oe(e)-n;return function(i){return t(n+i*r)}}function Yi(t,e,n){return Oo(nf(e||"rgb",n),t)}function wA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function nf(t,e){const n=Vm[bA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function bA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const DA={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},vA={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function rf(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function sf(t,e){for(const n in t)ea(n,e(t[n]))}const of={};sf(vA,rf),sf(DA,t=>Yi(rf(t)));function ea(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(of[t]=e,this):of[t]}const kC="";function CA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function af(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function Ke(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function vn(t){return t[t.length-1]}class MA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){return vn(this.enabledStack)??!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=CA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&EA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Rc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Rc(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(rt`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function EA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const SA="RawCode",IA="Literal",TA="Property",NA="Identifier",BA="ArrayExpression",FA="BinaryExpression",LA="CallExpression",zA="ConditionalExpression",PA="LogicalExpression",OA="MemberExpression",kA="ObjectExpression",RA="UnaryExpression";function je(t){this.type=t}je.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=jA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function jA(t){switch(t.type){case BA:return t.elements;case FA:case PA:return[t.left,t.right];case LA:return[t.callee].concat(t.arguments);case zA:return[t.test,t.consequent,t.alternate];case OA:return[t.object,t.property];case kA:return t.properties;case TA:return[t.key,t.value];case RA:return[t.argument];case NA:case IA:case SA:default:return[]}}var Je,E,y,ce,k,Vi=1,Er=2,Zt=3,bt=4,Wi=5,Kt=6,be=7,Sr=8,UA=9;Je={},Je[Vi]="Boolean",Je[Er]="<end>",Je[Zt]="Identifier",Je[bt]="Keyword",Je[Wi]="Null",Je[Kt]="Numeric",Je[be]="Punctuator",Je[Sr]="String",Je[UA]="RegularExpression";var GA="ArrayExpression",QA="BinaryExpression",HA="CallExpression",YA="ConditionalExpression",uf="Identifier",VA="Literal",WA="LogicalExpression",XA="MemberExpression",ZA="ObjectExpression",KA="Property",JA="UnaryExpression",ie="Unexpected token %0",qA="Unexpected number",_A="Unexpected string",$A="Unexpected identifier",e1="Unexpected reserved word",t1="Unexpected end of input",ta="Invalid regular expression",na="Invalid regular expression: missing /",cf="Octal literals are not allowed in strict mode.",n1="Duplicate data property in object literal not allowed in strict mode",ue="ILLEGAL",Ir="Disabled.",r1=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),i1=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function Xi(t,e){if(!t)throw new Error("ASSERT: "+e)}function st(t){return t>=48&&t<=57}function ra(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Tr(t){return"01234567".indexOf(t)>=0}function s1(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function Nr(t){return t===10||t===13||t===8232||t===8233}function Br(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&r1.test(String.fromCharCode(t))}function Zi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&i1.test(String.fromCharCode(t))}const o1={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function lf(){for(;y<ce;){const t=E.charCodeAt(y);if(s1(t)||Nr(t))++y;else break}}function ia(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)y<ce&&ra(E[y])?(r=E[y++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):z({},ie,ue);return String.fromCharCode(i)}function a1(){var t,e,n,r;for(t=E[y],e=0,t==="}"&&z({},ie,ue);y<ce&&(t=E[y++],!!ra(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&z({},ie,ue),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function ff(){var t,e;for(t=E.charCodeAt(y++),e=String.fromCharCode(t),t===92&&(E.charCodeAt(y)!==117&&z({},ie,ue),++y,t=ia("u"),(!t||t==="\\"||!Br(t.charCodeAt(0)))&&z({},ie,ue),e=t);y<ce&&(t=E.charCodeAt(y),!!Zi(t));)++y,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),E.charCodeAt(y)!==117&&z({},ie,ue),++y,t=ia("u"),(!t||t==="\\"||!Zi(t.charCodeAt(0)))&&z({},ie,ue),e+=t);return e}function u1(){var t,e;for(t=y++;y<ce;){if(e=E.charCodeAt(y),e===92)return y=t,ff();if(Zi(e))++y;else break}return E.slice(t,y)}function c1(){var t,e,n;return t=y,e=E.charCodeAt(y)===92?ff():u1(),e.length===1?n=Zt:o1.hasOwnProperty(e)?n=bt:e==="null"?n=Wi:e==="true"||e==="false"?n=Vi:n=Zt,{type:n,value:e,start:t,end:y}}function sa(){var t=y,e=E.charCodeAt(y),n,r=E[y],i,s,o;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++y,{type:be,value:String.fromCharCode(e),start:t,end:y};default:if(n=E.charCodeAt(y+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return y+=2,{type:be,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:y};case 33:case 61:return y+=2,E.charCodeAt(y)===61&&++y,{type:be,value:E.slice(t,y),start:t,end:y}}}if(o=E.substr(y,4),o===">>>=")return y+=4,{type:be,value:o,start:t,end:y};if(s=o.substr(0,3),s===">>>"||s==="<<="||s===">>=")return y+=3,{type:be,value:s,start:t,end:y};if(i=s.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return y+=2,{type:be,value:i,start:t,end:y};if(i==="//"&&z({},ie,ue),"<>=!+-*%&|^/".indexOf(r)>=0)return++y,{type:be,value:r,start:t,end:y};z({},ie,ue)}function l1(t){let e="";for(;y<ce&&ra(E[y]);)e+=E[y++];return e.length===0&&z({},ie,ue),Br(E.charCodeAt(y))&&z({},ie,ue),{type:Kt,value:parseInt("0x"+e,16),start:t,end:y}}function f1(t){let e="0"+E[y++];for(;y<ce&&Tr(E[y]);)e+=E[y++];return(Br(E.charCodeAt(y))||st(E.charCodeAt(y)))&&z({},ie,ue),{type:Kt,value:parseInt(e,8),octal:!0,start:t,end:y}}function hf(){var t,e,n;if(n=E[y],Xi(st(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=y,t="",n!=="."){if(t=E[y++],n=E[y],t==="0"){if(n==="x"||n==="X")return++y,l1(e);if(Tr(n))return f1(e);n&&st(n.charCodeAt(0))&&z({},ie,ue)}for(;st(E.charCodeAt(y));)t+=E[y++];n=E[y]}if(n==="."){for(t+=E[y++];st(E.charCodeAt(y));)t+=E[y++];n=E[y]}if(n==="e"||n==="E")if(t+=E[y++],n=E[y],(n==="+"||n==="-")&&(t+=E[y++]),st(E.charCodeAt(y)))for(;st(E.charCodeAt(y));)t+=E[y++];else z({},ie,ue);return Br(E.charCodeAt(y))&&z({},ie,ue),{type:Kt,value:parseFloat(t),start:e,end:y}}function h1(){var t="",e,n,r,i,s=!1;for(e=E[y],Xi(e==="'"||e==='"',"String literal must starts with a quote"),n=y,++y;y<ce;)if(r=E[y++],r===e){e="";break}else if(r==="\\")if(r=E[y++],!r||!Nr(r.charCodeAt(0)))switch(r){case"u":case"x":E[y]==="{"?(++y,t+=a1()):t+=ia(r);break;case"n":t+=`
|
|
15
|
-
`;break;case"r":
|
|
16
|
-
`&&++y;else{if(Nr(r.charCodeAt(0)))break;t+=r}return e!==""&&z({},ie,ue),{type:Sr,value:t,octal:s,start:n,end:y}}function d1(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";z({},ta)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{z({},ta)}try{return new RegExp(t,e)}catch{return null}}function g1(){var t,e,n,r,i;for(t=E[y],Xi(t==="/","Regular expression literal must start with a slash"),e=E[y++],n=!1,r=!1;y<ce;)if(t=E[y++],e+=t,t==="\\")t=E[y++],Nr(t.charCodeAt(0))&&z({},na),e+=t;else if(Nr(t.charCodeAt(0)))z({},na);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||z({},na),i=e.substr(1,e.length-2),{value:i,literal:e}}function p1(){var t,e,n;for(e="",n="";y<ce&&(t=E[y],!!Zi(t.charCodeAt(0)));)++y,t==="\\"&&y<ce?z({},ie,ue):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&z({},ta,n),{value:n,literal:e}}function m1(){var t,e,n,r;return k=null,lf(),t=y,e=g1(),n=p1(),r=d1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:y}}function A1(t){return t.type===Zt||t.type===bt||t.type===Vi||t.type===Wi}function df(){if(lf(),y>=ce)return{type:Er,start:y,end:y};const t=E.charCodeAt(y);return Br(t)?c1():t===40||t===41||t===59?sa():t===39||t===34?h1():t===46?st(E.charCodeAt(y+1))?hf():sa():st(t)?hf():sa()}function De(){const t=k;return y=t.end,k=df(),y=t.end,t}function gf(){const t=y;k=df(),y=t}function y1(t){const e=new je(GA);return e.elements=t,e}function pf(t,e,n){const r=new je(t==="||"||t==="&&"?WA:QA);return r.operator=t,r.left=e,r.right=n,r}function x1(t,e){const n=new je(HA);return n.callee=t,n.arguments=e,n}function w1(t,e,n){const r=new je(YA);return r.test=t,r.consequent=e,r.alternate=n,r}function oa(t){const e=new je(uf);return e.name=t,e}function Fr(t){const e=new je(VA);return e.value=t.value,e.raw=E.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function mf(t,e,n){const r=new je(XA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function b1(t){const e=new je(ZA);return e.properties=t,e}function Af(t,e,n){const r=new je(KA);return r.key=e,r.value=n,r.kind=t,r}function D1(t,e){const n=new je(JA);return n.operator=t,n.argument=e,n.prefix=!0,n}function z(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(s,o)=>(Xi(o<r.length,"Message reference must be in range"),r[o]));throw n=new Error(i),n.index=y,n.description=i,n}function Ki(t){t.type===Er&&z(t,t1),t.type===Kt&&z(t,qA),t.type===Sr&&z(t,_A),t.type===Zt&&z(t,$A),t.type===bt&&z(t,e1),z(t,ie,t.value)}function le(t){const e=De();(e.type!==be||e.value!==t)&&Ki(e)}function G(t){return k.type===be&&k.value===t}function aa(t){return k.type===bt&&k.value===t}function v1(){const t=[];for(y=k.start,le("[");!G("]");)G(",")?(De(),t.push(null)):(t.push(Jt()),G("]")||le(","));return De(),y1(t)}function yf(){y=k.start;const t=De();return t.type===Sr||t.type===Kt?(t.octal&&z(t,cf),Fr(t)):oa(t.value)}function C1(){var t,e,n,r;if(y=k.start,t=k,t.type===Zt)return n=yf(),le(":"),r=Jt(),Af("init",n,r);if(t.type===Er||t.type===be)Ki(t);else return e=yf(),le(":"),r=Jt(),Af("init",e,r)}function M1(){var t=[],e,n,r,i={},s=String;for(y=k.start,le("{");!G("}");)e=C1(),e.key.type===uf?n=e.key.name:n=s(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?z({},n1):i[r]=!0,t.push(e),G("}")||le(",");return le("}"),b1(t)}function E1(){le("(");const t=ua();return le(")"),t}const S1={if:1};function I1(){var t,e,n;if(G("("))return E1();if(G("["))return v1();if(G("{"))return M1();if(t=k.type,y=k.start,t===Zt||S1[k.value])n=oa(De().value);else if(t===Sr||t===Kt)k.octal&&z(k,cf),n=Fr(De());else{if(t===bt)throw new Error(Ir);t===Vi?(e=De(),e.value=e.value==="true",n=Fr(e)):t===Wi?(e=De(),e.value=null,n=Fr(e)):G("/")||G("/=")?(n=Fr(m1()),gf()):Ki(De())}return n}function T1(){const t=[];if(le("("),!G(")"))for(;y<ce&&(t.push(Jt()),!G(")"));)le(",");return le(")"),t}function N1(){y=k.start;const t=De();return A1(t)||Ki(t),oa(t.value)}function B1(){return le("."),N1()}function F1(){le("[");const t=ua();return le("]"),t}function L1(){var t,e,n;for(t=I1();;)if(G("."))n=B1(),t=mf(".",t,n);else if(G("("))e=T1(),t=x1(t,e);else if(G("["))n=F1(),t=mf("[",t,n);else break;return t}function xf(){const t=L1();if(k.type===be&&(G("++")||G("--")))throw new Error(Ir);return t}function Ji(){var t,e;if(k.type!==be&&k.type!==bt)e=xf();else{if(G("++")||G("--"))throw new Error(Ir);if(G("+")||G("-")||G("~")||G("!"))t=De(),e=Ji(),e=D1(t.value,e);else{if(aa("delete")||aa("void")||aa("typeof"))throw new Error(Ir);e=xf()}}return e}function wf(t){let e=0;if(t.type!==be&&t.type!==bt)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function z1(){var t,e,n,r,i,s,o,a,u,c;if(t=k,u=Ji(),r=k,i=wf(r),i===0)return u;for(r.prec=i,De(),e=[t,k],o=Ji(),s=[u,r,o];(i=wf(k))>0;){for(;s.length>2&&i<=s[s.length-2].prec;)o=s.pop(),a=s.pop().value,u=s.pop(),e.pop(),n=pf(a,u,o),s.push(n);r=De(),r.prec=i,s.push(r),e.push(k),n=Ji(),s.push(n)}for(c=s.length-1,n=s[c],e.pop();c>1;)e.pop(),n=pf(s[c-1].value,s[c-2],n),c-=2;return n}function Jt(){var t,e,n;return t=z1(),G("?")&&(De(),e=Jt(),le(":"),n=Jt(),t=w1(t,e,n)),t}function ua(){const t=Jt();if(G(","))throw new Error(Ir);return t}function P1(t){E=t,y=0,ce=E.length,k=null,gf();const e=ua();if(k.type!==Er)throw new Error("Unexpect token after expression.");return e}var O1={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function k1(t){function e(o,a,u,c){let f=t(a[0]);return u&&(f=u+"("+f+")",u.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+o+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(o,a,u){return c=>e(o,c,a,u)}const r="new Date",i="String",s="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(o){o.length<3&&V("Missing arguments to clamp function."),o.length>3&&V("Too many arguments to clamp function.");const a=o.map(t);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),substring:n("substring",i),split:n("split",i),trim:n("trim",i,0),regexp:s,test:n("test",s),if:function(o){o.length<3&&V("Missing arguments to if function."),o.length>3&&V("Too many arguments to if function.");const a=o.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function R1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function j1(t){t=t||{};const e=t.allowed?fi(t.allowed):{},n=t.forbidden?fi(t.forbidden):{},r=t.constants||O1,i=(t.functions||k1)(l),s=t.globalvar,o=t.fieldvar,a=Ae(s)?s:d=>`${s}["${d}"]`;let u={},c={},f=0;function l(d){if(W(d))return d;const p=h[d.type];return p==null&&V("Unsupported type: "+d.type),p(d)}const h={Literal:d=>d.raw,Identifier:d=>{const p=d.name;return f>0?p:Ft(n,p)?V("Illegal identifier: "+p):Ft(r,p)?r[p]:Ft(e,p)?p:(u[p]=1,a(p))},MemberExpression:d=>{const p=!d.computed,m=l(d.object);p&&(f+=1);const A=l(d.property);return m===o&&(c[R1(A)]=1),p&&(f-=1),m+(p?"."+A:"["+A+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&V("Illegal callee type: "+d.callee.type);const p=d.callee.name,m=d.arguments,A=Ft(i,p)&&i[p];return A||V("Unrecognized function: "+p),Ae(A)?A(m):A+"("+m.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const p=l(d.key);return f-=1,p+":"+l(d.value)}};function g(d){const p={code:l(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},p}return g.functions=i,g.constants=r,g}function ca(t,e={}){const n=j1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=P1(t),i=n(r),s=Function("datum","global",`"use strict"; return (${i.code});`),o=a=>s(a,e);return o.fields=i.fields,o}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function U1(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function G1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const s=t.unitView.getScaleResolution(Le(i)&&i.resolutionChannel||r);n[r]=Q1(e[r],s==null?void 0:s.getScale(),t.unitView.getAccessor(r),r)}return n}function Q1(t,e,n,r){let i;if(Ue(t)){const s=t.value;i=o=>s,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=s=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=s=>e(n(s)),Xt(e.type)){const s=U1();s.addAll(e.domain()),i.indexer=s}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?s=>e.invert(s):s=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=s=>{for(const o in i)o in i&&(s[o]=i[o]);return s},i}function Ue(t){return t&&"value"in t}function Lr(t){return t&&"field"in t}function zr(t){return t&&"datum"in t}function Le(t){return Lr(t)||zr(t)||fa(t)||bf(t)}function la(t,e){const n=t.mark.encoding[e];if(Le(n))return n;throw new Error("Not a channel def with scale!")}function bf(t){return t&&"chrom"in t}function fa(t){return t&&"expr"in t}const Pr=["x","y"],H1=["x2","y2"],Y1=[...Pr,...H1];function Df(t){return Pr.includes(t)}function Or(t){return Y1.includes(t)}const ha={x:"x2",y:"y2"},vf=Object.fromEntries(Object.entries(ha).map(t=>[t[1],t[0]]));function kr(t){return t in vf}function V1(t){const e=ha[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Cn(t){return vf[t]??t}function qt(t){return["color","fill","stroke"].includes(Cn(t))}function qi(t){return["shape","squeeze"].includes(t)}function Cf(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function Mf(t){if(!qi(t))throw new Error("Not a discrete channel: "+t);const e=new Map(Cf(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function j(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return T(n,[t],e)}else return ii(t)}class W1{constructor(){this.accessorCreators=[],this.register(e=>{if(Lr(e))try{const n=j(e.field);return n.constant=!1,n.fields=Bt(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>fa(e)?X1(e.expr):void 0),this.register(e=>{if(zr(e)){const r=vd(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function X1(t){const e=ca(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
|
14
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),Tp=/'/g,Np=/"/g,Bp=/^(?:script|style|textarea|title)$/i,yC=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),qn=yC(1),Lo=Symbol.for("lit-noChange"),Xe=Symbol.for("lit-nothing"),Fp=new WeakMap,ra=na.createTreeWalker(na,129,null,!1),wC=(e,t)=>{const n=e.length-1,r=[];let i,a=t===2?"<svg>":"",o=ko;for(let f=0;f<n;f++){const u=e[f];let c,l,h=-1,d=0;for(;d<u.length&&(o.lastIndex=d,l=o.exec(u),l!==null);)d=o.lastIndex,o===ko?l[1]==="!--"?o=Ip:l[1]!==void 0?o=Mp:l[2]!==void 0?(Bp.test(l[2])&&(i=RegExp("</"+l[2],"g")),o=si):l[3]!==void 0&&(o=si):o===si?l[0]===">"?(o=i??ko,h=-1):l[1]===void 0?h=-2:(h=o.lastIndex-l[2].length,c=l[1],o=l[3]===void 0?si:l[3]==='"'?Np:Tp):o===Np||o===Tp?o=si:o===Ip||o===Mp?o=ko:(o=si,i=void 0);const p=o===si&&e[f+1].startsWith("/>")?" ":"";a+=o===ko?u+mC:h>=0?(r.push(c),u.slice(0,h)+"$lit$"+u.slice(h)+br+p):u+br+(h===-2?(r.push(void 0),f):p)}const s=a+(e[n]||"<?>")+(t===2?"</svg>":"");if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Sp!==void 0?Sp.createHTML(s):s,r]};let Al=class Sv{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0;const s=t.length-1,f=this.parts,[u,c]=wC(t,n);if(this.el=Sv.createElement(u,r),ra.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=ra.nextNode())!==null&&f.length<s;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(br)){const d=c[o++];if(l.push(h),d!==void 0){const p=i.getAttribute(d.toLowerCase()+"$lit$").split(br),b=/([.?@])?(.*)/.exec(d);f.push({type:1,index:a,name:b[2],strings:p,ctor:b[1]==="."?AC:b[1]==="?"?EC:b[1]==="@"?CC:Uu})}else f.push({type:6,index:a})}for(const h of l)i.removeAttribute(h)}if(Bp.test(i.tagName)){const l=i.textContent.split(br),h=l.length-1;if(h>0){i.textContent=ta?ta.emptyScript:"";for(let d=0;d<h;d++)i.append(l[d],Bo()),ra.nextNode(),f.push({type:2,index:++a});i.append(l[h],Bo())}}}else if(i.nodeType===8)if(i.data===Dp)f.push({type:2,index:a});else{let l=-1;for(;(l=i.data.indexOf(br,l+1))!==-1;)f.push({type:7,index:a}),l+=br.length-1}a++}}static createElement(t,n){const r=na.createElement("template");return r.innerHTML=t,r}};function ia(e,t,n=e,r){var i,a,o,s;if(t===Lo)return t;let f=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const u=Fo(t)?void 0:t._$litDirective$;return(f==null?void 0:f.constructor)!==u&&((a=f==null?void 0:f._$AO)===null||a===void 0||a.call(f,!1),u===void 0?f=void 0:(f=new u(e),f._$AT(e,n,r)),r!==void 0?((o=(s=n)._$Co)!==null&&o!==void 0?o:s._$Co=[])[r]=f:n._$Cl=f),f!==void 0&&(t=ia(e,f._$AS(e,t.values),f,r)),t}class xC{constructor(t,n){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var n;const{el:{content:r},parts:i}=this._$AD,a=((n=t==null?void 0:t.creationScope)!==null&&n!==void 0?n:na).importNode(r,!0);ra.currentNode=a;let o=ra.nextNode(),s=0,f=0,u=i[0];for(;u!==void 0;){if(s===u.index){let c;u.type===2?c=new zo(o,o.nextSibling,this,t):u.type===1?c=new u.ctor(o,u.name,u.strings,this,t):u.type===6&&(c=new SC(o,this,t)),this.u.push(c),u=i[++f]}s!==(u==null?void 0:u.index)&&(o=ra.nextNode(),s++)}return a}p(t){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,n),n+=r.strings.length-2):r._$AI(t[n])),n++}}class zo{constructor(t,n,r,i){var a;this.type=2,this._$AH=Xe,this._$AN=void 0,this._$AA=t,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(a=i==null?void 0:i.isConnected)===null||a===void 0||a}get _$AU(){var t,n;return(n=(t=this._$AM)===null||t===void 0?void 0:t._$AU)!==null&&n!==void 0?n:this._$Cm}get parentNode(){let t=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&t.nodeType===11&&(t=n.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,n=this){t=ia(this,t,n),Fo(t)?t===Xe||t==null||t===""?(this._$AH!==Xe&&this._$AR(),this._$AH=Xe):t!==this._$AH&&t!==Lo&&this.g(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):bC(t)?this.k(t):this.g(t)}O(t,n=this._$AB){return this._$AA.parentNode.insertBefore(t,n)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==Xe&&Fo(this._$AH)?this._$AA.nextSibling.data=t:this.T(na.createTextNode(t)),this._$AH=t}$(t){var n;const{values:r,_$litType$:i}=t,a=typeof i=="number"?this._$AC(t):(i.el===void 0&&(i.el=Al.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===a)this._$AH.p(r);else{const o=new xC(a,this),s=o.v(this.options);o.p(r),this.T(s),this._$AH=o}}_$AC(t){let n=Fp.get(t.strings);return n===void 0&&Fp.set(t.strings,n=new Al(t)),n}k(t){_p(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const a of t)i===n.length?n.push(r=new zo(this.O(Bo()),this.O(Bo()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(t=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var n;this._$AM===void 0&&(this._$Cm=t,(n=this._$AP)===null||n===void 0||n.call(this,t))}}class Uu{constructor(t,n,r,i,a){this.type=1,this._$AH=Xe,this._$AN=void 0,this.element=t,this.name=n,this._$AM=i,this.options=a,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Xe}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,n=this,r,i){const a=this.strings;let o=!1;if(a===void 0)t=ia(this,t,n,0),o=!Fo(t)||t!==this._$AH&&t!==Lo,o&&(this._$AH=t);else{const s=t;let f,u;for(t=a[0],f=0;f<a.length-1;f++)u=ia(this,s[r+f],n,f),u===Lo&&(u=this._$AH[f]),o||(o=!Fo(u)||u!==this._$AH[f]),u===Xe?t=Xe:t!==Xe&&(t+=(u??"")+a[f+1]),this._$AH[f]=u}o&&!i&&this.j(t)}j(t){t===Xe?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class AC extends Uu{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===Xe?void 0:t}}const vC=ta?ta.emptyScript:"";class EC extends Uu{constructor(){super(...arguments),this.type=4}j(t){t&&t!==Xe?this.element.setAttribute(this.name,vC):this.element.removeAttribute(this.name)}}class CC extends Uu{constructor(t,n,r,i,a){super(t,n,r,i,a),this.type=5}_$AI(t,n=this){var r;if((t=(r=ia(this,t,n,0))!==null&&r!==void 0?r:Xe)===Lo)return;const i=this._$AH,a=t===Xe&&i!==Xe||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,o=t!==Xe&&(i===Xe||a);a&&this.element.removeEventListener(this.name,this,i),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,t):this._$AH.handleEvent(t)}}class SC{constructor(t,n,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){ia(this,t)}}const kp=Pu.litHtmlPolyfillSupport;kp==null||kp(Al,zo),((xl=Pu.litHtmlVersions)!==null&&xl!==void 0?xl:Pu.litHtmlVersions=[]).push("2.4.0");const Lp=(e,t,n)=>{var r,i;const a=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:t;let o=a._$litPart$;if(o===void 0){const s=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;a._$litPart$=o=new zo(t.insertBefore(Bo(),s),s,void 0,n??{})}return o._$AI(e),o},zp=1;function vl(){let e=[0,1],t=[0,1],n=1,r=1,i=0,a=0,o=.5,s=0;const u=c=>(c+o-e[0])/n*r+t[0];return u.invert=c=>(c-t[0])/r*n+e[0]-o,u.domain=function(c){if(arguments.length){if(e=dE(c),n=e[1]-e[0],n<zp){n=zp;const l=(e[0]+e[1])/2;e[0]=l-n/2,e[1]=l+n/2}return u}else return e},u.range=function(c){return arguments.length?(t=[...c],r=t[1]-t[0],u):t},u.numberingOffset=function(c){return arguments.length?(s=c,u):s},u.padding=function(c){return arguments.length?(a=c,i=Math.min(1,c),u):i},u.paddingInner=function(c){return arguments.length?(i=Math.min(1,c),u):i},u.paddingOuter=function(c){return arguments.length?(a=c,u):a},u.align=function(c){return arguments.length?(o=Math.max(0,Math.min(1,c)),u):o},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=c=>{const l=u.align(),h=u.numberingOffset();return Du(e[0]-l+h,e[1]-l+h,Math.min(c,Math.ceil(n))).filter(Number.isInteger).map(d=>d-s)},u.tickFormat=(c,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const d=ti(e[0],e[1],Math.min(c,Math.ceil(n)))<1e5?nt(","):nt(".3s");return p=>d(p+s)},u.copy=()=>vl().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),u}function DC(){const e=vl().numberingOffset(1);let t;e.genome=function(r){return arguments.length?(t=r,e):t},e.ticks=r=>{if(!t)return[];const i=e.domain(),a=e.numberingOffset(),[o,s]=[Math.max(i[0],0),Math.min(i[1],t.totalSize-1)].map(c=>t.toChromosome(c)),f=Math.max(1,ti(i[0],i[1],r)),u=[];for(let c=o.index;c<=s.index;c++){const l=t.chromosomes[c],h=Math.max(l.continuousStart+f,i[0]-(i[0]-l.continuousStart)%f),d=Math.min(l.continuousEnd-f/4,i[1]+1);for(let p=h;p<=d;p+=f){const b=p-a;b>=i[0]&&b<i[1]&&u.push(b)}}return u},e.tickFormat=(r,i)=>{if(!t)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const a=e.domain(),o=a[1]-a[0],s=e.numberingOffset(),u=ti(a[0],a[1],Math.min(r,Math.ceil(o)))<1e6?nt(","):nt(".3s"),c=l=>l-t.toChromosome(l).continuousStart;return l=>u(c(l)+s)};const n=e.copy;return e.copy=()=>n().genome(t),e}function _C(e){return e.type=="locus"}function Cn(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function yr(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}const El=Symbol("implicit");function Cl(){var e=new ei,t=[],n=[],r=El;function i(a){let o=e.get(a);if(o===void 0){if(r!==El)return r;e.set(a,o=t.push(a)-1)}return n[o%n.length]}return i.domain=function(a){if(!arguments.length)return t.slice();t=[],e=new ei;for(const o of a)e.has(o)||e.set(o,t.push(o)-1);return i},i.range=function(a){return arguments.length?(n=Array.from(a),i):n.slice()},i.unknown=function(a){return arguments.length?(r=a,i):r},i.copy=function(){return Cl(t,n).unknown(r)},Cn.apply(i,arguments),i}function aa(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Ro(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function wr(){}var ui=.7,oa=1/ui,sa="\\s*([+-]?\\d+)\\s*",Oo="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Sn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",IC=/^#([0-9a-f]{3,8})$/,MC=new RegExp(`^rgb\\(${sa},${sa},${sa}\\)$`),TC=new RegExp(`^rgb\\(${Sn},${Sn},${Sn}\\)$`),NC=new RegExp(`^rgba\\(${sa},${sa},${sa},${Oo}\\)$`),BC=new RegExp(`^rgba\\(${Sn},${Sn},${Sn},${Oo}\\)$`),FC=new RegExp(`^hsl\\(${Oo},${Sn},${Sn}\\)$`),kC=new RegExp(`^hsla\\(${Oo},${Sn},${Sn},${Oo}\\)$`),Rp={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};aa(wr,fi,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Op,formatHex:Op,formatHex8:LC,formatHsl:zC,formatRgb:Pp,toString:Pp});function Op(){return this.rgb().formatHex()}function LC(){return this.rgb().formatHex8()}function zC(){return Qp(this).formatHsl()}function Pp(){return this.rgb().formatRgb()}function fi(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=IC.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Up(t):n===3?new Ke(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?ju(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?ju(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=MC.exec(e))?new Ke(t[1],t[2],t[3],1):(t=TC.exec(e))?new Ke(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=NC.exec(e))?ju(t[1],t[2],t[3],t[4]):(t=BC.exec(e))?ju(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=FC.exec(e))?Hp(t[1],t[2]/100,t[3]/100,1):(t=kC.exec(e))?Hp(t[1],t[2]/100,t[3]/100,t[4]):Rp.hasOwnProperty(e)?Up(Rp[e]):e==="transparent"?new Ke(NaN,NaN,NaN,0):null}function Up(e){return new Ke(e>>16&255,e>>8&255,e&255,1)}function ju(e,t,n,r){return r<=0&&(e=t=n=NaN),new Ke(e,t,n,r)}function Sl(e){return e instanceof wr||(e=fi(e)),e?(e=e.rgb(),new Ke(e.r,e.g,e.b,e.opacity)):new Ke}function Gu(e,t,n,r){return arguments.length===1?Sl(e):new Ke(e,t,n,r??1)}function Ke(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}aa(Ke,Gu,Ro(wr,{brighter(e){return e=e==null?oa:Math.pow(oa,e),new Ke(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ui:Math.pow(ui,e),new Ke(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ke(ci(this.r),ci(this.g),ci(this.b),Hu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:jp,formatHex:jp,formatHex8:RC,formatRgb:Gp,toString:Gp}));function jp(){return`#${li(this.r)}${li(this.g)}${li(this.b)}`}function RC(){return`#${li(this.r)}${li(this.g)}${li(this.b)}${li((isNaN(this.opacity)?1:this.opacity)*255)}`}function Gp(){const e=Hu(this.opacity);return`${e===1?"rgb(":"rgba("}${ci(this.r)}, ${ci(this.g)}, ${ci(this.b)}${e===1?")":`, ${e})`}`}function Hu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ci(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function li(e){return e=ci(e),(e<16?"0":"")+e.toString(16)}function Hp(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new un(e,t,n,r)}function Qp(e){if(e instanceof un)return new un(e.h,e.s,e.l,e.opacity);if(e instanceof wr||(e=fi(e)),!e)return new un;if(e instanceof un)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,f=(a+i)/2;return s?(t===a?o=(n-r)/s+(n<r)*6:n===a?o=(r-t)/s+2:o=(t-n)/s+4,s/=f<.5?a+i:2-a-i,o*=60):s=f>0&&f<1?0:o,new un(o,s,f,e.opacity)}function Dl(e,t,n,r){return arguments.length===1?Qp(e):new un(e,t,n,r??1)}function un(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}aa(un,Dl,Ro(wr,{brighter(e){return e=e==null?oa:Math.pow(oa,e),new un(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ui:Math.pow(ui,e),new un(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Ke(_l(e>=240?e-240:e+120,i,r),_l(e,i,r),_l(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new un(Vp(this.h),Qu(this.s),Qu(this.l),Hu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Hu(this.opacity);return`${e===1?"hsl(":"hsla("}${Vp(this.h)}, ${Qu(this.s)*100}%, ${Qu(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Vp(e){return e=(e||0)%360,e<0?e+360:e}function Qu(e){return Math.max(0,Math.min(1,e||0))}function _l(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const Zp=Math.PI/180,Yp=180/Math.PI,Vu=18,qp=.96422,Wp=1,Xp=.82521,Kp=4/29,ua=6/29,Jp=3*ua*ua,OC=ua*ua*ua;function $p(e){if(e instanceof Dn)return new Dn(e.l,e.a,e.b,e.opacity);if(e instanceof Wn)return e1(e);e instanceof Ke||(e=Sl(e));var t=Bl(e.r),n=Bl(e.g),r=Bl(e.b),i=Ml((.2225045*t+.7168786*n+.0606169*r)/Wp),a,o;return t===n&&n===r?a=o=i:(a=Ml((.4360747*t+.3850649*n+.1430804*r)/qp),o=Ml((.0139322*t+.0971045*n+.7141733*r)/Xp)),new Dn(116*i-16,500*(a-i),200*(i-o),e.opacity)}function Il(e,t,n,r){return arguments.length===1?$p(e):new Dn(e,t,n,r??1)}function Dn(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}aa(Dn,Il,Ro(wr,{brighter(e){return new Dn(this.l+Vu*(e??1),this.a,this.b,this.opacity)},darker(e){return new Dn(this.l-Vu*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=qp*Tl(t),e=Wp*Tl(e),n=Xp*Tl(n),new Ke(Nl(3.1338561*t-1.6168667*e-.4906146*n),Nl(-.9787684*t+1.9161415*e+.033454*n),Nl(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function Ml(e){return e>OC?Math.pow(e,1/3):e/Jp+Kp}function Tl(e){return e>ua?e*e*e:Jp*(e-Kp)}function Nl(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Bl(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function PC(e){if(e instanceof Wn)return new Wn(e.h,e.c,e.l,e.opacity);if(e instanceof Dn||(e=$p(e)),e.a===0&&e.b===0)return new Wn(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Yp;return new Wn(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function Fl(e,t,n,r){return arguments.length===1?PC(e):new Wn(e,t,n,r??1)}function Wn(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function e1(e){if(isNaN(e.h))return new Dn(e.l,0,0,e.opacity);var t=e.h*Zp;return new Dn(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}aa(Wn,Fl,Ro(wr,{brighter(e){return new Wn(this.h,this.c,this.l+Vu*(e??1),this.opacity)},darker(e){return new Wn(this.h,this.c,this.l-Vu*(e??1),this.opacity)},rgb(){return e1(this).rgb()}}));var t1=-.14861,kl=1.78277,Ll=-.29227,Zu=-.90649,Po=1.97294,n1=Po*Zu,r1=Po*kl,i1=kl*Ll-Zu*t1;function UC(e){if(e instanceof hi)return new hi(e.h,e.s,e.l,e.opacity);e instanceof Ke||(e=Sl(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(i1*r+n1*t-r1*n)/(i1+n1-r1),a=r-i,o=(Po*(n-i)-Ll*a)/Zu,s=Math.sqrt(o*o+a*a)/(Po*i*(1-i)),f=s?Math.atan2(o,a)*Yp-120:NaN;return new hi(f<0?f+360:f,s,i,e.opacity)}function zl(e,t,n,r){return arguments.length===1?UC(e):new hi(e,t,n,r??1)}function hi(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}aa(hi,zl,Ro(wr,{brighter(e){return e=e==null?oa:Math.pow(oa,e),new hi(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ui:Math.pow(ui,e),new hi(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Zp,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new Ke(255*(t+n*(t1*r+kl*i)),255*(t+n*(Ll*r+Zu*i)),255*(t+n*(Po*r)),this.opacity)}}));function a1(e,t,n,r,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*n+(1+3*e+3*a-3*o)*r+o*i)/6}function o1(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[r],a=e[r+1],o=r>0?e[r-1]:2*i-a,s=r<t-1?e[r+2]:2*a-i;return a1((n-r/t)*t,o,i,a,s)}}function s1(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),i=e[(r+t-1)%t],a=e[r%t],o=e[(r+1)%t],s=e[(r+2)%t];return a1((n-r/t)*t,i,a,o,s)}}const Yu=e=>()=>e;function u1(e,t){return function(n){return e+n*t}}function jC(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function qu(e,t){var n=t-e;return n?u1(e,n>180||n<-180?n-360*Math.round(n/360):n):Yu(isNaN(e)?t:e)}function GC(e){return(e=+e)==1?Je:function(t,n){return n-t?jC(t,n,e):Yu(isNaN(t)?n:t)}}function Je(e,t){var n=t-e;return n?u1(e,n):Yu(isNaN(e)?t:e)}const Rl=function e(t){var n=GC(t);function r(i,a){var o=n((i=Gu(i)).r,(a=Gu(a)).r),s=n(i.g,a.g),f=n(i.b,a.b),u=Je(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=s(c),i.b=f(c),i.opacity=u(c),i+""}}return r.gamma=e,r}(1);function f1(e){return function(t){var n=t.length,r=new Array(n),i=new Array(n),a=new Array(n),o,s;for(o=0;o<n;++o)s=Gu(t[o]),r[o]=s.r||0,i[o]=s.g||0,a[o]=s.b||0;return r=e(r),i=e(i),a=e(a),s.opacity=1,function(f){return s.r=r(f),s.g=i(f),s.b=a(f),s+""}}}var HC=f1(o1),QC=f1(s1);function Ol(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function c1(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function VC(e,t){return(c1(t)?Ol:l1)(e,t)}function l1(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=new Array(r),a=new Array(n),o;for(o=0;o<r;++o)i[o]=xr(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(s){for(o=0;o<r;++o)a[o]=i[o](s);return a}}function h1(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function fn(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function d1(e,t){var n={},r={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?n[i]=xr(e[i],t[i]):r[i]=t[i];return function(a){for(i in n)r[i]=n[i](a);return r}}var Pl=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ul=new RegExp(Pl.source,"g");function ZC(e){return function(){return e}}function YC(e){return function(t){return e(t)+""}}function g1(e,t){var n=Pl.lastIndex=Ul.lastIndex=0,r,i,a,o=-1,s=[],f=[];for(e=e+"",t=t+"";(r=Pl.exec(e))&&(i=Ul.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,f.push({i:o,x:fn(r,i)})),n=Ul.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?f[0]?YC(f[0].x):ZC(t):(t=f.length,function(u){for(var c=0,l;c<t;++c)s[(l=f[c]).i]=l.x(u);return s.join("")})}function xr(e,t){var n=typeof t,r;return t==null||n==="boolean"?Yu(t):(n==="number"?fn:n==="string"?(r=fi(t))?(t=r,Rl):g1:t instanceof fi?Rl:t instanceof Date?h1:c1(t)?Ol:Array.isArray(t)?l1:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?d1:fn)(e,t)}function qC(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function WC(e,t){var n=qu(+e,+t);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Uo(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var p1=180/Math.PI,jl={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function m1(e,t,n,r,i,a){var o,s,f;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(f=e*n+t*r)&&(n-=e*f,r-=t*f),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,f/=s),e*r<t*n&&(e=-e,t=-t,f=-f,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*p1,skewX:Math.atan(f)*p1,scaleX:o,scaleY:s}}var Wu;function XC(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?jl:m1(t.a,t.b,t.c,t.d,t.e,t.f)}function KC(e){return e==null||(Wu||(Wu=document.createElementNS("http://www.w3.org/2000/svg","g")),Wu.setAttribute("transform",e),!(e=Wu.transform.baseVal.consolidate()))?jl:(e=e.matrix,m1(e.a,e.b,e.c,e.d,e.e,e.f))}function b1(e,t,n,r){function i(u){return u.length?u.pop()+" ":""}function a(u,c,l,h,d,p){if(u!==l||c!==h){var b=d.push("translate(",null,t,null,n);p.push({i:b-4,x:fn(u,l)},{i:b-2,x:fn(c,h)})}else(l||h)&&d.push("translate("+l+t+h+n)}function o(u,c,l,h){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:fn(u,c)})):c&&l.push(i(l)+"rotate("+c+r)}function s(u,c,l,h){u!==c?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:fn(u,c)}):c&&l.push(i(l)+"skewX("+c+r)}function f(u,c,l,h,d,p){if(u!==l||c!==h){var b=d.push(i(d)+"scale(",null,",",null,")");p.push({i:b-4,x:fn(u,l)},{i:b-2,x:fn(c,h)})}else(l!==1||h!==1)&&d.push(i(d)+"scale("+l+","+h+")")}return function(u,c){var l=[],h=[];return u=e(u),c=e(c),a(u.translateX,u.translateY,c.translateX,c.translateY,l,h),o(u.rotate,c.rotate,l,h),s(u.skewX,c.skewX,l,h),f(u.scaleX,u.scaleY,c.scaleX,c.scaleY,l,h),u=c=null,function(d){for(var p=-1,b=h.length,x;++p<b;)l[(x=h[p]).i]=x.x(d);return l.join("")}}}var JC=b1(XC,"px, ","px)","deg)"),$C=b1(KC,", ",")",")"),e4=1e-12;function y1(e){return((e=Math.exp(e))+1/e)/2}function t4(e){return((e=Math.exp(e))-1/e)/2}function n4(e){return((e=Math.exp(2*e))-1)/(e+1)}const w1=function e(t,n,r){function i(a,o){var s=a[0],f=a[1],u=a[2],c=o[0],l=o[1],h=o[2],d=c-s,p=l-f,b=d*d+p*p,x,A;if(b<e4)A=Math.log(h/u)/t,x=function(S){return[s+S*d,f+S*p,u*Math.exp(t*S*A)]};else{var D=Math.sqrt(b),I=(h*h-u*u+r*b)/(2*u*n*D),C=(h*h-u*u-r*b)/(2*h*n*D),T=Math.log(Math.sqrt(I*I+1)-I),B=Math.log(Math.sqrt(C*C+1)-C);A=(B-T)/t,x=function(S){var z=S*A,E=y1(T),N=u/(n*D)*(E*n4(t*z+T)-t4(T));return[s+N*d,f+N*p,u*E/y1(t*z+T)]}}return x.duration=A*1e3*t/Math.SQRT2,x}return i.rho=function(a){var o=Math.max(.001,+a),s=o*o,f=s*s;return e(o,s,f)},i}(Math.SQRT2,2,4);function x1(e){return function(t,n){var r=e((t=Dl(t)).h,(n=Dl(n)).h),i=Je(t.s,n.s),a=Je(t.l,n.l),o=Je(t.opacity,n.opacity);return function(s){return t.h=r(s),t.s=i(s),t.l=a(s),t.opacity=o(s),t+""}}}const r4=x1(qu);var i4=x1(Je);function a4(e,t){var n=Je((e=Il(e)).l,(t=Il(t)).l),r=Je(e.a,t.a),i=Je(e.b,t.b),a=Je(e.opacity,t.opacity);return function(o){return e.l=n(o),e.a=r(o),e.b=i(o),e.opacity=a(o),e+""}}function A1(e){return function(t,n){var r=e((t=Fl(t)).h,(n=Fl(n)).h),i=Je(t.c,n.c),a=Je(t.l,n.l),o=Je(t.opacity,n.opacity);return function(s){return t.h=r(s),t.c=i(s),t.l=a(s),t.opacity=o(s),t+""}}}const o4=A1(qu);var s4=A1(Je);function v1(e){return function t(n){n=+n;function r(i,a){var o=e((i=zl(i)).h,(a=zl(a)).h),s=Je(i.s,a.s),f=Je(i.l,a.l),u=Je(i.opacity,a.opacity);return function(c){return i.h=o(c),i.s=s(c),i.l=f(Math.pow(c,n)),i.opacity=u(c),i+""}}return r.gamma=t,r}(1)}const u4=v1(qu);var f4=v1(Je);function Gl(e,t){t===void 0&&(t=e,e=xr);for(var n=0,r=t.length-1,i=t[0],a=new Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return function(o){var s=Math.max(0,Math.min(r-1,Math.floor(o*=r)));return a[s](o-s)}}function c4(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}const l4=Object.freeze(Object.defineProperty({__proto__:null,interpolate:xr,interpolateArray:VC,interpolateBasis:o1,interpolateBasisClosed:s1,interpolateCubehelix:u4,interpolateCubehelixLong:f4,interpolateDate:h1,interpolateDiscrete:qC,interpolateHcl:o4,interpolateHclLong:s4,interpolateHsl:r4,interpolateHslLong:i4,interpolateHue:WC,interpolateLab:a4,interpolateNumber:fn,interpolateNumberArray:Ol,interpolateObject:d1,interpolateRgb:Rl,interpolateRgbBasis:HC,interpolateRgbBasisClosed:QC,interpolateRound:Uo,interpolateString:g1,interpolateTransformCss:JC,interpolateTransformSvg:$C,interpolateZoom:w1,piecewise:Gl,quantize:c4},Symbol.toStringTag,{value:"Module"}));function h4(e){return function(){return e}}function Hl(e){return+e}var E1=[0,1];function Ct(e){return e}function Ql(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:h4(isNaN(t)?NaN:.5)}function d4(e,t){var n;return e>t&&(n=e,e=t,t=n),function(r){return Math.max(e,Math.min(t,r))}}function g4(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Ql(i,r),a=n(o,a)):(r=Ql(r,i),a=n(a,o)),function(s){return a(r(s))}}function p4(e,t,n){var r=Math.min(e.length,t.length)-1,i=new Array(r),a=new Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Ql(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(s){var f=Xi(e,s,1,r)-1;return a[f](i[f](s))}}function jo(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Xu(){var e=E1,t=E1,n=xr,r,i,a,o=Ct,s,f,u;function c(){var h=Math.min(e.length,t.length);return o!==Ct&&(o=d4(e[0],e[h-1])),s=h>2?p4:g4,f=u=null,l}function l(h){return h==null||isNaN(h=+h)?a:(f||(f=s(e.map(r),t,n)))(r(o(h)))}return l.invert=function(h){return o(i((u||(u=s(t,e.map(r),fn)))(h)))},l.domain=function(h){return arguments.length?(e=Array.from(h,Hl),c()):e.slice()},l.range=function(h){return arguments.length?(t=Array.from(h),c()):t.slice()},l.rangeRound=function(h){return t=Array.from(h),n=Uo,c()},l.clamp=function(h){return arguments.length?(o=h?!0:Ct,c()):o!==Ct},l.interpolate=function(h){return arguments.length?(n=h,c()):n},l.unknown=function(h){return arguments.length?(a=h,l):a},function(h,d){return r=h,i=d,c()}}function C1(){return Xu()(Ct,Ct)}function S1(e,t,n,r){var i=ti(e,t,n),a;switch(r=dr(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=Ug(i,o))&&(r.precision=a),$c(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(a=jg(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(a=Pg(i))&&(r.precision=a-(r.type==="%")*2);break}}return nt(r)}function di(e){var t=e.domain;return e.ticks=function(n){var r=t();return Du(r[0],r[r.length-1],n??10)},e.tickFormat=function(n,r){var i=t();return S1(i[0],i[i.length-1],n??10,r)},e.nice=function(n){n==null&&(n=10);var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],f,u,c=10;for(s<o&&(u=o,o=s,s=u,u=i,i=a,a=u);c-- >0;){if(u=Ng(o,s,n),u===f)return r[i]=o,r[a]=s,t(r);if(u>0)o=Math.floor(o/u)*u,s=Math.ceil(s/u)*u;else if(u<0)o=Math.ceil(o*u)/u,s=Math.floor(s*u)/u;else break;f=u}return e},e}function D1(){var e=C1();return e.copy=function(){return jo(e,D1())},Cn.apply(e,arguments),di(e)}function _1(e){var t;function n(r){return r==null||isNaN(r=+r)?t:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(e=Array.from(r,Hl),n):e.slice()},n.unknown=function(r){return arguments.length?(t=r,n):t},n.copy=function(){return _1(e).unknown(t)},e=arguments.length?Array.from(e,Hl):[0,1],di(n)}function I1(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return a<i&&(o=n,n=r,r=o,o=i,i=a,a=o),e[n]=t.floor(i),e[r]=t.ceil(a),e}function M1(e){return Math.log(e)}function T1(e){return Math.exp(e)}function m4(e){return-Math.log(-e)}function b4(e){return-Math.exp(-e)}function y4(e){return isFinite(e)?+("1e"+e):e<0?0:e}function w4(e){return e===10?y4:e===Math.E?Math.exp:t=>Math.pow(e,t)}function x4(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function N1(e){return(t,n)=>-e(-t,n)}function Vl(e){const t=e(M1,T1),n=t.domain;let r=10,i,a;function o(){return i=x4(r),a=w4(r),n()[0]<0?(i=N1(i),a=N1(a),e(m4,b4)):e(M1,T1),t}return t.base=function(s){return arguments.length?(r=+s,o()):r},t.domain=function(s){return arguments.length?(n(s),o()):n()},t.ticks=s=>{const f=n();let u=f[0],c=f[f.length-1];const l=c<u;l&&([u,c]=[c,u]);let h=i(u),d=i(c),p,b;const x=s==null?10:+s;let A=[];if(!(r%1)&&d-h<x){if(h=Math.floor(h),d=Math.ceil(d),u>0){for(;h<=d;++h)for(p=1;p<r;++p)if(b=h<0?p/a(-h):p*a(h),!(b<u)){if(b>c)break;A.push(b)}}else for(;h<=d;++h)for(p=r-1;p>=1;--p)if(b=h>0?p/a(-h):p*a(h),!(b<u)){if(b>c)break;A.push(b)}A.length*2<x&&(A=Du(u,c,x))}else A=Du(h,d,Math.min(d-h,x)).map(a);return l?A.reverse():A},t.tickFormat=(s,f)=>{if(s==null&&(s=10),f==null&&(f=r===10?"s":","),typeof f!="function"&&(!(r%1)&&(f=dr(f)).precision==null&&(f.trim=!0),f=nt(f)),s===1/0)return f;const u=Math.max(1,r*s/t.ticks().length);return c=>{let l=c/a(Math.round(i(c)));return l*r<r-.5&&(l*=r),l<=u?f(c):""}},t.nice=()=>n(I1(n(),{floor:s=>a(Math.floor(i(s))),ceil:s=>a(Math.ceil(i(s)))})),t}function Zl(){const e=Vl(Xu()).domain([1,10]);return e.copy=()=>jo(e,Zl()).base(e.base()),Cn.apply(e,arguments),e}function B1(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function F1(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Yl(e){var t=1,n=e(B1(t),F1(t));return n.constant=function(r){return arguments.length?e(B1(t=+r),F1(t)):t},di(n)}function k1(){var e=Yl(Xu());return e.copy=function(){return jo(e,k1()).constant(e.constant())},Cn.apply(e,arguments)}function L1(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function A4(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function v4(e){return e<0?-e*e:e*e}function ql(e){var t=e(Ct,Ct),n=1;function r(){return n===1?e(Ct,Ct):n===.5?e(A4,v4):e(L1(n),L1(1/n))}return t.exponent=function(i){return arguments.length?(n=+i,r()):n},di(t)}function Wl(){var e=ql(Xu());return e.copy=function(){return jo(e,Wl()).exponent(e.exponent())},Cn.apply(e,arguments),e}function E4(){return Wl.apply(null,arguments).exponent(.5)}function z1(){var e=[],t=[],n=[],r;function i(){var o=0,s=Math.max(1,t.length);for(n=new Array(s-1);++o<s;)n[o-1]=Bg(e,o/s);return a}function a(o){return o==null||isNaN(o=+o)?r:t[Xi(n,o)]}return a.invertExtent=function(o){var s=t.indexOf(o);return s<0?[NaN,NaN]:[s>0?n[s-1]:e[0],s<n.length?n[s]:e[e.length-1]]},a.domain=function(o){if(!arguments.length)return e.slice();e=[];for(let s of o)s!=null&&!isNaN(s=+s)&&e.push(s);return e.sort(mo),i()},a.range=function(o){return arguments.length?(t=Array.from(o),i()):t.slice()},a.unknown=function(o){return arguments.length?(r=o,a):r},a.quantiles=function(){return n.slice()},a.copy=function(){return z1().domain(e).range(t).unknown(r)},Cn.apply(a,arguments)}function R1(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(f){return f!=null&&f<=f?i[Xi(r,f,0,n)]:a}function s(){var f=-1;for(r=new Array(n);++f<n;)r[f]=((f+1)*t-(f-n)*e)/(n+1);return o}return o.domain=function(f){return arguments.length?([e,t]=f,e=+e,t=+t,s()):[e,t]},o.range=function(f){return arguments.length?(n=(i=Array.from(f)).length-1,s()):i.slice()},o.invertExtent=function(f){var u=i.indexOf(f);return u<0?[NaN,NaN]:u<1?[e,r[0]]:u>=n?[r[n-1],t]:[r[u-1],r[u]]},o.unknown=function(f){return arguments.length&&(a=f),o},o.thresholds=function(){return r.slice()},o.copy=function(){return R1().domain([e,t]).range(i).unknown(a)},Cn.apply(di(o),arguments)}function O1(){var e=[.5],t=[0,1],n,r=1;function i(a){return a!=null&&a<=a?t[Xi(e,a,0,r)]:n}return i.domain=function(a){return arguments.length?(e=Array.from(a),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(a){return arguments.length?(t=Array.from(a),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(a){var o=t.indexOf(a);return[e[o-1],e[o]]},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return O1().domain(e).range(t).unknown(n)},Cn.apply(i,arguments)}function C4(e){return new Date(e)}function S4(e){return e instanceof Date?+e:+new Date(+e)}function Xl(e,t,n,r,i,a,o,s,f,u){var c=C1(),l=c.invert,h=c.domain,d=u(".%L"),p=u(":%S"),b=u("%I:%M"),x=u("%I %p"),A=u("%a %d"),D=u("%b %d"),I=u("%B"),C=u("%Y");function T(B){return(f(B)<B?d:s(B)<B?p:o(B)<B?b:a(B)<B?x:r(B)<B?i(B)<B?A:D:n(B)<B?I:C)(B)}return c.invert=function(B){return new Date(l(B))},c.domain=function(B){return arguments.length?h(Array.from(B,S4)):h().map(C4)},c.ticks=function(B){var S=h();return e(S[0],S[S.length-1],B??10)},c.tickFormat=function(B,S){return S==null?T:u(S)},c.nice=function(B){var S=h();return(!B||typeof B.range!="function")&&(B=t(S[0],S[S.length-1],B??10)),B?h(I1(S,B)):c},c.copy=function(){return jo(c,Xl(e,t,n,r,i,a,o,s,f,u))},c}function D4(){return Cn.apply(Xl(zE,RE,pr,Bu,yo,ri,ol,al,gr,gl).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function _4(){return Cn.apply(Xl(kE,LE,mr,ku,wo,ai,fl,ul,gr,pl).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Ku(){var e=0,t=1,n,r,i,a,o=Ct,s=!1,f;function u(l){return l==null||isNaN(l=+l)?f:o(i===0?.5:(l=(a(l)-n)*i,s?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([e,t]=l,n=a(e=+e),r=a(t=+t),i=n===r?0:1/(r-n),u):[e,t]},u.clamp=function(l){return arguments.length?(s=!!l,u):s},u.interpolator=function(l){return arguments.length?(o=l,u):o};function c(l){return function(h){var d,p;return arguments.length?([d,p]=h,o=l(d,p),u):[o(0),o(1)]}}return u.range=c(xr),u.rangeRound=c(Uo),u.unknown=function(l){return arguments.length?(f=l,u):f},function(l){return a=l,n=l(e),r=l(t),i=n===r?0:1/(r-n),u}}function Ar(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function Kl(){var e=di(Ku()(Ct));return e.copy=function(){return Ar(e,Kl())},yr.apply(e,arguments)}function P1(){var e=Vl(Ku()).domain([1,10]);return e.copy=function(){return Ar(e,P1()).base(e.base())},yr.apply(e,arguments)}function U1(){var e=Yl(Ku());return e.copy=function(){return Ar(e,U1()).constant(e.constant())},yr.apply(e,arguments)}function Jl(){var e=ql(Ku());return e.copy=function(){return Ar(e,Jl()).exponent(e.exponent())},yr.apply(e,arguments)}function I4(){return Jl.apply(null,arguments).exponent(.5)}function Ju(){var e=0,t=.5,n=1,r=1,i,a,o,s,f,u=Ct,c,l=!1,h;function d(b){return isNaN(b=+b)?h:(b=.5+((b=+c(b))-a)*(r*b<r*a?s:f),u(l?Math.max(0,Math.min(1,b)):b))}d.domain=function(b){return arguments.length?([e,t,n]=b,i=c(e=+e),a=c(t=+t),o=c(n=+n),s=i===a?0:.5/(a-i),f=a===o?0:.5/(o-a),r=a<i?-1:1,d):[e,t,n]},d.clamp=function(b){return arguments.length?(l=!!b,d):l},d.interpolator=function(b){return arguments.length?(u=b,d):u};function p(b){return function(x){var A,D,I;return arguments.length?([A,D,I]=x,u=Gl(b,[A,D,I]),d):[u(0),u(.5),u(1)]}}return d.range=p(xr),d.rangeRound=p(Uo),d.unknown=function(b){return arguments.length?(h=b,d):h},function(b){return c=b,i=b(e),a=b(t),o=b(n),s=i===a?0:.5/(a-i),f=a===o?0:.5/(o-a),r=a<i?-1:1,d}}function j1(){var e=di(Ju()(Ct));return e.copy=function(){return Ar(e,j1())},yr.apply(e,arguments)}function G1(){var e=Vl(Ju()).domain([.1,1,10]);return e.copy=function(){return Ar(e,G1()).base(e.base())},yr.apply(e,arguments)}function H1(){var e=Yl(Ju());return e.copy=function(){return Ar(e,H1()).constant(e.constant())},yr.apply(e,arguments)}function $l(){var e=ql(Ju());return e.copy=function(){return Ar(e,$l()).exponent(e.exponent())},yr.apply(e,arguments)}function M4(){return $l.apply(null,arguments).exponent(.5)}function eh(e,t,n){const r=e-t+n*2;return e?r>0?r:1:0}const T4="identity",fa="linear",vr="log",Go="pow",Ho="sqrt",$u="symlog",Q1="time",V1="utc",_n="sequential",ca="diverging",th="quantile",Z1="quantize",Y1="threshold",nh="ordinal",rh="point",q1="band",ih="bin-ordinal",He="continuous",Qo="discrete",Vo="discretizing",Gt="interpolating",W1="temporal";function N4(e){return function(t){let n=t[0],r=t[1],i;return r<n&&(i=n,n=r,r=i),[e.invert(n),e.invert(r)]}}function B4(e){return function(t){const n=e.range();let r=t[0],i=t[1],a=-1,o,s,f,u;for(i<r&&(s=r,r=i,i=s),f=0,u=n.length;f<u;++f)n[f]>=r&&n[f]<=i&&(a<0&&(a=f),o=f);if(!(a<0))return r=e.invertExtent(n[a]),i=e.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function ah(){const e=Cl().unknown(void 0),t=e.domain,n=e.range;let r=[0,1],i,a,o=!1,s=0,f=0,u=.5;delete e.unknown;function c(){const l=t().length,h=r[1]<r[0],d=r[1-h],p=eh(l,s,f);let b=r[h-0];i=(d-b)/(p||1),o&&(i=Math.floor(i)),b+=(d-b-i*(l-s))*u,a=i*(1-s),o&&(b=Math.round(b),a=Math.round(a));const x=bo(l).map(A=>b+i*A);return n(h?x.reverse():x)}return e.domain=function(l){return arguments.length?(t(l),c()):t()},e.range=function(l){return arguments.length?(r=[+l[0],+l[1]],c()):r.slice()},e.rangeRound=function(l){return r=[+l[0],+l[1]],o=!0,c()},e.bandwidth=function(){return a},e.step=function(){return i},e.round=function(l){return arguments.length?(o=!!l,c()):o},e.padding=function(l){return arguments.length?(f=Math.max(0,Math.min(1,l)),s=f,c()):s},e.paddingInner=function(l){return arguments.length?(s=Math.max(0,Math.min(1,l)),c()):s},e.paddingOuter=function(l){return arguments.length?(f=Math.max(0,Math.min(1,l)),c()):f},e.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),c()):u},e.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],d=h?n().reverse():n(),p=d.length-1;let b=+l[0],x=+l[1],A,D,I;if(!(b!==b||x!==x)&&(x<b&&(I=b,b=x,x=I),!(x<d[0]||b>r[1-h])))return A=Math.max(0,Yc(d,b)-1),D=b===x?A:Yc(d,x)-1,b-d[A]>a+1e-10&&++A,h&&(I=A,A=p-D,D=p-I),A>D?void 0:t().slice(A,D+1)},e.invert=function(l){const h=e.invertRange([l,l]);return h&&h[0]},e.copy=function(){return ah().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(f).align(u)},c()}function X1(e){const t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return X1(t())},e}function F4(){return X1(ah().paddingInner(1))}var k4=Array.prototype.map;function L4(e){return k4.call(e,go)}const z4=Array.prototype.slice;function K1(){let e=[],t=[];function n(r){return r==null||r!==r?void 0:t[(Xi(e,r)-1)%t.length]}return n.domain=function(r){return arguments.length?(e=L4(r),n):e.slice()},n.range=function(r){return arguments.length?(t=z4.call(r),n):t.slice()},n.tickFormat=function(r,i){return S1(e[0],sn(e),r??10,i)},n.copy=function(){return K1().domain(n.domain()).range(n.range())},n}const ef={};function R4(e,t,n){const r=function(){const a=t();return a.invertRange||(a.invertRange=a.invert?N4(a):a.invertExtent?B4(a):void 0),a.type=e,a};return r.metadata=Eu(Gc(n)),r}function ge(e,t,n){return arguments.length>1?(ef[e]=R4(e,t,n),this):O4(e)?ef[e]:void 0}ge(T4,_1),ge(fa,D1,He),ge(vr,Zl,[He,vr]),ge(Go,Wl,He),ge(Ho,E4,He),ge($u,k1,He),ge(Q1,D4,[He,W1]),ge(V1,_4,[He,W1]),ge(_n,Kl,[He,Gt]),ge("".concat(_n,"-").concat(fa),Kl,[He,Gt]),ge("".concat(_n,"-").concat(vr),P1,[He,Gt,vr]),ge("".concat(_n,"-").concat(Go),Jl,[He,Gt]),ge("".concat(_n,"-").concat(Ho),I4,[He,Gt]),ge("".concat(_n,"-").concat($u),U1,[He,Gt]),ge("".concat(ca,"-").concat(fa),j1,[He,Gt]),ge("".concat(ca,"-").concat(vr),G1,[He,Gt,vr]),ge("".concat(ca,"-").concat(Go),$l,[He,Gt]),ge("".concat(ca,"-").concat(Ho),M4,[He,Gt]),ge("".concat(ca,"-").concat($u),H1,[He,Gt]),ge(th,z1,[Vo,th]),ge(Z1,R1,Vo),ge(Y1,O1,Vo),ge(ih,K1,[Qo,Vo]),ge(nh,Cl,Qo),ge(q1,ah,Qo),ge(rh,F4,Qo);function O4(e){return $r(ef,e)}function Zo(e,t){const n=ef[e];return n&&n.metadata[t]}function Bt(e){return Zo(e,He)}function gi(e){return Zo(e,Qo)}function la(e){return Zo(e,Vo)}function J1(e){return Zo(e,vr)}function tf(e){return Zo(e,Gt)}function P4(e,t){const n=t[0],r=sn(t)-n;return function(i){return e(n+i*r)}}function nf(e,t,n){return Gl($1(t||"rgb",n),e)}function U4(e,t){const n=new Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function $1(e,t){const n=l4[j4(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function j4(e){return"interpolate"+e.toLowerCase().split("-").map(t=>t[0].toUpperCase()+t.slice(1)).join("")}const G4={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},H4={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function em(e){const t=e.length/6|0,n=new Array(t);for(let r=0;r<t;)n[r]="#"+e.slice(r*6,++r*6);return n}function tm(e,t){for(const n in e)oh(n,t(e[n]))}const nm={};tm(H4,em),tm(G4,e=>nf(em(e)));function oh(e,t){return e=e&&e.toLowerCase(),arguments.length>1?(nm[e]=t,this):nm[e]}const L9="";function Q4(e,t){var n=e.getBoundingClientRect();return[t.clientX-n.left-e.clientLeft,t.clientY-n.top-e.clientTop]}function sh(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function In(e){return Array.isArray(e)?e:typeof e<"u"?[e]:[]}function ha(e){return e[e.length-1]}class V4{constructor(t){this.container=t,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(t){t!=this._visible&&(this.element.style.display=t?null:"none",this._visible=t)}get visible(){return this._visible}get enabled(){return ha(this.enabledStack)??!0}pushEnabledState(t){this.enabledStack.push(t),t||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(t){this.mouseCoords=Q4(this.container,t);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&Z4(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(t){if(!t||!this.enabled||this._isPenalty()){this.visible&&(Lp("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Lp(t,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(t,n){t!==this._previousTooltipDatum&&(this._previousTooltipDatum=t,n||(n=r=>Promise.resolve(qn`${JSON.stringify(r)}`)),n(t).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function Z4(e,t){let n=0;for(let r=0;r<e.length;r++)n+=(e[r]-t[r])**2;return Math.sqrt(n)}const Y4="RawCode",q4="Literal",W4="Property",X4="Identifier",K4="ArrayExpression",J4="BinaryExpression",$4="CallExpression",eS="ConditionalExpression",tS="LogicalExpression",nS="MemberExpression",rS="ObjectExpression",iS="UnaryExpression";function cn(e){this.type=e}cn.prototype.visit=function(e){let t,n,r;if(e(this))return 1;for(t=aS(this),n=0,r=t.length;n<r;++n)if(t[n].visit(e))return 1};function aS(e){switch(e.type){case K4:return e.elements;case J4:case tS:return[e.left,e.right];case $4:return[e.callee].concat(e.arguments);case eS:return[e.test,e.consequent,e.alternate];case nS:return[e.object,e.property];case rS:return e.properties;case W4:return[e.key,e.value];case iS:return[e.argument];case X4:case q4:case Y4:default:return[]}}var Mn,V,R,ut,me,rf=1,Yo=2,pi=3,Er=4,af=5,mi=6,St=7,qo=8,oS=9;Mn={},Mn[rf]="Boolean",Mn[Yo]="<end>",Mn[pi]="Identifier",Mn[Er]="Keyword",Mn[af]="Null",Mn[mi]="Numeric",Mn[St]="Punctuator",Mn[qo]="String",Mn[oS]="RegularExpression";var sS="ArrayExpression",uS="BinaryExpression",fS="CallExpression",cS="ConditionalExpression",rm="Identifier",lS="Literal",hS="LogicalExpression",dS="MemberExpression",gS="ObjectExpression",pS="Property",mS="UnaryExpression",$e="Unexpected token %0",bS="Unexpected number",yS="Unexpected string",wS="Unexpected identifier",xS="Unexpected reserved word",AS="Unexpected end of input",uh="Invalid regular expression",fh="Invalid regular expression: missing /",im="Octal literals are not allowed in strict mode.",vS="Duplicate data property in object literal not allowed in strict mode",rt="ILLEGAL",Wo="Disabled.",ES=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),CS=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function of(e,t){if(!e)throw new Error("ASSERT: "+t)}function Xn(e){return e>=48&&e<=57}function ch(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function Xo(e){return"01234567".indexOf(e)>=0}function SS(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0}function Ko(e){return e===10||e===13||e===8232||e===8233}function Jo(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&ES.test(String.fromCharCode(e))}function sf(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&CS.test(String.fromCharCode(e))}const DS={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function am(){for(;R<ut;){const e=V.charCodeAt(R);if(SS(e)||Ko(e))++R;else break}}function lh(e){var t,n,r,i=0;for(n=e==="u"?4:2,t=0;t<n;++t)R<ut&&ch(V[R])?(r=V[R++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):ce({},$e,rt);return String.fromCharCode(i)}function _S(){var e,t,n,r;for(e=V[R],t=0,e==="}"&&ce({},$e,rt);R<ut&&(e=V[R++],!!ch(e));)t=t*16+"0123456789abcdef".indexOf(e.toLowerCase());return(t>1114111||e!=="}")&&ce({},$e,rt),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function om(){var e,t;for(e=V.charCodeAt(R++),t=String.fromCharCode(e),e===92&&(V.charCodeAt(R)!==117&&ce({},$e,rt),++R,e=lh("u"),(!e||e==="\\"||!Jo(e.charCodeAt(0)))&&ce({},$e,rt),t=e);R<ut&&(e=V.charCodeAt(R),!!sf(e));)++R,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),V.charCodeAt(R)!==117&&ce({},$e,rt),++R,e=lh("u"),(!e||e==="\\"||!sf(e.charCodeAt(0)))&&ce({},$e,rt),t+=e);return t}function IS(){var e,t;for(e=R++;R<ut;){if(t=V.charCodeAt(R),t===92)return R=e,om();if(sf(t))++R;else break}return V.slice(e,R)}function MS(){var e,t,n;return e=R,t=V.charCodeAt(R)===92?om():IS(),t.length===1?n=pi:DS.hasOwnProperty(t)?n=Er:t==="null"?n=af:t==="true"||t==="false"?n=rf:n=pi,{type:n,value:t,start:e,end:R}}function hh(){var e=R,t=V.charCodeAt(R),n,r=V[R],i,a,o;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++R,{type:St,value:String.fromCharCode(t),start:e,end:R};default:if(n=V.charCodeAt(R+1),n===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return R+=2,{type:St,value:String.fromCharCode(t)+String.fromCharCode(n),start:e,end:R};case 33:case 61:return R+=2,V.charCodeAt(R)===61&&++R,{type:St,value:V.slice(e,R),start:e,end:R}}}if(o=V.substr(R,4),o===">>>=")return R+=4,{type:St,value:o,start:e,end:R};if(a=o.substr(0,3),a===">>>"||a==="<<="||a===">>=")return R+=3,{type:St,value:a,start:e,end:R};if(i=a.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return R+=2,{type:St,value:i,start:e,end:R};if(i==="//"&&ce({},$e,rt),"<>=!+-*%&|^/".indexOf(r)>=0)return++R,{type:St,value:r,start:e,end:R};ce({},$e,rt)}function TS(e){let t="";for(;R<ut&&ch(V[R]);)t+=V[R++];return t.length===0&&ce({},$e,rt),Jo(V.charCodeAt(R))&&ce({},$e,rt),{type:mi,value:parseInt("0x"+t,16),start:e,end:R}}function NS(e){let t="0"+V[R++];for(;R<ut&&Xo(V[R]);)t+=V[R++];return(Jo(V.charCodeAt(R))||Xn(V.charCodeAt(R)))&&ce({},$e,rt),{type:mi,value:parseInt(t,8),octal:!0,start:e,end:R}}function sm(){var e,t,n;if(n=V[R],of(Xn(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),t=R,e="",n!=="."){if(e=V[R++],n=V[R],e==="0"){if(n==="x"||n==="X")return++R,TS(t);if(Xo(n))return NS(t);n&&Xn(n.charCodeAt(0))&&ce({},$e,rt)}for(;Xn(V.charCodeAt(R));)e+=V[R++];n=V[R]}if(n==="."){for(e+=V[R++];Xn(V.charCodeAt(R));)e+=V[R++];n=V[R]}if(n==="e"||n==="E")if(e+=V[R++],n=V[R],(n==="+"||n==="-")&&(e+=V[R++]),Xn(V.charCodeAt(R)))for(;Xn(V.charCodeAt(R));)e+=V[R++];else ce({},$e,rt);return Jo(V.charCodeAt(R))&&ce({},$e,rt),{type:mi,value:parseFloat(e),start:t,end:R}}function BS(){var e="",t,n,r,i,a=!1;for(t=V[R],of(t==="'"||t==='"',"String literal must starts with a quote"),n=R,++R;R<ut;)if(r=V[R++],r===t){t="";break}else if(r==="\\")if(r=V[R++],!r||!Ko(r.charCodeAt(0)))switch(r){case"u":case"x":V[R]==="{"?(++R,e+=_S()):e+=lh(r);break;case"n":e+=`
|
|
15
|
+
`;break;case"r":e+="\r";break;case"t":e+=" ";break;case"b":e+="\b";break;case"f":e+="\f";break;case"v":e+="\v";break;default:Xo(r)?(i="01234567".indexOf(r),i!==0&&(a=!0),R<ut&&Xo(V[R])&&(a=!0,i=i*8+"01234567".indexOf(V[R++]),"0123".indexOf(r)>=0&&R<ut&&Xo(V[R])&&(i=i*8+"01234567".indexOf(V[R++]))),e+=String.fromCharCode(i)):e+=r;break}else r==="\r"&&V[R]===`
|
|
16
|
+
`&&++R;else{if(Ko(r.charCodeAt(0)))break;e+=r}return t!==""&&ce({},$e,rt),{type:qo,value:e,octal:a,start:n,end:R}}function FS(e,t){let n=e;t.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";ce({},uh)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{ce({},uh)}try{return new RegExp(e,t)}catch{return null}}function kS(){var e,t,n,r,i;for(e=V[R],of(e==="/","Regular expression literal must start with a slash"),t=V[R++],n=!1,r=!1;R<ut;)if(e=V[R++],t+=e,e==="\\")e=V[R++],Ko(e.charCodeAt(0))&&ce({},fh),t+=e;else if(Ko(e.charCodeAt(0)))ce({},fh);else if(n)e==="]"&&(n=!1);else if(e==="/"){r=!0;break}else e==="["&&(n=!0);return r||ce({},fh),i=t.substr(1,t.length-2),{value:i,literal:t}}function LS(){var e,t,n;for(t="",n="";R<ut&&(e=V[R],!!sf(e.charCodeAt(0)));)++R,e==="\\"&&R<ut?ce({},$e,rt):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&ce({},uh,n),{value:n,literal:t}}function zS(){var e,t,n,r;return me=null,am(),e=R,t=kS(),n=LS(),r=FS(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:R}}function RS(e){return e.type===pi||e.type===Er||e.type===rf||e.type===af}function um(){if(am(),R>=ut)return{type:Yo,start:R,end:R};const e=V.charCodeAt(R);return Jo(e)?MS():e===40||e===41||e===59?hh():e===39||e===34?BS():e===46?Xn(V.charCodeAt(R+1))?sm():hh():Xn(e)?sm():hh()}function Dt(){const e=me;return R=e.end,me=um(),R=e.end,e}function fm(){const e=R;me=um(),R=e}function OS(e){const t=new cn(sS);return t.elements=e,t}function cm(e,t,n){const r=new cn(e==="||"||e==="&&"?hS:uS);return r.operator=e,r.left=t,r.right=n,r}function PS(e,t){const n=new cn(fS);return n.callee=e,n.arguments=t,n}function US(e,t,n){const r=new cn(cS);return r.test=e,r.consequent=t,r.alternate=n,r}function dh(e){const t=new cn(rm);return t.name=e,t}function $o(e){const t=new cn(lS);return t.value=e.value,t.raw=V.slice(e.start,e.end),e.regex&&(t.raw==="//"&&(t.raw="/(?:)/"),t.regex=e.regex),t}function lm(e,t,n){const r=new cn(dS);return r.computed=e==="[",r.object=t,r.property=n,r.computed||(n.member=!0),r}function jS(e){const t=new cn(gS);return t.properties=e,t}function hm(e,t,n){const r=new cn(pS);return r.key=t,r.value=n,r.kind=e,r}function GS(e,t){const n=new cn(mS);return n.operator=e,n.argument=t,n.prefix=!0,n}function ce(e,t){var n,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(a,o)=>(of(o<r.length,"Message reference must be in range"),r[o]));throw n=new Error(i),n.index=R,n.description=i,n}function uf(e){e.type===Yo&&ce(e,AS),e.type===mi&&ce(e,bS),e.type===qo&&ce(e,yS),e.type===pi&&ce(e,wS),e.type===Er&&ce(e,xS),ce(e,$e,e.value)}function ft(e){const t=Dt();(t.type!==St||t.value!==e)&&uf(t)}function Se(e){return me.type===St&&me.value===e}function gh(e){return me.type===Er&&me.value===e}function HS(){const e=[];for(R=me.start,ft("[");!Se("]");)Se(",")?(Dt(),e.push(null)):(e.push(bi()),Se("]")||ft(","));return Dt(),OS(e)}function dm(){R=me.start;const e=Dt();return e.type===qo||e.type===mi?(e.octal&&ce(e,im),$o(e)):dh(e.value)}function QS(){var e,t,n,r;if(R=me.start,e=me,e.type===pi)return n=dm(),ft(":"),r=bi(),hm("init",n,r);if(e.type===Yo||e.type===St)uf(e);else return t=dm(),ft(":"),r=bi(),hm("init",t,r)}function VS(){var e=[],t,n,r,i={},a=String;for(R=me.start,ft("{");!Se("}");)t=QS(),t.key.type===rm?n=t.key.name:n=a(t.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?ce({},vS):i[r]=!0,e.push(t),Se("}")||ft(",");return ft("}"),jS(e)}function ZS(){ft("(");const e=ph();return ft(")"),e}const YS={if:1};function qS(){var e,t,n;if(Se("("))return ZS();if(Se("["))return HS();if(Se("{"))return VS();if(e=me.type,R=me.start,e===pi||YS[me.value])n=dh(Dt().value);else if(e===qo||e===mi)me.octal&&ce(me,im),n=$o(Dt());else{if(e===Er)throw new Error(Wo);e===rf?(t=Dt(),t.value=t.value==="true",n=$o(t)):e===af?(t=Dt(),t.value=null,n=$o(t)):Se("/")||Se("/=")?(n=$o(zS()),fm()):uf(Dt())}return n}function WS(){const e=[];if(ft("("),!Se(")"))for(;R<ut&&(e.push(bi()),!Se(")"));)ft(",");return ft(")"),e}function XS(){R=me.start;const e=Dt();return RS(e)||uf(e),dh(e.value)}function KS(){return ft("."),XS()}function JS(){ft("[");const e=ph();return ft("]"),e}function $S(){var e,t,n;for(e=qS();;)if(Se("."))n=KS(),e=lm(".",e,n);else if(Se("("))t=WS(),e=PS(e,t);else if(Se("["))n=JS(),e=lm("[",e,n);else break;return e}function gm(){const e=$S();if(me.type===St&&(Se("++")||Se("--")))throw new Error(Wo);return e}function ff(){var e,t;if(me.type!==St&&me.type!==Er)t=gm();else{if(Se("++")||Se("--"))throw new Error(Wo);if(Se("+")||Se("-")||Se("~")||Se("!"))e=Dt(),t=ff(),t=GS(e.value,t);else{if(gh("delete")||gh("void")||gh("typeof"))throw new Error(Wo);t=gm()}}return t}function pm(e){let t=0;if(e.type!==St&&e.type!==Er)return 0;switch(e.value){case"||":t=1;break;case"&&":t=2;break;case"|":t=3;break;case"^":t=4;break;case"&":t=5;break;case"==":case"!=":case"===":case"!==":t=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":t=7;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11;break}return t}function eD(){var e,t,n,r,i,a,o,s,f,u;if(e=me,f=ff(),r=me,i=pm(r),i===0)return f;for(r.prec=i,Dt(),t=[e,me],o=ff(),a=[f,r,o];(i=pm(me))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),s=a.pop().value,f=a.pop(),t.pop(),n=cm(s,f,o),a.push(n);r=Dt(),r.prec=i,a.push(r),t.push(me),n=ff(),a.push(n)}for(u=a.length-1,n=a[u],t.pop();u>1;)t.pop(),n=cm(a[u-1].value,a[u-2],n),u-=2;return n}function bi(){var e,t,n;return e=eD(),Se("?")&&(Dt(),t=bi(),ft(":"),n=bi(),e=US(e,t,n)),e}function ph(){const e=bi();if(Se(","))throw new Error(Wo);return e}function tD(e){V=e,R=0,ut=V.length,me=null,fm();const t=ph();if(me.type!==Yo)throw new Error("Unexpect token after expression.");return t}var nD={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function rD(e){function t(o,s,f,u){let c=e(s[0]);return f&&(c=f+"("+c+")",f.lastIndexOf("new ",0)===0&&(c="("+c+")")),c+"."+o+(u<0?"":u===0?"()":"("+s.slice(1).map(e).join(",")+")")}function n(o,s,f){return u=>t(o,u,s,f)}const r="new Date",i="String",a="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(o){o.length<3&&Le("Missing arguments to clamp function."),o.length>3&&Le("Too many arguments to clamp function.");const s=o.map(e);return"Math.max("+s[1]+", Math.min("+s[2]+","+s[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),substring:n("substring",i),split:n("split",i),trim:n("trim",i,0),regexp:a,test:n("test",a),if:function(o){o.length<3&&Le("Missing arguments to if function."),o.length>3&&Le("Too many arguments to if function.");const s=o.map(e);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function iD(e){const t=e&&e.length-1;return t&&(e[0]==='"'&&e[t]==='"'||e[0]==="'"&&e[t]==="'")?e.slice(1,-1):e}function aD(e){e=e||{};const t=e.allowed?Eu(e.allowed):{},n=e.forbidden?Eu(e.forbidden):{},r=e.constants||nD,i=(e.functions||rD)(l),a=e.globalvar,o=e.fieldvar,s=At(a)?a:p=>`${a}["${p}"]`;let f={},u={},c=0;function l(p){if(ze(p))return p;const b=h[p.type];return b==null&&Le("Unsupported type: "+p.type),b(p)}const h={Literal:p=>p.raw,Identifier:p=>{const b=p.name;return c>0?b:$r(n,b)?Le("Illegal identifier: "+b):$r(r,b)?r[b]:$r(t,b)?b:(f[b]=1,s(b))},MemberExpression:p=>{const b=!p.computed,x=l(p.object);b&&(c+=1);const A=l(p.property);return x===o&&(u[iD(A)]=1),b&&(c-=1),x+(b?"."+A:"["+A+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&Le("Illegal callee type: "+p.callee.type);const b=p.callee.name,x=p.arguments,A=$r(i,b)&&i[b];return A||Le("Unrecognized function: "+b),At(A)?A(x):A+"("+x.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{c+=1;const b=l(p.key);return c-=1,b+":"+l(p.value)}};function d(p){const b={code:l(p),globals:Object.keys(f),fields:Object.keys(u)};return f={},u={},b}return d.functions=i,d.constants=r,d}function mh(e,t={}){const n=aD({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=tD(e),i=n(r),a=Function("datum","global",`"use strict"; return (${i.code});`),o=s=>a(s,t);return o.fields=i.fields,o}catch(r){throw new Error(`Invalid expression: ${e}, ${r.message}`)}}function oD(){let e=0;const t=new Map,n=r=>{let i=t.get(r);return i===void 0&&(i=e++,t.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of t.entries())if(i[1]==r)return i[0]},n.domain=()=>[...t.keys()],n}function sD(e,t){const n={};t||(t=e.encoding);for(const[r,i]of Object.entries(t)){if(!i)continue;const a=e.unitView.getScaleResolution(Ht(i)&&i.resolutionChannel||r);n[r]=uD(t[r],a==null?void 0:a.getScale(),e.unitView.getAccessor(r),r)}return n}function uD(e,t,n,r){let i;if(ln(e)){const a=e.value;i=o=>a,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=a=>{},i.accessor=n,i.constant=n.constant;else{if(!t)throw new Error(`Missing scale! "${r}": ${JSON.stringify(e)}`);if(i=a=>t(n(a)),gi(t.type)){const a=oD();a.addAll(t.domain()),i.indexer=a}i.constant=n.constant,i.accessor=n,i.scale=t}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(e)}`);return i.invert=t?a=>t.invert(a):a=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(e))},i.channelDef=e,i.applyMetadata=a=>{for(const o in i)o in i&&(a[o]=i[o]);return a},i}function ln(e){return e&&"value"in e}function es(e){return e&&"field"in e}function ts(e){return e&&"datum"in e}function Ht(e){return es(e)||ts(e)||yh(e)||mm(e)}function bh(e,t){const n=e.mark.encoding[t];if(Ht(n))return n;throw new Error("Not a channel def with scale!")}function mm(e){return e&&"chrom"in e}function yh(e){return e&&"expr"in e}const ns=["x","y"],fD=["x2","y2"],cD=[...ns,...fD];function bm(e){return ns.includes(e)}function rs(e){return cD.includes(e)}const wh={x:"x2",y:"y2"},ym=Object.fromEntries(Object.entries(wh).map(e=>[e[1],e[0]]));function is(e){return e in ym}function lD(e){const t=wh[e];if(t)return t;throw new Error(`${e} has no secondary channel!`)}function da(e){return ym[e]??e}function yi(e){return["color","fill","stroke"].includes(da(e))}function cf(e){return["shape","squeeze"].includes(e)}function wm(e){switch(e){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function xm(e){if(!cf(e))throw new Error("Not a discrete channel: "+e);const t=new Map(wm(e).map((n,r)=>[n,r]));return n=>{const r=t.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${e}" channel: ${n}`)}}function xe(e,t=e){if(/^[A-Za-z0-9_]+$/.test(e)){const n=new Function("datum",`return datum[${JSON.stringify(e)}]`);return ne(n,[e],t)}else return mu(e)}class hD{constructor(){this.accessorCreators=[],this.register(t=>{if(es(t))try{const n=xe(t.field);return n.constant=!1,n.fields=Jr(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(t=>yh(t)?dD(t.expr):void 0),this.register(t=>{if(ts(t)){const r=Hv(t.datum);return r.constant=!0,r.fields=[],r}})}register(t){this.accessorCreators.push(t)}createAccessor(t){for(const n of this.accessorCreators){const r=n(t);if(r)return r}}}function dD(e){const t=mh(e);return t.constant=t.fields.length==0,t}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
|
17
17
|
Available via the MIT license.
|
|
18
|
-
see: http://github.com/greggman/twgl.js for details */const da=5120,Rr=5121,ga=5122,pa=5123,ma=5124,Aa=5125,ya=5126,Z1=32819,K1=32820,J1=33635,q1=5131,_1=33640,$1=35899,ey=35902,ty=36269,ny=34042,Ef={};{const t=Ef;t[da]=Int8Array,t[Rr]=Uint8Array,t[ga]=Int16Array,t[pa]=Uint16Array,t[ma]=Int32Array,t[Aa]=Uint32Array,t[ya]=Float32Array,t[Z1]=Uint16Array,t[K1]=Uint16Array,t[J1]=Uint16Array,t[q1]=Uint16Array,t[_1]=Uint32Array,t[$1]=Uint32Array,t[ey]=Uint32Array,t[ty]=Uint32Array,t[ny]=Uint32Array}function xa(t){if(t instanceof Int8Array)return da;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Rr;if(t instanceof Int16Array)return ga;if(t instanceof Uint16Array)return pa;if(t instanceof Int32Array)return ma;if(t instanceof Uint32Array)return Aa;if(t instanceof Float32Array)return ya;throw new Error("unsupported typed array type")}function ry(t){if(t===Int8Array)return da;if(t===Uint8Array||t===Uint8ClampedArray)return Rr;if(t===Int16Array)return ga;if(t===Uint16Array)return pa;if(t===Int32Array)return ma;if(t===Uint32Array)return Aa;if(t===Float32Array)return ya;throw new Error("unsupported typed array type")}function iy(t){const e=Ef[t];if(!e)throw new Error("unknown gl type");return e}const _i=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function sy(...t){console.error(...t)}function Sf(...t){console.warn(...t)}function oy(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function If(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function $i(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function ay(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Tf=35044,qe=34962,uy=34963,cy=34660,ly=5120,fy=5121,hy=5122,dy=5123,gy=5124,py=5125,my=5126,Nf={attribPrefix:""};function Bf(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Tf)}function Ff(t,e,n,r){if(oy(t,e))return e;n=n||qe;const i=t.createBuffer();return Bf(t,n,i,e,r),i}function Lf(t){return t==="indices"}function Ay(t){return t instanceof Int8Array||t instanceof Uint8Array}function yy(t){return t===Int8Array||t===Uint8Array}function xy(t){return t.length?t:t.data}const wy=/coord|texture/i,by=/color|colour/i;function zf(t,e){let n;if(wy.test(t)?n=2:by.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function Dy(t,e){return t.numComponents||t.size||zf(e,xy(t).length)}function wa(t,e){if(_i(t))return t;if(_i(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(Lf(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function vy(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Lf(r)){const i=e[r],s=i.attrib||i.name||i.attribName||Nf.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!_i(i.value))throw new Error("array.value is not array or typedarray");n[s]={value:i.value}}else{let o,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)o=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,h=f*l.BYTES_PER_ELEMENT;a=ry(l),u=i.normalize!==void 0?i.normalize:yy(l),c=i.numComponents||i.size||zf(r,f),o=t.createBuffer(),t.bindBuffer(qe,o),t.bufferData(qe,h,i.drawType||Tf)}else{const f=wa(i,r);o=Ff(t,f,void 0,i.drawType),a=xa(f),u=i.normalize!==void 0?i.normalize:Ay(f),c=Dy(i,r)}n[s]={buffer:o,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(qe,null),n}function Cy(t,e,n,r){n=wa(n),r!==void 0?(t.bindBuffer(qe,e.buffer),t.bufferSubData(qe,r,n)):Bf(t,qe,e.buffer,n,e.drawType)}function My(t,e){return e===ly||e===fy?1:e===hy||e===dy?2:e===gy||e===py||e===my?4:0}const ba=["position","positions","a_position"];function Ey(t,e){let n,r;for(r=0;r<ba.length&&(n=ba[r],!(n in e||(n=Nf.attribPrefix+n,n in e)));++r);r===ba.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(qe,i.buffer);const s=t.getBufferParameter(qe,cy);t.bindBuffer(qe,null);const o=My(t,i.type),a=s/o,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function Sy(t,e,n){const r=vy(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const s=e.indices;if(s){const o=wa(s,"indices");i.indices=Ff(t,o,uy),i.numElements=o.length,i.elementType=xa(o)}else i.numElements||(i.numElements=Ey(t,i.attribs));return i}function Mn(t){return!!t.texStorage2D}const Da=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const s in r)if(typeof r[s]=="number"){const o=e[r[s]];e[r[s]]=o?`${o} | ${s}`:s}t[i]=!0}}return function(i,s){return n(i),e[s]||(typeof s=="number"?`0x${s.toString(16)}`:s)}}(),Dt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},En=_i,Pf=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Of=6406,_e=6407,H=6408,kf=6409,Rf=6410,jr=6402,jf=34041,es=33071,Iy=9728,Ty=9729,ot=3553,at=34067,vt=32879,Ct=35866,ts=34069,Ny=34070,By=34071,Fy=34072,Ly=34073,zy=34074,va=10241,Ca=10240,ns=10242,rs=10243,Uf=32882,Py=33082,Oy=33083,ky=33084,Ry=33085,Ma=3317,Gf=3314,Qf=32878,Hf=3316,Yf=3315,Vf=32877,jy=37443,Uy=37441,Gy=37440,Qy=33321,Hy=36756,Yy=33325,Vy=33326,Wy=33330,Xy=33329,Zy=33338,Ky=33337,Jy=33340,qy=33339,_y=33323,$y=36757,ex=33327,tx=33328,nx=33336,rx=33335,ix=33332,sx=33331,ox=33334,ax=33333,ux=32849,cx=35905,lx=36194,fx=36758,hx=35898,dx=35901,gx=34843,px=34837,mx=36221,Ax=36239,yx=36215,xx=36233,wx=36209,bx=36227,Dx=32856,vx=35907,Cx=36759,Mx=32855,Ex=32854,Sx=32857,Ix=34842,Tx=34836,Nx=36220,Bx=36238,Fx=36975,Lx=36214,zx=36232,Px=36226,Ox=36208,kx=33189,Rx=33190,jx=36012,Ux=36013,Gx=35056,Mt=5120,Y=5121,is=5122,Sn=5123,ss=5124,_t=5125,fe=5126,Wf=32819,Xf=32820,Zf=33635,Ge=5131,Ur=36193,Ea=33640,Qx=35899,Hx=35902,Yx=36269,Vx=34042,os=33319,In=33320,as=6403,Tn=36244,Nn=36248,$t=36249;let Sa;function us(t){if(!Sa){const e={};e[Of]={textureFormat:Of,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Y,Ge,Ur,fe]},e[kf]={textureFormat:kf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Y,Ge,Ur,fe]},e[Rf]={textureFormat:Rf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Y,Ge,Ur,fe]},e[_e]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Y,Ge,Ur,fe,Zf]},e[H]={textureFormat:H,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Y,Ge,Ur,fe,Wf,Xf]},e[jr]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[_t,Sn]},e[Qy]={textureFormat:as,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Y]},e[Hy]={textureFormat:as,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Mt]},e[Yy]={textureFormat:as,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[fe,Ge]},e[Vy]={textureFormat:as,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Wy]={textureFormat:Tn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Y]},e[Xy]={textureFormat:Tn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Mt]},e[ix]={textureFormat:Tn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Sn]},e[sx]={textureFormat:Tn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[is]},e[ox]={textureFormat:Tn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[_t]},e[ax]={textureFormat:Tn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ss]},e[_y]={textureFormat:os,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Y]},e[$y]={textureFormat:os,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Mt]},e[ex]={textureFormat:os,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[fe,Ge]},e[tx]={textureFormat:os,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[fe]},e[nx]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Y]},e[rx]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Mt]},e[Zy]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Sn]},e[Ky]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[is]},e[Jy]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[_t]},e[qy]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ss]},e[ux]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Y]},e[cx]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Y]},e[lx]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Y,Zf]},e[fx]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Mt]},e[hx]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,Ge,Qx]},e[dx]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,Ge,Hx]},e[gx]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[fe,Ge]},e[px]={textureFormat:_e,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[fe]},e[mx]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Y]},e[Ax]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Mt]},e[yx]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Sn]},e[xx]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[is]},e[wx]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[_t]},e[bx]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ss]},e[Dx]={textureFormat:H,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Y]},e[vx]={textureFormat:H,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Y]},e[Cx]={textureFormat:H,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Mt]},e[Mx]={textureFormat:H,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Y,Xf,Ea]},e[Ex]={textureFormat:H,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Y,Wf]},e[Sx]={textureFormat:H,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Ea]},e[Ix]={textureFormat:H,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[fe,Ge]},e[Tx]={textureFormat:H,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[fe]},e[Nx]={textureFormat:$t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Y]},e[Bx]={textureFormat:$t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Mt]},e[Fx]={textureFormat:$t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ea]},e[Lx]={textureFormat:$t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Sn]},e[zx]={textureFormat:$t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[is]},e[Px]={textureFormat:$t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ss]},e[Ox]={textureFormat:$t,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[_t]},e[kx]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Sn,_t]},e[Rx]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[_t]},e[jx]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Gx]={textureFormat:jf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Vx]},e[Ux]={textureFormat:jf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Yx]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,s){const o=r.type[s];r.bytesPerElementMap[o]=i})}),Sa=e}return Sa[t]}function Wx(t,e){const n=us(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Bn(t){const e=us(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Kf(t){return(t&t-1)===0}function Xx(t,e,n,r){if(!Mn(t))return Kf(e)&&Kf(n);const i=us(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Zx(t){const e=us(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Jf(t,e,n){return En(e)?xa(e):n||Y}function cs(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const s=Math.sqrt(i/(e===at?6:1));s%1===0?(n=s,r=s):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Fn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(jy,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Uy,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(Gy,e.flipY)}function qf(t){t.pixelStorei(Ma,4),Mn(t)&&(t.pixelStorei(Gf,0),t.pixelStorei(Qf,0),t.pixelStorei(Hf,0),t.pixelStorei(Yf,0),t.pixelStorei(Vf,0))}function Kx(t,e,n,r){r.minMag&&(n.call(t,e,va,r.minMag),n.call(t,e,Ca,r.minMag)),r.min&&n.call(t,e,va,r.min),r.mag&&n.call(t,e,Ca,r.mag),r.wrap&&(n.call(t,e,ns,r.wrap),n.call(t,e,rs,r.wrap),(e===vt||ay(t,e))&&n.call(t,e,Uf,r.wrap)),r.wrapR&&n.call(t,e,Uf,r.wrapR),r.wrapS&&n.call(t,e,ns,r.wrapS),r.wrapT&&n.call(t,e,rs,r.wrapT),r.minLod&&n.call(t,e,Py,r.minLod),r.maxLod&&n.call(t,e,Oy,r.maxLod),r.baseLevel&&n.call(t,e,ky,r.baseLevel),r.maxLevel&&n.call(t,e,Ry,r.maxLevel)}function _f(t,e,n){const r=n.target||ot;t.bindTexture(r,e),Kx(t,r,t.texParameteri,n)}function Jx(t){return t=t||Dt.textureColor,En(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Ia(t,e,n,r,i,s){n=n||Dt.textureOptions,s=s||H;const o=n.target||ot;if(r=r||n.width,i=i||n.height,t.bindTexture(o,e),Xx(t,r,i,s))t.generateMipmap(o);else{const a=Zx(s)?Ty:Iy;t.texParameteri(o,va,a),t.texParameteri(o,Ca,a),t.texParameteri(o,ns,es),t.texParameteri(o,rs,es)}}function Gr(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Ta(t,e){return e=e||{},e.cubeFaceOrder||[ts,Ny,By,Fy,Ly,zy]}function Na(t,e){const r=Ta(t,e).map(function(i,s){return{face:i,ndx:s}});return r.sort(function(i,s){return i.face-s.face}),r}function $f(t,e,n,r){r=r||Dt.textureOptions;const i=r.target||ot,s=r.level||0;let o=n.width,a=n.height;const u=r.internalFormat||r.format||H,c=Bn(u),f=r.format||c.format,l=r.type||c.type;if(Fn(t,r),t.bindTexture(i,e),i===at){const h=n.width,g=n.height;let d,p;if(h/6===g)d=g,p=[0,0,1,0,2,0,3,0,4,0,5,0];else if(g/6===h)d=h,p=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===g/2)d=h/3,p=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===g/3)d=h/2,p=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const m=Pf();m?(m.canvas.width=d,m.canvas.height=d,o=d,a=d,Na(t,r).forEach(function(A){const x=p[A.ndx*2+0]*d,w=p[A.ndx*2+1]*d;m.drawImage(n,x,w,d,d,0,0,d,d),t.texImage2D(A.face,s,u,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap<"u"&&(o=d,a=d,Na(t,r).forEach(function(A){const x=p[A.ndx*2+0]*d,w=p[A.ndx*2+1]*d;t.texImage2D(A.face,s,u,d,d,0,f,l,null),createImageBitmap(n,x,w,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(v){Fn(t,r),t.bindTexture(i,e),t.texImage2D(A.face,s,u,f,l,v),Gr(r)&&Ia(t,e,r,o,a,u)})}))}else if(i===vt||i===Ct){const h=Math.min(n.width,n.height),g=Math.max(n.width,n.height),d=g/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const p=n.width===g?1:0,m=n.height===g?1:0;t.pixelStorei(Ma,1),t.pixelStorei(Gf,n.width),t.pixelStorei(Qf,0),t.pixelStorei(Vf,0),t.texImage3D(i,s,u,h,h,h,0,f,l,null);for(let A=0;A<d;++A){const x=A*h*p,w=A*h*m;t.pixelStorei(Hf,x),t.pixelStorei(Yf,w),t.texSubImage3D(i,s,0,0,A,h,h,1,f,l,n)}qf(t)}else t.texImage2D(i,s,u,f,l,n);Gr(r)&&Ia(t,e,r,o,a,u),_f(t,e,r)}function Qr(){}function qx(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function _x(t,e){return e===void 0&&!qx(t)?"anonymous":e}function $x(t,e,n){n=n||Qr;let r;if(e=e!==void 0?e:Dt.crossOrigin,e=_x(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",s),r.removeEventListener("load",o),r=null},s=function(){const u="couldn't load image: "+t;sy(u),n(u,r),i()},o=function(){n(null,r),i()};return r.addEventListener("error",s),r.addEventListener("load",o),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,s;const o=function(){n(i,s)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){s=u,setTimeout(o)}).catch(function(u){i=u,setTimeout(o)}),r=null}return r}function e0(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function Ba(t,e,n){return e0(t)?(setTimeout(function(){n(null,t)}),t):$x(t,e,n)}function Fa(t,e,n){n=n||Dt.textureOptions;const r=n.target||ot;if(t.bindTexture(r,e),n.color===!1)return;const i=Jx(n.color);if(r===at)for(let s=0;s<6;++s)t.texImage2D(ts+s,0,H,1,1,0,H,Y,i);else r===vt||r===Ct?t.texImage3D(r,0,H,1,1,1,0,H,Y,i):t.texImage2D(r,0,H,1,1,0,H,Y,i)}function e2(t,e,n,r){return r=r||Qr,n=n||Dt.textureOptions,Fa(t,e,n),n=Object.assign({},n),Ba(n.src,n.crossOrigin,function(s,o){s?r(s,e,o):($f(t,e,o,n),r(null,e,o))})}function t2(t,e,n,r){r=r||Qr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const s=n.level||0,o=n.internalFormat||n.format||H,a=Bn(o),u=n.format||a.format,c=n.type||Y,f=n.target||ot;if(f!==at)throw"target must be TEXTURE_CUBE_MAP";Fa(t,e,n),n=Object.assign({},n);let l=6;const h=[],g=Ta(t,n);let d;function p(m){return function(A,x){--l,A?h.push(A):x.width!==x.height?h.push("cubemap face img is not a square: "+x.src):(Fn(t,n),t.bindTexture(f,e),l===5?Ta().forEach(function(w){t.texImage2D(w,s,o,u,c,x)}):t.texImage2D(m,s,o,u,c,x),Gr(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(m,A){return Ba(m,n.crossOrigin,p(g[A]))})}function n2(t,e,n,r){r=r||Qr;const i=n.src,s=n.internalFormat||n.format||H,o=Bn(s),a=n.format||o.format,u=n.type||Y,c=n.target||Ct;if(c!==vt&&c!==Ct)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Fa(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const g=n.level||0;let d=n.width,p=n.height;const m=i.length;let A=!0;function x(w){return function(v,M){if(--f,v)l.push(v);else{if(Fn(t,n),t.bindTexture(c,e),A){A=!1,d=n.width||M.width,p=n.height||M.height,t.texImage3D(c,g,s,d,p,m,0,a,u,null);for(let C=0;C<m;++C)t.texSubImage3D(c,g,0,0,C,d,p,1,a,u,M)}else{let C=M,b;(M.width!==d||M.height!==p)&&(b=Pf(),C=b.canvas,b.canvas.width=d,b.canvas.height=p,b.drawImage(M,0,0,d,p)),t.texSubImage3D(c,g,0,0,w,d,p,1,a,u,C),b&&C===b.canvas&&(b.canvas.width=0,b.canvas.height=0)}Gr(n)&&t.generateMipmap(c)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(w,v){return Ba(w,n.crossOrigin,x(v))})}function t0(t,e,n,r){r=r||Dt.textureOptions;const i=r.target||ot;t.bindTexture(i,e);let s=r.width,o=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||H,f=Bn(c),l=r.format||f.format,h=r.type||Jf(t,n,f.type);if(En(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=iy(h);n=new m(n)}const g=Wx(c,h),d=n.byteLength/g;if(d%1)throw"length wrong size for format: "+Da(t,l);let p;if(i===vt||i===Ct)if(!s&&!o&&!a){const m=Math.cbrt(d);if(m%1!==0)throw"can't guess cube size of array of numElements: "+d;s=m,o=m,a=m}else s&&(!o||!a)?(p=cs(t,i,o,a,d/s),o=p.width,a=p.height):o&&(!s||!a)?(p=cs(t,i,s,a,d/o),s=p.width,a=p.height):(p=cs(t,i,s,o,d/a),s=p.width,o=p.height);else p=cs(t,i,s,o,d),s=p.width,o=p.height;if(qf(t),t.pixelStorei(Ma,r.unpackAlignment||1),Fn(t,r),i===at){const m=g/n.BYTES_PER_ELEMENT,A=d/6*m;Na(t,r).forEach(x=>{const w=A*x.ndx,v=n.subarray(w,w+A);t.texImage2D(x.face,u,c,s,o,0,l,h,v)})}else i===vt||i===Ct?t.texImage3D(i,u,c,s,o,a,0,l,h,n):t.texImage2D(i,u,c,s,o,0,l,h,n);return{width:s,height:o,depth:a,type:h}}function r2(t,e,n){const r=n.target||ot;t.bindTexture(r,e);const i=n.level||0,s=n.internalFormat||n.format||H,o=Bn(s),a=n.format||o.format,u=n.type||o.type;if(Fn(t,n),r===at)for(let c=0;c<6;++c)t.texImage2D(ts+c,i,s,n.width,n.height,0,a,u,null);else r===vt||r===Ct?t.texImage3D(r,i,s,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,s,n.width,n.height,0,a,u,null)}function Hr(t,e,n){n=n||Qr,e=e||Dt.textureOptions;const r=t.createTexture(),i=e.target||ot;let s=e.width||1,o=e.height||1;const a=e.internalFormat||H;t.bindTexture(i,r),i===at&&(t.texParameteri(i,ns,es),t.texParameteri(i,rs,es));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")e2(t,r,e,n);else if(En(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||En(u[0]))){const c=t0(t,r,u,e);s=c.width,o=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||e0(u[0]))?i===at?t2(t,r,e,n):n2(t,r,e,n):($f(t,r,u,e),s=u.width,o=u.height);else r2(t,r,e);return Gr(e)&&Ia(t,r,e,s,o,a),_f(t,r,e),r}function i2(t,e,n,r,i,s){r=r||n.width,i=i||n.height,s=s||n.depth;const o=n.target||ot;t.bindTexture(o,e);const a=n.level||0,u=n.internalFormat||n.format||H,c=Bn(u),f=n.format||c.format;let l;const h=n.src;if(h&&(En(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Jf(t,h,c.type):l=n.type||c.type,o===at)for(let g=0;g<6;++g)t.texImage2D(ts+g,a,u,r,i,0,f,l,null);else o===vt||o===Ct?t.texImage3D(o,a,u,r,i,s,0,f,l,null):t.texImage2D(o,a,u,r,i,0,f,l,null)}const s2=Sf,ls=33984,o2=35048,fs=34962,a2=34963,La=35345,n0=35718,u2=35721,c2=35971,l2=35382,f2=35396,h2=35398,d2=35392,g2=35395,hs=5126,r0=35664,i0=35665,s0=35666,za=5124,o0=35667,a0=35668,u0=35669,c0=35670,l0=35671,f0=35672,h0=35673,d0=35674,g0=35675,p0=35676,p2=35678,m2=35680,A2=35679,y2=35682,x2=35685,w2=35686,b2=35687,D2=35688,v2=35689,C2=35690,M2=36289,E2=36292,S2=36293,Pa=5125,m0=36294,A0=36295,y0=36296,I2=36298,T2=36299,N2=36300,B2=36303,F2=36306,L2=36307,z2=36308,P2=36311,ds=3553,gs=34067,Oa=32879,ps=35866,I={};function x0(t,e){return I[e].bindPoint}function O2(t,e){return function(n){t.uniform1f(e,n)}}function k2(t,e){return function(n){t.uniform1fv(e,n)}}function R2(t,e){return function(n){t.uniform2fv(e,n)}}function j2(t,e){return function(n){t.uniform3fv(e,n)}}function U2(t,e){return function(n){t.uniform4fv(e,n)}}function w0(t,e){return function(n){t.uniform1i(e,n)}}function b0(t,e){return function(n){t.uniform1iv(e,n)}}function D0(t,e){return function(n){t.uniform2iv(e,n)}}function v0(t,e){return function(n){t.uniform3iv(e,n)}}function C0(t,e){return function(n){t.uniform4iv(e,n)}}function G2(t,e){return function(n){t.uniform1ui(e,n)}}function Q2(t,e){return function(n){t.uniform1uiv(e,n)}}function H2(t,e){return function(n){t.uniform2uiv(e,n)}}function Y2(t,e){return function(n){t.uniform3uiv(e,n)}}function V2(t,e){return function(n){t.uniform4uiv(e,n)}}function W2(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function X2(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function Z2(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function K2(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function J2(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function q2(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function _2(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function $2(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function ew(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function de(t,e,n,r){const i=x0(t,e);return Mn(t)?function(s){let o,a;$i(t,s)?(o=s,a=null):(o=s.texture,a=s.sampler),t.uniform1i(r,n),t.activeTexture(ls+n),t.bindTexture(i,o),t.bindSampler(n,a)}:function(s){t.uniform1i(r,n),t.activeTexture(ls+n),t.bindTexture(i,s)}}function ge(t,e,n,r,i){const s=x0(t,e),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=n+a;return Mn(t)?function(a){t.uniform1iv(r,o),a.forEach(function(u,c){t.activeTexture(ls+o[c]);let f,l;$i(t,u)?(f=u,l=null):(f=u.texture,l=u.sampler),t.bindSampler(n,l),t.bindTexture(s,f)})}:function(a){t.uniform1iv(r,o),a.forEach(function(u,c){t.activeTexture(ls+o[c]),t.bindTexture(s,u)})}}I[hs]={Type:Float32Array,size:4,setter:O2,arraySetter:k2},I[r0]={Type:Float32Array,size:8,setter:R2,cols:2},I[i0]={Type:Float32Array,size:12,setter:j2,cols:3},I[s0]={Type:Float32Array,size:16,setter:U2,cols:4},I[za]={Type:Int32Array,size:4,setter:w0,arraySetter:b0},I[o0]={Type:Int32Array,size:8,setter:D0,cols:2},I[a0]={Type:Int32Array,size:12,setter:v0,cols:3},I[u0]={Type:Int32Array,size:16,setter:C0,cols:4},I[Pa]={Type:Uint32Array,size:4,setter:G2,arraySetter:Q2},I[m0]={Type:Uint32Array,size:8,setter:H2,cols:2},I[A0]={Type:Uint32Array,size:12,setter:Y2,cols:3},I[y0]={Type:Uint32Array,size:16,setter:V2,cols:4},I[c0]={Type:Uint32Array,size:4,setter:w0,arraySetter:b0},I[l0]={Type:Uint32Array,size:8,setter:D0,cols:2},I[f0]={Type:Uint32Array,size:12,setter:v0,cols:3},I[h0]={Type:Uint32Array,size:16,setter:C0,cols:4},I[d0]={Type:Float32Array,size:32,setter:W2,rows:2,cols:2},I[g0]={Type:Float32Array,size:48,setter:X2,rows:3,cols:3},I[p0]={Type:Float32Array,size:64,setter:Z2,rows:4,cols:4},I[x2]={Type:Float32Array,size:32,setter:K2,rows:2,cols:3},I[w2]={Type:Float32Array,size:32,setter:q2,rows:2,cols:4},I[b2]={Type:Float32Array,size:48,setter:J2,rows:3,cols:2},I[D2]={Type:Float32Array,size:48,setter:$2,rows:3,cols:4},I[v2]={Type:Float32Array,size:64,setter:_2,rows:4,cols:2},I[C2]={Type:Float32Array,size:64,setter:ew,rows:4,cols:3},I[p2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:ds},I[m2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:gs},I[A2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:Oa},I[y2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:ds},I[M2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:ps},I[E2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:ps},I[S2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:gs},I[I2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:ds},I[T2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:Oa},I[N2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:gs},I[B2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:ps},I[F2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:ds},I[L2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:Oa},I[z2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:gs},I[P2]={Type:null,size:0,setter:de,arraySetter:ge,bindPoint:ps};function ms(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(fs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||hs,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Et(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(fs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||za,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function As(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(fs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Pa,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ka(t,e,n){const r=n.size,i=n.count;return function(s){t.bindBuffer(fs,s.buffer);const o=s.size||s.numComponents||r,a=o/i,u=s.type||hs,f=I[u].size*o,l=s.normalize||!1,h=s.offset||0,g=f/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,u,l,f,h+g*d),s.divisor!==void 0&&t.vertexAttribDivisor(e+d,s.divisor)}}const J={};J[hs]={size:4,setter:ms},J[r0]={size:8,setter:ms},J[i0]={size:12,setter:ms},J[s0]={size:16,setter:ms},J[za]={size:4,setter:Et},J[o0]={size:8,setter:Et},J[a0]={size:12,setter:Et},J[u0]={size:16,setter:Et},J[Pa]={size:4,setter:As},J[m0]={size:8,setter:As},J[A0]={size:12,setter:As},J[y0]={size:16,setter:As},J[c0]={size:4,setter:Et},J[l0]={size:8,setter:Et},J[f0]={size:12,setter:Et},J[h0]={size:16,setter:Et},J[d0]={size:4,setter:ka,count:2},J[g0]={size:9,setter:ka,count:3},J[p0]={size:16,setter:ka,count:4};function M0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const tw=/(\.|\[|]|\w+)/g,nw=t=>t>="0"&&t<="9";function E0(t,e,n,r){const i=t.split(tw).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const u=nw(a[0]),c=u?parseInt(a):a;if(u&&(o+=i[s++]),s===i.length){n[c]=e;break}else{const l=i[s++],h=l==="[",g=n[c]||(h?[]:{});n[c]=g,n=g,r[o]=r[o]||function(d){return function(p){B0(d,p)}}(g),o+=l}}}function rw(t,e){let n=0;function r(a,u,c){const f=u.name.endsWith("[0]"),l=u.type,h=I[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let g;if(h.bindPoint){const d=n;n+=u.size,f?g=h.arraySetter(t,l,d,c,u.size):g=h.setter(t,l,d,c,u.size)}else h.arraySetter&&f?g=h.arraySetter(t,c):g=h.setter(t,c);return g.location=c,g}const i={},s={},o=t.getProgramParameter(e,n0);for(let a=0;a<o;++a){const u=t.getActiveUniform(e,a);if(M0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const f=t.getUniformLocation(e,u.name);if(f){const l=r(e,u,f);i[c]=l,E0(c,l,s,i)}}return i}function iw(t,e){const n={},r=t.getProgramParameter(e,c2);for(let i=0;i<r;++i){const s=t.getTransformFeedbackVarying(e,i);n[s.name]={index:i,type:s.type,size:s.size}}return n}function sw(t,e){const n=t.getProgramParameter(e,n0),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(f,l){r[l][c]=f})});const s={},o=t.getProgramParameter(e,l2);for(let a=0;a<o;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,f2),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,h2),size:t.getActiveUniformBlockParameter(e,a,d2),uniformIndices:t.getActiveUniformBlockParameter(e,a,g2)};c.used=c.usedByVertexShader||c.usedByFragmentShader,s[u]=c}return{blockSpecs:s,uniformData:r}}const S0=/\[\d+\]\.$/,ow=(t,e)=>((t+(e-1))/e|0)*e;function aw(t,e,n,r){if(e||n){r=r||1;const s=t.length/4;return function(o){let a=0,u=0;for(let c=0;c<s;++c){for(let f=0;f<r;++f)t[a++]=o[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function uw(t,e,n,r){const i=n.blockSpecs,s=n.uniformData,o=i[r];if(!o)return s2("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(o.size),u=t.createBuffer(),c=o.index;t.bindBuffer(La,u),t.uniformBlockBinding(e,o.index,c);let f=r+".";S0.test(f)&&(f=f.replace(S0,"."));const l={},h={},g={};return o.uniformIndices.forEach(function(d){const p=s[d];let m=p.name;m.startsWith(f)&&(m=m.substr(f.length));const A=m.endsWith("[0]");A&&(m=m.substr(0,m.length-3));const x=I[p.type],w=x.Type,v=A?ow(x.size,16)*p.size:x.size*p.size,M=new w(a,p.offset,v/w.BYTES_PER_ELEMENT);l[m]=M;const C=aw(M,A,x.rows,x.cols);h[m]=C,E0(m,C,g,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:l,setters:h}}function I0(t,e,n){return uw(t,e.program,e.uniformBlockSpec,n)}function cw(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const s=i.index;return t.bindBufferRange(La,s,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function T0(t,e,n){cw(t,e,n)&&t.bufferData(La,n.array,o2)}function N0(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const s=e[r];i(s)}}}function B0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):B0(t[n],e[n])}}function Me(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const s=e[i];if(Array.isArray(s)){const o=s.length;for(let a=0;a<o;++a)Me(n,s[a])}else for(const o in s){const a=n[o];a&&a(s[o])}}}function lw(t,e){const n={},r=t.getProgramParameter(e,u2);for(let i=0;i<r;++i){const s=t.getActiveAttrib(e,i);if(M0(s))continue;const o=t.getAttribLocation(e,s.name),a=J[s.type],u=a.setter(t,o,a);u.location=o,n[s.name]=u}return n}function fw(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Ln(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(fw(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(a2,n.indices))}function hw(t,e){const n=rw(t,e),r=lw(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Mn(t)&&(i.uniformBlockSpec=sw(t,e),i.transformFeedbackInfo=iw(t,e)),i}const dw=4,F0=5123;function Yr(t,e,n,r,i,s){n=n===void 0?dw:n;const o=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||o?s!==void 0?t.drawElementsInstanced(n,u,a===void 0?F0:e.elementType,i,s):t.drawElements(n,u,a===void 0?F0:e.elementType,i):s!==void 0?t.drawArraysInstanced(n,i,u,s):t.drawArrays(n,i,u)}const gw=36160,en=36161,pw=3553,mw=5121,Aw=6402,yw=6408,xw=33190,ww=36012,bw=35056,Dw=36013,vw=32854,Cw=32855,Mw=36194,L0=33189,z0=6401,P0=36168,Ra=34041,Ew=36064,ys=36096,O0=36128,ja=33306,Ua=33071,Ga=9729,k0=[{format:yw,type:mw,min:Ga,wrap:Ua},{format:Ra}],Qe={};Qe[Ra]=ja,Qe[z0]=O0,Qe[P0]=O0,Qe[Aw]=ys,Qe[L0]=ys,Qe[xw]=ys,Qe[ww]=ys,Qe[bw]=ja,Qe[Dw]=ja;function Sw(t,e){return Qe[t]||Qe[e]}const St={};St[vw]=!0,St[Cw]=!0,St[Mw]=!0,St[Ra]=!0,St[L0]=!0,St[z0]=!0,St[P0]=!0;function Iw(t){return St[t]}function Tw(t,e,n,r){const i=gw,s=t.createFramebuffer();t.bindFramebuffer(i,s),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||k0;let o=0;const a={framebuffer:s,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const f=u.samples,l=u.format;let h=u.attachmentPoint||Sw(l,u.internalFormat);if(h||(h=Ew+o++),!c)if(f!==void 0||Iw(l))c=t.createRenderbuffer(),t.bindRenderbuffer(en,c),f>1?t.renderbufferStorageMultisample(en,f,l,n,r):t.renderbufferStorage(en,l,n,r);else{const g=Object.assign({},u);g.width=n,g.height=r,g.auto===void 0&&(g.auto=!1,g.min=g.min||g.minMag||Ga,g.mag=g.mag||g.minMag||Ga,g.wrapS=g.wrapS||g.wrap||Ua,g.wrapT=g.wrapT||g.wrap||Ua),c=Hr(t,g)}if(If(t,c))t.framebufferRenderbuffer(i,h,en,c);else if($i(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,h,c,u.level||0,u.layer):t.framebufferTexture2D(i,h,u.target||pw,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function Nw(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||k0,n.forEach(function(s,o){const a=e.attachments[o],u=s.format,c=s.samples;if(c!==void 0||If(t,a))t.bindRenderbuffer(en,a),c>1?t.renderbufferStorageMultisample(en,c,u,r,i):t.renderbufferStorage(en,u,r,i);else if($i(t,a))i2(t,a,s,r,i);else throw new Error("unknown attachment type")})}function Bw(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Ln(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const Fw=/^(.*?)_/;function Lw(t,e){Da(t,0);const n=t.getExtension(e);if(n){const r={},i=Fw.exec(e)[1],s="_"+i;for(const o in n){const a=n[o],u=typeof a=="function",c=u?i:s;let f=o;o.endsWith(c)&&(f=o.substring(0,o.length-c.length)),t[f]!==void 0?!u&&t[f]!==a&&Sf(f,t[f],a,o):u?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},Da(r,0)}return n}const R0=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function j0(t){for(let e=0;e<R0.length;++e)Lw(t,R0[e])}function zw(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){j0(r);break}return r}function Pw(t,e){return zw(t,e)}const Ow=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out float vHalfStrokeWidth;out vec4 vCornerRadii;
|
|
18
|
+
see: http://github.com/greggman/twgl.js for details */const xh=5120,as=5121,Ah=5122,vh=5123,Eh=5124,Ch=5125,Sh=5126,gD=32819,pD=32820,mD=33635,bD=5131,yD=33640,wD=35899,xD=35902,AD=36269,vD=34042,Am={};{const e=Am;e[xh]=Int8Array,e[as]=Uint8Array,e[Ah]=Int16Array,e[vh]=Uint16Array,e[Eh]=Int32Array,e[Ch]=Uint32Array,e[Sh]=Float32Array,e[gD]=Uint16Array,e[pD]=Uint16Array,e[mD]=Uint16Array,e[bD]=Uint16Array,e[yD]=Uint32Array,e[wD]=Uint32Array,e[xD]=Uint32Array,e[AD]=Uint32Array,e[vD]=Uint32Array}function Dh(e){if(e instanceof Int8Array)return xh;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return as;if(e instanceof Int16Array)return Ah;if(e instanceof Uint16Array)return vh;if(e instanceof Int32Array)return Eh;if(e instanceof Uint32Array)return Ch;if(e instanceof Float32Array)return Sh;throw new Error("unsupported typed array type")}function ED(e){if(e===Int8Array)return xh;if(e===Uint8Array||e===Uint8ClampedArray)return as;if(e===Int16Array)return Ah;if(e===Uint16Array)return vh;if(e===Int32Array)return Eh;if(e===Uint32Array)return Ch;if(e===Float32Array)return Sh;throw new Error("unsupported typed array type")}function CD(e){const t=Am[e];if(!t)throw new Error("unknown gl type");return t}const lf=typeof SharedArrayBuffer<"u"?function(t){return t&&t.buffer&&(t.buffer instanceof ArrayBuffer||t.buffer instanceof SharedArrayBuffer)}:function(t){return t&&t.buffer&&t.buffer instanceof ArrayBuffer};function SD(...e){console.error(...e)}function vm(...e){console.warn(...e)}function DD(e,t){return typeof WebGLBuffer<"u"&&t instanceof WebGLBuffer}function Em(e,t){return typeof WebGLRenderbuffer<"u"&&t instanceof WebGLRenderbuffer}function hf(e,t){return typeof WebGLTexture<"u"&&t instanceof WebGLTexture}function _D(e,t){return typeof WebGLSampler<"u"&&t instanceof WebGLSampler}const Cm=35044,Tn=34962,ID=34963,MD=34660,TD=5120,ND=5121,BD=5122,FD=5123,kD=5124,LD=5125,zD=5126,Sm={attribPrefix:""};function Dm(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||Cm)}function _m(e,t,n,r){if(DD(e,t))return t;n=n||Tn;const i=e.createBuffer();return Dm(e,n,i,t,r),i}function Im(e){return e==="indices"}function RD(e){return e instanceof Int8Array||e instanceof Uint8Array}function OD(e){return e===Int8Array||e===Uint8Array}function PD(e){return e.length?e:e.data}const UD=/coord|texture/i,jD=/color|colour/i;function Mm(e,t){let n;if(UD.test(e)?n=2:jD.test(e)?n=4:n=3,t%n>0)throw new Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}function GD(e,t){return e.numComponents||e.size||Mm(t,PD(e).length)}function _h(e,t){if(lf(e))return e;if(lf(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||(Im(t)?n=Uint16Array:n=Float32Array),new n(e.data)}function HD(e,t){const n={};return Object.keys(t).forEach(function(r){if(!Im(r)){const i=t[r],a=i.attrib||i.name||i.attribName||Sm.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!lf(i.value))throw new Error("array.value is not array or typedarray");n[a]={value:i.value}}else{let o,s,f,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)o=i.buffer,u=i.numComponents||i.size,s=i.type,f=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const c=i.data||i,l=i.type||Float32Array,h=c*l.BYTES_PER_ELEMENT;s=ED(l),f=i.normalize!==void 0?i.normalize:OD(l),u=i.numComponents||i.size||Mm(r,c),o=e.createBuffer(),e.bindBuffer(Tn,o),e.bufferData(Tn,h,i.drawType||Cm)}else{const c=_h(i,r);o=_m(e,c,void 0,i.drawType),s=Dh(c),f=i.normalize!==void 0?i.normalize:RD(c),u=GD(i,r)}n[a]={buffer:o,numComponents:u,type:s,normalize:f,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),e.bindBuffer(Tn,null),n}function QD(e,t,n,r){n=_h(n),r!==void 0?(e.bindBuffer(Tn,t.buffer),e.bufferSubData(Tn,r,n)):Dm(e,Tn,t.buffer,n,t.drawType)}function VD(e,t){return t===TD||t===ND?1:t===BD||t===FD?2:t===kD||t===LD||t===zD?4:0}const Ih=["position","positions","a_position"];function ZD(e,t){let n,r;for(r=0;r<Ih.length&&(n=Ih[r],!(n in t||(n=Sm.attribPrefix+n,n in t)));++r);r===Ih.length&&(n=Object.keys(t)[0]);const i=t[n];e.bindBuffer(Tn,i.buffer);const a=e.getBufferParameter(Tn,MD);e.bindBuffer(Tn,null);const o=VD(e,i.type),s=a/o,f=i.numComponents||i.size,u=s/f;if(u%1!==0)throw new Error(`numComponents ${f} not correct for length ${length}`);return u}function YD(e,t,n){const r=HD(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const a=t.indices;if(a){const o=_h(a,"indices");i.indices=_m(e,o,ID),i.numElements=o.length,i.elementType=Dh(o)}else i.numElements||(i.numElements=ZD(e,i.attribs));return i}function ga(e){return!!e.texStorage2D}const Mh=function(){const e={},t={};function n(r){const i=r.constructor.name;if(!e[i]){for(const a in r)if(typeof r[a]=="number"){const o=t[r[a]];t[r[a]]=o?`${o} | ${a}`:a}e[i]=!0}}return function(i,a){return n(i),t[a]||(typeof a=="number"?`0x${a.toString(16)}`:a)}}(),Cr={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},pa=lf,Tm=function(){let e;return function(){return e=e||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),e}}(),Nm=6406,Nn=6407,Me=6408,Bm=6409,Fm=6410,os=6402,km=34041,df=33071,qD=9728,WD=9729,Kn=3553,Jn=34067,Sr=32879,Dr=35866,gf=34069,XD=34070,KD=34071,JD=34072,$D=34073,e_=34074,Th=10241,Nh=10240,pf=10242,mf=10243,Lm=32882,t_=33082,n_=33083,r_=33084,i_=33085,Bh=3317,zm=3314,Rm=32878,Om=3316,Pm=3315,Um=32877,a_=37443,o_=37441,s_=37440,u_=33321,f_=36756,c_=33325,l_=33326,h_=33330,d_=33329,g_=33338,p_=33337,m_=33340,b_=33339,y_=33323,w_=36757,x_=33327,A_=33328,v_=33336,E_=33335,C_=33332,S_=33331,D_=33334,__=33333,I_=32849,M_=35905,T_=36194,N_=36758,B_=35898,F_=35901,k_=34843,L_=34837,z_=36221,R_=36239,O_=36215,P_=36233,U_=36209,j_=36227,G_=32856,H_=35907,Q_=36759,V_=32855,Z_=32854,Y_=32857,q_=34842,W_=34836,X_=36220,K_=36238,J_=36975,$_=36214,eI=36232,tI=36226,nI=36208,rI=33189,iI=33190,aI=36012,oI=36013,sI=35056,_r=5120,Te=5121,bf=5122,ma=5123,yf=5124,wi=5125,ct=5126,jm=32819,Gm=32820,Hm=33635,hn=5131,ss=36193,Fh=33640,uI=35899,fI=35902,cI=36269,lI=34042,wf=33319,ba=33320,xf=6403,ya=36244,wa=36248,xi=36249;let kh;function Af(e){if(!kh){const t={};t[Nm]={textureFormat:Nm,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Te,hn,ss,ct]},t[Bm]={textureFormat:Bm,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Te,hn,ss,ct]},t[Fm]={textureFormat:Fm,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Te,hn,ss,ct]},t[Nn]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Te,hn,ss,ct,Hm]},t[Me]={textureFormat:Me,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Te,hn,ss,ct,jm,Gm]},t[os]={textureFormat:os,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[wi,ma]},t[u_]={textureFormat:xf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Te]},t[f_]={textureFormat:xf,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[_r]},t[c_]={textureFormat:xf,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[ct,hn]},t[l_]={textureFormat:xf,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[ct]},t[h_]={textureFormat:ya,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Te]},t[d_]={textureFormat:ya,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[_r]},t[C_]={textureFormat:ya,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ma]},t[S_]={textureFormat:ya,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[bf]},t[D_]={textureFormat:ya,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[wi]},t[__]={textureFormat:ya,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[yf]},t[y_]={textureFormat:wf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Te]},t[w_]={textureFormat:wf,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[_r]},t[x_]={textureFormat:wf,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[ct,hn]},t[A_]={textureFormat:wf,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[ct]},t[v_]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Te]},t[E_]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[_r]},t[g_]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ma]},t[p_]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[bf]},t[m_]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[wi]},t[b_]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[yf]},t[I_]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Te]},t[M_]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Te]},t[T_]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Te,Hm]},t[N_]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[_r]},t[B_]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[ct,hn,uI]},t[F_]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[ct,hn,fI]},t[k_]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[ct,hn]},t[L_]={textureFormat:Nn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ct]},t[z_]={textureFormat:wa,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Te]},t[R_]={textureFormat:wa,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[_r]},t[O_]={textureFormat:wa,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ma]},t[P_]={textureFormat:wa,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[bf]},t[U_]={textureFormat:wa,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[wi]},t[j_]={textureFormat:wa,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[yf]},t[G_]={textureFormat:Me,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Te]},t[H_]={textureFormat:Me,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Te]},t[Q_]={textureFormat:Me,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[_r]},t[V_]={textureFormat:Me,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Te,Gm,Fh]},t[Z_]={textureFormat:Me,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Te,jm]},t[Y_]={textureFormat:Me,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Fh]},t[q_]={textureFormat:Me,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[ct,hn]},t[W_]={textureFormat:Me,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[ct]},t[X_]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Te]},t[K_]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[_r]},t[J_]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Fh]},t[$_]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ma]},t[eI]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[bf]},t[tI]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[yf]},t[nI]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[wi]},t[rI]={textureFormat:os,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[ma,wi]},t[iI]={textureFormat:os,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[wi]},t[aI]={textureFormat:os,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ct]},t[sI]={textureFormat:km,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[lI]},t[oI]={textureFormat:km,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[cI]},Object.keys(t).forEach(function(n){const r=t[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,a){const o=r.type[a];r.bytesPerElementMap[o]=i})}),kh=t}return kh[e]}function hI(e,t){const n=Af(e);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[t];if(r===void 0)throw"unknown internal format";return r}function xa(e){const t=Af(e);if(!t)throw"unknown internal format";return{format:t.textureFormat,type:t.type[0]}}function Qm(e){return(e&e-1)===0}function dI(e,t,n,r){if(!ga(e))return Qm(t)&&Qm(n);const i=Af(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function gI(e){const t=Af(e);if(!t)throw"unknown internal format";return t.textureFilterable}function Vm(e,t,n){return pa(t)?Dh(t):n||Te}function vf(e,t,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const a=Math.sqrt(i/(t===Jn?6:1));a%1===0?(n=a,r=a):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Aa(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(a_,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(o_,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei(s_,t.flipY)}function Zm(e){e.pixelStorei(Bh,4),ga(e)&&(e.pixelStorei(zm,0),e.pixelStorei(Rm,0),e.pixelStorei(Om,0),e.pixelStorei(Pm,0),e.pixelStorei(Um,0))}function pI(e,t,n,r){r.minMag&&(n.call(e,t,Th,r.minMag),n.call(e,t,Nh,r.minMag)),r.min&&n.call(e,t,Th,r.min),r.mag&&n.call(e,t,Nh,r.mag),r.wrap&&(n.call(e,t,pf,r.wrap),n.call(e,t,mf,r.wrap),(t===Sr||_D(e,t))&&n.call(e,t,Lm,r.wrap)),r.wrapR&&n.call(e,t,Lm,r.wrapR),r.wrapS&&n.call(e,t,pf,r.wrapS),r.wrapT&&n.call(e,t,mf,r.wrapT),r.minLod&&n.call(e,t,t_,r.minLod),r.maxLod&&n.call(e,t,n_,r.maxLod),r.baseLevel&&n.call(e,t,r_,r.baseLevel),r.maxLevel&&n.call(e,t,i_,r.maxLevel)}function Ym(e,t,n){const r=n.target||Kn;e.bindTexture(r,t),pI(e,r,e.texParameteri,n)}function mI(e){return e=e||Cr.textureColor,pa(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function Lh(e,t,n,r,i,a){n=n||Cr.textureOptions,a=a||Me;const o=n.target||Kn;if(r=r||n.width,i=i||n.height,e.bindTexture(o,t),dI(e,r,i,a))e.generateMipmap(o);else{const s=gI(a)?WD:qD;e.texParameteri(o,Th,s),e.texParameteri(o,Nh,s),e.texParameteri(o,pf,df),e.texParameteri(o,mf,df)}}function us(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function zh(e,t){return t=t||{},t.cubeFaceOrder||[gf,XD,KD,JD,$D,e_]}function Rh(e,t){const r=zh(e,t).map(function(i,a){return{face:i,ndx:a}});return r.sort(function(i,a){return i.face-a.face}),r}function qm(e,t,n,r){r=r||Cr.textureOptions;const i=r.target||Kn,a=r.level||0;let o=n.width,s=n.height;const f=r.internalFormat||r.format||Me,u=xa(f),c=r.format||u.format,l=r.type||u.type;if(Aa(e,r),e.bindTexture(i,t),i===Jn){const h=n.width,d=n.height;let p,b;if(h/6===d)p=d,b=[0,0,1,0,2,0,3,0,4,0,5,0];else if(d/6===h)p=h,b=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===d/2)p=h/3,b=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===d/3)p=h/2,b=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const x=Tm();x?(x.canvas.width=p,x.canvas.height=p,o=p,s=p,Rh(e,r).forEach(function(A){const D=b[A.ndx*2+0]*p,I=b[A.ndx*2+1]*p;x.drawImage(n,D,I,p,p,0,0,p,p),e.texImage2D(A.face,a,f,c,l,x.canvas)}),x.canvas.width=1,x.canvas.height=1):typeof createImageBitmap<"u"&&(o=p,s=p,Rh(e,r).forEach(function(A){const D=b[A.ndx*2+0]*p,I=b[A.ndx*2+1]*p;e.texImage2D(A.face,a,f,p,p,0,c,l,null),createImageBitmap(n,D,I,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Aa(e,r),e.bindTexture(i,t),e.texImage2D(A.face,a,f,c,l,C),us(r)&&Lh(e,t,r,o,s,f)})}))}else if(i===Sr||i===Dr){const h=Math.min(n.width,n.height),d=Math.max(n.width,n.height),p=d/h;if(p%1!==0)throw"can not compute 3D dimensions of element";const b=n.width===d?1:0,x=n.height===d?1:0;e.pixelStorei(Bh,1),e.pixelStorei(zm,n.width),e.pixelStorei(Rm,0),e.pixelStorei(Um,0),e.texImage3D(i,a,f,h,h,h,0,c,l,null);for(let A=0;A<p;++A){const D=A*h*b,I=A*h*x;e.pixelStorei(Om,D),e.pixelStorei(Pm,I),e.texSubImage3D(i,a,0,0,A,h,h,1,c,l,n)}Zm(e)}else e.texImage2D(i,a,f,c,l,n);us(r)&&Lh(e,t,r,o,s,f),Ym(e,t,r)}function fs(){}function bI(e){if(typeof document<"u"){const t=document.createElement("a");return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{const t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}function yI(e,t){return t===void 0&&!bI(e)?"anonymous":t}function wI(e,t,n){n=n||fs;let r;if(t=t!==void 0?t:Cr.crossOrigin,t=yI(e,t),typeof Image<"u"){r=new Image,t!==void 0&&(r.crossOrigin=t);const i=function(){r.removeEventListener("error",a),r.removeEventListener("load",o),r=null},a=function(){const f="couldn't load image: "+e;SD(f),n(f,r),i()},o=function(){n(null,r),i()};return r.addEventListener("error",a),r.addEventListener("load",o),r.src=e,r}else if(typeof ImageBitmap<"u"){let i,a;const o=function(){n(i,a)},s={};t&&(s.mode="cors"),fetch(e,s).then(function(f){if(!f.ok)throw f;return f.blob()}).then(function(f){return createImageBitmap(f,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(f){a=f,setTimeout(o)}).catch(function(f){i=f,setTimeout(o)}),r=null}return r}function Wm(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof ImageData<"u"&&e instanceof ImageData||typeof HTMLElement<"u"&&e instanceof HTMLElement}function Oh(e,t,n){return Wm(e)?(setTimeout(function(){n(null,e)}),e):wI(e,t,n)}function Ph(e,t,n){n=n||Cr.textureOptions;const r=n.target||Kn;if(e.bindTexture(r,t),n.color===!1)return;const i=mI(n.color);if(r===Jn)for(let a=0;a<6;++a)e.texImage2D(gf+a,0,Me,1,1,0,Me,Te,i);else r===Sr||r===Dr?e.texImage3D(r,0,Me,1,1,1,0,Me,Te,i):e.texImage2D(r,0,Me,1,1,0,Me,Te,i)}function xI(e,t,n,r){return r=r||fs,n=n||Cr.textureOptions,Ph(e,t,n),n=Object.assign({},n),Oh(n.src,n.crossOrigin,function(a,o){a?r(a,t,o):(qm(e,t,o,n),r(null,t,o))})}function AI(e,t,n,r){r=r||fs;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const a=n.level||0,o=n.internalFormat||n.format||Me,s=xa(o),f=n.format||s.format,u=n.type||Te,c=n.target||Kn;if(c!==Jn)throw"target must be TEXTURE_CUBE_MAP";Ph(e,t,n),n=Object.assign({},n);let l=6;const h=[],d=zh(e,n);let p;function b(x){return function(A,D){--l,A?h.push(A):D.width!==D.height?h.push("cubemap face img is not a square: "+D.src):(Aa(e,n),e.bindTexture(c,t),l===5?zh().forEach(function(I){e.texImage2D(I,a,o,f,u,D)}):e.texImage2D(x,a,o,f,u,D),us(n)&&e.generateMipmap(c)),l===0&&r(h.length?h:void 0,t,p)}}p=i.map(function(x,A){return Oh(x,n.crossOrigin,b(d[A]))})}function vI(e,t,n,r){r=r||fs;const i=n.src,a=n.internalFormat||n.format||Me,o=xa(a),s=n.format||o.format,f=n.type||Te,u=n.target||Dr;if(u!==Sr&&u!==Dr)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Ph(e,t,n),n=Object.assign({},n);let c=i.length;const l=[];let h;const d=n.level||0;let p=n.width,b=n.height;const x=i.length;let A=!0;function D(I){return function(C,T){if(--c,C)l.push(C);else{if(Aa(e,n),e.bindTexture(u,t),A){A=!1,p=n.width||T.width,b=n.height||T.height,e.texImage3D(u,d,a,p,b,x,0,s,f,null);for(let B=0;B<x;++B)e.texSubImage3D(u,d,0,0,B,p,b,1,s,f,T)}else{let B=T,S;(T.width!==p||T.height!==b)&&(S=Tm(),B=S.canvas,S.canvas.width=p,S.canvas.height=b,S.drawImage(T,0,0,p,b)),e.texSubImage3D(u,d,0,0,I,p,b,1,s,f,B),S&&B===S.canvas&&(S.canvas.width=0,S.canvas.height=0)}us(n)&&e.generateMipmap(u)}c===0&&r(l.length?l:void 0,t,h)}}h=i.map(function(I,C){return Oh(I,n.crossOrigin,D(C))})}function Xm(e,t,n,r){r=r||Cr.textureOptions;const i=r.target||Kn;e.bindTexture(i,t);let a=r.width,o=r.height,s=r.depth;const f=r.level||0,u=r.internalFormat||r.format||Me,c=xa(u),l=r.format||c.format,h=r.type||Vm(e,n,c.type);if(pa(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const x=CD(h);n=new x(n)}const d=hI(u,h),p=n.byteLength/d;if(p%1)throw"length wrong size for format: "+Mh(e,l);let b;if(i===Sr||i===Dr)if(!a&&!o&&!s){const x=Math.cbrt(p);if(x%1!==0)throw"can't guess cube size of array of numElements: "+p;a=x,o=x,s=x}else a&&(!o||!s)?(b=vf(e,i,o,s,p/a),o=b.width,s=b.height):o&&(!a||!s)?(b=vf(e,i,a,s,p/o),a=b.width,s=b.height):(b=vf(e,i,a,o,p/s),a=b.width,o=b.height);else b=vf(e,i,a,o,p),a=b.width,o=b.height;if(Zm(e),e.pixelStorei(Bh,r.unpackAlignment||1),Aa(e,r),i===Jn){const x=d/n.BYTES_PER_ELEMENT,A=p/6*x;Rh(e,r).forEach(D=>{const I=A*D.ndx,C=n.subarray(I,I+A);e.texImage2D(D.face,f,u,a,o,0,l,h,C)})}else i===Sr||i===Dr?e.texImage3D(i,f,u,a,o,s,0,l,h,n):e.texImage2D(i,f,u,a,o,0,l,h,n);return{width:a,height:o,depth:s,type:h}}function EI(e,t,n){const r=n.target||Kn;e.bindTexture(r,t);const i=n.level||0,a=n.internalFormat||n.format||Me,o=xa(a),s=n.format||o.format,f=n.type||o.type;if(Aa(e,n),r===Jn)for(let u=0;u<6;++u)e.texImage2D(gf+u,i,a,n.width,n.height,0,s,f,null);else r===Sr||r===Dr?e.texImage3D(r,i,a,n.width,n.height,n.depth,0,s,f,null):e.texImage2D(r,i,a,n.width,n.height,0,s,f,null)}function cs(e,t,n){n=n||fs,t=t||Cr.textureOptions;const r=e.createTexture(),i=t.target||Kn;let a=t.width||1,o=t.height||1;const s=t.internalFormat||Me;e.bindTexture(i,r),i===Jn&&(e.texParameteri(i,pf,df),e.texParameteri(i,mf,df));let f=t.src;if(f)if(typeof f=="function"&&(f=f(e,t)),typeof f=="string")xI(e,r,t,n);else if(pa(f)||Array.isArray(f)&&(typeof f[0]=="number"||Array.isArray(f[0])||pa(f[0]))){const u=Xm(e,r,f,t);a=u.width,o=u.height}else Array.isArray(f)&&(typeof f[0]=="string"||Wm(f[0]))?i===Jn?AI(e,r,t,n):vI(e,r,t,n):(qm(e,r,f,t),a=f.width,o=f.height);else EI(e,r,t);return us(t)&&Lh(e,r,t,a,o,s),Ym(e,r,t),r}function CI(e,t,n,r,i,a){r=r||n.width,i=i||n.height,a=a||n.depth;const o=n.target||Kn;e.bindTexture(o,t);const s=n.level||0,f=n.internalFormat||n.format||Me,u=xa(f),c=n.format||u.format;let l;const h=n.src;if(h&&(pa(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Vm(e,h,u.type):l=n.type||u.type,o===Jn)for(let d=0;d<6;++d)e.texImage2D(gf+d,s,f,r,i,0,c,l,null);else o===Sr||o===Dr?e.texImage3D(o,s,f,r,i,a,0,c,l,null):e.texImage2D(o,s,f,r,i,0,c,l,null)}const SI=vm,Ef=33984,DI=35048,Cf=34962,_I=34963,Uh=35345,Km=35718,II=35721,MI=35971,TI=35382,NI=35396,BI=35398,FI=35392,kI=35395,Sf=5126,Jm=35664,$m=35665,eb=35666,jh=5124,tb=35667,nb=35668,rb=35669,ib=35670,ab=35671,ob=35672,sb=35673,ub=35674,fb=35675,cb=35676,LI=35678,zI=35680,RI=35679,OI=35682,PI=35685,UI=35686,jI=35687,GI=35688,HI=35689,QI=35690,VI=36289,ZI=36292,YI=36293,Gh=5125,lb=36294,hb=36295,db=36296,qI=36298,WI=36299,XI=36300,KI=36303,JI=36306,$I=36307,e8=36308,t8=36311,Df=3553,_f=34067,Hh=32879,If=35866,J={};function gb(e,t){return J[t].bindPoint}function n8(e,t){return function(n){e.uniform1f(t,n)}}function r8(e,t){return function(n){e.uniform1fv(t,n)}}function i8(e,t){return function(n){e.uniform2fv(t,n)}}function a8(e,t){return function(n){e.uniform3fv(t,n)}}function o8(e,t){return function(n){e.uniform4fv(t,n)}}function pb(e,t){return function(n){e.uniform1i(t,n)}}function mb(e,t){return function(n){e.uniform1iv(t,n)}}function bb(e,t){return function(n){e.uniform2iv(t,n)}}function yb(e,t){return function(n){e.uniform3iv(t,n)}}function wb(e,t){return function(n){e.uniform4iv(t,n)}}function s8(e,t){return function(n){e.uniform1ui(t,n)}}function u8(e,t){return function(n){e.uniform1uiv(t,n)}}function f8(e,t){return function(n){e.uniform2uiv(t,n)}}function c8(e,t){return function(n){e.uniform3uiv(t,n)}}function l8(e,t){return function(n){e.uniform4uiv(t,n)}}function h8(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function d8(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function g8(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function p8(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function m8(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function b8(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function y8(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function w8(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function x8(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function gt(e,t,n,r){const i=gb(e,t);return ga(e)?function(a){let o,s;hf(e,a)?(o=a,s=null):(o=a.texture,s=a.sampler),e.uniform1i(r,n),e.activeTexture(Ef+n),e.bindTexture(i,o),e.bindSampler(n,s)}:function(a){e.uniform1i(r,n),e.activeTexture(Ef+n),e.bindTexture(i,a)}}function pt(e,t,n,r,i){const a=gb(e,t),o=new Int32Array(i);for(let s=0;s<i;++s)o[s]=n+s;return ga(e)?function(s){e.uniform1iv(r,o),s.forEach(function(f,u){e.activeTexture(Ef+o[u]);let c,l;hf(e,f)?(c=f,l=null):(c=f.texture,l=f.sampler),e.bindSampler(n,l),e.bindTexture(a,c)})}:function(s){e.uniform1iv(r,o),s.forEach(function(f,u){e.activeTexture(Ef+o[u]),e.bindTexture(a,f)})}}J[Sf]={Type:Float32Array,size:4,setter:n8,arraySetter:r8},J[Jm]={Type:Float32Array,size:8,setter:i8,cols:2},J[$m]={Type:Float32Array,size:12,setter:a8,cols:3},J[eb]={Type:Float32Array,size:16,setter:o8,cols:4},J[jh]={Type:Int32Array,size:4,setter:pb,arraySetter:mb},J[tb]={Type:Int32Array,size:8,setter:bb,cols:2},J[nb]={Type:Int32Array,size:12,setter:yb,cols:3},J[rb]={Type:Int32Array,size:16,setter:wb,cols:4},J[Gh]={Type:Uint32Array,size:4,setter:s8,arraySetter:u8},J[lb]={Type:Uint32Array,size:8,setter:f8,cols:2},J[hb]={Type:Uint32Array,size:12,setter:c8,cols:3},J[db]={Type:Uint32Array,size:16,setter:l8,cols:4},J[ib]={Type:Uint32Array,size:4,setter:pb,arraySetter:mb},J[ab]={Type:Uint32Array,size:8,setter:bb,cols:2},J[ob]={Type:Uint32Array,size:12,setter:yb,cols:3},J[sb]={Type:Uint32Array,size:16,setter:wb,cols:4},J[ub]={Type:Float32Array,size:32,setter:h8,rows:2,cols:2},J[fb]={Type:Float32Array,size:48,setter:d8,rows:3,cols:3},J[cb]={Type:Float32Array,size:64,setter:g8,rows:4,cols:4},J[PI]={Type:Float32Array,size:32,setter:p8,rows:2,cols:3},J[UI]={Type:Float32Array,size:32,setter:b8,rows:2,cols:4},J[jI]={Type:Float32Array,size:48,setter:m8,rows:3,cols:2},J[GI]={Type:Float32Array,size:48,setter:w8,rows:3,cols:4},J[HI]={Type:Float32Array,size:64,setter:y8,rows:4,cols:2},J[QI]={Type:Float32Array,size:64,setter:x8,rows:4,cols:3},J[LI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:Df},J[zI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:_f},J[RI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:Hh},J[OI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:Df},J[VI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:If},J[ZI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:If},J[YI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:_f},J[qI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:Df},J[WI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:Hh},J[XI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:_f},J[KI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:If},J[JI]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:Df},J[$I]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:Hh},J[e8]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:_f},J[t8]={Type:null,size:0,setter:gt,arraySetter:pt,bindPoint:If};function Mf(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else e.bindBuffer(Cf,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||Sf,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function Ir(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4iv(t,n.value);else throw new Error("The length of an integer constant value must be 4!");else e.bindBuffer(Cf,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||jh,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function Tf(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4uiv(t,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else e.bindBuffer(Cf,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||Gh,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function Qh(e,t,n){const r=n.size,i=n.count;return function(a){e.bindBuffer(Cf,a.buffer);const o=a.size||a.numComponents||r,s=o/i,f=a.type||Sf,c=J[f].size*o,l=a.normalize||!1,h=a.offset||0,d=c/i;for(let p=0;p<i;++p)e.enableVertexAttribArray(t+p),e.vertexAttribPointer(t+p,s,f,l,c,h+d*p),a.divisor!==void 0&&e.vertexAttribDivisor(t+p,a.divisor)}}const je={};je[Sf]={size:4,setter:Mf},je[Jm]={size:8,setter:Mf},je[$m]={size:12,setter:Mf},je[eb]={size:16,setter:Mf},je[jh]={size:4,setter:Ir},je[tb]={size:8,setter:Ir},je[nb]={size:12,setter:Ir},je[rb]={size:16,setter:Ir},je[Gh]={size:4,setter:Tf},je[lb]={size:8,setter:Tf},je[hb]={size:12,setter:Tf},je[db]={size:16,setter:Tf},je[ib]={size:4,setter:Ir},je[ab]={size:8,setter:Ir},je[ob]={size:12,setter:Ir},je[sb]={size:16,setter:Ir},je[ub]={size:4,setter:Qh,count:2},je[fb]={size:9,setter:Qh,count:3},je[cb]={size:16,setter:Qh,count:4};function xb(e){const t=e.name;return t.startsWith("gl_")||t.startsWith("webgl_")}const A8=/(\.|\[|]|\w+)/g,v8=e=>e>="0"&&e<="9";function Ab(e,t,n,r){const i=e.split(A8).filter(s=>s!=="");let a=0,o="";for(;;){const s=i[a++];o+=s;const f=v8(s[0]),u=f?parseInt(s):s;if(f&&(o+=i[a++]),a===i.length){n[u]=t;break}else{const l=i[a++],h=l==="[",d=n[u]||(h?[]:{});n[u]=d,n=d,r[o]=r[o]||function(p){return function(b){Db(p,b)}}(d),o+=l}}}function E8(e,t){let n=0;function r(s,f,u){const c=f.name.endsWith("[0]"),l=f.type,h=J[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let d;if(h.bindPoint){const p=n;n+=f.size,c?d=h.arraySetter(e,l,p,u,f.size):d=h.setter(e,l,p,u,f.size)}else h.arraySetter&&c?d=h.arraySetter(e,u):d=h.setter(e,u);return d.location=u,d}const i={},a={},o=e.getProgramParameter(t,Km);for(let s=0;s<o;++s){const f=e.getActiveUniform(t,s);if(xb(f))continue;let u=f.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const c=e.getUniformLocation(t,f.name);if(c){const l=r(t,f,c);i[u]=l,Ab(u,l,a,i)}}return i}function C8(e,t){const n={},r=e.getProgramParameter(t,MI);for(let i=0;i<r;++i){const a=e.getTransformFeedbackVarying(t,i);n[a.name]={index:i,type:a.type,size:a.size}}return n}function S8(e,t){const n=e.getProgramParameter(t,Km),r=[],i=[];for(let s=0;s<n;++s){i.push(s),r.push({});const f=e.getActiveUniform(t,s);r[s].name=f.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(s){const f=s[0],u=s[1];e.getActiveUniforms(t,i,e[f]).forEach(function(c,l){r[l][u]=c})});const a={},o=e.getProgramParameter(t,TI);for(let s=0;s<o;++s){const f=e.getActiveUniformBlockName(t,s),u={index:e.getUniformBlockIndex(t,f),usedByVertexShader:e.getActiveUniformBlockParameter(t,s,NI),usedByFragmentShader:e.getActiveUniformBlockParameter(t,s,BI),size:e.getActiveUniformBlockParameter(t,s,FI),uniformIndices:e.getActiveUniformBlockParameter(t,s,kI)};u.used=u.usedByVertexShader||u.usedByFragmentShader,a[f]=u}return{blockSpecs:a,uniformData:r}}const vb=/\[\d+\]\.$/,D8=(e,t)=>((e+(t-1))/t|0)*t;function _8(e,t,n,r){if(t||n){r=r||1;const a=e.length/4;return function(o){let s=0,f=0;for(let u=0;u<a;++u){for(let c=0;c<r;++c)e[s++]=o[f++];s+=4-r}}}else return function(i){i.length?e.set(i):e[0]=i}}function I8(e,t,n,r){const i=n.blockSpecs,a=n.uniformData,o=i[r];if(!o)return SI("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(o.size),f=e.createBuffer(),u=o.index;e.bindBuffer(Uh,f),e.uniformBlockBinding(t,o.index,u);let c=r+".";vb.test(c)&&(c=c.replace(vb,"."));const l={},h={},d={};return o.uniformIndices.forEach(function(p){const b=a[p];let x=b.name;x.startsWith(c)&&(x=x.substr(c.length));const A=x.endsWith("[0]");A&&(x=x.substr(0,x.length-3));const D=J[b.type],I=D.Type,C=A?D8(D.size,16)*b.size:D.size*b.size,T=new I(s,b.offset,C/I.BYTES_PER_ELEMENT);l[x]=T;const B=_8(T,A,D.rows,D.cols);h[x]=B,Ab(x,B,d,h)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:f,uniforms:l,setters:h}}function Eb(e,t,n){return I8(e,t.program,t.uniformBlockSpec,n)}function M8(e,t,n){const i=(t.uniformBlockSpec||t).blockSpecs[n.name];if(i){const a=i.index;return e.bindBufferRange(Uh,a,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Cb(e,t,n){M8(e,t,n)&&e.bufferData(Uh,n.array,DI)}function Sb(e,t){const n=e.setters;for(const r in t){const i=n[r];if(i){const a=t[r];i(a)}}}function Db(e,t){for(const n in t){const r=e[n];typeof r=="function"?r(t[n]):Db(e[n],t[n])}}function Ft(e,...t){const n=e.uniformSetters||e,r=t.length;for(let i=0;i<r;++i){const a=t[i];if(Array.isArray(a)){const o=a.length;for(let s=0;s<o;++s)Ft(n,a[s])}else for(const o in a){const s=n[o];s&&s(a[o])}}}function T8(e,t){const n={},r=e.getProgramParameter(t,II);for(let i=0;i<r;++i){const a=e.getActiveAttrib(t,i);if(xb(a))continue;const o=e.getAttribLocation(t,a.name),s=je[a.type],f=s.setter(e,o,s);f.location=o,n[a.name]=f}return n}function N8(e,t){for(const n in t){const r=e[n];r&&r(t[n])}}function va(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(N8(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(_I,n.indices))}function B8(e,t){const n=E8(e,t),r=T8(e,t),i={program:t,uniformSetters:n,attribSetters:r};return ga(e)&&(i.uniformBlockSpec=S8(e,t),i.transformFeedbackInfo=C8(e,t)),i}const F8=4,_b=5123;function ls(e,t,n,r,i,a){n=n===void 0?F8:n;const o=t.indices,s=t.elementType,f=r===void 0?t.numElements:r;i=i===void 0?0:i,s||o?a!==void 0?e.drawElementsInstanced(n,f,s===void 0?_b:t.elementType,i,a):e.drawElements(n,f,s===void 0?_b:t.elementType,i):a!==void 0?e.drawArraysInstanced(n,i,f,a):e.drawArrays(n,i,f)}const k8=36160,Ai=36161,L8=3553,z8=5121,R8=6402,O8=6408,P8=33190,U8=36012,j8=35056,G8=36013,H8=32854,Q8=32855,V8=36194,Ib=33189,Mb=6401,Tb=36168,Vh=34041,Z8=36064,Nf=36096,Nb=36128,Zh=33306,Yh=33071,qh=9729,Bb=[{format:O8,type:z8,min:qh,wrap:Yh},{format:Vh}],dn={};dn[Vh]=Zh,dn[Mb]=Nb,dn[Tb]=Nb,dn[R8]=Nf,dn[Ib]=Nf,dn[P8]=Nf,dn[U8]=Nf,dn[j8]=Zh,dn[G8]=Zh;function Y8(e,t){return dn[e]||dn[t]}const Mr={};Mr[H8]=!0,Mr[Q8]=!0,Mr[V8]=!0,Mr[Vh]=!0,Mr[Ib]=!0,Mr[Mb]=!0,Mr[Tb]=!0;function q8(e){return Mr[e]}function W8(e,t,n,r){const i=k8,a=e.createFramebuffer();e.bindFramebuffer(i,a),n=n||e.drawingBufferWidth,r=r||e.drawingBufferHeight,t=t||Bb;let o=0;const s={framebuffer:a,attachments:[],width:n,height:r};return t.forEach(function(f){let u=f.attachment;const c=f.samples,l=f.format;let h=f.attachmentPoint||Y8(l,f.internalFormat);if(h||(h=Z8+o++),!u)if(c!==void 0||q8(l))u=e.createRenderbuffer(),e.bindRenderbuffer(Ai,u),c>1?e.renderbufferStorageMultisample(Ai,c,l,n,r):e.renderbufferStorage(Ai,l,n,r);else{const d=Object.assign({},f);d.width=n,d.height=r,d.auto===void 0&&(d.auto=!1,d.min=d.min||d.minMag||qh,d.mag=d.mag||d.minMag||qh,d.wrapS=d.wrapS||d.wrap||Yh,d.wrapT=d.wrapT||d.wrap||Yh),u=cs(e,d)}if(Em(e,u))e.framebufferRenderbuffer(i,h,Ai,u);else if(hf(e,u))f.layer!==void 0?e.framebufferTextureLayer(i,h,u,f.level||0,f.layer):e.framebufferTexture2D(i,h,f.target||L8,u,f.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function X8(e,t,n,r,i){r=r||e.drawingBufferWidth,i=i||e.drawingBufferHeight,t.width=r,t.height=i,n=n||Bb,n.forEach(function(a,o){const s=t.attachments[o],f=a.format,u=a.samples;if(u!==void 0||Em(e,s))e.bindRenderbuffer(Ai,s),u>1?e.renderbufferStorageMultisample(Ai,u,f,r,i):e.renderbufferStorage(Ai,f,r,i);else if(hf(e,s))CI(e,s,a,r,i);else throw new Error("unknown attachment type")})}function K8(e,t,n){const r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(i){va(e,i,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const J8=/^(.*?)_/;function $8(e,t){Mh(e,0);const n=e.getExtension(t);if(n){const r={},i=J8.exec(t)[1],a="_"+i;for(const o in n){const s=n[o],f=typeof s=="function",u=f?i:a;let c=o;o.endsWith(u)&&(c=o.substring(0,o.length-u.length)),e[c]!==void 0?!f&&e[c]!==s&&vm(c,e[c],s,o):f?e[c]=function(l){return function(){return l.apply(n,arguments)}}(s):(e[c]=s,r[c]=s)}r.constructor={name:n.constructor.name},Mh(r,0)}return n}const Fb=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function kb(e){for(let t=0;t<Fb.length;++t)$8(e,Fb[t])}function eM(e,t){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=e.getContext(n[i],t),r){kb(r);break}return r}function tM(e,t){return eM(e,t)}const nM=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out float vHalfStrokeWidth;out vec4 vCornerRadii;
|
|
19
19
|
#if defined(ROUNDED_CORNERS) || defined(STROKED)
|
|
20
20
|
out vec2 vPosInPixels;
|
|
21
21
|
#endif
|
|
@@ -23,7 +23,7 @@ out vec2 vHalfSizeInPixels;/***Clamps the minimumSize and returns an opacity tha
|
|
|
23
23
|
#if defined(ROUNDED_CORNERS) || defined(STROKED)
|
|
24
24
|
float aaPadding=1.0/uDevicePixelRatio;float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(uCornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
|
|
25
25
|
#endif
|
|
26
|
-
gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,
|
|
26
|
+
gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,rM=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
|
|
27
27
|
in vec2 vPosInPixels;
|
|
28
28
|
#endif
|
|
29
29
|
in vec2 vHalfSizeInPixels;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in float vHalfStrokeWidth;in vec4 vCornerRadii;out lowp vec4 fragColor;float sdRoundedBox(vec2 p,vec2 b,vec4 r){r.xy=p.x>0.0 ? r.xy : r.zw;r.x=p.y>0.0 ? r.x : r.y;vec2 q=abs(p)-b+r.x;return min(max(q.x,q.y),0.0)+length(max(q,0.0))-r.x;}float sdSharpBox(vec2 p,vec2 b){vec2 q=abs(p)-b;return max(q.x,q.y);}void main(void){
|
|
@@ -37,29 +37,29 @@ fragColor=distanceToColor(d,vFillColor,vStrokeColor,vHalfStrokeWidth);if(fragCol
|
|
|
37
37
|
#else
|
|
38
38
|
fragColor=vFillColor;
|
|
39
39
|
#endif
|
|
40
|
-
if(uPickingEnabled){fragColor=vPickingColor;}}`,
|
|
41
|
-
#define ${
|
|
42
|
-
${n.type} ${
|
|
40
|
+
if(uPickingEnabled){fragColor=vPickingColor;}}`,Wh="attr_",Lb="uDomain_",iM="range_",zb="scale_",Rb="getScaled_",Xh="uRangeTexture_",Ob=3402823466e29;function aM(e){const t=e.match(/^(?:(\w+)-)?(\w+)$/);if(!t)throw new Error("Not a scale type: "+e);return{family:t[1]||"continuous",transform:t[2]}}function oM(e,t){let n;if(cf(e))n=vi(xm(e)(t));else if(ze(t))if(yi(e))n=uM(t);else throw new Error(`String values are not supported on the "${e}" channel: ${t}`);else if(xu(t))n=vi(t?1:0);else if(t===null)if(yi(e))n=vi([0,0,0]);else throw new Error(`null value is not supported on the "${e}" chanel.`);else n=vi(t);return`
|
|
41
|
+
#define ${e}_DEFINED
|
|
42
|
+
${n.type} ${Rb}${e}() {
|
|
43
43
|
// Constant value
|
|
44
44
|
return ${n};
|
|
45
|
-
}`}function
|
|
46
|
-
${
|
|
47
|
-
${
|
|
45
|
+
}`}function sM(e,t,n){if(ln(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=da(e),i=Wh+e,a=Lb+r,o=iM+r,s=Bf(t.type),f=s?"vec2":"float",u=t.domain?t.domain().length:void 0;let c;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${e}`),l.push(""),l.push(`#define ${e}_DEFINED`);const{transform:h}=aM(t.type),d=(S,...z)=>fM.apply(null,[S,"value",...z]);let p;switch(h){case"linear":p=d("scaleLinear","domain",o);break;case"log":p=d("scaleLog","domain",o,t.base());break;case"symlog":p=d("scaleSymlog","domain",o,t.constant());break;case"pow":case"sqrt":p=d("scalePow","domain",o,t.exponent());break;case"index":case"locus":p=d("scaleBandHp","domain",o,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case"point":case"band":p=d("scaleBand","domain",o,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case"ordinal":case"null":case"identity":p=d("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${t.type}! ${e}: ${JSON.stringify(n)}`)}const b=tf(t.type)||Bt(t.type)&&yi(e)?[0,1]:t.range?t.range():void 0;if(b&&e==r&&b.length&&b.every(vt)){const S=Pb(b);l.push(`const ${S.type} ${o} = ${S};`)}const x=yi(e)?"vec3":"float";let A;if(yi(e)){const S=Xh+r;if(e==r&&l.push(`uniform sampler2D ${S};`),Bt(t.type))A=`getInterpolatedColor(${S}, transformed)`;else if(gi(t.type)||la(t.type))A=`getDiscreteColor(${S}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(t.type==="ordinal"||la(t.type)){const S=Xh+r;e==r&&l.push(`uniform sampler2D ${S};`),A=`getDiscreteColor(${S}, int(transformed)).r`}ts(n)?l.push(`uniform highp ${f} ${i};`):l.push(`in highp ${f} ${i};`);const D=[],I=Bt(t.type)&&u>2,C=la(t.type)||I;if(D.push("int slot = 0;"),C){const S=a;D.push(I?`while (slot < ${S}.length() - 2 && value >= ${S}[slot + 1]) { slot++; }`:`while (slot < ${S}.length() && value >= ${S}[slot]) { slot++; }`)}const T=Bt(t.type)||la(t.type)||["band","point"].includes(t.type);if(p){const S=a;T&&(s?D.push(`vec3 domain = ${S};`):D.push(`vec2 domain = vec2(${S}[slot], ${S}[slot + 1]);`)),D.push(`float transformed = ${p};`),I&&D.push(`transformed = (float(slot) + transformed) / (float(${S}.length() - 1));`)}else D.push("float transformed = float(slot);");"clamp"in t&&t.clamp()&&D.push(`transformed = clampToRange(transformed, ${Pb(b)});`),D.push(`return ${A??"transformed"};`),l.push(`
|
|
46
|
+
${x} ${zb}${e}(${f} value) {
|
|
47
|
+
${D.map(S=>` ${S}
|
|
48
48
|
`).join("")}
|
|
49
49
|
}`),l.push(`
|
|
50
|
-
${
|
|
51
|
-
return ${
|
|
52
|
-
}`);const
|
|
53
|
-
`);if(
|
|
50
|
+
${x} ${Rb}${e}() {
|
|
51
|
+
return ${zb}${e}(${i});
|
|
52
|
+
}`);const B=l.join(`
|
|
53
|
+
`);if(T&&e==r){const S=Bt(t.type)||la(t.type)?u:2;c=s?`highp vec3 ${a};`:`mediump float ${a}[${S}];`}return{glsl:B,domainUniform:c}}function Kh(e){if(!vt(e))throw new Error(`Not a number: ${e}`);if(e==1/0)return""+Ob;if(e==-1/0)return""+-Ob;{let t=`${e}`;return/^(-)?\d+$/.test(t)&&(t+=".0"),t}}function vi(e){typeof e=="number"&&(e=[e]);const t=e.length;if(t<1||t>4)throw new Error("Invalid number of components: "+t);let n,r;return t>1?(n=`vec${t}`,r=`${n}(${e.map(Kh).join(", ")})`):(n="float",r=Kh(e[0])),Object.assign(r,{type:n,numComponents:t})}function uM(e){const t=fi(e).rgb();return vi([t.r,t.g,t.b].map(n=>n/255))}function Pb(e){return vi([e[0],ha(e)])}function fM(e,...t){const n=[];for(const r of t)vt(r)?n.push(Kh(r)):Ut(r)?n.push(vi(r)):n.push(r);return`${e}(${n.join(", ")})`}function Bf(e){return e=="index"||e=="locus"}const Ub=2**11,cM=Ub-1;function jb(e,t=[]){const n=e&cM,r=e-n;return t[0]=r,t[1]=n,t}function lM(e){const t=e%Ub;return[e-t,t]}function hM(e){return[...lM(e[0]),e[1]-e[0]]}class dM{constructor(t){this.size=t,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(t,n){const r=this.createUpdater(Wh+t,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?a=>r(i(a)):a=>r(i(a)))}createUpdater(t,n,r){if(!vt(this.size))throw new Error("The number of vertices must be defined!");let i,a,o=0;const s=new Float32Array(this.size*n);if(this.arrays[t]={data:s,numComponents:n},n==1){let f=0;const u=c=>{f=+c};i=()=>{s[o++]=f},a=u}else{let f=r??[0];const u=r?c=>{}:c=>{f=c};switch(n){case 1:break;case 2:i=()=>{s[o++]=f[0],s[o++]=f[1]},a=u;break;case 3:i=()=>{s[o++]=f[0],s[o++]=f[1],s[o++]=f[2]},a=u;break;case 4:i=()=>{s[o++]=f[0],s[o++]=f[1],s[o++]=f[2],s[o++]=f[3]},a=u;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),a}_unrollPushAll(){let t="",n="";for(let i=0;i<this.pushers.length;i++)t+=`const p${i} = that.pushers[${i}];
|
|
54
54
|
`,n+=`p${i}();
|
|
55
|
-
`;const r=new Function("that",`${
|
|
55
|
+
`;const r=new Function("that",`${t}
|
|
56
56
|
|
|
57
57
|
return function unrolledPushAll() {
|
|
58
58
|
${n}
|
|
59
59
|
that.vertexCount++;
|
|
60
60
|
};
|
|
61
|
-
`);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(
|
|
62
|
-
uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,
|
|
61
|
+
`);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(t){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](t)}pushFromDatum(t){this.updateFromDatum(t),this.pushAll()}}const Ea=5,Jh=127;function $h(e){const t=[];for(let p=0;p<=Jh;p++)t.push(void 0);const n=new Map;for(const p of e.chars)p.id<=Jh?t[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,t["-".charCodeAt(0)]);function i(p){return(p<=Jh?t[p]:n.get(p))||t[63]}function a(p){return i(p.charCodeAt(0))}const o=e.common.base,s=a("x"),f=a("X"),u=a("q"),c=s.height-Ea*2,l=f.height-Ea*2,h=u.height-s.height+u.yoffset-s.yoffset;function d(p,b=1){let x=0;for(let A=0;A<p.length;A++)x+=i(p.charCodeAt(A)).xadvance;return x/o*b}return{measureWidth:d,getCharByCode:i,getChar:a,xHeight:c,capHeight:l,descent:h,common:e.common}}function gM(e,t=0,n=1){return Math.max(t,Math.min(n,e))}const Gb=2**31-1,pM=-(2**31);function mM(e,t,n,r=n){const i=new Int32Array(e);i.fill(Gb);let a=pM,o=!1;const s=new Int32Array(e),f=t[0],c=(t[1]-t[0])/e,l=(x,A)=>{const D=(x-f)/c,I=Math.floor(D);return gM(A&&I==D?I-1:I,0,e-1)};function h(x,A,D){A>a?a=A:o||(o=!0,console.debug("Items are not ordered properly. Disabling binned index."));const I=n(x),C=l(I,!1);i[C]>A&&(i[C]=A),s[C]<D&&(s[C]=D)}function d(x,A,D){A>a?a=A:o||(o=!0,console.debug("Items are not ordered properly. Disabling binned index."));const I=n(x),C=r(x),T=l(I,!1),B=l(C,!0);for(let S=T;S<=B;S++)i[S]>A&&(i[S]=A),s[S]<D&&(s[S]=D)}const p=(x,A,D=[0,0])=>{const I=l(x,!1),C=l(A,!0),T=i[I],B=Math.max(s[C],T);return D[0]=T,D[1]=B,D},b=()=>{for(let A=1;A<s.length;A++)s[A]<s[A-1]&&(s[A]=s[A-1]);let x=!0;for(let A=i.length-1;A>0;A--)x&&i[A]==Gb?(i[A]=s[A],x=!1):i[A-1]>i[A]&&(i[A-1]=i[A]);return p};if(h.getIndex=b,d.getIndex=b,!o)return n==r?h:d}class hs{constructor({encoders:t,numVertices:n=void 0,attributes:r=[]}){this.encoders=t,this.variableEncoders=Object.fromEntries(Object.entries(t).filter(([i,a])=>r.includes(i)&&a&&a.scale&&!a.constant)),this.allocatedVertices=n,this.variableBuilder=new dM(n);for(const[i,a]of Object.entries(this.variableEncoders)){const o=a.accessor,s=[0,0],f=Bf(a.scale.type),u=a.indexer,c=u?l=>u(o(l)):f?l=>jb(o(l),s):o;this.variableBuilder.addConverter(i,{f:c,numComponents:f?2:1,arrayReference:f?s:void 0})}this.lastOffset=0,this.rangeMap=new ei([],JSON.stringify)}registerBatch(t){var a;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(t,{offset:n,count:i,xIndex:(a=this.xIndexer)==null?void 0:a.getIndex()}),this.lastOffset=r}addBatches(t){for(const[n,r]of t)this.addBatch(n,r)}addBatch(t,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let a=r;a<i;a++){const o=n[a];this.variableBuilder.pushFromDatum(o),this.addToXIndex(o)}this.registerBatch(t)}prepareXIndexer(t,n=0,r=n+t.length){const i=()=>{this.addToXIndex=f=>{},this.xIndexer=void 0};if(!t.length||r-n<0){i();return}const a=f=>{var u;return f&&Bt((u=f.scale)==null?void 0:u.type)&&f},o=a(this.variableEncoders.x),s=a(this.variableEncoders.x2);if(o){const f=o.accessor,u=s?s.accessor:f,c=[f(t[n]),u(t[r-1])];if(c[1]>c[0]){this.xIndexer=mM(50,c,f,u);let l=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let d=this.variableBuilder.vertexCount;this.xIndexer(h,l,d),l=d}}else i()}else i()}addToXIndex(t){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class bM extends hs{constructor({encoders:t,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:a}){super({encoders:t,attributes:n,numVertices:r==1/0?a*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(t,n,r=0,i=n.length){if(i<=r)return;const a=this.encoders,[o,s]=this.visibleRange,f=h=>h.accessor||(d=>0),u=f(a.x),c=f(a.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const d=n[h];let p=u(d),b=c(d);if(p>b&&([p,b]=[b,p]),b<o||p>s)continue;p<o&&(p=o),b>s&&(b=s),this.variableBuilder.updateFromDatum(d),l[0]=0,l[1]=0;const x=1;this.variableBuilder.pushAll();for(let A=0;A<=x;A++)l[0]=A/x,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(d)}this.registerBatch(t)}}class yM extends hs{constructor({encoders:t,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:a}){super({encoders:t,attributes:n,numVertices:r==1/0?a*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(t,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let a=r;a<i;a++){const o=n[a];this.variableBuilder.updateFromDatum(o),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const s=1;for(let f=0;f<=s;f++)this.updatePos(f/s),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(o)}this.registerBatch(t)}}class wM extends hs{constructor({encoders:t,attributes:n,numItems:r=void 0}){super({encoders:t,attributes:n,numVertices:r})}}class xM extends hs{constructor({encoders:t,attributes:n,numItems:r=void 0}){super({encoders:t,attributes:n,numVertices:r})}toArrays(){const t=this.variableBuilder.arrays;for(let n of Object.values(t))n.divisor=1;return super.toArrays()}}class AM extends hs{constructor({encoders:t,attributes:n,fontMetrics:r,properties:i,numCharacters:a=void 0}){super({encoders:t,attributes:n,numVertices:a*6}),this.metadata=r,this.metrics=r,this.properties=i;const s=t.text.channelDef;this.numberFormat=!ln(s)&&s.format?nt(s.format):f=>f,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(t,n,r=0,i=n.length){const a=this.properties.align||"left",o=this.properties.logoLetters??!1,s=this.metadata.common.base,f=this.metadata.common.scaleH;let u=-Ea;switch(this.properties.baseline){case"top":u+=this.metrics.capHeight;break;case"middle":u+=this.metrics.capHeight/2;break;case"bottom":u-=this.metrics.descent;break}const c=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n,r,i);for(let d=r;d<i;d++){const p=n[d],b=this.numberFormat(c(p)),x=ze(b)?b:b===null?"":""+b;if(x.length==0)continue;this.variableBuilder.updateFromDatum(p);const A=o?x.length:this.metrics.measureWidth(x);this.updateWidth(A);let D=a=="right"?-A:a=="center"?-A/2:0;if(!o){const B=this.metrics.getCharByCode(x.charCodeAt(0));D-=(B.width-B.xadvance)/s/2}let I=-.5,C=1,T=1;for(let B=0;B<x.length;B++){const S=this.metrics.getCharByCode(x.charCodeAt(B)),z=o?1:S.xadvance/s;if(S.id==32){D+=z;continue}o?(T=(S.width+Ea*2)/S.width,D=-T/2,C=(S.height+Ea*2)/S.height,I=-.5-Ea/S.height):(C=S.height/s,I=-(S.height+S.yoffset+u)/s,T=S.width/s);const E=S.x,N=S.y;l[0]=D,l[1]=I+C,h[0]=E/f,h[1]=N/f,this.variableBuilder.pushAll(),l[0]=D+T,l[1]=I+C,h[0]=(E+S.width)/f,h[1]=N/f,this.variableBuilder.pushAll(),l[0]=D,l[1]=I,h[0]=E/f,h[1]=(N+S.height)/f,this.variableBuilder.pushAll(),l[0]=D+T,l[1]=I+C,h[0]=(E+S.width)/f,h[1]=N/f,this.variableBuilder.pushAll(),l[0]=D,l[1]=I,h[0]=E/f,h[1]=(N+S.height)/f,this.variableBuilder.pushAll(),l[0]=D+T,l[1]=I,h[0]=(E+S.width)/f,h[1]=(N+S.height)/f,this.variableBuilder.pushAll(),D+=z}this.addToXIndex(p)}this.registerBatch(t)}}const Hb=`#define PI 3.141593
|
|
62
|
+
uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,vM="const float inf=1.0/0.0;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}float scaleBandHp(vec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);float hi=max(value[0]-domainStart[0],-inf);float lo=max(value[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",EM=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
|
|
63
63
|
#if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
|
|
64
64
|
SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
|
|
65
65
|
#elif defined(SAMPLE_FACET_UNIFORM)
|
|
@@ -67,36 +67,36 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
|
|
|
67
67
|
#elif defined(SAMPLE_FACET_TEXTURE)
|
|
68
68
|
uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
|
|
69
69
|
#endif
|
|
70
|
-
bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,
|
|
70
|
+
bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,CM=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
|
|
71
71
|
#ifdef uniqueId_DEFINED
|
|
72
72
|
int id=int(getScaled_uniqueId());vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,0xFF)&0xFF)/float(0xFF);
|
|
73
73
|
#else
|
|
74
74
|
vPickingColor=vec4(1.0);
|
|
75
75
|
#endif
|
|
76
|
-
return true;}return false;}`,
|
|
76
|
+
return true;}return false;}`,SM="in highp vec4 vPickingColor;",Ff=Symbol("cacheMap");function Ca(e,t,n){let r=ds(e).get(t);return r===void 0&&(r=n(t),ds(e).set(t,r)),r}function Qb(e,t){ds(e).delete(t)}function kf(e,t){const n=ds(e);for(const r of n.keys())r.startsWith(t)&&n.delete(r);ds(e).delete(t)}function Vb(e){e[Ff]=new Map}function ds(e){return e[Ff]||Vb(e),e[Ff]}function DM(e,t,n,r){const i=ze(e)?e:e.name,a=!ze(e)&&e.extent||[0,1];if(n===void 0&&!ze(e)&&(n=e.count),i){const o=oh(i);if(At(o)){const s=Zb(o,{extent:a,count:n});return Lf(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},s,r)}else{if(Ut(o))return e0(o,t);throw new Error("Unknown scheme: "+i)}}}function _M(e,t="rgb",n,r){const i=nf(e,ze(t)?t:t.type,ze(t)?void 0:t.gamma),a=Zb(i);return Lf(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},a,r)}function IM(e,t,n,r){const i=Math.max(e.length,n||0),a=new Float32Array(i);for(let o=0;o<i;o++)a[o]=e[o%e.length];return Lf(t,{minMag:t.NEAREST,format:t.RED,internalFormat:t.R32F,height:1},a,r)}function e0(e,t,n,r){const i=Yb(e,n);return Lf(t,{minMag:t.NEAREST,format:t.RGB,height:1},i,r)}function Zb(e,{extent:t=[0,1],reverse:n=!1,count:r=256}={}){const i=t[0],a=ha(t)-i,o=bo(r).map(s=>s/(r-1)).map(s=>i+s/a).map(e);return n&&o.reverse(),Yb(o)}function Yb(e,t){const n=Math.max(e.length,t||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const a=fi(e[i%e.length]).rgb();r[i*3+0]=a.r,r[i*3+1]=a.g,r[i*3+2]=a.b}return r}class MM{constructor(t,n){this._container=t,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");t.appendChild(r);const i=tM(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!ga(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");kb(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=W8(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(a=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(t,n){const r="#version 300 es",i="precision mediump float;";Ut(n)&&(n=n.join(`
|
|
77
77
|
|
|
78
|
-
`));const
|
|
78
|
+
`));const a=this.gl,o=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(o);if(!s){const f=[r,i,n].join(`
|
|
79
79
|
|
|
80
|
-
`);a
|
|
81
|
-
`).map((o,
|
|
80
|
+
`);s=a.createShader(t),a.shaderSource(s,f),a.compileShader(s),this._shaderCache.set(o,s)}return s}adjustGl(){const t=this.getLogicalCanvasSize();this.canvas.style.width=`${t.width}px`,this.canvas.style.height=`${t.height}px`;const n=this.getPhysicalCanvasSize(t);this.canvas.width=n.width,this.canvas.height=n.height,X8(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(t){return t=t||this.getLogicalCanvasSize(),{width:t.width*this.dpr,height:t.height*this.dpr}}getLogicalCanvasSize(){var a;if(this._logicalCanvasSize)return this._logicalCanvasSize;const t=((a=this._sizeSource)==null?void 0:a.call(this))??{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=t.width??this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=t.height??this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(t,n){this._listeners.push({type:t,listener:n})}_emit(t){for(const n of this._listeners)n.type===t&&n.listener()}readPickingPixel(t,n){const r=this.gl;t*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,a=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(t,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,a),r.bindFramebuffer(r.FRAMEBUFFER,null),a}clearAll(){const t=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();t.viewport(0,0,n,r),t.disable(t.SCISSOR_TEST),t.clearColor(0,0,0,0),t.clear(t.COLOR_BUFFER_BIT)}createRangeTexture(t,n=!1){const r=this.rangeTextures.get(t);if(!n&&r)return;function i(o,s){return gi(s.type)?s.domain().length:s.type=="threshold"?s.domain().length+1:s.type=="quantize"||s.type=="quantile"?o??4:o}const a=t.channel;if(yi(a)){const o=t.getScaleProps(),s=t.getScale(),f=s.range();let u;if(o.scheme)if(s.type=="threshold"&&f)u=e0(f,this.gl,s.domain().length,r);else{let c=ze(o.scheme)?void 0:o.scheme.count;c=i(c,s),u=DM(o.scheme,this.gl,c,r)}else tf(s.type)||Bt(s.type)&&f.length>2?u=_M(f,o.interpolate,this.gl,r):u=e0(f,this.gl,s.domain().length,r);this.rangeTextures.set(t,u)}else{const o=t.getScale();if(o.type==="ordinal"||la(o.type)){const s=cf(a)?xm(a):u=>u,f=t.getScale().range();this.rangeTextures.set(t,IM(f.map(s),this.gl,o.domain().length,r))}}}}function TM(e,t="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...t.matchAll(r)],a=new Map(i.map((o,s)=>{const f=parseInt(o[1]),u=i[s+1],c=u?u.index:t.length,l=t.substring(o.index,c);return[f-1,l]}));return e.split(`
|
|
81
|
+
`).map((o,s)=>{const f=a.get(s);return`${s+1+n}: ${o}${f?`
|
|
82
82
|
|
|
83
|
-
^^^ ${
|
|
84
|
-
`)}function
|
|
85
|
-
Error compiling: ${
|
|
83
|
+
^^^ ${f}`:""}`}).join(`
|
|
84
|
+
`)}function NM(e,t,n){const r=e.createProgram();e.attachShader(r,t),e.attachShader(r,n),e.linkProgram(r);function i(){let a,o;if(!e.getProgramParameter(r,e.LINK_STATUS)){a=e.getProgramInfoLog(r);for(const f of[t,n])e.getShaderParameter(f,e.COMPILE_STATUS)||(a=e.getShaderInfoLog(f),o=TM(e.getShaderSource(f),a,0)+`
|
|
85
|
+
Error compiling: ${a}`,e.deleteShader(f));e.deleteProgram(r)}if(a)return{message:a,detail:o}}return{program:r,getProgramErrors:i}}function Lf(e,t,n,r){return r?Xm(e,r,n,t):r=cs(e,{...t,src:n}),r}function BM(...e){const t={get(n,r,i){for(const a of e){const s=a()[r];if(s!==void 0)return s}},has(n,r,i){for(const a of e){const o=a();if(r in o)return!0}return!1}};return new Proxy({},t)}function FM(e){return ze(e)||vt(e)||xu(e)}const kM="SAMPLE_FACET_UNIFORM",qb="SAMPLE_FACET_TEXTURE";class gs{constructor(t){this.unitView=t,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new LM,this.defaultProperties={get clip(){return["x","y"].map(n=>t.getScaleResolution(n)).some(n=>(n==null?void 0:n.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=BM(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const t={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(t.uniqueId={field:"_uniqueId"}),t}fixEncoding(t){return t}get encoding(){return Ca(this,"encoding",()=>{const t=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=o=>{const s=this.properties[o];return FM(s)&&{value:s}},i=Object.fromEntries(this.getSupportedChannels().map(o=>[o,r(o)]).filter(o=>o[1].value!==void 0)),a=this.fixEncoding({...t,...i,...n});for(const o of Object.keys(a))this.getSupportedChannels().includes(o)||delete a[o];return a})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=sD(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return qb;if(this.unitView.getAncestors().find(t=>"samples"in t.spec))return kM}createAndLinkShaders(t,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let a=[];const o=this.getSampleFacetMode();o&&r.push(`#define ${o}`);for(const h of i){let d;if(h in this.encoding)d=h;else continue;const p=this.encoding[d];if(p)if(ln(p))a.push(oM(d,p.value));else{const b=Ht(p)&&p.resolutionChannel||d,x=this.unitView.getScaleResolution(b).getScale(),A=sM(d,x,p);a.push(A.glsl),A.domainUniform&&this.domainUniforms.push(A.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains {
|
|
86
86
|
`+this.domainUniforms.map(h=>` ${h}
|
|
87
87
|
`).join("")+`};
|
|
88
88
|
|
|
89
|
-
`:"",
|
|
90
|
-
`,...r,
|
|
89
|
+
`:"",u=[`precision highp float;
|
|
90
|
+
`,...r,Hb,vM,s,...a,EM,CM,t],c=[...r,Hb,SM,n],l=this.gl;this.programStatus=NM(l,this.glHelper.compileShader(l.VERTEX_SHADER,u),this.glHelper.compileShader(l.FRAGMENT_SHADER,c))}finalizeGraphicsInitialization(){const t=this.programStatus.getProgramErrors();if(t){t.detail&&console.warn(t.detail);const n=new Error("Cannot create shader program: "+t.message);throw n.view=this.unitView,n}this.programInfo=B8(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=Eb(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=Eb(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Ft(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[t,n]of Object.entries(this.encoding))if(ts(n)){const r=this.encoders[t],i=r.indexer?r.indexer(n.datum):Bf(r.scale.type)?jb(+n.datum):+n.datum;Ft(this.programInfo,{[Wh+t]:i})}}deleteGraphicsData(){if(this.bufferInfo){const t=this.gl;for(let n=0;n<8;n++)t.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(t){if(this.gl.bindVertexArray(null),this.bufferInfo&&t.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(t.arrays))r.data&&QD(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=YD(this.gl,t.arrays,{numElements:t.vertexCount}),this.bufferInfo.allocatedVertices=t.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const t of this.unitView.getAncestors())if(!t.isPickingSupported())return!1;return!0}prepareRender(t){const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=K8(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[o,s]of Object.entries(this.domainUniformInfo.setters)){const f=o.substring(Lb.length),u=this.encoding[f],c=Ht(u)&&u.resolutionChannel||f,l=this.unitView.getScaleResolution(c);if(l){const h=l.getScale();i.push(()=>{const d=gi(h.type)?[0,h.domain().length]:h.domain();s(Bf(h.type)?hM(d):d)})}}i.push(()=>Cb(r,this.programInfo,this.domainUniformInfo))}for(const[o,s]of Object.entries(this.encoding))if(Ht(s)){const f=Ht(s)&&s.resolutionChannel||o,u=this.unitView.getScaleResolution(f),c=n.rangeTextures.get(u);c&&i.push(()=>Ft(this.programInfo,{[Xh+o]:c}))}this.getSampleFacetMode()==qb&&i.push(()=>{let o;for(const s of this.unitView.getAncestors())if(o=s.getSampleFacetTexture(),o)break;if(!o)throw new Error("No facet texture available. This is bug.");Ft(this.programInfo,{uSampleFacetTexture:o})});const a=(t.picking??!1)&&this.isPickingParticipant();return i.push(()=>Sb(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:a})),this.opaque||t.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(t){const n=t.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,a=n.locSize?n.locSize.size:1;if(i>1||i+a<0)return!1;const o=n.targetLocSize?n.targetLocSize.location:i,s=n.targetLocSize?n.targetLocSize.size:a;this.gl.uniform4f(r.location,i,a,o,s)}return!0}render(t){}createRenderCallback(t,n){var l;const r=this;let i;const a=(l=this.unitView.getScaleResolution("x"))==null?void 0:l.getScale(),o=a&&Bt(a.type),s=["index","locus"].includes(a==null?void 0:a.type)?-1:0,f=[0,0];i=h=>{if(o&&h.xIndex){const d=a.domain(),p=h.xIndex(d[0]+s,d[1],f),b=p[0],x=p[1]-b;x>0&&t(b,x)}else t(h.offset,h.count)};const u=this.rangeMap.get(void 0).count==0?n.facetId:void 0,c=this.rangeMap.get(u);return n.sampleFacetRenderingOptions?function(){c.count&&r.prepareSampleFacetRendering(n)&&i(c)}:function(){c.count&&i(c)}}setViewport(t,n){const r=this.glHelper.dpr,i=this.gl,a=this.properties,o=this.glHelper.getLogicalCanvasSize(),s=.5,f=(a.xOffset||0)+s,u=(a.yOffset||0)+s;let c,l=t;if(a.clip||n){let h=0,d=0,p;n?(l=a.clip?t.intersect(n):n,p=[t.width/l.width,t.height/l.height],d=Math.max(0,t.y2-n.y2),h=Math.max(0,t.x2-n.x2)):p=[1,1];const b=[t.x,o.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(I=>I*r),x=b.map(I=>Math.floor(I)),[A,D]=b.map((I,C)=>I-x[C]);i.viewport(...x),i.scissor(...x),i.enable(i.SCISSOR_TEST),c={uViewOffset:[(f+h+A)/l.width,-(u+d-D)/l.height],uViewScale:p}}else i.viewport(0,0,o.width*r,o.height*r),i.disable(i.SCISSOR_TEST),c={uViewOffset:[(t.x+f)/o.width,(o.height-t.y-u-t.height)/o.height],uViewScale:[t.width/o.width,t.height/o.height]};return Sb(this.viewUniformInfo,{...c,uViewportSize:[t.width,t.height],uDevicePixelRatio:this.glHelper.dpr}),Cb(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(t,n){}}class LM extends ei{constructor(){super([],JSON.stringify)}get(t){let n=super.get(t);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(t,n)),n}migrateEntries(t){for(const[n,r]of t.entries())Object.assign(this.get(n),r)}}function t0(e,t){const n=lD(t);let r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(ln(r)||ln(i))){if(r){if(!Ht(e[t]))return;if(i){if(r.type!="quantitative"){const a=(1-(r.band||1))/2;r.band=a,i.band=-a}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const a=(1-(r.band??1))/2;r.band=0+a,i.band=1-a}}else r={value:0},i={value:1};e[t]=r,e[n]=i}}function Wb(e,t){e.stroke||(t?e.stroke={value:null}:e.stroke={resolutionChannel:"color",...e.color}),ln(e.stroke)&&e.stroke.value===null&&(e.strokeWidth={value:0}),e.strokeOpacity||(e.strokeOpacity={resolutionChannel:"opacity",...e.opacity})}function Xb(e,t){ln(e.fill)&&e.fill.value===null?e.fillOpacity={value:0}:e.fill||(e.fill={resolutionChannel:"color",...e.color},!t&&!e.fillOpacity&&(e.fillOpacity={value:0})),e.fillOpacity||(t?e.fillOpacity={resolutionChannel:"opacity",...e.opacity}:e.fillOpacity={value:0})}class zM extends gs{constructor(t){super(t),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}get opaque(){return Ca(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&ln(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(t){return t0(t,"x"),t0(t,"y"),Wb(t,this.properties.filled),Xb(t,this.properties.filled),delete t.color,delete t.opacity,t}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){const t=this.properties;return t.cornerRadius||t.cornerRadiusBottomLeft||t.cornerRadiusBottomRight||t.cornerRadiusTopLeft||t.cornerRadiusTopRight}_isStroked(){const t=this.encoding.strokeWidth;return!(ln(t)&&!t.value)}async initializeGraphics(){await super.initializeGraphics();const t=[];this._isRoundedCorners()&&t.push("ROUNDED_CORNERS"),this._isStroked()&&t.push("STROKED"),this.createAndLinkShaders(nM,rM,t.map(n=>"#define "+n))}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;Ft(this.programInfo,{uMinSize:[t.minWidth,t.minHeight],uMinOpacity:t.minOpacity,uCornerRadii:[t.cornerRadiusTopRight??t.cornerRadius,t.cornerRadiusBottomRight??t.cornerRadius,t.cornerRadiusTopLeft??t.cornerRadius,t.cornerRadiusBottomLeft??t.cornerRadius]})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getItemCount(),r=new bM({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(t){const n=super.prepareRender(t);return n.push(()=>va(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>{ls(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},t)}findDatumAt(t,n){t=In(t);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(t),a=r.x.accessor,o=r.x2.accessor;if(i)return i.find(s=>n>=a(s)&&n<o(s))}}const RM=`/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;out float vRadius;out float vRadiusWithPadding;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out lowp float vShape;out lowp float vHalfStrokeWidth;out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
|
|
91
91
|
#if defined(dx_DEFINED) || defined(dy_DEFINED)
|
|
92
92
|
return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
|
|
93
93
|
#else
|
|
94
94
|
return vec2(0.0,0.0);
|
|
95
95
|
#endif
|
|
96
|
-
}void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,
|
|
97
|
-
`)+`return function propagate(datum) {${
|
|
98
|
-
`)}}`)(this.children)}setParent(
|
|
99
|
-
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():xb}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function nh(t){return t.type=="file"}function wb(t){return t.type=="facet"}class rh extends q{constructor(e){super(),this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function bb(t,e,n){const r=new rh({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const Db={};class vb extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...Db}}fixEncoding(e){return eh(e,this.properties.filled),th(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(bb(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Ab,yb)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Me(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new $w({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Pu(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Me(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&Yr(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const Cb="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",Mb="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;in vec4 vColor;in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class Eb extends Xr{constructor(e){super(e),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&Le(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Le(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=Sb(this.properties.strokeDash);this.dashTexture=Hr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(Cb,Mb)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Me(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new _w({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Me(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Yr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function Sb(t){if(t.length==0||t.length%2||t.findIndex(s=>Math.round(s)!=s||s<1||s>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((s,o)=>s+o),n=new Uint8Array(e);let r=!0,i=0;for(let s of t){for(;s;)n[i++]=r&&255||0,s--;r=!r}return n}const Ib=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
|
|
96
|
+
}void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,OM="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;in float vRadius;in float vRadiusWithPadding;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in lowp float vShape;in lowp float vHalfStrokeWidth;in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",$n=1<<0,Tr=1<<1,n0=1<<2,PM={};class Ge{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const t of this.children)t.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",bo(this.children.length).map(t=>`const child${t} = children[${t}];`).join(`
|
|
97
|
+
`)+`return function propagate(datum) {${bo(this.children.length).map(t=>`child${t}.handle(datum);`).join(`
|
|
98
|
+
`)}}`)(this.children)}setParent(t){this.parent=t}addChild(t){if(t.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(t),t.setParent(this),this._updatePropagator(),this}adopt(t){t.parent&&t.parent.removeChild(t),this.addChild(t)}adoptChildrenOf(t){for(const n of t.children)this.adopt(n)}insertAsParent(t){if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");t.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=t,this.parent._updatePropagator(),this.parent=void 0,t.addChild(this)}removeChild(t){const n=this.children.indexOf(t);if(n>-1)this.children.splice(n,1),t.parent=void 0,this._updatePropagator();else throw new Error("Trying to remove an unknown child node!")}excise(){if(this.isRoot())throw new Error("Cannot excise root node!");if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){const t=this.children[0];t.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=t,this.parent._updatePropagator(),this.setParent(void 0),this.children.length=0}else throw new Error("Cannot excise a node that has multiple children!")}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(t){t(this);for(const n of this.children)n.visit(t);t.afterChildren&&t.afterChildren(this)}subtreeToString(t=0){var r;const n=this.children.map(i=>i.subtreeToString(t+1)).join("");return" ".repeat(t*2)+"* "+((r=/^class ([A-Za-z0-9_]+)/.exec(""+this.constructor))==null?void 0:r[1])+`
|
|
99
|
+
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():PM}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of this.children)t.complete()}beginBatch(t){for(const n of this.children)n.beginBatch(t)}_propagate(t){}}function Kb(e){return e.type=="file"}function UM(e){return e.type=="facet"}class Jb extends Ge{constructor(t){super(),this.k=t.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(t){this.reservoir.push(t),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(t){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=t,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(t){this.ingester(t)}complete(){for(const t of this.reservoir)this._propagate(t);super.complete()}}function jM(e,t,n){const r=new Jb({type:"sample",size:e});for(const i of t)r.handle(n(i));return r.complete(),r.reservoir}const GM={};class HM extends gs{constructor(t){super(t),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...GM}}fixEncoding(t){return Wb(t,this.properties.filled),Xb(t,this.properties.filled),delete t.color,delete t.opacity,t}initializeData(){super.initializeData();const t=this.unitView.getAccessor("semanticScore");t&&(this.sampledSemanticScores=Float32Array.from(jM(1e4,this.unitView.getCollector().getData(),t)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(RM,OM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;Ft(this.programInfo,{uInwardStroke:t.inwardStroke,uGradientStrength:t.fillGradientStrength,uMaxRelativePointDiameter:1-2*t.sampleFacetPadding})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getItemCount(),r=new wM({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const t=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/t),1/3)}_getMaxPointSize(){const t=this.encoders.size;return t.constant?t(null):t.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const t=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(t<=0)return-1/0;if(t>=1)return 1/0;{const n=this.sampledSemanticScores;return Bg(n,t)}}else return-1}prepareRender(t){const n=super.prepareRender(t);return n.push(()=>Ft(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>va(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&ls(n,this.vertexArrayInfo,n.POINTS,i,r)},t)}}const QM="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",VM="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;in vec4 vColor;in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class ZM extends gs{constructor(t){super(t),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){if(!(t.x&&t.y&&t.x2&&t.y2))if(t.x&&t.x2&&!t.y)t.y={value:.5},t.y2=t.y;else if(t.y&&t.y2&&!t.x)t.x={value:.5},t.x2=t.x;else if(t.x&&!t.y)t.y={value:0},t.y2={value:1},t.x2=t.x;else if(t.y&&!t.x)t.x={value:0},t.x2={value:1},t.y2=t.y;else if(t.x&&t.y&&t.y2)t.x2=t.x;else if(t.y&&t.x&&t.x2)t.y2=t.y;else if(t.y&&t.x)if(!t.x2&&Ht(t.y)&&t.y.type=="quantitative")t.x2=t.x,t.y2={datum:0};else if(!t.y2&&Ht(t.x)&&t.x.type=="quantitative")t.y2=t.y,t.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(t));return t}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const t=this.gl,n=YM(this.properties.strokeDash);this.dashTexture=cs(t,{mag:t.NEAREST,min:t.NEAREST,internalFormat:t.R8,format:t.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(QM,VM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;Ft(this.programInfo,{uMinLength:t.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(t.strokeCap)})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getItemCount(),r=new yM({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(t){const n=super.prepareRender(t);return this.dashTexture&&n.push(()=>Ft(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>va(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>ls(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),t)}}function YM(e){if(e.length==0||e.length%2||e.findIndex(a=>Math.round(a)!=a||a<1||a>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(e));const t=e.reduce((a,o)=>a+o),n=new Uint8Array(t);let r=!0,i=0;for(let a of e){for(;a;)n[i++]=r&&255||0,a--;r=!r}return n}const qM=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
|
|
100
100
|
#ifdef size2_DEFINED
|
|
101
101
|
float mixedSize=mix(getScaled_size(),getScaled_size2(),t);
|
|
102
102
|
#else
|
|
@@ -108,7 +108,7 @@ vec3 color=mix(getScaled_color(),getScaled_color2(),t);
|
|
|
108
108
|
#else
|
|
109
109
|
vec3 color=getScaled_color();
|
|
110
110
|
#endif
|
|
111
|
-
vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,
|
|
111
|
+
vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,WM="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class XM extends gs{constructor(t){super(t),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){return t.x||(t.x2=t.x),t.y2||(t.y2=t.y),t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(qM,WM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;Ft(this.programInfo,{uSagittaScaleFactor:t.sagittaScaleFactor,uMinSagittaLength:t.minSagittaLength})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getItemCount(),r=new xM({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(t.facetBatches);const i=r.toArrays();i.arrays.strip={data:KM(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([a,o])=>[a,{...o,data:void 0}])),this.updateBufferInfo(i)}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const a of Object.entries(this.bufferInfo.attribs)){const[o,s]=a;s.buffer&&s.numComponents&&s.divisor&&(s.offset=r*this.arrays[o].numComponents*4)}va(n,this.programInfo,this.bufferInfo),ls(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},t)}}function KM(e){let t=0;const n=[];for(;t<=e;t++)n.push(t/e,.5),n.push(t/e,-.5);return n}const JM=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
|
|
112
112
|
#ifdef x2_DEFINED
|
|
113
113
|
uniform float uPaddingX;uniform bool uFlushX;
|
|
114
114
|
#endif
|
|
@@ -128,7 +128,7 @@ vec2 pos=applySampleFacet(vec2(x,y));
|
|
|
128
128
|
#ifdef y2_DEFINED
|
|
129
129
|
float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
|
|
130
130
|
#endif
|
|
131
|
-
if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,Lb="uniform sampler2D uTexture;uniform bool uLogoLetter;in vec2 vTexCoord;in float vEdgeFadeOpacity;in vec4 vColor;in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float slope=uLogoLetter? 0.7/length(vec2(dFdy(sigDist),dFdx(sigDist))): vSlope;float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",zb={left:-1,center:0,right:1},Pb={top:-1,middle:0,bottom:1,alphabetic:1};class Ob extends Xr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of Pr)this.properties.fitToBand&&Za(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Fb,Lb)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Me(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[zb[e.align],Pb[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let s=0;const o=r.text.format?ae(r.text.format):c=>c;for(const c of n){const f=o(i(c)),l=W(f)?f:f===null?"":""+f;s+=l&&l.length||0}const a=new tb({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(s,this.properties.minBufferSize||0)});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap.migrateEntries(u.rangeMap),this.updateBufferInfo(u)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Me(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Yr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function ih(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:s}={}){n=n||0,i=i||0;let o=0,a=0;for(const d of t)o+=vs(d.px)+(Ja(d)?0:n),a+=vs(d.grow);o-=n;const u=Math.max(0,e-o),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,f=[],l=[],h=d=>{const p=f.length;if(!p)return;const m=(d?n:0)*(s?-1:1);g-=m;for(let A=0;A<p;A++)l.push({location:g+(A+1)/(p+1)*m,size:0});g+=m,f.length=0};let g=s?Math.max(e,o):0+i;if(t.length==1&&Ja(t[0]))return[{location:g,size:0}];for(let d=0;d<t.length;d++){const p=t[d];if(Ja(p))f.push(p);else{h(l.length>0);const m=vs(p.px)+(a?vs(p.grow)/a*u:0);s&&(g-=m),l.push({location:c(g),size:c(m)}),s?g-=n:g+=m+n}}return g+=s?n:-n,h(!1),l}function kb(t){let e=0,n=0;for(const r of t)e=Math.max(e,r.px??0),n=Math.max(n,r.grow??0);return{px:e,grow:n}}const fu=class{constructor(e,n){oe(this,qr);this.width=e,this.height=n}addPadding(e){return K(this,qr,du).call(this,e.width,e.height)}subtractPadding(e){return K(this,qr,du).call(this,-e.width,-e.height)}};let nn=fu;qr=new WeakSet,du=function(e,n){return new fu({px:(this.width.px??0)+e,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};const Zr=Object.freeze({px:0,grow:0}),Rb=new nn(Zr,Zr);function Ja(t){return!t.px&&!t.grow}function vs(t){return t||0}function jb(t){return t&&(ye(t.px)||ye(t.grow))}function sh(t){if(ch(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(jb(t))return t;if(ye(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class He{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new He(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new He(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new He(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):qa}static createFromRecord(e){return new He(e.top,e.right,e.bottom,e.left)}static zero(){return qa}static createUniformPadding(e){return new He(e,e,e,e)}}const qa=He.createUniformPadding(0);Object.freeze(qa);const Ub=/^([A-Za-z]+:)?\/\//;function Gb(t,e){if(e&&Ub.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n??e}const oh="VISIT_SKIP",Kr="VISIT_STOP",ah=t=>t;class uh{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},J0(this),this.opacityFunction=ah,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>He.createFromConfig(this.spec.padding))}getOverhang(){return He.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Rb)}getSizeFromSpec(){const e=n=>{var i;let r=this.spec[n];if(ch(r)){const s=r.step,o=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(o){let a=0;if(Xt(o.type))a=o.domain().length;else if(["locus","index"].includes(o.type)){const c=o.domain();a=vn(c)-c[0]}else throw new Error(`Cannot use step-based size with "${o.type}" scale!`);const u=o;return a=Zo(a,u.paddingInner(),u.paddingOuter()),{px:a*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(r&&sh(r))??{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new nn(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}getEffectiveOpacity(){var e;return this.opacityFunction(((e=this.parent)==null?void 0:e.getEffectiveOpacity())??1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const s of i[n.type]||[])s(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let s=i[e];s||(s=[],i[e]=s),s.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Kr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===ah)&&(this.opacityFunction=Hb(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,s]of Object.entries(r))s===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Lr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Cn(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return Gb(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return W(e)?e:e.text}_cache(e,n){return Pn(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":bs(this,e);break;case"ancestors":for(const r of this.getAncestors())bs(r,e);break;case"progeny":this.visit(r=>bs(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function Qb(t){return"unitsPerPixel"in t}function Hb(t){const e=t.spec.opacity;if(e!==void 0){if(ye(e))return n=>n*e;if(Qb(e)){const n=s=>{var a;const o=(a=t.getScaleResolution(s))==null?void 0:a.getScale();if(["linear","index","locus"].includes(o==null?void 0:o.type))return o},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=Uo().domain(e.unitsPerPixel).range(e.values).clamp(!0);return s=>{const a=ci(r.domain())/1e3;return i(a)*s}}}return n=>n}const ch=t=>!!(t!=null&&t.step);class On extends uh{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===Kr)return n;if(n!==oh){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Kr)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof On)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Kr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){return this.getConfiguredResolution(e,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(e,n)}}function Cs(t,e,n){if(n=n||[],t.some(o=>o===null)){if(t.every(o=>o===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(o,a)=>o===a||kn(o)&&kn(a)||kn(o)&&a===!0||o===!0&&Pe(a),s=o=>{for(let a in o){const u=o[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(o[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(kn(c))kn(u)&&(r[a]=Cs([c,u],a));else if(kn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Cs([{},u],a)}else r[a]=u}}};for(const o of t)s(o);return r}function kn(t){return Pe(t)&&!Array.isArray(t)}/*!
|
|
131
|
+
if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,$M="uniform sampler2D uTexture;uniform bool uLogoLetter;in vec2 vTexCoord;in float vEdgeFadeOpacity;in vec4 vColor;in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float slope=uLogoLetter? 0.7/length(vec2(dFdy(sigDist),dFdx(sigDist))): vSlope;float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",e6={left:-1,center:0,right:1},t6={top:-1,middle:0,bottom:1,alphabetic:1};class n6 extends gs{constructor(t){super(t),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0})),this.font=this.properties.font?t.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):t.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(t){for(const n of ns)this.properties.fitToBand&&t0(t,n);return t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(JM,$M)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;Ft(this.programInfo,{uPaddingX:t.paddingX,uPaddingY:t.paddingY,uFlushX:!!t.flushX,uFlushY:!!t.flushY,uAlign:[e6[t.align],t6[t.baseline]],uD:[t.dx,-t.dy],uLogoLetter:!!t.logoLetters,uSqueeze:!!t.squeeze,uViewportEdgeFadeWidth:[t.viewportEdgeFadeWidthTop,t.viewportEdgeFadeWidthRight,t.viewportEdgeFadeWidthBottom,t.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[t.viewportEdgeFadeDistanceTop,t.viewportEdgeFadeDistanceRight,t.viewportEdgeFadeDistanceBottom,t.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let a=0;const o="format"in r.text?nt(r.text.format):u=>u;for(const u of n){const c=o(i(u)),l=ze(c)?c:c===null?"":""+c;a+=l&&l.length||0}const s=new AM({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(a,this.properties.minBufferSize||0)});s.addBatches(t.facetBatches);const f=s.toArrays();this.rangeMap.migrateEntries(f.rangeMap),this.updateBufferInfo(f)}prepareRender(t){const n=super.prepareRender(t);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ft(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>va(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>ls(n,this.vertexArrayInfo,n.TRIANGLES,i,r),t)}}function $b(e,t,{spacing:n,devicePixelRatio:r,offset:i,reverse:a}={}){n=n||0,i=i||0;let o=0,s=0;for(const p of e)o+=zf(p.px)+(r0(p)?0:n),s+=zf(p.grow);o-=n;const f=Math.max(0,t-o),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,c=[],l=[],h=p=>{const b=c.length;if(!b)return;const x=(p?n:0)*(a?-1:1);d-=x;for(let A=0;A<b;A++)l.push({location:d+(A+1)/(b+1)*x,size:0});d+=x,c.length=0};let d=a?Math.max(t,o):0+i;if(e.length==1&&r0(e[0]))return[{location:d,size:0}];for(let p=0;p<e.length;p++){const b=e[p];if(r0(b))c.push(b);else{h(l.length>0);const x=zf(b.px)+(s?zf(b.grow)/s*f:0);a&&(d-=x),l.push({location:u(d),size:u(x)}),a?d-=n:d+=x+n}}return d+=a?n:-n,h(!1),l}function r6(e){let t=0,n=0;for(const r of e)t=Math.max(t,r.px??0),n=Math.max(n,r.grow??0);return{px:t,grow:n}}const ig=class{constructor(t,n){dt(this,au);this.width=t,this.height=n}addPadding(t){return st(this,au,cg).call(this,t.width,t.height)}subtractPadding(t){return st(this,au,cg).call(this,-t.width,-t.height)}};let Ei=ig;au=new WeakSet,cg=function(t,n){return new ig({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};const ps=Object.freeze({px:0,grow:0}),i6=new Ei(ps,ps);function r0(e){return!e.px&&!e.grow}function zf(e){return e||0}function a6(e){return e&&(vt(e.px)||vt(e.grow))}function ey(e){if(iy(e))throw new Error("parseSizeDef does not accept step-based sizes.");if(a6(e))return e;if(vt(e))return{px:e,grow:0};if(e==="container")return{px:0,grow:1};if(!e)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${e}`)}class gn{constructor(t,n,r,i){this.top=t||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new gn(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new gn(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new gn(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}static createFromConfig(t){return typeof t=="number"?this.createUniformPadding(t):t?this.createFromRecord(t):i0}static createFromRecord(t){return new gn(t.top,t.right,t.bottom,t.left)}static zero(){return i0}static createUniformPadding(t){return new gn(t,t,t,t)}}const i0=gn.createUniformPadding(0);Object.freeze(i0);const o6=/^([A-Za-z]+:)?\/\//;function s6(e,t){if(t&&o6.test(t))return t;const n=e();return n&&t?n.endsWith("/")?n+t:n+"/"+t:n??t}const ty="VISIT_SKIP",ms="VISIT_STOP",ny=e=>e;class ry{constructor(t,n,r,i){this.context=n,this.parent=r,this.name=t.name||i,this.spec=t,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},Vb(this),this.opacityFunction=ny,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>gn.createFromConfig(this.spec.padding))}getOverhang(){return gn.zero()}getSize(){return this._cache("size/size",()=>this.isConfiguredVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):i6)}getSizeFromSpec(){const t=n=>{var i;let r=this.spec[n];if(iy(r)){const a=r.step,o=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(o){let s=0;if(gi(o.type))s=o.domain().length;else if(["locus","index"].includes(o.type)){const u=o.domain();s=ha(u)-u[0]}else throw new Error(`Cannot use step-based size with "${o.type}" scale!`);const f=o;return s=eh(s,f.paddingInner(),f.paddingOuter()),{px:s*a,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(r&&ey(r))??{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new Ei(t("width"),t("height")))}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getAncestors().every(t=>t.isConfiguredVisible())}getEffectiveOpacity(){var t;return this.opacityFunction(((t=this.parent)==null?void 0:t.getEffectiveOpacity())??1)}getPathString(){return this.getAncestors().map(t=>t.name).reverse().join("/")}getAncestors(){const t=[];let n=this;do t.push(n),n=n.parent;while(n);return t}handleBroadcast(t){for(const n of this._broadcastHandlers[t.type]||[])n(t)}_addBroadcastHandler(t,n){let r=this._broadcastHandlers[t];r||(r=[],this._broadcastHandlers[t]=r),r.push(n)}handleInteractionEvent(t,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const a of i[n.type]||[])a(t,n)}addInteractionEventListener(t,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let a=i[t];a||(a=[],i[t]=a),a.push(n)}visit(t){try{const n=t(this);if(t.postOrder&&t.postOrder(this),n!==ms)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===ny)&&(this.opacityFunction=f6(this))}onBeforeRender(){}render(t,n,r={}){}getEncoding(){const t=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...t,...n};for(const[i,a]of Object.entries(r))a===null&&delete r[i];return r}getFacetAccessor(t){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(t){var r;const n=this.getEncoding().sample;return es(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(t,n){t=da(t);let r=this;do{const i=r.resolutions[n][t];if(i)return i;r=r.parent}while(r)}getScaleResolution(t){return this._getResolution(t,"scale")}getAxisResolution(t){return this._getResolution(t,"axis")}getBaseUrl(){return s6(()=>{var t;return(t=this.parent)==null?void 0:t.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const t=this.spec.title;if(t)return ze(t)?t:t.text}_cache(t,n){return Ca(this,t,n)}_invalidateCacheByPrefix(t,n="self"){switch(n){case"self":kf(this,t);break;case"ancestors":for(const r of this.getAncestors())kf(r,t);break;case"progeny":this.visit(r=>kf(r,t));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(t){}}function u6(e){return"unitsPerPixel"in e}function f6(e){const t=e.spec.opacity;if(t!==void 0){if(vt(t))return n=>n*t;if(u6(t)){const n=a=>{var s;const o=(s=e.getScaleResolution(a))==null?void 0:s.getScale();if(["linear","index","locus"].includes(o==null?void 0:o.type))return o},r=t.channel?n(t.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=Zl().domain(t.unitsPerPixel).range(t.values).clamp(!0);return a=>{const s=Au(r.domain())/1e3;return i(s)*a}}}return n=>n}const iy=e=>!!(e!=null&&e.step);class Sa extends ry{constructor(t,n,r,i){super(t,n,r,i),this.spec=t}*[Symbol.iterator](){}replaceChild(t,n){throw new Error("Not implemented")}visit(t){let n;try{n=t(this)}catch(r){throw r.view=this,r}if(n===ms)return n;if(n!==ty){t.beforeChildren&&t.beforeChildren(this);for(const r of this){const i=r.visit(t);if(i===ms)return i}t.afterChildren&&t.afterChildren(this),t.postOrder&&t.postOrder(this)}}findDescendantByPath(t){for(const n of this)if(n.name===t[0]){if(t.length==1)return n;if(n instanceof Sa)return n.findDescendantByPath(t.slice(1))}}findChildByName(t){for(const n of this)if(n.name===t)return n}findDescendantByName(t){let n;return this.visit(r=>{if(r.name==t)return n=r,ms}),n}getConfiguredResolution(t,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[t]}getDefaultResolution(t,n){return"shared"}getConfiguredOrDefaultResolution(t,n){return this.getConfiguredResolution(t,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(t,n)}}function Rf(e,t,n){if(n=n||[],e.some(o=>o===null)){if(e.every(o=>o===null))return null;throw console.warn(e),new Error("Cannot merge objects with nulls!")}const r={},i=(o,s)=>o===s||Da(o)&&Da(s)||Da(o)&&s===!0||o===!0&&on(s),a=o=>{for(let s in o){const f=o[s];if(!n.includes(s)&&f!==void 0)if(r[s]!==void 0&&!i(r[s],f))console.warn(`Conflicting property ${s} of ${t}: (${JSON.stringify(r[s])} and ${JSON.stringify(o[s])}). Using ${JSON.stringify(r[s])}.`);else{const u=r[s];if(Da(u))Da(f)&&(r[s]=Rf([u,f],s));else if(Da(f)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=Rf([{},f],s)}else r[s]=f}}};for(const o of e)a(o);return r}function Da(e){return on(e)&&!Array.isArray(e)}/*!
|
|
132
132
|
* Adapted from vega-encode:
|
|
133
133
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
|
|
134
134
|
*
|
|
@@ -136,7 +136,7 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
|
|
|
136
136
|
* All rights reserved.
|
|
137
137
|
*
|
|
138
138
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
|
139
|
-
*/function
|
|
139
|
+
*/function ay(e,t,n){return vt(t)&&n!=null&&(t=Math.min(t,~~(Au(e.domain())/n)||1)),on(t)&&(t.step,t=t.interval),t}function oy(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil(sn(r));if(i>a&&(r=a,a=i,i=r),t=t.filter(function(s){return s=e(s),i<=s&&s<=a}),n>0&&t.length>1){for(var o=[t[0],sn(t)];t.length>n&&t.length>=3;)t=t.filter(function(s,f){return!(f%2)});t.length<3&&(t=o)}return t}function c6(e,t){return e.bins?oy(e,l6(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function l6(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(i,a){return!(a%r)})}function h6(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?nt(n):String;if(J1(e.type)){var i=g6(n);r=e.bins?i:d6(r,i)}return r}function d6(e,t){return function(n){return e(n)?t(n):""}}function g6(e){var t=dr(e||",");if(t.precision==null){switch(t.precision=12,t.type){case"%":t.precision-=2;break;case"e":t.precision-=1;break}return p6(nt(t),nt(".1f")(1)[1])}else return nt(t)}function p6(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=m6(r,i),o=a<r.length?r.slice(a):"";--a>i;)if(r[a]!=="0"){++a;break}return r.slice(0,a)+o}}function m6(e,t){var n=e.lastIndexOf("e"),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}/*!
|
|
140
140
|
* Adapted from vega-encode:
|
|
141
141
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
|
|
142
142
|
*
|
|
@@ -144,12 +144,199 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
|
|
|
144
144
|
* All rights reserved.
|
|
145
145
|
*
|
|
146
146
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
|
147
|
-
*/const qb="locus",_b="index";var $b=5;function eD(t){const e=t.type;return!t.bins&&(e===wn||e===br||e===Dr)}function hh(t){return Ce(t)&&![Ze,_b,qb].includes(t)}function dh(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var tD=fi(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function gh(t,e,n){n=dh(n);for(const r in t)if(!tD[r]){if(r==="padding"&&hh(e.type))continue;Ae(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}cD(e,t,uD(e,t,sD(e,t,n)))}function nD(t,e){const n=rD(t),r=O(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return gh(t,i,e),i}function rD(t){var e=t.type,n="",r;return e===Ze?Ze+"-"+wn:(iD(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ze+"-":r===3?bn+"-":""),(n+e||wn).toLowerCase())}function iD(t){const e=t.type;return Ce(e)&&e!==Xl&&e!==Zl&&(t.scheme||t.range&&t.range.length&&t.range.every(W))}function sD(t,e,n){if(!t.domain)return 0;n=dh(n);var r=oD(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,s=t.type,o=e.zero||e.zero===void 0&&eD(t),a,u;return i?(hh(s)&&e.padding&&i[0]!==Oe(i)&&(i=aD(s,i,e.range,e.padding,e.exponent,e.constant)),(o||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,o&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[a]=e.domainMax),e.domainMid!=null&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(ph(s,i,n)),s===Jo&&t.unknown(e.domainImplicit?Ao:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&lh(t,e.nice)||null),i.length):0}function oD(t,e,n){return e?(t.domain(ph(t.type,e,n)),e.length):-1}function aD(t,e,n,r,i,s){var o=Math.abs(Oe(n)-n[0]),a=o/(o-2*r),u=t===wt?bu(e,null,a):t===Dr?zs(e,null,a,.5):t===br?zs(e,null,a,i||1):t===Gi?Ad(e,null,a,s||1):wu(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function ph(t,e,n){if(tf(t)){var r=Math.abs(e.reduce(function(i,s){return i+(s<0?-1:s>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+li(e))}return e}function uD(t,e,n){let r=e.bins;if(r&&!Ne(r)){const i=(r.start==null||r.stop==null)&&t.domain(),s=r.start==null?i[0]:r.start,o=r.stop==null?Oe(i):r.stop,a=r.step;a||V("Scale bins parameter missing step property."),r=Jn(s,o+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===_o&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function cD(t,e,n){var r=t.type,i=e.round||!1,s=e.range;if(e.rangeStep!=null)s=lD(r,e,n);else if(e.scheme&&(s=fD(r,e,n),Ae(s))){if(t.interpolator)return t.interpolator(s);V(`Scale type ${r} does not support interpolating color schemes.`)}if(s&&Hi(r))return t.interpolator(Yi(_a(s,e.reverse),e.interpolate,e.interpolateGamma));s&&e.interpolate&&t.interpolate?t.interpolate(nf(e.interpolate,e.interpolateGamma)):Ae(t.round)?t.round(i):Ae(t.rangeRound)&&t.interpolate(i?xr:yt),s&&t.range(_a(s,e.reverse))}function lD(t,e,n){t!==ql&&t!==qo&&V("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===qo?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Zo(n,i,r)]}function fD(t,e,n){var r=e.schemeExtent,i,s;return Ne(e.scheme)?s=Yi(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),s=ea(i),s||V(`Unrecognized scheme name: ${e.scheme}`)),n=t===Jl?n+1:t===_o?n-1:t===Ko||t===Kl?+e.schemeCount||$b:n,Hi(t)?mh(s,r,e.reverse):Ae(s)?wA(mh(s,r),n):t===Jo?s:s.slice(0,n)}function mh(t,e,n){return Ae(t)&&(e||n)?xA(t,_a(e||[0,1],n)):t}function _a(t,e){return e?t.slice().reverse():t}const Ah=ae(",d");function hD(t,e){return t.chrom+":"+Ah(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+Ah(Math.ceil(e.pos))}const dD="https://genomespy.app/data/genomes/";class gD{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=dD;try{this.setChromSizes(pD(await Ei({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,s={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(s);const o=s.name.replace(/^chr/i,"");for(const a of["chr"+o,"CHR"+o,"Chr"+o,s.number,""+s.number,o,s.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,s);n+=s.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=an(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return hD(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,s=parseInt(n[2].replace(/,/g,"")),o=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):s;return[this.toContinuous(r,s-1),this.toContinuous(i,o)]}}}function pD(t){return Od(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function yh(t){return Pe(t)&&"chrom"in t}function mD(t){return t.every(yh)}class Jr extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Jr&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class $a extends Jr{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class xh extends Jr{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class wh extends xh{constructor(){super(),this.type="nominal"}}class AD extends Jr{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const bh={quantitative:$a,index:$a,locus:$a,nominal:wh,ordinal:xh};function Dh(t,e){if(t=="quantitative"&&yD(e)){const n=new AD(e);return n.type=t,n}else if(bh[t]){const n=new bh[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function yD(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function xD(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const vh="quantitative",Ch="ordinal",Mh="nominal",Eh="locus",wD="index";class bD{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var o;const r=la(e,n),i=r.type,s=(o=r==null?void 0:r.scale)==null?void 0:o.name;if(s){if(this.name!==void 0&&s!=this.name)throw new Error(`Shared scales have conflicting names: "${s}" vs. "${this.name}"!`);this.name=s}if(!this.type)this.type=i;else if(i!==this.type&&!kr(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return Pn(this,"mergedScaleProps",()=>{const e=this.members.map(n=>la(n.view,n.channel).scale).filter(n=>n!==void 0);return Cs(e,"scale",["domain"])})}getScaleProps(){return Pn(this,"scaleProps",()=>{const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=DD(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Xt(n.type)?n.domain=new wh:n.scheme&&(n.domain=[0,1]),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&Xt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),vD(n,this.channel),n})}getInitialDomain(){return this.getConfiguredDomain()??(this.type==Eh?this.getGenome().getExtent():this.getDataDomain())}getConfiguredDomain(){return this._reduceDomains(e=>kr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>kr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){K0(this,"scaleProps");const e=this.getScaleProps();gh(e,this._scale),Ce(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=nD(e);return this._scale=n,am(n)&&n.genome(this.getGenome()),Ce(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e;return((e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return this.isZoomable()&&af(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Df(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),s=i.domain();let o=[...s],a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(a+=i.align()),i.type){case"linear":case"index":case"locus":o=gd(o,r||0),o=wu(o,a,e);break;case"log":o=pd(o,r||0),o=bu(o,a,e);break;case"pow":case"sqrt":{const u=i;o=md(o,r||0,u.exponent()),o=zs(o,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(o=yd(o,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>o[u]!=s[u])?(i.domain(o),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(ui(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(a=this.members[0])==null?void 0:a.view.context.animator,s=this.getScale(),o=s.domain();if(n>0&&o.length==2){const u=o[1]-o[0],c=o[0]+u/2,f=r[1]-r[0],l=r[0]+f/2,h=Dl([c,0,u],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:xD,onUpdate:g=>{const[d,,p]=h(g);s.domain([d-p/2,d+p/2]),this._notifyDomainListeners()}}),s.domain(r),this._notifyDomainListeners()}else s.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ci(this._zoomExtent)/ci(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(CD(n)&&Ne(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),Or(n)?r.nice=!this.isExplicitDomain():qt(n)?r.scheme=e==Mh?"tableau10":e==Ch?"blues":"viridis":qi(n)?r.range=Cf(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return yh(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&mD(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function DD(t,e){if(e==wD||e==Eh){if(Df(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={x:["band","band","linear"],y:["band","band","linear"],size:[void 0,"point","linear"],opacity:[void 0,"point","linear"],fillOpacity:[void 0,"point","linear"],strokeOpacity:[void 0,"point","linear"],color:["ordinal","ordinal","linear"],fill:["ordinal","ordinal","linear"],stroke:["ordinal","ordinal","linear"],strokeWidth:[void 0,void 0,"linear"],shape:["ordinal","ordinal",void 0],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[Mh,Ch,vh].indexOf(e)]:e==vh?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function vD(t,e){Or(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Ce(t.type)&&(t.clamp=!0)}function CD(t){return Pe(t)}function eu(...t){for(const e of t)if(e!==void 0)return e}class MD{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=vn(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return Pn(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:Cs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=s=>{var a;const o=la(s.view,s.channel);if(!Ue(o))return{member:s,explicitTitle:eu((a=o.axis)==null?void 0:a.title,o.title),implicitTitle:eu(Lr(o)?o.field:void 0,fa(o)?o.expr:void 0)}},n=this.members.map(e),r=n.filter(s=>{var o;if(kr(s.member.channel)&&!s.explicitTitle){const a=Cn(s.member.channel);return((o=n.find(u=>u.member.view==s.member.view&&u.member.channel==a))==null?void 0:o.explicitTitle)===void 0}return!0}),i=new Set(r.map(s=>eu(s.explicitTitle,s.implicitTitle)).filter(W));return i.size?[...i].join(", "):null}}class Sh extends uh{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Tt extends On{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((s,o)=>{if(ou(s)||su(s))return n.createView(s,this,"layer"+o);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class Ih{constructor(e,n){this.n=e,this.maxCols=n??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const s=[];e.push(s);for(let o=0;o<n;o++){const a=i*n+o;a<this.n&&s.push(a)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const s=[];e.push(s);for(let o=0;o<r;o++){const a=o*n+i;a<this.n&&s.push(a)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function ct(t){return()=>t}const lt=class{static create(e,n,r,i){return new lt(ct(e),ct(n),ct(r),ct(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?ct(i):typeof i=="function"?i:this._passThrough(r)};return new lt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new lt(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new lt(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new lt(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new lt(ct(this.x),ct(this.y),ct(this.width),ct(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let Rn=lt;nd(Rn,"ZERO",lt.create(0,0,0,0));const ED="chromosome_ticks_and_labels",SD={x:"width",y:"height"};function tu(t){return t=="x"?"y":"x"}const nu={x:["bottom","top"],y:["left","right"]},Th=Object.fromEntries(Object.entries(nu).map(([t,e])=>e.map(n=>[n,t])).flat(1));function rn(t){return Th[t]}class ID extends Tt{constructor(e,n,r,i){const s=n=="locus",o={...s?ND:Nh,...TD(n,e),...e};super(s?BD(o,n):Bh(o,n),r,i,`axis_${e.orient}`),this.axisProps=o,this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Th[this.axisProps.orient]=="x"?new nn(n,e):new nn(e,n)}getPerpendicularSize(){return ru(this.axisProps)}isPickingSupported(){return!1}}function ru(t){const e=rn(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}const Nh={values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:"gray",domainDash:null,domainDashOffset:0,domainCap:"square",ticks:!0,tickSize:5,tickWidth:1,tickColor:"gray",tickDash:null,tickDashOffset:0,tickCap:"square",tickCount:null,tickMinStep:null,labels:!0,labelAlign:"center",labelBaseline:"middle",labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:"black",format:null,titleColor:"black",titleFont:"sans-serif",titleFontSize:10,titlePadding:3};function TD(t,e){const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",s="middle",o=e.labelAngle??((n=="top"||n=="bottom")&&r?-90:0);switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(o)>30?(i=o>0==(n=="bottom")?"left":"right",s="middle"):s=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:o,labelBaseline:s}}function Bh(t,e){const n={...t,extent:ru(t)},r=rn(n.orient),i=tu(r),s=n.orient=="bottom"||n.orient=="right"?1:-1,o=n.orient=="bottom"||n.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:o,size:n.domainWidth}}),u=()=>({name:"labels",mark:{type:"text",clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,[i+"Offset"]:(n.tickSize+n.labelPadding)*s,[i]:o,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:{field:"value",type:e},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+"2"]:{value:o-n.tickSize/n.extent*(o?1:-1)}}}),f=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:n.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(n.orient)],text:n.title,color:n.titleColor,[r]:.5,[i]:1-o}}),l=()=>{const g={name:"ticks_and_labels",encoding:{[r]:{field:"value",type:e}},layer:[]};return n.ticks&&g.layer.push(c()),n.labels&&g.layer.push(u()),g},h={resolve:{scale:{[r]:"forced"}},[SD[tu(r)]]:n.extent,data:{dynamic:{type:"axisTicks",channel:r,axis:t}},layer:[]};return n.domain&&h.layer.push(a()),(n.ticks||n.labels)&&h.layer.push(l()),n.title&&h.layer.push(f()),h}const ND={...Nh,chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:"#989898",chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:"normal",chromLabelFontStyle:"normal",chromLabelColor:"black",chromLabelAlign:"left",chromLabelPadding:7};function BD(t,e){const n={...t,extent:ru(t)},r=rn(n.orient),i=tu(r),s=n.orient=="bottom"||n.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[i]:s,[i+"2"]:s-n.chromTickSize/n.extent*(s?1:-1),color:t.chromTickColor,size:n.chromTickWidth}}),a=()=>{let f;switch(n.orient){case"top":f={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":f={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":f={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":f={x:0,angle:90,align:"right",paddingY:4,dy:-n.chromLabelPadding};break;default:f={}}return{name:"chromosome_labels",mark:{type:"text",size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...f},encoding:{[r+"2"]:{field:"continuousEnd",type:e},text:{field:"name"}}}};let u;switch(n.orient){case"bottom":case"top":u={};break;case"left":u={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":u={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:u={}}const c=Bh({...t,...u},e);if(t.chromTicks||t.chromLabels){const f={name:ED,data:{dynamic:{type:"axisGenome",channel:rn(n.orient)}},encoding:{[r]:{field:"continuousStart",type:e,band:0}},layer:[]};if(t.chromTicks&&f.layer.push(o()),t.chromLabels){f.layer.push(a());let l;c.layer.filter(h=>h.name=="ticks_and_labels").forEach(h=>h.layer.filter(g=>g.name=="labels").forEach(g=>{l=g.mark})),l&&(n.orient=="top"||n.orient=="bottom"?(l.viewportEdgeFadeWidthLeft=30,l.viewportEdgeFadeDistanceLeft=40):(l.viewportEdgeFadeWidthBottom=30,l.viewportEdgeFadeDistanceBottom=40))}c.layer.push(f)}return c}class FD extends Tt{constructor(e,n,r,i){const o={...n=="locus"?LD:Fh,...e};super(kD(o,n),r,i,`axisGrid_${e.orient}`),this.axisProps=o,this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}}const Fh={values:null,grid:!1,gridCap:"butt",gridColor:"lightgray",gridDash:null,gridOpacity:1,gridWidth:1,tickCount:null,tickMinStep:null},LD={...Fh,chromGrid:!1,chromGridCap:"butt",chromGridColor:"gray",chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1};function zD(t,e){const n=t,r=rn(n.orient);return{name:"grid_lines",data:{dynamic:{type:"axisTicks",channel:r,axis:t}},mark:{type:"rule",strokeDash:n.gridDash,strokeCap:n.gridCap,color:n.gridColor,size:n.gridWidth,opacity:n.gridOpacity,minBufferSize:300},encoding:{[r]:{field:"value",type:e}}}}function PD(t,e){const n=t,r=rn(n.orient);return{name:"chromosome_lines",data:{dynamic:{type:"axisGenome",channel:r}},mark:{type:"rule",strokeDash:n.chromGridDash,strokeCap:n.chromGridCap,color:n.chromGridColor,size:n.chromGridWidth,opacity:n.chromGridOpacity},encoding:{[r]:{field:"continuousStart",type:e,band:0}}}}function OD(t,e){const n=t,r=rn(n.orient);return{name:"chromosome_fill",data:{dynamic:{type:"axisGenome",channel:r}},mark:{type:"rect"},encoding:{[r]:{field:"continuousStart",type:e,band:0},[r+"2"]:{field:"continuousEnd",band:0},fill:{field:"odd",type:"nominal",scale:{domain:[!1,!0],range:[n.chromGridFillEven??"white",n.chromGridFillOdd??"white"]}},opacity:{field:"odd",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[n.chromGridFillEven?1:0,n.chromGridFillOdd?1:0]}}}}}function kD(t,e){const n={...t},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(OD(n,e)),n.chromGrid&&n.chromGridOpacity>0&&r.push(PD(n,e)),n.grid&&n.gridOpacity>0&&r.push(zD(n,e)),{name:"grid_layers",resolve:{scale:{fill:"independent",opacity:"independent"}},layer:r}}const Lh={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},RD={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},jD={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},UD={start:0,middle:.5,end:1},GD={start:"left",middle:"center",end:"right"};function QD(t){if(!t)return;const e=W(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n={"track-title":RD,overlay:jD}[e.style]??{},r={...Lh,...n,...e};let i={},s={x:0,y:0};const o=UD[r.anchor??"middle"];switch(r.orient){case"top":s={x:o,y:1},i={baseline:"alphabetic",angle:0};break;case"right":s={x:1,y:1-o},i={baseline:"alphabetic",angle:90};break;case"bottom":s={x:o,y:0},i={baseline:"top",angle:0};break;case"left":s={x:0,y:o},i={baseline:"alphabetic",angle:-90};break}const a={...Lh,...i,...n,...e},u={xOffset:0,yOffset:0};switch(r.orient){case"top":u.yOffset=-a.offset;break;case"right":u.xOffset=a.offset;break;case"bottom":u.yOffset=a.offset;break;case"left":u.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...s,...u,text:a.text,align:a.align??GD[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}function HD(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,s=i.deltaMode?120:1;let{x:o,y:a}=t.point;if(r){const u=r.mark.encoders;u.x&&!u.x2&&!u.x.constantValue&&(o=+u.x(r.datum)*e.width+e.x),u.y&&!u.y2&&!u.y.constantValue&&(a=(1-+u.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:o,y:a,xDelta:0,yDelta:0,zDelta:i.deltaY*s/300}):n({x:o,y:a,xDelta:-i.deltaX*s,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let s=i;const o=u=>{n({x:s.clientX,y:s.clientY,xDelta:u.clientX-s.clientX,yDelta:u.clientY-s.clientY,zDelta:0}),s=u},a=u=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a,!1),document.addEventListener("mousemove",o,!1)}}class zh extends On{constructor(n,r,i,s,o){super(n,r,i,s);oe(this,_r);oe(this,$e);oe(this,Ss);oe(this,Is);oe(this,sn);oe(this,$r);oe(this,ei);oe(this,ti);oe(this,Ts);oe(this,Un,1/0);oe(this,Gn,10);oe(this,ze,[]);oe(this,Qn,0);this.spec=n,Wn(this,Gn,n.spacing??10),Wn(this,Un,o),Wn(this,ze,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){n.parent??(n.parent=this),Q(this,ze).push(K(this,_r,gu).call(this,n)),rd(this,Qn)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=Q(this,ze).findIndex(s=>s.view==n);if(i>=0)Q(this,ze)[i]=K(this,_r,gu).call(this,r);else throw new Error("Not my child view!")}get children(){return Q(this,ze).map(n=>n.view)}get childCount(){return Q(this,ze).length}onScalesResolved(){super.onScalesResolved(),K(this,Is,od).call(this)}*[Symbol.iterator](){for(const n of Q(this,ze)){n.background&&(yield n.background);for(const r of Object.values(n.gridLines))yield r;for(const r of Object.values(n.axes))yield r;yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=K(this,sn,ri).call(this,"column"),r=K(this,sn,ri).call(this,"row");return!n.length||!r.length?He.zero():new He(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new nn(K(this,ei,mu).call(this,"column"),K(this,ei,mu).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){if(!this.isVisible())return;this.parent||(r=r.shrink(this.getPadding())),n.pushView(this,r);const s={devicePixelRatio:this.context.glHelper.dpr},o=ih(K(this,$r,pu).call(this,"column"),r.width,s),a=ih(K(this,$r,pu).call(this,"row"),r.height,s),u=new Ih(Q(this,$e,Nt).length,Q(this,Un)??1/0);for(const[c,f]of Q(this,$e,Nt).entries()){const{view:l,axes:h,gridLines:g,background:d,title:p}=f,[m,A]=u.getCellCoords(c),x=o[K(this,ti,Au).call(this,"column",m)],w=a[K(this,ti,Au).call(this,"row",A)],v=l.getSize(),M=l.getPadding().subtract(l.getOverhang()),C=x.location+M.left,b=w.location+M.top,X=(v.width.grow?x.size:v.width.px)-M.width,me=(v.height.grow?w.size:v.height.px)-M.height,R=new Rn(()=>r.x+C,()=>r.y+b,()=>X,()=>me);f.coords=R,d==null||d.render(n,R,i);for(const he of Object.values(g))he.render(n,R,i);const N=WD(l);N&&l.render(n,R,i);for(const[he,se]of Object.entries(h)){const Ee=se.axisProps;let et;const Se=se.getPerpendicularSize();he=="bottom"?et=R.translate(0,R.height+Ee.offset).modify({height:Se}):he=="top"?et=R.translate(0,-Se-Ee.offset).modify({height:Se}):he=="left"?et=R.translate(-Se-Ee.offset,0).modify({width:Se}):he=="right"&&(et=R.translate(R.width+Ee.offset,0).modify({width:Se})),se.render(n,et)}N||l.render(n,R,i),p==null||p.render(n,R,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=Q(this,$e,Nt).find(s=>s.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof pe||i instanceof Tt)&&HD(n,r.coords,s=>K(this,Ts,ad).call(this,r.coords,r.view,s),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Un=new WeakMap,Gn=new WeakMap,ze=new WeakMap,Qn=new WeakMap,_r=new WeakSet,gu=function(n){var i;const r={view:n,background:void 0,axes:{},gridLines:{},coords:Rn.ZERO};if(n instanceof pe||n instanceof Tt){const s=(i=n.spec)==null?void 0:i.view;if(s!=null&&s.fill||s!=null&&s.stroke){const a=new pe(YD(s),this.context,n,"background"+Q(this,Qn));a.blockEncodingInheritance=!0,r.background=a}const o=QD(n.spec.title);if(o){const a=new pe(o,this.context,n,"title"+Q(this,Qn));a.blockEncodingInheritance=!0,r.title=a}}return r},$e=new WeakSet,Nt=function(){return Q(this,ze).filter(n=>n.view.isVisible())},Ss=new WeakSet,sd=function(){return new Ih(Q(this,$e,Nt).length,Q(this,Un)??1/0)},Is=new WeakSet,od=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("GridView (concat, vconcat, hconcat) does not currently support shared axes!");for(const n of Q(this,ze)){const{view:r,axes:i,gridLines:s}=n,o=(a,u,c)=>{const f=a.getAxisProps();if(f!==null){if(!f.orient){for(const l of nu[u])if(!i[l]){f.orient=l;break}if(!f.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(f.title??(f.title=a.getTitle()),!nu[u].includes(f.orient))throw new Error(`Invalid axis orientation "${f.orient}" on channel "${u}"!`);if(i[f.orient])throw new Error(`An axis with the orient "${f.orient}" already exists!`);i[f.orient]=new ID(f,a.scaleResolution.type,this.context,c),(f.grid||f.chromGrid)&&(s[f.orient]=new FD(f,a.scaleResolution.type,this.context,c))}};if(r instanceof pe||r instanceof Tt)for(const a of["x","y"]){const u=r.resolutions.axis[a];u&&o(u,a,r)}if(r instanceof Tt){for(const a of r.children)for(const[u,c]of Object.entries(a.resolutions.axis)){const f=c.getAxisProps();f&&f.orient&&o(c,u,a)}for(const a of r.children)for(const[u,c]of Object.entries(a.resolutions.axis)){const f=c.getAxisProps();f&&!f.orient&&o(c,u,a)}}[...Object.values(i),...Object.values(s)].forEach(a=>a.visit(u=>{u instanceof pe&&u.resolve("scale")}))}},sn=new WeakSet,ri=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",s=(o,a)=>o.map(u=>{const c=Q(this,$e,Nt)[u].axes[r[a]];if(c)return Math.max(c.getPerpendicularSize()+c.axisProps.offset,0);const f=Q(this,$e,Nt)[u].view.getOverhang();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((u,c)=>Math.max(u,c),0);return Q(this,Ss,sd)[n=="column"?"colIndices":"rowIndices"].map(o=>({axisBefore:s(o,0),axisAfter:s(o,1),view:kb(o.map(a=>Q(this,$e,Nt)[a].view.getSize()[i]))}))},$r=new WeakSet,pu=function(n){const r=K(this,sn,ri).call(this,n),i=[];i.push(Zr);for(const[s,o]of r.entries())s>0&&i.push({px:Q(this,Gn),grow:0}),(s==0||this.wrappingFacet)&&i.push(Zr),i.push({px:o.axisBefore,grow:0}),i.push(o.view),i.push({px:o.axisAfter,grow:0}),(s==r.length-1||this.wrappingFacet)&&i.push(Zr);return i},ei=new WeakSet,mu=function(n){let r=0,i=0;const s=(n=="row"&&this.spec.height)??(n=="column"&&this.spec.width);if(s||s===0)return sh(s);const o=K(this,sn,ri).call(this,n);for(const[a,u]of o.entries())a>0&&(i+=Q(this,Gn)),(a==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=u.view.px??0,r+=u.view.grow??0,i+=u.axisAfter,(a==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},ti=new WeakSet,Au=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Ts=new WeakSet,ad=function(n,r,i){for(const[s,o]of Object.entries(VD(r))){if(o.size<=0)continue;const a=n.normalizePoint(i.x,i.y),u=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const f of o)f.zoom(2**i.zDelta,s=="y"?1-a[s]:a[s],s=="x"?c.x:-c.y)}this.context.animator.requestRender()};function YD(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function VD(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const s=n.getScaleResolution(r);s&&s.isZoomable()&&i.add(s)}}),e}function WD(t){let e=!0;return t.visit(n=>{n instanceof pe&&e&&(e=n.mark.properties.clip)}),e}class iu extends zh{constructor(e,n,r,i){super(e,n,r,i,uu(e)?e.columns:au(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=uu(e)?e.concat:au(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class XD{constructor(){this.types=[];const e=n=>(r,i,s,o)=>new n(r,i,s,r.name??o);this.addViewType(ZD,e(Sh)),this.addViewType(ou,e(Tt)),this.addViewType(su,e(pe)),this.addViewType(au,e(iu)),this.addViewType(KD,e(iu)),this.addViewType(uu,e(iu))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const s=this.types.find(o=>o.specGuard(e));if(s)return s.factory(e,n,r,i??"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function su(t){return"mark"in t&&(W(t.mark)||Pe(t.mark))}function ou(t){return"layer"in t&&Pe(t.layer)}function Ph(t){return t&&(su(t)||ou(t))&&"aggregateSamples"in t}function ZD(t){return"import"in t}function au(t){return"vconcat"in t&&Ne(t.vconcat)}function KD(t){return"hconcat"in t&&Ne(t.hconcat)}function uu(t){return"concat"in t&&Ne(t.concat)}const JD={point:vb,rect:mb,rule:Eb,link:Nb,text:Ob};class pe extends On{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const s=JD[this.getMarkType()];if(s)this.mark=new s(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){this.isVisible()&&(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!Le(i))continue;let s=Cn(i.resolutionChannel??r);if(e=="axis"&&!Or(s))continue;let o=this;for(;(o.getConfiguredOrDefaultResolution(s,e)=="forced"||o.parent instanceof On&&["shared","excluded","forced"].includes(o.parent.getConfiguredOrDefaultResolution(s,e)))&&o.getConfiguredOrDefaultResolution(s,e)!="excluded";)o=o.parent;o.resolutions[e][s]||(o.resolutions[e][s]=e=="scale"?new bD(s):new MD(s)),Or(r)?o.resolutions[e][s].pushUnitView(this,r):e=="scale"&&o.resolutions[e][s].pushUnitView(this,r)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(kr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Le(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??e);return Dh(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type??"nominal",i=a=>{let u;const c=this.mark.encoding[a];if(c){const f=this.context.accessorFactory.createAccessor(c);if(f)if(u=Dh(r),f.constant)u.extend(f({}));else{const l=this.getCollector();l!=null&&l.completed&&l.visitData(h=>u.extend(f(h)))}}return u};let s=i(e);const o=ha[e];if(o){const a=i(o);a&&s.extendAll(a)}return s}getZoomLevel(){const e=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return Pr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){if(Ph(this.spec))for(const e of this.spec.aggregateSamples){const n=e.transform??[];n.length&&vn(n).type!="collect"&&n.push({type:"collect"}),n.push({type:"mergeFacets"}),e.transform=n,e.encoding={...e.encoding??{},sample:null};const r=this.context.createView(e,this,"summaryView");r.getFacetFields=i=>{},this.sampleAggregateViews.push(r)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*cu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of cu(r,[...e,n]))yield i;else yield[[...e,n],r]}class Oh extends q{get behavior(){return Ka}constructor(e){super(),this.params=e??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Lt([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){wb(e)&&(this._data=[],this.facetBatches.set(Ke(e.facetId),this._data))}complete(){var i,s;const e=(i=this.params)==null?void 0:i.sort,n=e?Du(e.field,e.order):void 0,r=o=>{n&&o.sort(n)};if((s=this.params.groupby)!=null&&s.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const o=this.params.groupby.map(u=>j(u)),a=di(this._data,...o);this.facetBatches.clear();for(const[u,c]of cu(a))this.facetBatches.set(u,c)}for(const o of this.facetBatches.values())r(o);if(this.children.length)for(const[o,a]of this.facetBatches.entries()){if(o){const u={type:"facet",facetId:o};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}super.complete();for(const o of this.observers)o(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class Ms{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,s=this.values[i];if(n>=s)break;this.ids[r]=this.ids[i],this.values[r]=s,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let s=0;for(;s<i;){let o=(s<<1)+1;const a=o+1;let u=this.ids[o],c=this.values[o];const f=this.values[a];if(a<this.length&&f<c&&(o=a,u=this.ids[a],c=f),c>=r)break;this.ids[s]=u,this.values[s]=c,s=o}this.ids[s]=n,this.values[s]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class qD extends q{get behavior(){return ut}constructor(e){super(),this.params=e,this.startAccessor=j(e.start),this.endAccessor=j(e.end),this.chromAccessor=e.chrom?j(e.chrom):n=>{},this.weightAccessor=e.weight?j(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Ms}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,s=this.endAccessor,o=this.chromAccessor,a=this.weightAccessor;let u,c,f,l=0,h;const g=this.ends;g.clear();const d=(m,A,x)=>{if(m==A)return;let w=!1;u&&(u[e]===x?(u[n]=A,w=!0):u[e]!=0&&this._propagate(u)),w||(u=this.createSegment(m,A,x,f))},p=()=>{let m;for(;(m=g.peekValue())!==void 0;)d(h,m,l),h=m,l-=g.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=m=>{const A=i(m);let x;for(;(x=g.peekValue())!==void 0&&x<A;)d(h,x,l),h=x,l-=g.pop();if(r){let v=o(m);v!==c&&(p(),f=v,c=f)}h!==void 0&&d(h,A,l),h=A;const w=a(m);l+=w,g.push(w,s(m))},this.complete=()=>{p(),super.complete()}}}function _D(t,e,n=0,r=t.length){const i=new Ms,s=r-n;let o;for(o=0;o<e&&o<s;o++)i.push(o,t[n+o]);for(;o<s;o++){const c=t[n+o];c>=i.peekValue()&&(i.push(o,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class $D{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const s=this._findSlot(e,n,i);return s>=0?s:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,s=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[s]=n,this.upperLimits[s]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=s,!0}}class ev extends q{get behavior(){return Ka}constructor(e,n){if(super(),this.params=e,this._data=[],this.channel=e.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=j(this.params.pos),this.posBisector=hi(this.posAccessor),this.scoreAccessor=j(this.params.score),this.widthAccessor=j(this.params.width),this.laneAccessor=this.params.lane?j(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new $D(200));this.schedule(),super.complete()}_filterAndPropagate(){var o;super.reset();const e=this.resolution.getScale(),n=(o=this.resolution.members[0].view.coords)==null?void 0:o[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,s=_D(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of s){const u=this._data[a],c=e(this.posAccessor(u))*n,f=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-f,c+f)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class tv extends q{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=ca(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const nv="0".charCodeAt(0);function*rv(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const s=t.charCodeAt(i);s==n?(yield r,r=0):r=r*10+s-nv}yield r}class iv extends q{get behavior(){return ut}constructor(e){super();const n=j(e.exons??"exons"),r=j(e.start??"start"),[i,s]=e.as||["exonStart","exonEnd"];this.handle=o=>{let a=r(o),u=a,c=!0;const f=n(o);for(const l of rv(f)){if(c)u=a+l;else{a=u+l;const h=Object.assign({},o);h[i]=u,h[s]=a,this._propagate(h)}c=!c}}}}class sv extends q{get behavior(){return ut}constructor(e){super();const n=Ke(e.field).map(s=>j(s)),r=Ke(e.separator),i=Ke(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{if(n.some(u=>!u(s)))return;const o=n.map((u,c)=>u(s).split(r[c]));ov(o,s);const a=o[0].length;for(let u=0;u<a;u++){const c=Object.assign({},s);for(let f=0;f<n.length;f++)c[i[f]]=o[f][u];this._propagate(c)}}}}function ov(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class av extends q{get behavior(){return It}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=ca(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class kh extends q{get behavior(){return It}constructor(e,n){super();const r=e.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const s=j(e.chrom),o=Ke(e.pos).map(d=>j(d)),a=Ke(e.as);if(o.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Ke(e.offset);let c;if(u.length==0)c=new Array(o.length).fill(0);else if(u.length==1)c=new Array(o.length).fill(u[0]);else if(u.length==o.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((d,p)=>`datum[${JSON.stringify(d)}] = chromOffset + +posAccessors[${p}](datum) - ${c[p]};`).join(`
|
|
148
|
-
`));let l,h=0;const g=d=>{if(d!==l){if(h=i.cumulativeChromPositions.get(d),h===void 0)throw new Error("Unknown chromosome/contig: "+d);l=d}return h};this.handle=d=>{f(d,g(s(d)),o),this._propagate(d)}}}const Rh={pages:["Lato-Regular.png"],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153000000000002,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313000000000002,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182000000000002,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176000000000002,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874000000000002,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089000000000002,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278000000000002,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:"Lato Regular",size:42,bold:0,italic:0,charset:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]};class uv extends q{get behavior(){return It}constructor(e){super();const n=Wa(Rh),r=j(e.field),i=e.as,s=e.fontSize;this.handle=o=>{const a=r(o);a!==void 0?o[i]=n.measureWidth(a,s):o[i]=0,this._propagate(o)}}}const cv=65536;class lv extends q{get behavior(){return It}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=ye(e.spacing)?e.spacing:1,i=j(e.start),s=j(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const o=new Float64Array(cv),a=j(e.preference),u=e.preferredOrder;let c=1/0;this.handle=f=>{const l=i(f);l<c&&o.fill(-1/0),c=l;const h=u.indexOf(a(f));let g=-1;if(h>=0&&o[h]<l)g=h;else{const d=i(f);for(g=0;g<o.length&&!(o[g]<d);g++);if(g>=o.length)throw new Error("Out of lanes!")}o[g]=s(f)+r,f[n]=g,this._propagate(f)}}else{const o=new Ms,a=new Ms;let u=-1/0,c=0;this.handle=f=>{const l=i(f);for(;o.length&&(o.peekValue()<=l||l<u);){const g=o.pop();a.push(g,g)}u=l;let h=a.pop();h===void 0&&(h=c++),f[n]=h,this._propagate(f),o.push(h,s(f)+r)}}}}class fv extends q{get behavior(){return ut}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>j(i)),r=e.as?e.as:n.map(Z);this.handle=i=>{const s={};for(let o=0;o<n.length;o++)s[r[o]]=n[o](i);this._propagate(s)}}}class hv extends q{get behavior(){return It}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=j(e.field);this.handle=s=>{const o=i(s);if(W(o)){const a=o.match(n);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let u=0;u<r.length;u++)s[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)s[r[u]]=void 0;else throw new Error(`"${o}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof o}, field content: "${o}".`);this._propagate(s)}}}class dv extends q{get behavior(){return ut}constructor(e){super();const n=Ke(e.columnRegex).map(h=>new RegExp(h)),r=Ke(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,s=e.asKey||"sample";let o,a,u;const c=h=>{var m;const g=Object.keys(h),d=new Map;for(const[A,x]of n.entries())for(const w of g){const v=(m=x.exec(w))==null?void 0:m[1];if(v!==void 0){let M=d.get(v);M||(M=[],d.set(v,M)),M[A]=w}}o=[...d.entries()],a=g.filter(A=>!n.some(x=>x.test(A))&&!(i&&i.test(A)));const p=[...a.map(A=>JSON.stringify(A)+": datum["+JSON.stringify(A)+"]"),JSON.stringify(s)+": sampleId",...r.map(A=>JSON.stringify(A)+": null")];u=new Function("datum","sampleId",`return {
|
|
149
|
-
`+
|
|
147
|
+
*/const b6="locus",y6="index";var w6=5;function x6(e){const t=e.type;return!e.bins&&(t===fa||t===Go||t===Ho)}function sy(e){return Bt(e)&&![_n,y6,b6].includes(e)}function uy(e){return e||{warn:(t,...n)=>console.warn(t,...n)}}var A6=Eu(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function fy(e,t,n){n=uy(n);for(const r in e)if(!A6[r]){if(r==="padding"&&sy(t.type))continue;At(t[r])?t[r](e[r]):n.warn("Unsupported scale property: "+r)}M6(t,e,I6(t,e,S6(t,e,n)))}function v6(e,t){const n=E6(e),r=ge(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return fy(e,i,t),i}function E6(e){var t=e.type,n="",r;return t===_n?_n+"-"+fa:(C6(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?_n+"-":r===3?ca+"-":""),(n+t||fa).toLowerCase())}function C6(e){const t=e.type;return Bt(t)&&t!==Q1&&t!==V1&&(e.scheme||e.range&&e.range.length&&e.range.every(ze))}function S6(e,t,n){if(!e.domain)return 0;n=uy(n);var r=D6(e,t.domainRaw,n);if(r>-1)return r;var i=t.domain,a=e.type,o=t.zero||t.zero===void 0&&x6(e),s,f;return i?(sy(a)&&t.padding&&i[0]!==sn(i)&&(i=_6(a,i,t.range,t.padding,t.exponent,t.constant)),(o||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(s=(i=i.slice()).length-1||1,o&&(i[0]>0&&(i[0]=0),i[s]<0&&(i[s]=0)),t.domainMin!=null&&(i[0]=t.domainMin),t.domainMax!=null&&(i[s]=t.domainMax),t.domainMid!=null&&(f=t.domainMid,(f<i[0]||f>i[s])&&n.warn("Scale domainMid exceeds domain min or max.",f),i.splice(s,0,f))),e.domain(cy(a,i,n)),a===nh&&e.unknown(t.domainImplicit?El:void 0),t.nice&&e.nice&&e.nice(t.nice!==!0&&ay(e,t.nice)||null),i.length):0}function D6(e,t,n){return t?(e.domain(cy(e.type,t,n)),t.length):-1}function _6(e,t,n,r,i,a){var o=Math.abs(sn(n)-n[0]),s=o/(o-2*r),f=e===vr?yg(t,null,s):e===Ho?jc(t,null,s,.5):e===Go?jc(t,null,s,i||1):e===$u?Rv(t,null,s,a||1):bg(t,null,s);return t=t.slice(),t[0]=f[0],t[t.length-1]=f[1],t}function cy(e,t,n){if(J1(e)){var r=Math.abs(t.reduce(function(i,a){return i+(a<0?-1:a>0?1:0)},0));r!==t.length&&n.warn("Log scale domain includes zero: "+vu(t))}return t}function I6(e,t,n){let r=t.bins;if(r&&!Ut(r)){const i=(r.start==null||r.stop==null)&&e.domain(),a=r.start==null?i[0]:r.start,o=r.stop==null?sn(i):r.stop,s=r.step;s||Le("Scale bins parameter missing step property."),r=bo(a,o+s,s)}return r?e.bins=r:e.bins&&delete e.bins,e.type===ih&&(r?!t.domain&&!t.domainRaw&&(e.domain(r),n=r.length):e.bins=e.domain()),n}function M6(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=T6(r,t,n);else if(t.scheme&&(a=N6(r,t,n),At(a))){if(e.interpolator)return e.interpolator(a);Le(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&tf(r))return e.interpolator(nf(a0(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate($1(t.interpolate,t.interpolateGamma)):At(e.round)?e.round(i):At(e.rangeRound)&&e.interpolate(i?Uo:xr),a&&e.range(a0(a,t.reverse))}function T6(e,t,n){e!==q1&&e!==rh&&Le("Only band and point scales support rangeStep.");var r=(t.paddingOuter!=null?t.paddingOuter:t.padding)||0,i=e===rh?1:(t.paddingInner!=null?t.paddingInner:t.padding)||0;return[0,t.rangeStep*eh(n,i,r)]}function N6(e,t,n){var r=t.schemeExtent,i,a;return Ut(t.scheme)?a=nf(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),a=oh(i),a||Le(`Unrecognized scheme name: ${t.scheme}`)),n=e===Y1?n+1:e===ih?n-1:e===th||e===Z1?+t.schemeCount||w6:n,tf(e)?ly(a,r,t.reverse):At(a)?U4(ly(a,r),n):e===nh?a:a.slice(0,n)}function ly(e,t,n){return At(e)&&(t||n)?P4(e,a0(t||[0,1],n)):e}function a0(e,t){return t?e.slice().reverse():e}const hy=nt(",d");function B6(e,t){return e.chrom+":"+hy(Math.floor(e.pos+1))+"-"+(e.chrom!=t.chrom?t.chrom+":":"")+hy(Math.ceil(t.pos))}const F6="https://genomespy.app/data/genomes/";class k6{constructor(t){if(this.config=t,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(t){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:t+"/"+this.config.baseUrl:this.baseUrl=F6;try{this.setChromSizes(L6(await Ou({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}hasChrPrefix(){return this.chromosomes.some(t=>t.name.startsWith("chr"))}setChromSizes(t){let n=0;this.startByIndex=[0];for(let r=0;r<t.length;r++){this.startByIndex.push(n);const i=t[r].size,a={...t[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(a);const o=a.name.replace(/^chr/i,"");for(const s of["chr"+o,"CHR"+o,"Chr"+o,a.number,""+a.number,o,a.name])this.cumulativeChromPositions.set(s,n),this.chromosomesByName.set(s,a);n+=a.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(t,n){let r=this.cumulativeChromPositions.get(t);if(r===void 0)throw new Error("Unknown chromosome/contig: "+t);return r+ +n}toChromosome(t){if(t>this.totalSize)return;t=Math.floor(t);const n=Xi(this.startByIndex,t)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(t){const n=this.toChromosome(t);if(n)return{chrom:n.name,pos:Math.floor(t)-n.continuousStart}}getChromosome(t){return this.chromosomesByName.get(t)}formatInterval(t){return B6(...this.toChromosomalInterval(t))}toChromosomalInterval(t){const n=this.toChromosomal(t[0]+.5),r=this.toChromosomal(t[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(t){var i;let[n,r]=t;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}toDiscreteChromosomeIntervals(t){const n=t[0],r=t[1],i=[];if(n.chrom===r.chrom)i.push({chrom:n.chrom,startPos:n.pos,endPos:r.pos});else{const a=this.chromosomes.findIndex(s=>s.name===n.chrom),o=this.chromosomes.findIndex(s=>s.name===r.chrom);i.push({chrom:n.chrom,startPos:n.pos,endPos:this.chromosomes[a].size});for(let s=a+1;s<o;s++)i.push({chrom:this.chromosomes[s].name,startPos:0,endPos:this.chromosomes[s].size});i.push({chrom:r.chrom,startPos:0,endPos:r.pos})}return i}continuousToDiscreteChromosomeIntervals(t){return this.toDiscreteChromosomeIntervals([this.toChromosomal(t[0]),this.toChromosomal(t[1])])}parseInterval(t){const n=t.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(s=>s===void 0)){const s=this.getChromosome(r);return s?[s.continuousStart,s.continuousEnd]:void 0}const i=n[3]||r,a=parseInt(n[2].replace(/,/g,"")),o=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):a;return[this.toContinuous(r,a-1),this.toContinuous(i,o)]}}}function L6(e){return nE(e).filter(t=>/^chr[0-9A-Z]+$/.test(t[0])).map(([t,n])=>({name:t,size:parseInt(n)}))}function dy(e){return on(e)&&"chrom"in e}function z6(e){return e.every(dy)}class bs extends Array{constructor(){super(),this.type=void 0}extend(t){return this}extendAll(t){if(t instanceof bs&&t.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(const n of t)this.extend(n);return this}extendAllWithAccessor(t,n){for(const r of t)this.extend(n(r));return this}}class o0 extends bs{constructor(){super(),this.type="quantitative"}extend(t){return t==null||Number.isNaN(t)?this:(t=+t,this.length?t<this[0]?this[0]=t:t>this[1]&&(this[1]=t):(this.push(t),this.push(t)),this)}}class gy extends bs{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(t){return t==null||Number.isNaN(t)?this:(this.uniqueValues.has(t)||(this.uniqueValues.add(t),this.push(t)),this)}}class py extends gy{constructor(){super(),this.type="nominal"}}class R6 extends bs{constructor(t){super();let n=0;for(let r=1;r<t.length;r++)n+=Math.sign(t[r]-t[r-1]);if(Math.abs(n)!=t.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(t));t.forEach(r=>this.push(r))}extend(t){if(this.includes(t))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const my={quantitative:o0,index:o0,locus:o0,nominal:py,ordinal:gy};function by(e,t){if(e=="quantitative"&&O6(t)){const n=new R6(t);return n.type=e,n}else if(my[e]){const n=new my[e];return n.type=e,t&&n.extendAll(t),n}throw new Error("Unknown type: "+e)}function O6(e){return e&&e.length>0&&e.length!=2&&e.every(t=>typeof t=="number")}function P6(e){return((e*=2)<=1?e*e:--e*(2-e)+1)/2}const yy="quantitative",wy="ordinal",xy="nominal",Ay="locus",U6="index";class j6{constructor(t){this.channel=t,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(t,n){if(t!="domain")throw new Error("Unsupported event type: "+t);this._domainListeners.add(n)}removeEventListener(t,n){if(t!="domain")throw new Error("Unsupported event type: "+t);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const t of this._domainListeners.values())t({type:"domain",scaleResolution:this})}pushUnitView(t,n){var o;const r=bh(t,n),i=r.type,a=(o=r==null?void 0:r.scale)==null?void 0:o.name;if(a){if(this.name!==void 0&&a!=this.name)throw new Error(`Shared scales have conflicting names: "${a}" vs. "${this.name}"!`);this.name=a}if(!this.type)this.type=i;else if(i!==this.type&&!is(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:t,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return Ca(this,"mergedScaleProps",()=>{const t=this.members.map(n=>bh(n.view,n.channel).scale).filter(n=>n!==void 0);return Rf(t,"scale",["domain"])})}getScaleProps(){return Ca(this,"scaleProps",()=>{const t=this._getMergedScaleProps();if(t===null||t.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...t};n.type||(n.type=G6(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:gi(n.type)?n.domain=new py:n.scheme&&(n.domain=[0,1]),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&gi(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),H6(n,this.channel),n})}getInitialDomain(){return this.getConfiguredDomain()??(this.type==Ay?this.getGenome().getExtent():this.getDataDomain())}getConfiguredDomain(){return this._reduceDomains(t=>is(t.channel)?void 0:t.view.getConfiguredDomain(t.channel))}getDataDomain(){return this._reduceDomains(t=>is(t.channel)?void 0:t.view.extractDataDomain(t.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Qb(this,"scaleProps");const t=this.getScaleProps();fy(t,this._scale),Bt(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const t=this.getScaleProps(),n=v6(t);return this._scale=n,_C(n)&&n.genome(this.getGenome()),Bt(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var t;return((t=this.getGenome())==null?void 0:t.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return this.isZoomable()&&sh(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!bm(this.channel))return!1;const t=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(t)?!!this.getScaleProps().zoom:!1}zoom(t,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),a=i.domain();let o=[...a],s=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(s+=i.align()),i.type){case"linear":case"index":case"locus":o=kv(o,r||0),o=bg(o,s,t);break;case"log":o=Lv(o,r||0),o=yg(o,s,t);break;case"pow":case"sqrt":{const f=i;o=zv(o,r||0,f.exponent()),o=jc(o,s,t,f.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(o=Ov(o,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(f=>o[f]!=a[f])?(i.domain(o),this._notifyDomainListeners(),!0):!1}async zoomTo(t,n=!1){var s;if(xu(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(t),i=(s=this.members[0])==null?void 0:s.view.context.animator,a=this.getScale(),o=a.domain();if(n>0&&o.length==2){const f=o[1]-o[0],u=o[0]+f/2,c=r[1]-r[0],l=r[0]+c/2,h=w1([u,0,f],[l,0,c]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:P6,onUpdate:d=>{const[p,,b]=h(d);a.domain([p-b/2,p+b/2]),this._notifyDomainListeners()}}),a.domain(r),this._notifyDomainListeners()}else a.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const t=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=t[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?Au(this._zoomExtent)/Au(this.getScale().domain()):1}_getZoomExtent(){const t=this.getScaleProps(),n=t.zoom;if(Q6(n)&&Ut(n.extent))return this.fromComplexInterval(n.extent);if(n)return t.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(t){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),rs(n)?r.nice=!this.isExplicitDomain():yi(n)?r.scheme=t==xy?"tableau10":t==wy?"blues":"viridis":cf(n)?r.range=wm(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const t=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!t)throw new Error("No genome has been defined!");return t}invertToComplex(t){const n=this.getScale();if("invert"in n){const r=n.invert(t);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(t){const n=this.getGenome();return n?n.toChromosomal(t):t}fromComplex(t){return dy(t)?this.getGenome().toContinuous(t.chrom,t.pos):t}fromComplexInterval(t){return this.type==="locus"&&z6(t)?this.getGenome().toContinuousInterval(t):t}_getViewPaths(){return this.members.map(t=>t.view.getPathString()).join(", ")}_reduceDomains(t){const n=this.members.map(t).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function G6(e,t){if(t==U6||t==Ay){if(bm(e))return t;throw new Error(`${e} does not support ${t} data type. Only positional channels do.`)}const n={x:["band","band","linear"],y:["band","band","linear"],size:[void 0,"point","linear"],opacity:[void 0,"point","linear"],fillOpacity:[void 0,"point","linear"],strokeOpacity:[void 0,"point","linear"],color:["ordinal","ordinal","linear"],fill:["ordinal","ordinal","linear"],stroke:["ordinal","ordinal","linear"],strokeWidth:[void 0,void 0,"linear"],shape:["ordinal","ordinal",void 0],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(e)?"null":n[e]?n[e][[xy,wy,yy].indexOf(t)]:t==yy?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${e}" is not compatible with "${t}" data type. Use of a proper scale may be needed.`);return i}function H6(e,t){rs(t)&&e.type!=="ordinal"&&(e.range=[0,1]),t=="opacity"&&Bt(e.type)&&(e.clamp=!0)}function Q6(e){return on(e)}function s0(...e){for(const t of e)if(t!==void 0)return t}class V6{constructor(t){this.channel=t,this.members=[]}get scaleResolution(){var t;return(t=ha(this.members))==null?void 0:t.view.getScaleResolution(this.channel)}pushUnitView(t,n){const r=t.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:t,channel:n})}getAxisProps(){return Ca(this,"axisProps",()=>{const t=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return t.length>0&&t.some(n=>n===null)?null:Rf(t.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const t=a=>{var s;const o=bh(a.view,a.channel);if(!ln(o))return{member:a,explicitTitle:s0((s=o.axis)==null?void 0:s.title,o.title),implicitTitle:s0(es(o)?o.field:void 0,yh(o)?o.expr:void 0)}},n=this.members.map(t),r=n.filter(a=>{var o;if(is(a.member.channel)&&!a.explicitTitle){const s=da(a.member.channel);return((o=n.find(f=>f.member.view==a.member.view&&f.member.channel==s))==null?void 0:o.explicitTitle)===void 0}return!0}),i=new Set(r.map(a=>s0(a.explicitTitle,a.implicitTitle)).filter(ze));return i.size?[...i].join(", "):null}}class vy extends ry{constructor(t,n,r,i){super(t,n,r,i),this.spec=t}}class Nr extends Sa{constructor(t,n,r,i){super(t,n,r,i),this.spec=t,this.children=(t.layer||[]).map((a,o)=>{if(d0(a)||h0(a))return n.createView(a,this,"layer"+o);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const t of this.children)yield t}render(t,n,r={}){if(this.isConfiguredVisible()){t.pushView(this,n);for(const i of this.children)i.render(t,n,r);t.popView(this)}}propagateInteractionEvent(t){this.handleInteractionEvent(void 0,t,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(t),!t.stopped&&this.handleInteractionEvent(void 0,t,!1)}}class Ey{constructor(t,n){this.n=t,this.maxCols=n??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const t=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const a=[];t.push(a);for(let o=0;o<n;o++){const s=i*n+o;s<this.n&&a.push(s)}}return t}get colIndices(){const t=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const a=[];t.push(a);for(let o=0;o<r;o++){const s=o*n+i;s<this.n&&a.push(s)}}return t}getCellIndex(t,n){let r=0;if(this.maxCols==1/0)r=n==0?t:void 0;else{if(t>=this.maxCols)return;r=n*this.nCols+t}return r<this.n?r:void 0}getCellCoords(t){if(!(t<0||t>=this.n))return[t%this.nCols,Math.floor(t/this.nCols)]}}function er(e){return()=>e}const fr=class{static create(t,n,r,i){return new fr(er(t),er(n),er(r),er(i))}_offset(t,n){const r=this["_"+t];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(t){return this._offset(t,0)}constructor(t,n,r,i){this._x=t,this._y=n,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(t){return t?this===t||this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height:!1}modify(t){if(!Object.keys(t).length)return this;const n=r=>{const i=t[r];return typeof i=="number"?er(i):typeof i=="function"?i:this._passThrough(r)};return new fr(n("x"),n("y"),n("width"),n("height"))}translate(t,n){return t===0&&n===0?this:new fr(this._offset("x",t),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(t){return this.translate(t.x,t.y)}expand(t,n=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new fr(t.left?this._offset("x",-t.left*n):this._passThrough("x"),t.top?this._offset("y",-t.top*n):this._passThrough("y"),t.width?this._offset("width",t.width*n):this._passThrough("width"),t.height?this._offset("height",t.height*n):this._passThrough("height"))}shrink(t){return this.expand(t,-1)}intersect(t){return this===t?this:new fr(()=>Math.max(this.x,t.x),()=>Math.max(this.y,t.y),()=>Math.min(this.x2,t.x2)-Math.max(this.x,t.x),()=>Math.min(this.y2,t.y2)-Math.max(this.y,t.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new fr(er(this.x),er(this.y),er(this.width),er(this.height))}containsPoint(t,n){return t>=this.x&&t<this.x2&&n>=this.y&&n<this.y2}normalizePoint(t,n){return{x:(t-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let _a=fr;Vn(_a,"ZERO",fr.create(0,0,0,0));const Z6="chromosome_ticks_and_labels",Y6={x:"width",y:"height"};function u0(e){return e=="x"?"y":"x"}const f0={x:["bottom","top"],y:["left","right"]},Cy=Object.fromEntries(Object.entries(f0).map(([e,t])=>t.map(n=>[n,e])).flat(1));function Ci(e){return Cy[e]}class q6 extends Nr{constructor(t,n,r,i){const a=n=="locus",o={...a?X6:Sy,...W6(n,t),...t};super(a?K6(o,n):Dy(o,n),r,i,`axis_${t.orient}`),this.axisProps=o,this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const t={px:this.getPerpendicularSize()},n={grow:1};return Cy[this.axisProps.orient]=="x"?new Ei(n,t):new Ei(t,n)}getPerpendicularSize(){return c0(this.axisProps)}isPickingSupported(){return!1}}function c0(e){const t=Ci(e.orient);let n=e.ticks&&e.tickSize||0;return e.labels&&(n+=e.labelPadding,t=="x"?n+=e.labelFontSize:n+=30),e.title&&(n+=e.titlePadding+e.titleFontSize),n=Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,n)),n}const Sy={values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:"gray",domainDash:null,domainDashOffset:0,domainCap:"square",ticks:!0,tickSize:5,tickWidth:1,tickColor:"gray",tickDash:null,tickDashOffset:0,tickCap:"square",tickCount:null,tickMinStep:null,labels:!0,labelAlign:"center",labelBaseline:"middle",labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:"black",format:null,titleColor:"black",titleFont:"sans-serif",titleFontSize:10,titlePadding:3};function W6(e,t){const n=t.orient,r=e=="nominal"||e=="ordinal";let i="center",a="middle",o=t.labelAngle??((n=="top"||n=="bottom")&&r?-90:0);switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(o)>30?(i=o>0==(n=="bottom")?"left":"right",a="middle"):a=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:o,labelBaseline:a}}function Dy(e,t){const n={...e,extent:c0(e)},r=Ci(n.orient),i=u0(r),a=n.orient=="bottom"||n.orient=="right"?1:-1,o=n.orient=="bottom"||n.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:o,size:n.domainWidth}}),f=()=>({name:"labels",mark:{type:"text",clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,[i+"Offset"]:(n.tickSize+n.labelPadding)*a,[i]:o,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:{field:"value",type:t},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+"2"]:{value:o-n.tickSize/n.extent*(o?1:-1)}}}),c=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:n.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(n.orient)],text:n.title,color:n.titleColor,[r]:.5,[i]:1-o}}),l=()=>{const d={name:"ticks_and_labels",encoding:{[r]:{field:"value",type:t}},layer:[]};return n.ticks&&d.layer.push(u()),n.labels&&d.layer.push(f()),d},h={resolve:{scale:{[r]:"forced"}},[Y6[u0(r)]]:n.extent,data:{lazy:{type:"axisTicks",channel:r,axis:e}},layer:[]};return n.domain&&h.layer.push(s()),(n.ticks||n.labels)&&h.layer.push(l()),n.title&&h.layer.push(c()),h}const X6={...Sy,chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:"#989898",chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:"normal",chromLabelFontStyle:"normal",chromLabelColor:"black",chromLabelAlign:"left",chromLabelPadding:7};function K6(e,t){const n={...e,extent:c0(e)},r=Ci(n.orient),i=u0(r),a=n.orient=="bottom"||n.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:e.chromTickDash,strokeDashOffset:e.chromTickDashOffset,[i]:a,[i+"2"]:a-n.chromTickSize/n.extent*(a?1:-1),color:e.chromTickColor,size:n.chromTickWidth}}),s=()=>{let c;switch(n.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-n.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:{type:"text",size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:e.chromLabelAlign,baseline:"alphabetic",clip:!1,...c},encoding:{[r+"2"]:{field:"continuousEnd",type:t},text:{field:"name"}}}};let f;switch(n.orient){case"bottom":case"top":f={};break;case"left":f={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":f={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:f={}}const u=Dy({...e,...f},t);if(e.chromTicks||e.chromLabels){const c={name:Z6,data:{lazy:{type:"axisGenome",channel:Ci(n.orient)}},encoding:{[r]:{field:"continuousStart",type:t,band:0}},layer:[]};if(e.chromTicks&&c.layer.push(o()),e.chromLabels){c.layer.push(s());let l;u.layer.filter(h=>h.name=="ticks_and_labels").forEach(h=>h.layer.filter(d=>d.name=="labels").forEach(d=>{l=d.mark})),l&&(n.orient=="top"||n.orient=="bottom"?(l.viewportEdgeFadeWidthLeft=30,l.viewportEdgeFadeDistanceLeft=40):(l.viewportEdgeFadeWidthBottom=30,l.viewportEdgeFadeDistanceBottom=40))}u.layer.push(c)}return u}class J6 extends Nr{constructor(t,n,r,i){const o={...n=="locus"?$6:_y,...t};super(rT(o,n),r,i,`axisGrid_${t.orient}`),this.axisProps=o,this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}}const _y={values:null,grid:!1,gridCap:"butt",gridColor:"lightgray",gridDash:null,gridOpacity:1,gridWidth:1,tickCount:null,tickMinStep:null},$6={..._y,chromGrid:!1,chromGridCap:"butt",chromGridColor:"gray",chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1};function eT(e,t){const n=e,r=Ci(n.orient);return{name:"grid_lines",data:{lazy:{type:"axisTicks",channel:r,axis:e}},mark:{type:"rule",strokeDash:n.gridDash,strokeCap:n.gridCap,color:n.gridColor,size:n.gridWidth,opacity:n.gridOpacity,minBufferSize:300},encoding:{[r]:{field:"value",type:t}}}}function tT(e,t){const n=e,r=Ci(n.orient);return{name:"chromosome_lines",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rule",strokeDash:n.chromGridDash,strokeCap:n.chromGridCap,color:n.chromGridColor,size:n.chromGridWidth,opacity:n.chromGridOpacity},encoding:{[r]:{field:"continuousStart",type:t,band:0}}}}function nT(e,t){const n=e,r=Ci(n.orient);return{name:"chromosome_fill",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rect"},encoding:{[r]:{field:"continuousStart",type:t,band:0},[r+"2"]:{field:"continuousEnd",band:0},fill:{field:"odd",type:"nominal",scale:{domain:[!1,!0],range:[n.chromGridFillEven??"white",n.chromGridFillOdd??"white"]}},opacity:{field:"odd",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[n.chromGridFillEven?1:0,n.chromGridFillOdd?1:0]}}}}}function rT(e,t){const n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(nT(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(tT(n,t)),n.grid&&n.gridOpacity>0&&r.push(eT(n,t)),{name:"grid_layers",resolve:{scale:{fill:"independent",opacity:"independent"}},layer:r}}const Iy={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},iT={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},aT={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},oT={start:0,middle:.5,end:1},sT={start:"left",middle:"center",end:"right"};function uT(e){if(!e)return;const t=ze(e)?{text:e}:e;if(!t.text||t.orient=="none")return;const n={"track-title":iT,overlay:aT}[t.style]??{},r={...Iy,...n,...t};let i={},a={x:0,y:0};const o=oT[r.anchor??"middle"];switch(r.orient){case"top":a={x:o,y:1},i={baseline:"alphabetic",angle:0};break;case"right":a={x:1,y:1-o},i={baseline:"alphabetic",angle:90};break;case"bottom":a={x:o,y:0},i={baseline:"top",angle:0};break;case"left":a={x:0,y:o},i={baseline:"alphabetic",angle:-90};break}const s={...Iy,...i,...n,...t},f={xOffset:0,yOffset:0};switch(r.orient){case"top":f.yOffset=-s.offset;break;case"right":f.xOffset=s.offset;break;case"bottom":f.yOffset=s.offset;break;case"left":f.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...a,...f,text:s.text,align:s.align??sT[s.anchor],angle:s.angle,baseline:s.baseline,dx:s.dx,dy:s.dy,color:s.color,font:s.font,size:s.fontSize,fontStyle:s.fontStyle,fontWeight:s.fontWeight}}}function fT(e,t,n,r){if(e.type=="wheel"){e.uiEvent.preventDefault();const i=e.uiEvent,a=i.deltaMode?120:1;let{x:o,y:s}=e.point;if(r){const f=r.mark.encoders;f.x&&!f.x2&&!f.x.constantValue&&(o=+f.x(r.datum)*t.width+t.x),f.y&&!f.y2&&!f.y.constantValue&&(s=(1-+f.y(r.datum))*t.height+t.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:o,y:s,xDelta:0,yDelta:0,zDelta:i.deltaY*a/300}):n({x:o,y:s,xDelta:-i.deltaX*a,yDelta:0,zDelta:0})}else if(e.type=="mousedown"&&e.uiEvent.button===0){const i=e.uiEvent;i.preventDefault();let a=i;const o=f=>{n({x:a.clientX,y:a.clientY,xDelta:f.clientX-a.clientX,yDelta:f.clientY-a.clientY,zDelta:0}),a=f},s=f=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",o,!1)}}class My extends Sa{constructor(n,r,i,a,o){super(n,r,i,a);dt(this,ou);dt(this,Gn);dt(this,Nc);dt(this,Bc);dt(this,Zi);dt(this,su);dt(this,uu);dt(this,fu);dt(this,Fc);dt(this,ao,1/0);dt(this,oo,10);dt(this,rn,[]);dt(this,so,0);this.spec=n,ho(this,oo,n.spacing??10),ho(this,ao,o),ho(this,rn,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){n.parent??(n.parent=this),Ie(this,rn).push(st(this,ou,lg).call(this,n)),Cv(this,so)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=Ie(this,rn).findIndex(a=>a.view==n);if(i>=0)Ie(this,rn)[i]=st(this,ou,lg).call(this,r);else throw new Error("Not my child view!")}get children(){return Ie(this,rn).map(n=>n.view)}get childCount(){return Ie(this,rn).length}onScalesResolved(){super.onScalesResolved(),st(this,Bc,_v).call(this)}*[Symbol.iterator](){for(const n of Ie(this,rn)){n.background&&(yield n.background);for(const r of Object.values(n.gridLines))yield r;for(const r of Object.values(n.axes))yield r;yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=st(this,Zi,pu).call(this,"column"),r=st(this,Zi,pu).call(this,"row");return!n.length||!r.length?gn.zero():new gn(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new Ei(st(this,uu,dg).call(this,"column"),st(this,uu,dg).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){if(!this.isConfiguredVisible())return;this.parent||(r=r.shrink(this.getPadding())),n.pushView(this,r);const a={devicePixelRatio:this.context.glHelper.dpr},o=$b(st(this,su,hg).call(this,"column"),r.width,a),s=$b(st(this,su,hg).call(this,"row"),r.height,a),f=new Ey(Ie(this,Gn,Kr).length,Ie(this,ao)??1/0);for(const[u,c]of Ie(this,Gn,Kr).entries()){const{view:l,axes:h,gridLines:d,background:p,title:b}=c,[x,A]=f.getCellCoords(u),D=o[st(this,fu,gg).call(this,"column",x)],I=s[st(this,fu,gg).call(this,"row",A)],C=l.getSize(),T=l.getPadding().subtract(l.getOverhang()),B=D.location+T.left,S=I.location+T.top,z=(C.width.grow?D.size:C.width.px)-T.width,E=(C.height.grow?I.size:C.height.px)-T.height,N=new _a(()=>r.x+B,()=>r.y+S,()=>z,()=>E);c.coords=N,p==null||p.render(n,N,i);for(const Z of Object.values(d))Z.render(n,N,i);const F=hT(l);F&&l.render(n,N,i);for(const[Z,W]of Object.entries(h)){const Y=W.axisProps;let be;const Ee=W.getPerpendicularSize();Z=="bottom"?be=N.translate(0,N.height+Y.offset).modify({height:Ee}):Z=="top"?be=N.translate(0,-Ee-Y.offset).modify({height:Ee}):Z=="left"?be=N.translate(-Ee-Y.offset,0).modify({width:Ee}):Z=="right"&&(be=N.translate(N.width+Y.offset,0).modify({width:Ee})),W.render(n,be)}F||l.render(n,N,i),b==null||b.render(n,N,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=Ie(this,Gn,Kr).find(a=>a.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof lt||i instanceof Nr)&&fT(n,r.coords,a=>st(this,Fc,Iv).call(this,r.coords,r.view,a),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}ao=new WeakMap,oo=new WeakMap,rn=new WeakMap,so=new WeakMap,ou=new WeakSet,lg=function(n){var i;const r={view:n,background:void 0,axes:{},gridLines:{},coords:_a.ZERO};if(n instanceof lt||n instanceof Nr){const a=(i=n.spec)==null?void 0:i.view;if(a!=null&&a.fill||a!=null&&a.stroke){const s=new lt(cT(a),this.context,n,"background"+Ie(this,so));s.blockEncodingInheritance=!0,r.background=s}const o=uT(n.spec.title);if(o){const s=new lt(o,this.context,n,"title"+Ie(this,so));s.blockEncodingInheritance=!0,r.title=s}}return r},Gn=new WeakSet,Kr=function(){return Ie(this,rn).filter(n=>n.view.isConfiguredVisible())},Nc=new WeakSet,Dv=function(){return new Ey(Ie(this,Gn,Kr).length,Ie(this,ao)??1/0)},Bc=new WeakSet,_v=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("GridView (concat, vconcat, hconcat) does not currently support shared axes!");for(const n of Ie(this,rn)){const{view:r,axes:i,gridLines:a}=n,o=(s,f,u)=>{const c=s.getAxisProps();if(c!==null){if(!c.orient){for(const l of f0[f])if(!i[l]){c.orient=l;break}if(!c.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(c.title??(c.title=s.getTitle()),!f0[f].includes(c.orient))throw new Error(`Invalid axis orientation "${c.orient}" on channel "${f}"!`);if(i[c.orient])throw new Error(`An axis with the orient "${c.orient}" already exists!`);i[c.orient]=new q6(c,s.scaleResolution.type,this.context,u),(c.grid||c.chromGrid)&&(a[c.orient]=new J6(c,s.scaleResolution.type,this.context,u))}};if(r instanceof lt||r instanceof Nr)for(const s of["x","y"]){const f=r.resolutions.axis[s];f&&o(f,s,r)}if(r instanceof Nr){for(const s of r.children)for(const[f,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&c.orient&&o(u,f,s)}for(const s of r.children)for(const[f,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&!c.orient&&o(u,f,s)}}[...Object.values(i),...Object.values(a)].forEach(s=>s.visit(f=>{f instanceof lt&&f.resolve("scale")}))}},Zi=new WeakSet,pu=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",a=(o,s)=>o.map(f=>{const u=Ie(this,Gn,Kr)[f].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const c=Ie(this,Gn,Kr)[f].view.getOverhang();return n=="column"?s?c.right:c.left:s?c.bottom:c.top}).reduce((f,u)=>Math.max(f,u),0);return Ie(this,Nc,Dv)[n=="column"?"colIndices":"rowIndices"].map(o=>({axisBefore:a(o,0),axisAfter:a(o,1),view:r6(o.map(s=>Ie(this,Gn,Kr)[s].view.getSize()[i]))}))},su=new WeakSet,hg=function(n){const r=st(this,Zi,pu).call(this,n),i=[];i.push(ps);for(const[a,o]of r.entries())a>0&&i.push({px:Ie(this,oo),grow:0}),(a==0||this.wrappingFacet)&&i.push(ps),i.push({px:o.axisBefore,grow:0}),i.push(o.view),i.push({px:o.axisAfter,grow:0}),(a==r.length-1||this.wrappingFacet)&&i.push(ps);return i},uu=new WeakSet,dg=function(n){let r=0,i=0;const a=(n=="row"&&this.spec.height)??(n=="column"&&this.spec.width);if(a||a===0)return ey(a);const o=st(this,Zi,pu).call(this,n);for(const[s,f]of o.entries())s>0&&(i+=Ie(this,oo)),(s==0||this.wrappingFacet)&&(i+=0),i+=f.axisBefore,i+=f.view.px??0,r+=f.view.grow??0,i+=f.axisAfter,(s==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},fu=new WeakSet,gg=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Fc=new WeakSet,Iv=function(n,r,i){for(const[a,o]of Object.entries(lT(r))){if(o.size<=0)continue;const s=n.normalizePoint(i.x,i.y),f=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),u={x:f.x-s.x,y:f.y-s.y};for(const c of o)c.zoom(2**i.zDelta,a=="y"?1-s[a]:s[a],a=="x"?u.x:-u.y)}this.context.animator.requestRender()};function cT(e){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:e.fill?1:0,...e,type:"rect",clip:!1,tooltip:null}}}function lT(e){const t={x:new Set,y:new Set};return e.visit(n=>{for(const[r,i]of Object.entries(t)){const a=n.getScaleResolution(r);a&&a.isZoomable()&&i.add(a)}}),t}function hT(e){let t=!0;return e.visit(n=>{n instanceof lt&&t&&(t=n.mark.properties.clip)}),t}class l0 extends My{constructor(t,n,r,i){super(t,n,r,i,p0(t)?t.columns:g0(t)?1:1/0),this.spec=t}_createChildren(){const t=this.spec,n=p0(t)?t.concat:g0(t)?t.vconcat:t.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class dT{constructor(){this.types=[];const t=n=>(r,i,a,o)=>new n(r,i,a,r.name??o);this.addViewType(gT,t(vy)),this.addViewType(d0,t(Nr)),this.addViewType(h0,t(lt)),this.addViewType(g0,t(l0)),this.addViewType(pT,t(l0)),this.addViewType(p0,t(l0))}addViewType(t,n){this.types.push({specGuard:t,factory:n})}createView(t,n,r,i){const a=this.types.find(o=>o.specGuard(t));if(a)return a.factory(t,n,r,i??"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(t)]))}isViewSpec(t){const n=this.types.filter(r=>r.specGuard(t));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function h0(e){return"mark"in e&&(ze(e.mark)||on(e.mark))}function d0(e){return"layer"in e&&on(e.layer)}function Ty(e){return e&&(h0(e)||d0(e))&&"aggregateSamples"in e}function gT(e){return"import"in e}function g0(e){return"vconcat"in e&&Ut(e.vconcat)}function pT(e){return"hconcat"in e&&Ut(e.hconcat)}function p0(e){return"concat"in e&&Ut(e.concat)}const mT={point:HM,rect:zM,rule:ZM,link:XM,text:n6};class lt extends Sa{constructor(t,n,r,i){super(t,n,r,i),this.spec=t;const a=mT[this.getMarkType()];if(a)this.mark=new a(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const t of this.sampleAggregateViews)yield t}replaceChild(t,n){const r=this.sampleAggregateViews.indexOf(t);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(t,n,r={}){this.isConfiguredVisible()&&(this.coords=n,t.pushView(this,n),t.renderMark(this.mark,r),t.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(t){const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!Ht(i))continue;let a=da(i.resolutionChannel??r);if(t=="axis"&&!rs(a))continue;let o=this;for(;(o.getConfiguredOrDefaultResolution(a,t)=="forced"||o.parent instanceof Sa&&["shared","excluded","forced"].includes(o.parent.getConfiguredOrDefaultResolution(a,t)))&&o.getConfiguredOrDefaultResolution(a,t)!="excluded";)o=o.parent;o.resolutions[t][a]||(o.resolutions[t][a]=t=="scale"?new j6(a):new V6(a)),rs(r)?o.resolutions[t][a].pushUnitView(this,r):t=="scale"&&o.resolutions[t][a].pushUnitView(this,r)}}getAccessor(t){return this._cache("accessor/"+t,()=>{const n=this.mark.encoding;if(n&&n[t])return this.context.accessorFactory.createAccessor(n[t])})}getFacetAccessor(t){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(t){if(is(t))throw new Error(`getDomain(${t}), must only be called for primary channels!`);const n=this.mark.encoding[t];if(!Ht(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(t){const n=this._validateDomainQuery(t),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??t);return by(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(t){const r=this._validateDomainQuery(t).type??"nominal",i=s=>{let f;const u=this.mark.encoding[s];if(u){const c=this.context.accessorFactory.createAccessor(u);if(c)if(f=by(r),c.constant)f.extend(c({}));else{const l=this.getCollector();l!=null&&l.completed&&l.visitData(h=>f.extend(c(h)))}}return f};let a=i(t);const o=wh[t];if(o){const s=i(o);s&&a.extendAll(s)}return a}getZoomLevel(){const t=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return ns.map(t).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){if(Ty(this.spec))for(const t of this.spec.aggregateSamples){const n=t.transform??[];n.length&&ha(n).type!="collect"&&n.push({type:"collect"}),n.push({type:"mergeFacets"}),t.transform=n,t.encoding={...t.encoding??{},sample:null};const r=this.context.createView(t,this,"summaryView");r.getFacetFields=i=>{},this.sampleAggregateViews.push(r)}}propagateInteractionEvent(t){t.target=this}getDefaultResolution(t,n){return t=="x"?"shared":"independent"}}function*m0(e,t=[]){for(const[n,r]of e.entries())if(r instanceof Map)for(const i of m0(r,[...t,n]))yield i;else yield[[...t,n],r]}class Ny extends Ge{get behavior(){return n0}constructor(t){super(),this.params=t??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new ei([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(t){this._data.push(t)}beginBatch(t){UM(t)&&(this._data=[],this.facetBatches.set(In(t.facetId),this._data))}complete(){var i,a;const t=(i=this.params)==null?void 0:i.sort,n=t?wg(t.field,t.order):void 0,r=o=>{n&&o.sort(n)};if((a=this.params.groupby)!=null&&a.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const o=this.params.groupby.map(f=>xe(f)),s=Su(this._data,...o);this.facetBatches.clear();for(const[f,u]of m0(s))this.facetBatches.set(f,u)}for(const o of this.facetBatches.values())r(o);if(this.children.length)for(const[o,s]of this.facetBatches.entries()){if(o){const f={type:"facet",facetId:o};for(const u of this.children)u.beginBatch(f)}for(const f of s)this._propagate(f)}super.complete();for(const o of this.observers)o(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const t=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of t.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(t){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)t(n[r])}getItemCount(){let t=0;for(const n of this.facetBatches.values())t+=n.length;return t}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class Of{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(t,n){let r=this.length++;for(;r>0;){const i=r-1>>1,a=this.values[i];if(n>=a)break;this.ids[r]=this.ids[i],this.values[r]=a,r=i}this.ids[r]=t,this.values[r]=n}pop(){if(this.length===0)return;const t=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let a=0;for(;a<i;){let o=(a<<1)+1;const s=o+1;let f=this.ids[o],u=this.values[o];const c=this.values[s];if(s<this.length&&c<u&&(o=s,f=this.ids[s],u=c),u>=r)break;this.ids[a]=f,this.values[a]=u,a=o}this.ids[a]=n,this.values[a]=r}return t}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class bT extends Ge{get behavior(){return $n}constructor(t){super(),this.params=t,this.startAccessor=xe(t.start),this.endAccessor=xe(t.end),this.chromAccessor=t.chrom?xe(t.chrom):n=>{},this.weightAccessor=t.weight?xe(t.weight):n=>1,this.as={coverage:t.as||"coverage",start:t.asStart||t.start,end:t.asEnd||t.end,chrom:t.asChrom||t.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Of}reset(){super.reset(),this.initialize()}initialize(){const t=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,a=this.endAccessor,o=this.chromAccessor,s=this.weightAccessor;let f,u,c,l=0,h;const d=this.ends;d.clear();const p=(x,A,D)=>{if(x==A)return;let I=!1;f&&(f[t]===D?(f[n]=A,I=!0):f[t]!=0&&this._propagate(f)),I||(f=this.createSegment(x,A,D,c))},b=()=>{let x;for(;(x=d.peekValue())!==void 0;)p(h,x,l),h=x,l-=d.pop();h=void 0,f&&(this._propagate(f),f=void 0)};this.handle=x=>{const A=i(x);let D;for(;(D=d.peekValue())!==void 0&&D<A;)p(h,D,l),h=D,l-=d.pop();if(r){let C=o(x);C!==u&&(b(),c=C,u=c)}h!==void 0&&p(h,A,l),h=A;const I=s(x);l+=I,d.push(I,a(x))},this.complete=()=>{b(),super.complete()}}}function yT(e,t,n=0,r=e.length){const i=new Of,a=r-n;let o;for(o=0;o<t&&o<a;o++)i.push(o,e[n+o]);for(;o<a;o++){const u=e[n+o];u>=i.peekValue()&&(i.push(o,u),i.pop())}const s=[];let f;for(;(f=i.pop())!==void 0;)s.push(n+f);return s.reverse()}class wT{constructor(t,n=-1/0,r=1/0){this.maxSize=t,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(t,n,r=0){if(t>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const a=this._findSlot(t,n,i);return a>=0?a:this._findSlot(t,n,this.upperChildren[r])}else return r}else return-1}reserve(t,n){if(n-t<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(t,n);if(r<0)return!1;const i=this.n++,a=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=t,this.lowerLimits[a]=n,this.upperLimits[a]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=a,!0}}class xT extends Ge{get behavior(){return n0}constructor(t,n){if(super(),this.params=t,this._data=[],this.channel=t.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=xe(this.params.pos),this.posBisector=Cu(this.posAccessor),this.scoreAccessor=xe(this.params.score),this.widthAccessor=xe(this.params.width),this.laneAccessor=this.params.lane?xe(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const t=this.posAccessor;this._data.sort((n,r)=>t(n)-t(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new wT(200));this.schedule(),super.complete()}_filterAndPropagate(){var o;super.reset();const t=this.resolution.getScale(),n=(o=this.resolution.members[0].view.coords)==null?void 0:o[this.channel=="x"?"width":"height"];if(!n)return;for(const s of this.reservationMaps.values())s.reset();const r=t.domain(),i=70,a=yT(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of a){const f=this._data[s],u=t(this.posAccessor(f))*n,c=this.widthAccessor(f)/2+this.padding;this.reservationMaps.get(this.laneAccessor(f)).reserve(u-c,u+c)&&this._propagate(f)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(t){this._data.push(t)}}class AT extends Ge{constructor(t){super(),this.params=t,this.predicate=void 0}initialize(){this.predicate=mh(this.params.expr,this.getGlobalObject())}handle(t){this.predicate(t)&&this._propagate(t)}}const vT="0".charCodeAt(0);function*ET(e,t=","){const n=t.charCodeAt(0);let r=0;for(let i=0;i<e.length;i++){const a=e.charCodeAt(i);a==n?(yield r,r=0):r=r*10+a-vT}yield r}class CT extends Ge{get behavior(){return $n}constructor(t){super();const n=xe(t.exons??"exons"),r=xe(t.start??"start"),[i,a]=t.as||["exonStart","exonEnd"];this.handle=o=>{let s=r(o),f=s,u=!0;const c=n(o);for(const l of ET(c)){if(u)f=s+l;else{s=f+l;const h=Object.assign({},o);h[i]=f,h[a]=s,this._propagate(h)}u=!u}}}}class ST extends Ge{get behavior(){return $n}constructor(t){super();const n=In(t.field).map(a=>xe(a)),r=In(t.separator),i=In(t.as||t.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=a=>{if(n.some(f=>!f(a)))return;const o=n.map((f,u)=>f(a).split(r[u]));DT(o,a);const s=o[0].length;for(let f=0;f<s;f++){const u=Object.assign({},a);for(let c=0;c<n.length;c++)u[i[c]]=o[c][f];this._propagate(u)}}}}function DT(e,t){const n=e.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(t))}class _T extends Ge{get behavior(){return Tr}constructor(t){super(),this.params=t,this.as=t.as,this.fn=void 0}initialize(){this.fn=mh(this.params.expr,this.getGlobalObject())}handle(t){t[this.as]=this.fn(t),this._propagate(t)}}class By extends Ge{get behavior(){return Tr}constructor(t,n){super();const r=t.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const a=xe(t.chrom),o=In(t.pos).map(p=>xe(p)),s=In(t.as);if(o.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const f=In(t.offset);let u;if(f.length==0)u=new Array(o.length).fill(0);else if(f.length==1)u=new Array(o.length).fill(f[0]);else if(f.length==o.length)u=f;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(t.offset)}!`);const c=new Function("datum","chromOffset","posAccessors",s.map((p,b)=>`datum[${JSON.stringify(p)}] = chromOffset + +posAccessors[${b}](datum) - ${u[b]};`).join(`
|
|
148
|
+
`));let l,h=0;const d=p=>{if(p!==l){if(h=i.cumulativeChromPositions.get(p),h===void 0)throw new Error("Unknown chromosome/contig: "+p);l=p}return h};this.handle=p=>{c(p,d(a(p)),o),this._propagate(p)}}}const Fy={pages:["Lato-Regular.png"],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153000000000002,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313000000000002,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182000000000002,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176000000000002,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874000000000002,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089000000000002,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278000000000002,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:"Lato Regular",size:42,bold:0,italic:0,charset:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]};class IT extends Ge{get behavior(){return Tr}constructor(t){super();const n=$h(Fy),r=xe(t.field),i=t.as,a=t.fontSize;this.handle=o=>{const s=r(o);s!==void 0?o[i]=n.measureWidth(s,a):o[i]=0,this._propagate(o)}}}const MT=65536;class TT extends Ge{get behavior(){return Tr}constructor(t){super(),this.params=t}reset(){super.reset(),this.initialize()}initialize(){const t=this.params,n=t.as||"lane",r=vt(t.spacing)?t.spacing:1,i=xe(t.start),a=xe(t.end);if(!t.preference!=!t.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(t.preference){const o=new Float64Array(MT),s=xe(t.preference),f=t.preferredOrder;let u=1/0;this.handle=c=>{const l=i(c);l<u&&o.fill(-1/0),u=l;const h=f.indexOf(s(c));let d=-1;if(h>=0&&o[h]<l)d=h;else{const p=i(c);for(d=0;d<o.length&&!(o[d]<p);d++);if(d>=o.length)throw new Error("Out of lanes!")}o[d]=a(c)+r,c[n]=d,this._propagate(c)}}else{const o=new Of,s=new Of;let f=-1/0,u=0;this.handle=c=>{const l=i(c);for(;o.length&&(o.peekValue()<=l||l<f);){const d=o.pop();s.push(d,d)}f=l;let h=s.pop();h===void 0&&(h=u++),c[n]=h,this._propagate(c),o.push(h,a(c)+r)}}}}class NT extends Ge{get behavior(){return $n}constructor(t){if(super(),t.as&&t.as.length!=t.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=t.fields.map(i=>xe(i)),r=t.as?t.as:n.map(Pe);this.handle=i=>{const a={};for(let o=0;o<n.length;o++)a[r[o]]=n[o](i);this._propagate(a)}}}class BT extends Ge{get behavior(){return Tr}constructor(t){super();const n=new RegExp(t.regex),r=typeof t.as=="string"?[t.as]:t.as,i=xe(t.field);this.handle=a=>{const o=i(a);if(ze(o)){const s=o.match(n);if(s){if(s.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let f=0;f<r.length;f++)a[r[f]]=s[f+1]}else if(t.skipInvalidInput)for(let f=0;f<r.length;f++)a[r[f]]=void 0;else throw new Error(`"${o}" does not match the given regex: ${n.toString()}`)}else if(!t.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof o}, field content: "${o}".`);this._propagate(a)}}}class FT extends Ge{get behavior(){return $n}constructor(t){super();const n=In(t.columnRegex).map(h=>new RegExp(h)),r=In(t.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=t.skipRegex?new RegExp(t.skipRegex):void 0,a=t.asKey||"sample";let o,s,f;const u=h=>{var x;const d=Object.keys(h),p=new Map;for(const[A,D]of n.entries())for(const I of d){const C=(x=D.exec(I))==null?void 0:x[1];if(C!==void 0){let T=p.get(C);T||(T=[],p.set(C,T)),T[A]=I}}o=[...p.entries()],s=d.filter(A=>!n.some(D=>D.test(A))&&!(i&&i.test(A)));const b=[...s.map(A=>JSON.stringify(A)+": datum["+JSON.stringify(A)+"]"),JSON.stringify(a)+": sampleId",...r.map(A=>JSON.stringify(A)+": null")];f=new Function("datum","sampleId",`return {
|
|
149
|
+
`+b.join(`,
|
|
150
150
|
`)+`
|
|
151
|
-
};`)},f=h=>{o||c(h);for(const[g,d]of o){const p=u(h,g);for(let m=0;m<d.length;m++)p[r[m]]=h[d[m]];this._propagate(p)}},l=h=>{c(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{nh(h)&&(this.handle=l),super.beginBatch(h)}}}class gv extends q{get behavior(){return It}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const e=this.params,n=e.as||["y0","y1"],r=e.sort?Du(e.sort.field,e.sort.order):void 0,i=e.field?j(e.field):()=>1,s=e.groupby.map(f=>j(f)),o=qd(this.buffer,f=>s.map(l=>l(f)).join()).map(f=>f[1]);let a=f=>!0;if(e.baseField){const f=j(e.baseField);a=l=>f(l)!==null}let u,c;switch(e.offset){case"normalize":u=(f,l)=>f/l,c=(f,l)=>pi(f,l);break;case"center":u=(f,l)=>f-l/2,c=(f,l)=>pi(f,l);break;case"information":{const f=Math.log2(e.cardinality??4);u=(l,h)=>l/h,c=(l,h)=>{const d=pi(l,x=>+!a(x)),p=pi(l,h),m=p-d;let A=0;for(let x=0;x<l.length;x++){const w=l[x];if(a(w)){const v=h(w)/m;A-=v*Math.log2(v)}}return m/(f-(A+0))*(m/p)}}break;default:u=(f,l)=>f,c=(f,l)=>1}for(const f of o){r&&f.sort(r);const l=c(f,i);let h=0;for(const g of f){const d=h+i(g);a(g)&&(g[n[0]]=u(h,l),g[n[1]]=u(d,l),this._propagate(g),h=d)}}super.complete()}}class pv extends q{get behavior(){return ut}constructor(e){super();const n=j(e.field??"sequence"),[r,i]=e.as??["pos","sequence"];this.handle=s=>{const o=Object.assign({},s,{[i]:"",[r]:0}),a=n(s);for(let u=0;u<a.length;u++){const c=Object.assign({},o);c[r]=u,c[i]=a.charAt(u),this._propagate(c)}}}}class mv extends q{get behavior(){return ut}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(s=>j(s)),i=di(this.buffer,...r);for(const[s,o]of cu(i)){const a={count:o.length};for(let u=0;u<n.length;u++)a[n[u]]=s[u];this._propagate(a)}super.complete()}}const Av="_uniqueId",jh=1e4,Uh=[null];class Gh extends q{get behavior(){return It}constructor(e){super(),this.params=e,this.as=e.as??Av,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%jh==0&&(this._id=this._getBlock()*jh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Uh.length;return Uh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const yv={aggregate:mv,collect:Oh,coverage:qD,filterScoredLabels:ev,filter:tv,flattenCompressedExons:iv,flattenDelimited:sv,flattenSequence:pv,formula:av,identifier:Gh,linearizeGenomicCoordinate:kh,measureText:uv,pileup:lv,project:fv,regexExtract:hv,regexFold:dv,sample:rh,stack:gv};function xv(t,e){const n=yv[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function Qh(t){const e={...t.format};if(e.type??(e.type=vv(t)&&wv(t.url)),e.parse??(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function wv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const Hh=t=>typeof t!="object"?bv:Dv,bv=t=>({data:t}),Dv=t=>t;function vv(t){return"url"in t}class jn extends q{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Cv(t){return"values"in t}class Mv extends jn{constructor(e,n){var r;if(super(),this.params=e,typeof e.values=="string"&&!((r=e==null?void 0:e.format)!=null&&r.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=Hh(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Sc(e,Qh(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function Ev(t){return"url"in t}class Sv extends jn{constructor(e,n){super(),this.params=e,this.baseUrl=n==null?void 0:n.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async s=>Ei({baseURL:this.baseUrl}).load(s).catch(o=>{throw new Error(`Cannot fetch: ${this.baseUrl}${s}: ${o.message}`)}),i=(s,o)=>{try{const a=Sc(s,Qh(this.params));this.beginBatch({type:"file",url:o});for(const u of a)this._propagate(u)}catch(a){throw new Error(`Cannot parse: ${o}: ${a.message}`)}};this.reset(),await Promise.all(n.map(s=>r(s).then(i))),this.complete()}}function Iv(t){return"sequence"in t}class Tv extends jn{constructor(e,n){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function Nv(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Bv extends jn{constructor(n,r){var i;super();oe(this,Ns);oe(this,Hn);if(this.params=n,this.axisProps=n.axis??{},this.view=r,this.ticks=void 0,this.channel=this.params.channel,this.channel!=="x"&&this.channel!=="y")throw new Error(`Invalid channel: ${this.channel}. Must be "x" or "y"`);if(this.scaleResolution=this.view.getScaleResolution(this.channel),!this.scaleResolution)throw new Error(`No scale resolution found for channel "${this.channel}".`);this.scaleResolution.addEventListener("domain",()=>{K(this,Hn,Bs).call(this)}),(i=this.scaleResolution.members[0])==null||i.view._addBroadcastHandler("layoutComputed",()=>{K(this,Hn,Bs).call(this)})}async load(){K(this,Hn,Bs).call(this)}}Ns=new WeakSet,ud=function(){const n=this.scaleResolution.members.map(r=>{var i;return(i=r.view.coords)==null?void 0:i[this.channel==="x"?"width":"height"]}).filter(r=>r>0);return n.length?n.reduce((r,i)=>Math.min(r,i),1e4):0},Hn=new WeakSet,Bs=function(){const n=this.scaleResolution.getScale(),r=this.axisProps,i=K(this,Ns,ud).call(this),s=c=>25+60*Nv(100,700,c),o=ye(r.tickCount)?r.tickCount:Math.round(i/s(i)),a=lh(n,o,r.tickMinStep),u=r.values?fh(n,r.values,a):Yb(n,a);if(!this.ticks||!af(u,this.ticks)){this.ticks=u;const c=Wb(n,o,this.axisProps.format);this.reset(),this.beginBatch({type:"file"});for(const f of u)this._propagate({value:f,label:c(f)});this.complete()}};class Fv extends jn{constructor(e,n){if(super(),this.params=e,this.view=n,this.channel=this.params.channel,this.channel!=="x"&&this.channel!=="y")throw new Error(`Invalid channel: ${this.channel}. Must be "x" or "y"`);if(this.scaleResolution=this.view.getScaleResolution(this.channel),!this.scaleResolution)throw new Error(`No scale resolution found for channel "${this.channel}".`)}async load(){const e=this.scaleResolution.getGenome().chromosomes;this.reset(),this.beginBatch({type:"file"});for(const n of e)this._propagate(n);this.complete()}}function Lv(t,e){if(Cv(t))return new Mv(t,e);if(Ev(t))return new Sv(t,e);if(Iv(t))return new Tv(t,e);if(zv(t))return kv(t.dynamic,e);throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function zv(t){return"dynamic"in t}function Pv(t){return(t==null?void 0:t.type)=="axisTicks"}function Ov(t){return(t==null?void 0:t.type)=="axisGenome"}function kv(t,e){if(Pv(t))return new Bv(t,e);if(Ov(t))return new Fv(t,e);throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function Rv(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
|
|
152
|
-
|
|
153
|
-
Reason: ${a.message}`)}));if(n.isViewSpec(s))return s.baseUrl=(o=i.match(/^[^?#]*\//))==null?void 0:o[0],s;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Xh(t){const e=[];t.visit(n=>{if(n instanceof Sh)return e.push(n),oh});for(const n of e){const r=n.context,i=await Zv(n.spec,n.getBaseUrl(),r),s=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,s),await Xh(s)}}class Zh{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Kh extends Zh{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=o=>()=>{e&&o()},i=o=>()=>{e&&n&&o()},s=di(this.buffer,o=>o.mark);for(const[o,a]of s.entries()){if(!o.isReady())continue;this.batch.push(()=>{e=o.unitView.getEffectiveOpacity()>0}),this.batch.push(...o.prepareRender(this.globalOptions).map(c=>r(c)));let u;for(const c of a){const f=c.coords;f.equals(u)||this.batch.push(r(()=>{n=o.setViewport(f,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class Kv extends Zh{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class Jv{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class qv{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const _v=t=>new Promise(e=>setTimeout(e,t));function $v(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,s)=>{if(n!=null&&n.aborted)return s("aborted");const o=performance.now(),a=o+(t.duration||1e3),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,f=t.easingFunction||(p=>p),l=p=>(p-o)/(a-o),h=p=>p*(c-u)+u,g=p=>Math.max(0,Math.min(1,p)),d=p=>{n!=null&&n.aborted?s("aborted"):(t.onUpdate(h(f(g(l(p))))),p<a?e(d):(t.onUpdate(h(f(1))),i()))};e(d)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):_v(t.delay).then(r):r()}class eC{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return $v({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function Jh(){const t=e=>e;return t.invert=e=>e,t.copy=Jh,t.invertRange=()=>{},t}class tC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new gD(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const nC="data:image/png;base64,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",rC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class iC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Lt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Wa(Rh),texture:this._createTextureNow(nC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(W(r)&&(r=rC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let s=this._fonts.get(i);return s||(s={metrics:void 0,texture:void 0},this._fonts.set(i,s),this._promises.push(this._loadFontEntry(s,i))),s}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=oC(r,n),s=this.fontRepository+qh(n.family)+"/"+i.replace(/\.\w+/,""),o=this._createTexture(s+".png"),a=this._loadFont(s+".json");e.texture=await o,e.metrics=await a}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Wa(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=qh(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>sC(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{Hr(n,{src:e,min:n.LINEAR},(s,o,a)=>{s?i(s):r(o)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((s,o)=>{r=Hr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?o(a):s(u)})});return this._promises.push(i),r}}function qh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function sC(t){const e=t.split(`
|
|
154
|
-
|
|
155
|
-
`))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class uC{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=Sd([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function cC(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const s=i;!r.includes(i)&&n.includes(typeof t[s])&&(e[s]=t[s])}return e}function lC(t,e,n=!0){let r,i=o=>{};return function(...a){return new Promise((u,c)=>{const f=()=>{clearTimeout(r),i=l=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(f,e)})}}const _h=new Map;async function fC(t,e,n){const r=t.symbol;let i=_h.get(r)??await gC(t.symbol);return i?(_h.set(r,i),rt`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function hC(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(o=>o.json())).result[r]:null}const dC=lC(hC,500);function gC(t){return dC(t)}const pC=ae(".4~r"),mC=ae(".4~e");function AC(t){return t===null?rt`<span class="na">NA</span>`:W(t)?t.substring(0,30):Number.isInteger(t)?""+t:ye(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?mC(t):pC(t):ui(t)?t?"True":"False":"?"+typeof t+" "+t}async function yC(t,e,n){const r=(u,c)=>{var f;for(const[l,h]of Object.entries(e.encoders))if((f=h==null?void 0:h.accessor)!=null&&f.fields.includes(u))switch(l){case"color":case"fill":case"stroke":return rt`<span class="color-legend" style="${`background-color: ${h(c)}`}"></span>`}return""},i=Object.entries(t).filter(([u,c])=>!u.startsWith("_"));if(i.length===0)return;const s=rt`<table class="attributes">${i.map(([u,c])=>rt`<tr><th>${u}</th><td>${AC(c)} ${r(u,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),a=o?rt`<div class="title"><strong>${o}</strong></div>`:"";return rt`${a}${s}`}class xC extends zh{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}O("index",mo,["continuous"]),O("locus",om,["continuous"]),O("null",Jh,[]),Ec("fasta",aC);class $h{constructor(e,n,r={}){this.container=e,this.spec=n,this.accessorFactory=new W1,this.viewFactory=new XD,this.namedDataProviders=[],this.animator=new eC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new uC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:yC,refseqgene:fC,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(s=>{for(const o of Object.values(s.resolutions.scale))o.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new cb(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new MA(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new tC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Vh,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new iC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Xh(this.viewRoot),(this.viewRoot instanceof pe||this.viewRoot instanceof Tt)&&(this.viewRoot=new xC(n,this.viewRoot)),Wv(this.viewRoot),Xv(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof pe&&i.push(a)});const s=Uv(this.viewRoot,n.dataFlow);Vv(s),this.broadcast("dataFlowBuilt",s),s.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const o=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)s.addObserver(u=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),s.initialize(),await Promise.all(s.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await o,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>bs(a,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),wC(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const s=e.getBoundingClientRect(),o=new qv(r.clientX-s.left-e.clientLeft,r.clientY-s.top-e.clientTop),a=u=>{this.viewRoot.propagateInteractionEvent(new Jv(o,u)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(o.x,o.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=cC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...c,deltaMode:0,deltaX:0,deltaY:f});a(l)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var s;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((s=this._currentHover)==null?void 0:s.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(o=>{if(o instanceof pe){if(o.mark.isPickingParticipant()){const a=o.mark.encoders.uniqueId.accessor;o.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:o.mark,datum:u,uniqueId:i})})}if(this._currentHover)return Kr}}),this._currentHover){const o=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{if(!o.isPickingParticipant())return;const u=o.properties.tooltip;if(u!==null){const c=(u==null?void 0:u.handler)??"default",f=this.tooltipHandlers[c];if(!f)throw new Error("No such tooltip handler: "+c);return f(a,o,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Kh({picking:!1},this._glHelper),this._pickingContext=new Kh({picking:!0},this._glHelper),e.render(new Kv(this._renderingContext,this._pickingContext),Rn.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof pe&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function wC(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const bC="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+",DC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";async function vC(t,e,n={}){let r;if(W(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const s=Pe(e)?e:await ed(e);if(s.baseUrl??(s.baseUrl=""),s.width??(s.width="container"),s.padding??(s.padding=10),r==document.body){const o=document.createElement("div");o.style.position="fixed",o.style.inset="0",o.style.overflow="hidden",r.appendChild(o),r=o}i=new $h(r,s,n),CC(i,n),await i.launch()}catch(s){r.innerText=s.toString(),console.error(s)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(s,o){const a=i._eventListeners;let u=a.get(s);u||(u=new Set,a.set(s,u)),u.add(o)},removeEventListener(s,o){var u;(u=i._eventListeners.get(s))==null||u.delete(o)},getScaleResolutionByName(s){return i.getNamedScaleResolutions().get(s)},updateNamedData:i.updateNamedData.bind(i)}}function CC(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function ed(t){let e;try{e=JSON.parse(await Ei().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}B.GenomeSpy=$h,B.embed=vC,B.favIcon=DC,B.html=rt,B.icon=bC,B.loadSpec=ed,Object.defineProperty(B,Symbol.toStringTag,{value:"Module"})});
|
|
151
|
+
};`)},c=h=>{o||u(h);for(const[d,p]of o){const b=f(h,d);for(let x=0;x<p.length;x++)b[r[x]]=h[p[x]];this._propagate(b)}},l=h=>{u(h),c(h),this.handle=c};this.handle=l,this.beginBatch=h=>{Kb(h)&&(this.handle=l),super.beginBatch(h)}}}class kT extends Ge{get behavior(){return Tr}constructor(t){super(),this.params=t,this.buffer=[]}reset(){this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const t=this.params,n=t.as||["y0","y1"],r=t.sort?wg(t.sort.field,t.sort.order):void 0,i=t.field?xe(t.field):()=>1,a=t.groupby.map(c=>xe(c)),o=bE(this.buffer,c=>a.map(l=>l(c)).join()).map(c=>c[1]);let s=c=>!0;if(t.baseField){const c=xe(t.baseField);s=l=>c(l)!==null}let f,u;switch(t.offset){case"normalize":f=(c,l)=>c/l,u=(c,l)=>_u(c,l);break;case"center":f=(c,l)=>c-l/2,u=(c,l)=>_u(c,l);break;case"information":{const c=Math.log2(t.cardinality??4);f=(l,h)=>l/h,u=(l,h)=>{const p=_u(l,D=>+!s(D)),b=_u(l,h),x=b-p;let A=0;for(let D=0;D<l.length;D++){const I=l[D];if(s(I)){const C=h(I)/x;A-=C*Math.log2(C)}}return x/(c-(A+0))*(x/b)}}break;default:f=(c,l)=>c,u=(c,l)=>1}for(const c of o){r&&c.sort(r);const l=u(c,i);let h=0;for(const d of c){const p=h+i(d);s(d)&&(d[n[0]]=f(h,l),d[n[1]]=f(p,l),this._propagate(d),h=p)}}super.complete()}}class LT extends Ge{get behavior(){return $n}constructor(t){super();const n=xe(t.field??"sequence"),[r,i]=t.as??["pos","sequence"];this.handle=a=>{const o=Object.assign({},a,{[i]:"",[r]:0}),s=n(a);for(let f=0;f<s.length;f++){const u=Object.assign({},o);u[r]=f,u[i]=s.charAt(f),this._propagate(u)}}}}class zT extends Ge{get behavior(){return $n}constructor(t){super(),this.params=t,this.buffer=[]}reset(){this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const n=this.params.groupby,r=n.map(a=>xe(a)),i=Su(this.buffer,...r);for(const[a,o]of m0(i)){const s={count:o.length};for(let f=0;f<n.length;f++)s[n[f]]=a[f];this._propagate(s)}super.complete()}}const RT="_uniqueId",ky=1e4,Ly=[null];class zy extends Ge{get behavior(){return Tr}constructor(t){super(),this.params=t,this.as=t.as??RT,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(t){t[this.as]=this._nextId(),this._propagate(t)}_nextId(){return++this._id%ky==0&&(this._id=this._getBlock()*ky),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const t=Ly.length;return Ly[t]=this,this._blocks.push(t),this._usedBlocks++,t}}const OT={aggregate:zT,collect:Ny,coverage:bT,filterScoredLabels:xT,filter:AT,flattenCompressedExons:CT,flattenDelimited:ST,flattenSequence:LT,formula:_T,identifier:zy,linearizeGenomicCoordinate:By,measureText:IT,pileup:TT,project:NT,regexExtract:BT,regexFold:FT,sample:Jb,stack:kT};function PT(e,t){const n=OT[e.type];if(n)return new n(e,t);throw new Error("Unknown transform: "+e.type)}function Ry(e){const t={...e.format};if(t.type??(t.type=HT(e)&&UT(e.url)),t.parse??(t.parse="auto"),!t.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(e));return t}function UT(e){var t;if(Array.isArray(e)&&(e=e[0]),e)return(t=e.match(/\.(csv|tsv|json)/))==null?void 0:t[1]}const Oy=e=>typeof e!="object"?jT:GT,jT=e=>({data:e}),GT=e=>e;function HT(e){return"url"in e}class ys extends Ge{get identifier(){}handle(t){throw new Error("Source does not handle incoming data!")}async load(){}}function QT(e){return"values"in e}class VT extends ys{constructor(t,n){var r;if(super(),this.params=t,typeof t.values=="string"&&!((r=t==null?void 0:t.format)!=null&&r.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const t=this.params.values;let n=[],r=i=>i;if(Array.isArray(t))t.length>0&&(n=t,r=Oy(t[0]));else if(typeof t=="object")n=[t];else if(typeof t=="string")n=Cp(t,Ry(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function ZT(e){return"url"in e}class YT extends ys{constructor(t,n){super(),this.params=t,this.baseUrl=n==null?void 0:n.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const t=this.params.url,n=Array.isArray(t)?t:[t],r=async a=>Ou({baseURL:this.baseUrl}).load(a).catch(o=>{throw new Error(`Cannot fetch: ${this.baseUrl}${a}: ${o.message}`)}),i=(a,o)=>{try{const s=Cp(a,Ry(this.params));this.beginBatch({type:"file",url:o});for(const f of s)this._propagate(f)}catch(s){throw new Error(`Cannot parse: ${o}: ${s.message}`)}};this.reset(),await Promise.all(n.map(a=>r(a).then(i))),this.complete()}}function qT(e){return"sequence"in e}class WT extends ys{constructor(t,n){if(super(),this.sequence=t.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const t=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[t]:i});this.complete()}async load(){this.loadSynchronously()}}function XT(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Ia extends ys{constructor(t,n){if(super(),this.view=t,n){if(n!=="x"&&n!=="y")throw new Error(`Invalid channel specified for the dynamic data source: ${n}. Must be either "x" or "y"`)}else throw new Error('No channel has been specified for the dynamic data source. Must be either "x" or "y".');if(this.channel=n,this.scaleResolution=this.view.getScaleResolution(n),!this.scaleResolution){const i=[`The dynamic data source cannot find a resolved scale for channel "${n}".`];throw this.view instanceof lt||i.push('Make sure the view has a "shared" scale resolution as it is not a unit view.'),new Error(i.join(" "))}const r=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener("domain",r),this.view.context.addBroadcastListener("layoutComputed",r)}getAxisLength(){const t=this.scaleResolution.members.map(n=>{var r;return(r=n.view.coords)==null?void 0:r[this.channel==="x"?"width":"height"]}).filter(n=>n>0);return t.length?t.reduce((n,r)=>Math.min(n,r),1e4):0}get genome(){return this.scaleResolution.getGenome()}async onDomainChanged(t,n){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(t){this.reset(),this.beginBatch({type:"file"});for(const n of t)this._propagate(n);this.complete(),this.requestRender()}}class KT extends Ia{constructor(n,r){const i={axis:{},...n};super(r,i.channel);Vn(this,"ticks",[]);this.params=n}async onDomainChanged(){const n=this.scaleResolution.getScale(),r=this.params.axis,i=this.getAxisLength(),a=u=>25+60*XT(100,700,u),o=vt(r.tickCount)?r.tickCount:Math.round(i/a(i)),s=ay(n,o,r.tickMinStep),f=r.values?oy(n,r.values,s):c6(n,s);if(!sh(f,this.ticks)){this.ticks=f;const u=h6(n,o,r.format);this.publishData(f.map(c=>({value:c,label:u(c)})))}}}class JT extends Ia{constructor(t,n){super(n,t.channel)}async load(){this.publishData(this.genome.chromosomes)}}var Si=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ma(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var kt={},Pf={};Pf.byteLength=tN,Pf.toByteArray=rN,Pf.fromByteArray=oN;for(var Bn=[],Qt=[],$T=typeof Uint8Array<"u"?Uint8Array:Array,b0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ta=0,eN=b0.length;Ta<eN;++Ta)Bn[Ta]=b0[Ta],Qt[b0.charCodeAt(Ta)]=Ta;Qt["-".charCodeAt(0)]=62,Qt["_".charCodeAt(0)]=63;function Py(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");n===-1&&(n=t);var r=n===t?0:4-n%4;return[n,r]}function tN(e){var t=Py(e),n=t[0],r=t[1];return(n+r)*3/4-r}function nN(e,t,n){return(t+n)*3/4-n}function rN(e){var t,n=Py(e),r=n[0],i=n[1],a=new $T(nN(e,r,i)),o=0,s=i>0?r-4:r,f;for(f=0;f<s;f+=4)t=Qt[e.charCodeAt(f)]<<18|Qt[e.charCodeAt(f+1)]<<12|Qt[e.charCodeAt(f+2)]<<6|Qt[e.charCodeAt(f+3)],a[o++]=t>>16&255,a[o++]=t>>8&255,a[o++]=t&255;return i===2&&(t=Qt[e.charCodeAt(f)]<<2|Qt[e.charCodeAt(f+1)]>>4,a[o++]=t&255),i===1&&(t=Qt[e.charCodeAt(f)]<<10|Qt[e.charCodeAt(f+1)]<<4|Qt[e.charCodeAt(f+2)]>>2,a[o++]=t>>8&255,a[o++]=t&255),a}function iN(e){return Bn[e>>18&63]+Bn[e>>12&63]+Bn[e>>6&63]+Bn[e&63]}function aN(e,t,n){for(var r,i=[],a=t;a<n;a+=3)r=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(e[a+2]&255),i.push(iN(r));return i.join("")}function oN(e){for(var t,n=e.length,r=n%3,i=[],a=16383,o=0,s=n-r;o<s;o+=a)i.push(aN(e,o,o+a>s?s:o+a));return r===1?(t=e[n-1],i.push(Bn[t>>2]+Bn[t<<4&63]+"==")):r===2&&(t=(e[n-2]<<8)+e[n-1],i.push(Bn[t>>10]+Bn[t>>4&63]+Bn[t<<2&63]+"=")),i.join("")}var y0={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */y0.read=function(e,t,n,r,i){var a,o,s=i*8-r-1,f=(1<<s)-1,u=f>>1,c=-7,l=n?i-1:0,h=n?-1:1,d=e[t+l];for(l+=h,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=a*256+e[t+l],l+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=r;c>0;o=o*256+e[t+l],l+=h,c-=8);if(a===0)a=1-u;else{if(a===f)return o?NaN:(d?-1:1)*(1/0);o=o+Math.pow(2,r),a=a-u}return(d?-1:1)*o*Math.pow(2,a-r)},y0.write=function(e,t,n,r,i,a){var o,s,f,u=a*8-i-1,c=(1<<u)-1,l=c>>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:a-1,p=r?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-o))<1&&(o--,f*=2),o+l>=1?t+=h/f:t+=h*Math.pow(2,1-l),t*f>=2&&(o++,f/=2),o+l>=c?(s=0,o=c):o+l>=1?(s=(t*f-1)*Math.pow(2,i),o=o+l):(s=t*Math.pow(2,l-1)*Math.pow(2,i),o=0));i>=8;e[n+d]=s&255,d+=p,s/=256,i-=8);for(o=o<<i|s,u+=i;u>0;e[n+d]=o&255,d+=p,o/=256,u-=8);e[n+d-p]|=b*128};/*!
|
|
152
|
+
* The buffer module from node.js, for the browser.
|
|
153
|
+
*
|
|
154
|
+
* @author Feross Aboukhadijeh <https://feross.org>
|
|
155
|
+
* @license MIT
|
|
156
|
+
*/(function(e){const t=Pf,n=y0,r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=s,e.SlowBuffer=D,e.INSPECT_MAX_BYTES=50;const i=2147483647;e.kMaxLength=i,s.TYPED_ARRAY_SUPPORT=a(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function a(){try{const y=new Uint8Array(1),g={foo:function(){return 42}};return Object.setPrototypeOf(g,Uint8Array.prototype),Object.setPrototypeOf(y,g),y.foo()===42}catch{return!1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function o(y){if(y>i)throw new RangeError('The value "'+y+'" is invalid for option "size"');const g=new Uint8Array(y);return Object.setPrototypeOf(g,s.prototype),g}function s(y,g,m){if(typeof y=="number"){if(typeof g=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return l(y)}return f(y,g,m)}s.poolSize=8192;function f(y,g,m){if(typeof y=="string")return h(y,g);if(ArrayBuffer.isView(y))return p(y);if(y==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y);if(Pt(y,ArrayBuffer)||y&&Pt(y.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Pt(y,SharedArrayBuffer)||y&&Pt(y.buffer,SharedArrayBuffer)))return b(y,g,m);if(typeof y=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const v=y.valueOf&&y.valueOf();if(v!=null&&v!==y)return s.from(v,g,m);const M=x(y);if(M)return M;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof y[Symbol.toPrimitive]=="function")return s.from(y[Symbol.toPrimitive]("string"),g,m);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y)}s.from=function(y,g,m){return f(y,g,m)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function u(y){if(typeof y!="number")throw new TypeError('"size" argument must be of type number');if(y<0)throw new RangeError('The value "'+y+'" is invalid for option "size"')}function c(y,g,m){return u(y),y<=0?o(y):g!==void 0?typeof m=="string"?o(y).fill(g,m):o(y).fill(g):o(y)}s.alloc=function(y,g,m){return c(y,g,m)};function l(y){return u(y),o(y<0?0:A(y)|0)}s.allocUnsafe=function(y){return l(y)},s.allocUnsafeSlow=function(y){return l(y)};function h(y,g){if((typeof g!="string"||g==="")&&(g="utf8"),!s.isEncoding(g))throw new TypeError("Unknown encoding: "+g);const m=I(y,g)|0;let v=o(m);const M=v.write(y,g);return M!==m&&(v=v.slice(0,M)),v}function d(y){const g=y.length<0?0:A(y.length)|0,m=o(g);for(let v=0;v<g;v+=1)m[v]=y[v]&255;return m}function p(y){if(Pt(y,Uint8Array)){const g=new Uint8Array(y);return b(g.buffer,g.byteOffset,g.byteLength)}return d(y)}function b(y,g,m){if(g<0||y.byteLength<g)throw new RangeError('"offset" is outside of buffer bounds');if(y.byteLength<g+(m||0))throw new RangeError('"length" is outside of buffer bounds');let v;return g===void 0&&m===void 0?v=new Uint8Array(y):m===void 0?v=new Uint8Array(y,g):v=new Uint8Array(y,g,m),Object.setPrototypeOf(v,s.prototype),v}function x(y){if(s.isBuffer(y)){const g=A(y.length)|0,m=o(g);return m.length===0||y.copy(m,0,0,g),m}if(y.length!==void 0)return typeof y.length!="number"||du(y.length)?o(0):d(y);if(y.type==="Buffer"&&Array.isArray(y.data))return d(y.data)}function A(y){if(y>=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return y|0}function D(y){return+y!=y&&(y=0),s.alloc(+y)}s.isBuffer=function(g){return g!=null&&g._isBuffer===!0&&g!==s.prototype},s.compare=function(g,m){if(Pt(g,Uint8Array)&&(g=s.from(g,g.offset,g.byteLength)),Pt(m,Uint8Array)&&(m=s.from(m,m.offset,m.byteLength)),!s.isBuffer(g)||!s.isBuffer(m))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(g===m)return 0;let v=g.length,M=m.length;for(let k=0,O=Math.min(v,M);k<O;++k)if(g[k]!==m[k]){v=g[k],M=m[k];break}return v<M?-1:M<v?1:0},s.isEncoding=function(g){switch(String(g).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(g,m){if(!Array.isArray(g))throw new TypeError('"list" argument must be an Array of Buffers');if(g.length===0)return s.alloc(0);let v;if(m===void 0)for(m=0,v=0;v<g.length;++v)m+=g[v].length;const M=s.allocUnsafe(m);let k=0;for(v=0;v<g.length;++v){let O=g[v];if(Pt(O,Uint8Array))k+O.length>M.length?(s.isBuffer(O)||(O=s.from(O)),O.copy(M,k)):Uint8Array.prototype.set.call(M,O,k);else if(s.isBuffer(O))O.copy(M,k);else throw new TypeError('"list" argument must be an Array of Buffers');k+=O.length}return M};function I(y,g){if(s.isBuffer(y))return y.length;if(ArrayBuffer.isView(y)||Pt(y,ArrayBuffer))return y.byteLength;if(typeof y!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof y);const m=y.length,v=arguments.length>2&&arguments[2]===!0;if(!v&&m===0)return 0;let M=!1;for(;;)switch(g){case"ascii":case"latin1":case"binary":return m;case"utf8":case"utf-8":return Ot(y).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return m*2;case"hex":return m>>>1;case"base64":return hu(y).length;default:if(M)return v?-1:Ot(y).length;g=(""+g).toLowerCase(),M=!0}}s.byteLength=I;function C(y,g,m){let v=!1;if((g===void 0||g<0)&&(g=0),g>this.length||((m===void 0||m>this.length)&&(m=this.length),m<=0)||(m>>>=0,g>>>=0,m<=g))return"";for(y||(y="utf8");;)switch(y){case"hex":return wt(this,g,m);case"utf8":case"utf-8":return Y(this,g,m);case"ascii":return Ze(this,g,m);case"latin1":case"binary":return yt(this,g,m);case"base64":return W(this,g,m);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return lu(this,g,m);default:if(v)throw new TypeError("Unknown encoding: "+y);y=(y+"").toLowerCase(),v=!0}}s.prototype._isBuffer=!0;function T(y,g,m){const v=y[g];y[g]=y[m],y[m]=v}s.prototype.swap16=function(){const g=this.length;if(g%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let m=0;m<g;m+=2)T(this,m,m+1);return this},s.prototype.swap32=function(){const g=this.length;if(g%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let m=0;m<g;m+=4)T(this,m,m+3),T(this,m+1,m+2);return this},s.prototype.swap64=function(){const g=this.length;if(g%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let m=0;m<g;m+=8)T(this,m,m+7),T(this,m+1,m+6),T(this,m+2,m+5),T(this,m+3,m+4);return this},s.prototype.toString=function(){const g=this.length;return g===0?"":arguments.length===0?Y(this,0,g):C.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(g){if(!s.isBuffer(g))throw new TypeError("Argument must be a Buffer");return this===g?!0:s.compare(this,g)===0},s.prototype.inspect=function(){let g="";const m=e.INSPECT_MAX_BYTES;return g=this.toString("hex",0,m).replace(/(.{2})/g,"$1 ").trim(),this.length>m&&(g+=" ... "),"<Buffer "+g+">"},r&&(s.prototype[r]=s.prototype.inspect),s.prototype.compare=function(g,m,v,M,k){if(Pt(g,Uint8Array)&&(g=s.from(g,g.offset,g.byteLength)),!s.isBuffer(g))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof g);if(m===void 0&&(m=0),v===void 0&&(v=g?g.length:0),M===void 0&&(M=0),k===void 0&&(k=this.length),m<0||v>g.length||M<0||k>this.length)throw new RangeError("out of range index");if(M>=k&&m>=v)return 0;if(M>=k)return-1;if(m>=v)return 1;if(m>>>=0,v>>>=0,M>>>=0,k>>>=0,this===g)return 0;let O=k-M,te=v-m;const _e=Math.min(O,te),we=this.slice(M,k),Fe=g.slice(m,v);for(let pe=0;pe<_e;++pe)if(we[pe]!==Fe[pe]){O=we[pe],te=Fe[pe];break}return O<te?-1:te<O?1:0};function B(y,g,m,v,M){if(y.length===0)return-1;if(typeof m=="string"?(v=m,m=0):m>2147483647?m=2147483647:m<-2147483648&&(m=-2147483648),m=+m,du(m)&&(m=M?0:y.length-1),m<0&&(m=y.length+m),m>=y.length){if(M)return-1;m=y.length-1}else if(m<0)if(M)m=0;else return-1;if(typeof g=="string"&&(g=s.from(g,v)),s.isBuffer(g))return g.length===0?-1:S(y,g,m,v,M);if(typeof g=="number")return g=g&255,typeof Uint8Array.prototype.indexOf=="function"?M?Uint8Array.prototype.indexOf.call(y,g,m):Uint8Array.prototype.lastIndexOf.call(y,g,m):S(y,[g],m,v,M);throw new TypeError("val must be string, number or Buffer")}function S(y,g,m,v,M){let k=1,O=y.length,te=g.length;if(v!==void 0&&(v=String(v).toLowerCase(),v==="ucs2"||v==="ucs-2"||v==="utf16le"||v==="utf-16le")){if(y.length<2||g.length<2)return-1;k=2,O/=2,te/=2,m/=2}function _e(Fe,pe){return k===1?Fe[pe]:Fe.readUInt16BE(pe*k)}let we;if(M){let Fe=-1;for(we=m;we<O;we++)if(_e(y,we)===_e(g,Fe===-1?0:we-Fe)){if(Fe===-1&&(Fe=we),we-Fe+1===te)return Fe*k}else Fe!==-1&&(we-=we-Fe),Fe=-1}else for(m+te>O&&(m=O-te),we=m;we>=0;we--){let Fe=!0;for(let pe=0;pe<te;pe++)if(_e(y,we+pe)!==_e(g,pe)){Fe=!1;break}if(Fe)return we}return-1}s.prototype.includes=function(g,m,v){return this.indexOf(g,m,v)!==-1},s.prototype.indexOf=function(g,m,v){return B(this,g,m,v,!0)},s.prototype.lastIndexOf=function(g,m,v){return B(this,g,m,v,!1)};function z(y,g,m,v){m=Number(m)||0;const M=y.length-m;v?(v=Number(v),v>M&&(v=M)):v=M;const k=g.length;v>k/2&&(v=k/2);let O;for(O=0;O<v;++O){const te=parseInt(g.substr(O*2,2),16);if(du(te))return O;y[m+O]=te}return O}function E(y,g,m,v){return lo(Ot(g,y.length-m),y,m,v)}function N(y,g,m,v){return lo(Wi(g),y,m,v)}function F(y,g,m,v){return lo(hu(g),y,m,v)}function Z(y,g,m,v){return lo(ag(g,y.length-m),y,m,v)}s.prototype.write=function(g,m,v,M){if(m===void 0)M="utf8",v=this.length,m=0;else if(v===void 0&&typeof m=="string")M=m,v=this.length,m=0;else if(isFinite(m))m=m>>>0,isFinite(v)?(v=v>>>0,M===void 0&&(M="utf8")):(M=v,v=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const k=this.length-m;if((v===void 0||v>k)&&(v=k),g.length>0&&(v<0||m<0)||m>this.length)throw new RangeError("Attempt to write outside buffer bounds");M||(M="utf8");let O=!1;for(;;)switch(M){case"hex":return z(this,g,m,v);case"utf8":case"utf-8":return E(this,g,m,v);case"ascii":case"latin1":case"binary":return N(this,g,m,v);case"base64":return F(this,g,m,v);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z(this,g,m,v);default:if(O)throw new TypeError("Unknown encoding: "+M);M=(""+M).toLowerCase(),O=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function W(y,g,m){return g===0&&m===y.length?t.fromByteArray(y):t.fromByteArray(y.slice(g,m))}function Y(y,g,m){m=Math.min(y.length,m);const v=[];let M=g;for(;M<m;){const k=y[M];let O=null,te=k>239?4:k>223?3:k>191?2:1;if(M+te<=m){let _e,we,Fe,pe;switch(te){case 1:k<128&&(O=k);break;case 2:_e=y[M+1],(_e&192)===128&&(pe=(k&31)<<6|_e&63,pe>127&&(O=pe));break;case 3:_e=y[M+1],we=y[M+2],(_e&192)===128&&(we&192)===128&&(pe=(k&15)<<12|(_e&63)<<6|we&63,pe>2047&&(pe<55296||pe>57343)&&(O=pe));break;case 4:_e=y[M+1],we=y[M+2],Fe=y[M+3],(_e&192)===128&&(we&192)===128&&(Fe&192)===128&&(pe=(k&15)<<18|(_e&63)<<12|(we&63)<<6|Fe&63,pe>65535&&pe<1114112&&(O=pe))}}O===null?(O=65533,te=1):O>65535&&(O-=65536,v.push(O>>>10&1023|55296),O=56320|O&1023),v.push(O),M+=te}return Ee(v)}const be=4096;function Ee(y){const g=y.length;if(g<=be)return String.fromCharCode.apply(String,y);let m="",v=0;for(;v<g;)m+=String.fromCharCode.apply(String,y.slice(v,v+=be));return m}function Ze(y,g,m){let v="";m=Math.min(y.length,m);for(let M=g;M<m;++M)v+=String.fromCharCode(y[M]&127);return v}function yt(y,g,m){let v="";m=Math.min(y.length,m);for(let M=g;M<m;++M)v+=String.fromCharCode(y[M]);return v}function wt(y,g,m){const v=y.length;(!g||g<0)&&(g=0),(!m||m<0||m>v)&&(m=v);let M="";for(let k=g;k<m;++k)M+=kc[y[k]];return M}function lu(y,g,m){const v=y.slice(g,m);let M="";for(let k=0;k<v.length-1;k+=2)M+=String.fromCharCode(v[k]+v[k+1]*256);return M}s.prototype.slice=function(g,m){const v=this.length;g=~~g,m=m===void 0?v:~~m,g<0?(g+=v,g<0&&(g=0)):g>v&&(g=v),m<0?(m+=v,m<0&&(m=0)):m>v&&(m=v),m<g&&(m=g);const M=this.subarray(g,m);return Object.setPrototypeOf(M,s.prototype),M};function Re(y,g,m){if(y%1!==0||y<0)throw new RangeError("offset is not uint");if(y+g>m)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(g,m,v){g=g>>>0,m=m>>>0,v||Re(g,m,this.length);let M=this[g],k=1,O=0;for(;++O<m&&(k*=256);)M+=this[g+O]*k;return M},s.prototype.readUintBE=s.prototype.readUIntBE=function(g,m,v){g=g>>>0,m=m>>>0,v||Re(g,m,this.length);let M=this[g+--m],k=1;for(;m>0&&(k*=256);)M+=this[g+--m]*k;return M},s.prototype.readUint8=s.prototype.readUInt8=function(g,m){return g=g>>>0,m||Re(g,1,this.length),this[g]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(g,m){return g=g>>>0,m||Re(g,2,this.length),this[g]|this[g+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(g,m){return g=g>>>0,m||Re(g,2,this.length),this[g]<<8|this[g+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(g,m){return g=g>>>0,m||Re(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+this[g+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(g,m){return g=g>>>0,m||Re(g,4,this.length),this[g]*16777216+(this[g+1]<<16|this[g+2]<<8|this[g+3])},s.prototype.readBigUInt64LE=Hn(function(g){g=g>>>0,Oe(g,"offset");const m=this[g],v=this[g+7];(m===void 0||v===void 0)&&se(g,this.length-8);const M=m+this[++g]*2**8+this[++g]*2**16+this[++g]*2**24,k=this[++g]+this[++g]*2**8+this[++g]*2**16+v*2**24;return BigInt(M)+(BigInt(k)<<BigInt(32))}),s.prototype.readBigUInt64BE=Hn(function(g){g=g>>>0,Oe(g,"offset");const m=this[g],v=this[g+7];(m===void 0||v===void 0)&&se(g,this.length-8);const M=m*2**24+this[++g]*2**16+this[++g]*2**8+this[++g],k=this[++g]*2**24+this[++g]*2**16+this[++g]*2**8+v;return(BigInt(M)<<BigInt(32))+BigInt(k)}),s.prototype.readIntLE=function(g,m,v){g=g>>>0,m=m>>>0,v||Re(g,m,this.length);let M=this[g],k=1,O=0;for(;++O<m&&(k*=256);)M+=this[g+O]*k;return k*=128,M>=k&&(M-=Math.pow(2,8*m)),M},s.prototype.readIntBE=function(g,m,v){g=g>>>0,m=m>>>0,v||Re(g,m,this.length);let M=m,k=1,O=this[g+--M];for(;M>0&&(k*=256);)O+=this[g+--M]*k;return k*=128,O>=k&&(O-=Math.pow(2,8*m)),O},s.prototype.readInt8=function(g,m){return g=g>>>0,m||Re(g,1,this.length),this[g]&128?(255-this[g]+1)*-1:this[g]},s.prototype.readInt16LE=function(g,m){g=g>>>0,m||Re(g,2,this.length);const v=this[g]|this[g+1]<<8;return v&32768?v|4294901760:v},s.prototype.readInt16BE=function(g,m){g=g>>>0,m||Re(g,2,this.length);const v=this[g+1]|this[g]<<8;return v&32768?v|4294901760:v},s.prototype.readInt32LE=function(g,m){return g=g>>>0,m||Re(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},s.prototype.readInt32BE=function(g,m){return g=g>>>0,m||Re(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},s.prototype.readBigInt64LE=Hn(function(g){g=g>>>0,Oe(g,"offset");const m=this[g],v=this[g+7];(m===void 0||v===void 0)&&se(g,this.length-8);const M=this[g+4]+this[g+5]*2**8+this[g+6]*2**16+(v<<24);return(BigInt(M)<<BigInt(32))+BigInt(m+this[++g]*2**8+this[++g]*2**16+this[++g]*2**24)}),s.prototype.readBigInt64BE=Hn(function(g){g=g>>>0,Oe(g,"offset");const m=this[g],v=this[g+7];(m===void 0||v===void 0)&&se(g,this.length-8);const M=(m<<24)+this[++g]*2**16+this[++g]*2**8+this[++g];return(BigInt(M)<<BigInt(32))+BigInt(this[++g]*2**24+this[++g]*2**16+this[++g]*2**8+v)}),s.prototype.readFloatLE=function(g,m){return g=g>>>0,m||Re(g,4,this.length),n.read(this,g,!0,23,4)},s.prototype.readFloatBE=function(g,m){return g=g>>>0,m||Re(g,4,this.length),n.read(this,g,!1,23,4)},s.prototype.readDoubleLE=function(g,m){return g=g>>>0,m||Re(g,8,this.length),n.read(this,g,!0,52,8)},s.prototype.readDoubleBE=function(g,m){return g=g>>>0,m||Re(g,8,this.length),n.read(this,g,!1,52,8)};function Ye(y,g,m,v,M,k){if(!s.isBuffer(y))throw new TypeError('"buffer" argument must be a Buffer instance');if(g>M||g<k)throw new RangeError('"value" argument is out of bounds');if(m+v>y.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(g,m,v,M){if(g=+g,m=m>>>0,v=v>>>0,!M){const te=Math.pow(2,8*v)-1;Ye(this,g,m,v,te,0)}let k=1,O=0;for(this[m]=g&255;++O<v&&(k*=256);)this[m+O]=g/k&255;return m+v},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(g,m,v,M){if(g=+g,m=m>>>0,v=v>>>0,!M){const te=Math.pow(2,8*v)-1;Ye(this,g,m,v,te,0)}let k=v-1,O=1;for(this[m+k]=g&255;--k>=0&&(O*=256);)this[m+k]=g/O&255;return m+v},s.prototype.writeUint8=s.prototype.writeUInt8=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,1,255,0),this[m]=g&255,m+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,2,65535,0),this[m]=g&255,this[m+1]=g>>>8,m+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,2,65535,0),this[m]=g>>>8,this[m+1]=g&255,m+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,4,4294967295,0),this[m+3]=g>>>24,this[m+2]=g>>>16,this[m+1]=g>>>8,this[m]=g&255,m+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,4,4294967295,0),this[m]=g>>>24,this[m+1]=g>>>16,this[m+2]=g>>>8,this[m+3]=g&255,m+4};function uo(y,g,m,v,M){P(g,v,M,y,m,7);let k=Number(g&BigInt(4294967295));y[m++]=k,k=k>>8,y[m++]=k,k=k>>8,y[m++]=k,k=k>>8,y[m++]=k;let O=Number(g>>BigInt(32)&BigInt(4294967295));return y[m++]=O,O=O>>8,y[m++]=O,O=O>>8,y[m++]=O,O=O>>8,y[m++]=O,m}function Yi(y,g,m,v,M){P(g,v,M,y,m,7);let k=Number(g&BigInt(4294967295));y[m+7]=k,k=k>>8,y[m+6]=k,k=k>>8,y[m+5]=k,k=k>>8,y[m+4]=k;let O=Number(g>>BigInt(32)&BigInt(4294967295));return y[m+3]=O,O=O>>8,y[m+2]=O,O=O>>8,y[m+1]=O,O=O>>8,y[m]=O,m+8}s.prototype.writeBigUInt64LE=Hn(function(g,m=0){return uo(this,g,m,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=Hn(function(g,m=0){return Yi(this,g,m,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(g,m,v,M){if(g=+g,m=m>>>0,!M){const _e=Math.pow(2,8*v-1);Ye(this,g,m,v,_e-1,-_e)}let k=0,O=1,te=0;for(this[m]=g&255;++k<v&&(O*=256);)g<0&&te===0&&this[m+k-1]!==0&&(te=1),this[m+k]=(g/O>>0)-te&255;return m+v},s.prototype.writeIntBE=function(g,m,v,M){if(g=+g,m=m>>>0,!M){const _e=Math.pow(2,8*v-1);Ye(this,g,m,v,_e-1,-_e)}let k=v-1,O=1,te=0;for(this[m+k]=g&255;--k>=0&&(O*=256);)g<0&&te===0&&this[m+k+1]!==0&&(te=1),this[m+k]=(g/O>>0)-te&255;return m+v},s.prototype.writeInt8=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,1,127,-128),g<0&&(g=255+g+1),this[m]=g&255,m+1},s.prototype.writeInt16LE=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,2,32767,-32768),this[m]=g&255,this[m+1]=g>>>8,m+2},s.prototype.writeInt16BE=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,2,32767,-32768),this[m]=g>>>8,this[m+1]=g&255,m+2},s.prototype.writeInt32LE=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,4,2147483647,-2147483648),this[m]=g&255,this[m+1]=g>>>8,this[m+2]=g>>>16,this[m+3]=g>>>24,m+4},s.prototype.writeInt32BE=function(g,m,v){return g=+g,m=m>>>0,v||Ye(this,g,m,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),this[m]=g>>>24,this[m+1]=g>>>16,this[m+2]=g>>>8,this[m+3]=g&255,m+4},s.prototype.writeBigInt64LE=Hn(function(g,m=0){return uo(this,g,m,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=Hn(function(g,m=0){return Yi(this,g,m,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function fo(y,g,m,v,M,k){if(m+v>y.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("Index out of range")}function qi(y,g,m,v,M){return g=+g,m=m>>>0,M||fo(y,g,m,4),n.write(y,g,m,v,23,4),m+4}s.prototype.writeFloatLE=function(g,m,v){return qi(this,g,m,!0,v)},s.prototype.writeFloatBE=function(g,m,v){return qi(this,g,m,!1,v)};function co(y,g,m,v,M){return g=+g,m=m>>>0,M||fo(y,g,m,8),n.write(y,g,m,v,52,8),m+8}s.prototype.writeDoubleLE=function(g,m,v){return co(this,g,m,!0,v)},s.prototype.writeDoubleBE=function(g,m,v){return co(this,g,m,!1,v)},s.prototype.copy=function(g,m,v,M){if(!s.isBuffer(g))throw new TypeError("argument should be a Buffer");if(v||(v=0),!M&&M!==0&&(M=this.length),m>=g.length&&(m=g.length),m||(m=0),M>0&&M<v&&(M=v),M===v||g.length===0||this.length===0)return 0;if(m<0)throw new RangeError("targetStart out of bounds");if(v<0||v>=this.length)throw new RangeError("Index out of range");if(M<0)throw new RangeError("sourceEnd out of bounds");M>this.length&&(M=this.length),g.length-m<M-v&&(M=g.length-m+v);const k=M-v;return this===g&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(m,v,M):Uint8Array.prototype.set.call(g,this.subarray(v,M),m),k},s.prototype.fill=function(g,m,v,M){if(typeof g=="string"){if(typeof m=="string"?(M=m,m=0,v=this.length):typeof v=="string"&&(M=v,v=this.length),M!==void 0&&typeof M!="string")throw new TypeError("encoding must be a string");if(typeof M=="string"&&!s.isEncoding(M))throw new TypeError("Unknown encoding: "+M);if(g.length===1){const O=g.charCodeAt(0);(M==="utf8"&&O<128||M==="latin1")&&(g=O)}}else typeof g=="number"?g=g&255:typeof g=="boolean"&&(g=Number(g));if(m<0||this.length<m||this.length<v)throw new RangeError("Out of range index");if(v<=m)return this;m=m>>>0,v=v===void 0?this.length:v>>>0,g||(g=0);let k;if(typeof g=="number")for(k=m;k<v;++k)this[k]=g;else{const O=s.isBuffer(g)?g:s.from(g,M),te=O.length;if(te===0)throw new TypeError('The value "'+g+'" is invalid for argument "value"');for(k=0;k<v-m;++k)this[k+m]=O[k%te]}return this};const vn={};function Q(y,g,m){vn[y]=class extends m{constructor(){super(),Object.defineProperty(this,"message",{value:g.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${y}]`,this.stack,delete this.name}get code(){return y}set code(M){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:M,writable:!0})}toString(){return`${this.name} [${y}]: ${this.message}`}}}Q("ERR_BUFFER_OUT_OF_BOUNDS",function(y){return y?`${y} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Q("ERR_INVALID_ARG_TYPE",function(y,g){return`The "${y}" argument must be of type number. Received type ${typeof g}`},TypeError),Q("ERR_OUT_OF_RANGE",function(y,g,m){let v=`The value of "${y}" is out of range.`,M=m;return Number.isInteger(m)&&Math.abs(m)>2**32?M=$(String(m)):typeof m=="bigint"&&(M=String(m),(m>BigInt(2)**BigInt(32)||m<-(BigInt(2)**BigInt(32)))&&(M=$(M)),M+="n"),v+=` It must be ${g}. Received ${M}`,v},RangeError);function $(y){let g="",m=y.length;const v=y[0]==="-"?1:0;for(;m>=v+4;m-=3)g=`_${y.slice(m-3,m)}${g}`;return`${y.slice(0,m)}${g}`}function ie(y,g,m){Oe(g,"offset"),(y[g]===void 0||y[g+m]===void 0)&&se(g,y.length-(m+1))}function P(y,g,m,v,M,k){if(y>m||y<g){const O=typeof g=="bigint"?"n":"";let te;throw k>3?g===0||g===BigInt(0)?te=`>= 0${O} and < 2${O} ** ${(k+1)*8}${O}`:te=`>= -(2${O} ** ${(k+1)*8-1}${O}) and < 2 ** ${(k+1)*8-1}${O}`:te=`>= ${g}${O} and <= ${m}${O}`,new vn.ERR_OUT_OF_RANGE("value",te,y)}ie(v,M,k)}function Oe(y,g){if(typeof y!="number")throw new vn.ERR_INVALID_ARG_TYPE(g,"number",y)}function se(y,g,m){throw Math.floor(y)!==y?(Oe(y,m),new vn.ERR_OUT_OF_RANGE(m||"offset","an integer",y)):g<0?new vn.ERR_BUFFER_OUT_OF_BOUNDS:new vn.ERR_OUT_OF_RANGE(m||"offset",`>= ${m?1:0} and <= ${g}`,y)}const ot=/[^+/0-9A-Za-z-_]/g;function tt(y){if(y=y.split("=")[0],y=y.trim().replace(ot,""),y.length<2)return"";for(;y.length%4!==0;)y=y+"=";return y}function Ot(y,g){g=g||1/0;let m;const v=y.length;let M=null;const k=[];for(let O=0;O<v;++O){if(m=y.charCodeAt(O),m>55295&&m<57344){if(!M){if(m>56319){(g-=3)>-1&&k.push(239,191,189);continue}else if(O+1===v){(g-=3)>-1&&k.push(239,191,189);continue}M=m;continue}if(m<56320){(g-=3)>-1&&k.push(239,191,189),M=m;continue}m=(M-55296<<10|m-56320)+65536}else M&&(g-=3)>-1&&k.push(239,191,189);if(M=null,m<128){if((g-=1)<0)break;k.push(m)}else if(m<2048){if((g-=2)<0)break;k.push(m>>6|192,m&63|128)}else if(m<65536){if((g-=3)<0)break;k.push(m>>12|224,m>>6&63|128,m&63|128)}else if(m<1114112){if((g-=4)<0)break;k.push(m>>18|240,m>>12&63|128,m>>6&63|128,m&63|128)}else throw new Error("Invalid code point")}return k}function Wi(y){const g=[];for(let m=0;m<y.length;++m)g.push(y.charCodeAt(m)&255);return g}function ag(y,g){let m,v,M;const k=[];for(let O=0;O<y.length&&!((g-=2)<0);++O)m=y.charCodeAt(O),v=m>>8,M=m%256,k.push(M),k.push(v);return k}function hu(y){return t.toByteArray(tt(y))}function lo(y,g,m,v){let M;for(M=0;M<v&&!(M+m>=g.length||M>=y.length);++M)g[M+m]=y[M];return M}function Pt(y,g){return y instanceof g||y!=null&&y.constructor!=null&&y.constructor.name!=null&&y.constructor.name===g.name}function du(y){return y!==y}const kc=function(){const y="0123456789abcdef",g=new Array(256);for(let m=0;m<16;++m){const v=m*16;for(let M=0;M<16;++M)g[v+M]=y[m]+y[M]}return g}();function Hn(y){return typeof BigInt>"u"?Lc:y}function Lc(){throw new Error("BigInt not supported")}})(kt);const Br={},w0=typeof window<"u"?window:typeof self<"u"?self:{fetch:void 0};class tr{async getBufferFromResponse(t){if(typeof t.buffer=="function")return t.buffer();if(typeof t.arrayBuffer=="function"){const n=await t.arrayBuffer();return kt.Buffer.from(n)}else throw new TypeError("invalid HTTP response object, has no buffer method, and no arrayBuffer method")}constructor(t,n={}){this.baseOverrides={},this.url=t;const r=n.fetch||w0.fetch&&w0.fetch.bind(w0);if(!r)throw new TypeError("no fetch function supplied, and none found in global environment");n.overrides&&(this.baseOverrides=n.overrides),this.fetchImplementation=r}async fetch(t,n){let r;try{r=await this.fetchImplementation(t,n)}catch(i){if(`${i}`.includes("Failed to fetch"))console.warn(`generic-filehandle: refetching ${t} to attempt to work around chrome CORS header caching bug`),r=await this.fetchImplementation(t,{...n,cache:"reload"});else throw i}return r}async read(t,n=0,r,i=0,a={}){const{headers:o={},signal:s,overrides:f={}}=a;r<1/0?o.range=`bytes=${i}-${i+r}`:r===1/0&&i!==0&&(o.range=`bytes=${i}-`);const u={...this.baseOverrides,...f,headers:{...o,...f.headers,...this.baseOverrides.headers},method:"GET",redirect:"follow",mode:"cors",signal:s},c=await this.fetch(this.url,u);if(!c.ok)throw new Error(`HTTP ${c.status} ${c.statusText} ${this.url}`);if(c.status===200&&i===0||c.status===206){const l=await this.getBufferFromResponse(c),h=l.copy(t,n,0,Math.min(r,l.length)),d=c.headers.get("content-range"),p=/\/(\d+)$/.exec(d||"");return p&&p[1]&&(this._stat={size:parseInt(p[1],10)}),{bytesRead:h,buffer:t}}throw c.status===200?new Error("${this.url} fetch returned status 200, expected 206"):new Error(`HTTP ${c.status} fetching ${this.url}`)}async readFile(t={}){let n,r;typeof t=="string"?(n=t,r={}):(n=t.encoding,r=t,delete r.encoding);const{headers:i={},signal:a,overrides:o={}}=r,s={headers:i,method:"GET",redirect:"follow",mode:"cors",signal:a,...this.baseOverrides,...o},f=await this.fetch(this.url,s);if(!f)throw new Error("generic-filehandle failed to fetch");if(f.status!==200)throw Object.assign(new Error(`HTTP ${f.status} fetching ${this.url}`),{status:f.status});if(n==="utf8")return f.text();if(n)throw new Error(`unsupported encoding: ${n}`);return this.getBufferFromResponse(f)}async stat(){if(!this._stat){const t=kt.Buffer.allocUnsafe(10);if(await this.read(t,0,10,0),!this._stat)throw new Error(`unable to determine size of file at ${this.url}`)}return this._stat}async close(){}}var nr={};(function(e){var t=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function n(a,o){return Object.prototype.hasOwnProperty.call(a,o)}e.assign=function(a){for(var o=Array.prototype.slice.call(arguments,1);o.length;){var s=o.shift();if(s){if(typeof s!="object")throw new TypeError(s+"must be non-object");for(var f in s)n(s,f)&&(a[f]=s[f])}}return a},e.shrinkBuf=function(a,o){return a.length===o?a:a.subarray?a.subarray(0,o):(a.length=o,a)};var r={arraySet:function(a,o,s,f,u){if(o.subarray&&a.subarray){a.set(o.subarray(s,s+f),u);return}for(var c=0;c<f;c++)a[u+c]=o[s+c]},flattenChunks:function(a){var o,s,f,u,c,l;for(f=0,o=0,s=a.length;o<s;o++)f+=a[o].length;for(l=new Uint8Array(f),u=0,o=0,s=a.length;o<s;o++)c=a[o],l.set(c,u),u+=c.length;return l}},i={arraySet:function(a,o,s,f,u){for(var c=0;c<f;c++)a[u+c]=o[s+c]},flattenChunks:function(a){return[].concat.apply([],a)}};e.setTyped=function(a){a?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,r)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,i))},e.setTyped(t)})(nr);var ws={},Fn={},Na={},sN=nr,uN=4,Uy=0,jy=1,fN=2;function Ba(e){for(var t=e.length;--t>=0;)e[t]=0}var cN=0,Gy=1,lN=2,hN=3,dN=258,x0=29,xs=256,As=xs+1+x0,Fa=30,A0=19,Hy=2*As+1,Di=15,v0=16,gN=7,E0=256,Qy=16,Vy=17,Zy=18,C0=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Uf=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],pN=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Yy=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],mN=512,rr=new Array((As+2)*2);Ba(rr);var vs=new Array(Fa*2);Ba(vs);var Es=new Array(mN);Ba(Es);var Cs=new Array(dN-hN+1);Ba(Cs);var S0=new Array(x0);Ba(S0);var jf=new Array(Fa);Ba(jf);function D0(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}var qy,Wy,Xy;function _0(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Ky(e){return e<256?Es[e]:Es[256+(e>>>7)]}function Ss(e,t){e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255}function _t(e,t,n){e.bi_valid>v0-n?(e.bi_buf|=t<<e.bi_valid&65535,Ss(e,e.bi_buf),e.bi_buf=t>>v0-e.bi_valid,e.bi_valid+=n-v0):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)}function kn(e,t,n){_t(e,n[t*2],n[t*2+1])}function Jy(e,t){var n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1}function bN(e){e.bi_valid===16?(Ss(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)}function yN(e,t){var n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,f=t.stat_desc.max_length,u,c,l,h,d,p,b=0;for(h=0;h<=Di;h++)e.bl_count[h]=0;for(n[e.heap[e.heap_max]*2+1]=0,u=e.heap_max+1;u<Hy;u++)c=e.heap[u],h=n[n[c*2+1]*2+1]+1,h>f&&(h=f,b++),n[c*2+1]=h,!(c>r)&&(e.bl_count[h]++,d=0,c>=s&&(d=o[c-s]),p=n[c*2],e.opt_len+=p*(h+d),a&&(e.static_len+=p*(i[c*2+1]+d)));if(b!==0){do{for(h=f-1;e.bl_count[h]===0;)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[f]--,b-=2}while(b>0);for(h=f;h!==0;h--)for(c=e.bl_count[h];c!==0;)l=e.heap[--u],!(l>r)&&(n[l*2+1]!==h&&(e.opt_len+=(h-n[l*2+1])*n[l*2],n[l*2+1]=h),c--)}}function $y(e,t,n){var r=new Array(Di+1),i=0,a,o;for(a=1;a<=Di;a++)r[a]=i=i+n[a-1]<<1;for(o=0;o<=t;o++){var s=e[o*2+1];s!==0&&(e[o*2]=Jy(r[s]++,s))}}function wN(){var e,t,n,r,i,a=new Array(Di+1);for(n=0,r=0;r<x0-1;r++)for(S0[r]=n,e=0;e<1<<C0[r];e++)Cs[n++]=r;for(Cs[n-1]=r,i=0,r=0;r<16;r++)for(jf[r]=i,e=0;e<1<<Uf[r];e++)Es[i++]=r;for(i>>=7;r<Fa;r++)for(jf[r]=i<<7,e=0;e<1<<Uf[r]-7;e++)Es[256+i++]=r;for(t=0;t<=Di;t++)a[t]=0;for(e=0;e<=143;)rr[e*2+1]=8,e++,a[8]++;for(;e<=255;)rr[e*2+1]=9,e++,a[9]++;for(;e<=279;)rr[e*2+1]=7,e++,a[7]++;for(;e<=287;)rr[e*2+1]=8,e++,a[8]++;for($y(rr,As+1,a),e=0;e<Fa;e++)vs[e*2+1]=5,vs[e*2]=Jy(e,5);qy=new D0(rr,C0,xs+1,As,Di),Wy=new D0(vs,Uf,0,Fa,Di),Xy=new D0(new Array(0),pN,0,A0,gN)}function ew(e){var t;for(t=0;t<As;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Fa;t++)e.dyn_dtree[t*2]=0;for(t=0;t<A0;t++)e.bl_tree[t*2]=0;e.dyn_ltree[E0*2]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function tw(e){e.bi_valid>8?Ss(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function xN(e,t,n,r){tw(e),r&&(Ss(e,n),Ss(e,~n)),sN.arraySet(e.pending_buf,e.window,t,n,e.pending),e.pending+=n}function nw(e,t,n,r){var i=t*2,a=n*2;return e[i]<e[a]||e[i]===e[a]&&r[t]<=r[n]}function I0(e,t,n){for(var r=e.heap[n],i=n<<1;i<=e.heap_len&&(i<e.heap_len&&nw(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!nw(t,r,e.heap[i],e.depth));)e.heap[n]=e.heap[i],n=i,i<<=1;e.heap[n]=r}function rw(e,t,n){var r,i,a=0,o,s;if(e.last_lit!==0)do r=e.pending_buf[e.d_buf+a*2]<<8|e.pending_buf[e.d_buf+a*2+1],i=e.pending_buf[e.l_buf+a],a++,r===0?kn(e,i,t):(o=Cs[i],kn(e,o+xs+1,t),s=C0[o],s!==0&&(i-=S0[o],_t(e,i,s)),r--,o=Ky(r),kn(e,o,n),s=Uf[o],s!==0&&(r-=jf[o],_t(e,r,s)));while(a<e.last_lit);kn(e,E0,t)}function M0(e,t){var n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.elems,o,s,f=-1,u;for(e.heap_len=0,e.heap_max=Hy,o=0;o<a;o++)n[o*2]!==0?(e.heap[++e.heap_len]=f=o,e.depth[o]=0):n[o*2+1]=0;for(;e.heap_len<2;)u=e.heap[++e.heap_len]=f<2?++f:0,n[u*2]=1,e.depth[u]=0,e.opt_len--,i&&(e.static_len-=r[u*2+1]);for(t.max_code=f,o=e.heap_len>>1;o>=1;o--)I0(e,n,o);u=a;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],I0(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=s,n[u*2]=n[o*2]+n[s*2],e.depth[u]=(e.depth[o]>=e.depth[s]?e.depth[o]:e.depth[s])+1,n[o*2+1]=n[s*2+1]=u,e.heap[1]=u++,I0(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],yN(e,t),$y(n,f,e.bl_count)}function iw(e,t,n){var r,i=-1,a,o=t[0*2+1],s=0,f=7,u=4;for(o===0&&(f=138,u=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)a=o,o=t[(r+1)*2+1],!(++s<f&&a===o)&&(s<u?e.bl_tree[a*2]+=s:a!==0?(a!==i&&e.bl_tree[a*2]++,e.bl_tree[Qy*2]++):s<=10?e.bl_tree[Vy*2]++:e.bl_tree[Zy*2]++,s=0,i=a,o===0?(f=138,u=3):a===o?(f=6,u=3):(f=7,u=4))}function aw(e,t,n){var r,i=-1,a,o=t[0*2+1],s=0,f=7,u=4;for(o===0&&(f=138,u=3),r=0;r<=n;r++)if(a=o,o=t[(r+1)*2+1],!(++s<f&&a===o)){if(s<u)do kn(e,a,e.bl_tree);while(--s!==0);else a!==0?(a!==i&&(kn(e,a,e.bl_tree),s--),kn(e,Qy,e.bl_tree),_t(e,s-3,2)):s<=10?(kn(e,Vy,e.bl_tree),_t(e,s-3,3)):(kn(e,Zy,e.bl_tree),_t(e,s-11,7));s=0,i=a,o===0?(f=138,u=3):a===o?(f=6,u=3):(f=7,u=4)}}function AN(e){var t;for(iw(e,e.dyn_ltree,e.l_desc.max_code),iw(e,e.dyn_dtree,e.d_desc.max_code),M0(e,e.bl_desc),t=A0-1;t>=3&&e.bl_tree[Yy[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t}function vN(e,t,n,r){var i;for(_t(e,t-257,5),_t(e,n-1,5),_t(e,r-4,4),i=0;i<r;i++)_t(e,e.bl_tree[Yy[i]*2+1],3);aw(e,e.dyn_ltree,t-1),aw(e,e.dyn_dtree,n-1)}function EN(e){var t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return Uy;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return jy;for(n=32;n<xs;n++)if(e.dyn_ltree[n*2]!==0)return jy;return Uy}var ow=!1;function CN(e){ow||(wN(),ow=!0),e.l_desc=new _0(e.dyn_ltree,qy),e.d_desc=new _0(e.dyn_dtree,Wy),e.bl_desc=new _0(e.bl_tree,Xy),e.bi_buf=0,e.bi_valid=0,ew(e)}function sw(e,t,n,r){_t(e,(cN<<1)+(r?1:0),3),xN(e,t,n,!0)}function SN(e){_t(e,Gy<<1,3),kn(e,E0,rr),bN(e)}function DN(e,t,n,r){var i,a,o=0;e.level>0?(e.strm.data_type===fN&&(e.strm.data_type=EN(e)),M0(e,e.l_desc),M0(e,e.d_desc),o=AN(e),i=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=i&&(i=a)):i=a=n+5,n+4<=i&&t!==-1?sw(e,t,n,r):e.strategy===uN||a===i?(_t(e,(Gy<<1)+(r?1:0),3),rw(e,rr,vs)):(_t(e,(lN<<1)+(r?1:0),3),vN(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),rw(e,e.dyn_ltree,e.dyn_dtree)),ew(e),r&&tw(e)}function _N(e,t,n){return e.pending_buf[e.d_buf+e.last_lit*2]=t>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=t&255,e.pending_buf[e.l_buf+e.last_lit]=n&255,e.last_lit++,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Cs[n]+xs+1)*2]++,e.dyn_dtree[Ky(t)*2]++),e.last_lit===e.lit_bufsize-1}Na._tr_init=CN,Na._tr_stored_block=sw,Na._tr_flush_block=DN,Na._tr_tally=_N,Na._tr_align=SN;function IN(e,t,n,r){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}var uw=IN;function MN(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t}var TN=MN();function NN(e,t,n,r){var i=TN,a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var fw=NN,T0={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},mt=nr,Vt=Na,cw=uw,Fr=fw,BN=T0,_i=0,FN=1,kN=3,kr=4,lw=5,Ln=0,hw=1,Zt=-2,LN=-3,N0=-5,zN=-1,RN=1,Gf=2,ON=3,PN=4,UN=0,jN=2,Hf=8,GN=9,HN=15,QN=8,VN=29,ZN=256,B0=ZN+1+VN,YN=30,qN=19,WN=2*B0+1,XN=15,ae=3,Lr=258,pn=Lr+ae+1,KN=32,Qf=42,F0=69,Vf=73,Zf=91,Yf=103,Ii=113,Ds=666,Qe=1,_s=2,Mi=3,ka=4,JN=3;function zr(e,t){return e.msg=BN[t],t}function dw(e){return(e<<1)-(e>4?9:0)}function Rr(e){for(var t=e.length;--t>=0;)e[t]=0}function Or(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(mt.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))}function it(e,t){Vt._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Or(e.strm)}function le(e,t){e.pending_buf[e.pending++]=t}function Is(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255}function $N(e,t,n,r){var i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,mt.arraySet(t,e.input,e.next_in,i,n),e.state.wrap===1?e.adler=cw(e.adler,t,i,n):e.state.wrap===2&&(e.adler=Fr(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)}function gw(e,t){var n=e.max_chain_length,r=e.strstart,i,a,o=e.prev_length,s=e.nice_match,f=e.strstart>e.w_size-pn?e.strstart-(e.w_size-pn):0,u=e.window,c=e.w_mask,l=e.prev,h=e.strstart+Lr,d=u[r+o-1],p=u[r+o];e.prev_length>=e.good_match&&(n>>=2),s>e.lookahead&&(s=e.lookahead);do if(i=t,!(u[i+o]!==p||u[i+o-1]!==d||u[i]!==u[r]||u[++i]!==u[r+1])){r+=2,i++;do;while(u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&r<h);if(a=Lr-(h-r),r=h-Lr,a>o){if(e.match_start=t,o=a,a>=s)break;d=u[r+o-1],p=u[r+o]}}while((t=l[t&c])>f&&--n!==0);return o<=e.lookahead?o:e.lookahead}function Ti(e){var t=e.w_size,n,r,i,a,o;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-pn)){mt.arraySet(e.window,e.window,t,t,0),e.match_start-=t,e.strstart-=t,e.block_start-=t,r=e.hash_size,n=r;do i=e.head[--n],e.head[n]=i>=t?i-t:0;while(--r);r=t,n=r;do i=e.prev[--n],e.prev[n]=i>=t?i-t:0;while(--r);a+=t}if(e.strm.avail_in===0)break;if(r=$N(e.strm,e.window,e.strstart+e.lookahead,a),e.lookahead+=r,e.lookahead+e.insert>=ae)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+ae-1])&e.hash_mask,e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<ae)););}while(e.lookahead<pn&&e.strm.avail_in!==0)}function eB(e,t){var n=65535;for(n>e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Ti(e),e.lookahead===0&&t===_i)return Qe;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((e.strstart===0||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,it(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-pn&&(it(e,!1),e.strm.avail_out===0))return Qe}return e.insert=0,t===kr?(it(e,!0),e.strm.avail_out===0?Mi:ka):(e.strstart>e.block_start&&(it(e,!1),e.strm.avail_out===0),Qe)}function k0(e,t){for(var n,r;;){if(e.lookahead<pn){if(Ti(e),e.lookahead<pn&&t===_i)return Qe;if(e.lookahead===0)break}if(n=0,e.lookahead>=ae&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ae-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-pn&&(e.match_length=gw(e,n)),e.match_length>=ae)if(r=Vt._tr_tally(e,e.strstart-e.match_start,e.match_length-ae),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=ae){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ae-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else r=Vt._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(it(e,!1),e.strm.avail_out===0))return Qe}return e.insert=e.strstart<ae-1?e.strstart:ae-1,t===kr?(it(e,!0),e.strm.avail_out===0?Mi:ka):e.last_lit&&(it(e,!1),e.strm.avail_out===0)?Qe:_s}function La(e,t){for(var n,r,i;;){if(e.lookahead<pn){if(Ti(e),e.lookahead<pn&&t===_i)return Qe;if(e.lookahead===0)break}if(n=0,e.lookahead>=ae&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ae-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=ae-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-pn&&(e.match_length=gw(e,n),e.match_length<=5&&(e.strategy===RN||e.match_length===ae&&e.strstart-e.match_start>4096)&&(e.match_length=ae-1)),e.prev_length>=ae&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-ae,r=Vt._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-ae),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ae-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=ae-1,e.strstart++,r&&(it(e,!1),e.strm.avail_out===0))return Qe}else if(e.match_available){if(r=Vt._tr_tally(e,0,e.window[e.strstart-1]),r&&it(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Qe}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=Vt._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<ae-1?e.strstart:ae-1,t===kr?(it(e,!0),e.strm.avail_out===0?Mi:ka):e.last_lit&&(it(e,!1),e.strm.avail_out===0)?Qe:_s}function tB(e,t){for(var n,r,i,a,o=e.window;;){if(e.lookahead<=Lr){if(Ti(e),e.lookahead<=Lr&&t===_i)return Qe;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=ae&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){a=e.strstart+Lr;do;while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&i<a);e.match_length=Lr-(a-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ae?(n=Vt._tr_tally(e,1,e.match_length-ae),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Vt._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(it(e,!1),e.strm.avail_out===0))return Qe}return e.insert=0,t===kr?(it(e,!0),e.strm.avail_out===0?Mi:ka):e.last_lit&&(it(e,!1),e.strm.avail_out===0)?Qe:_s}function nB(e,t){for(var n;;){if(e.lookahead===0&&(Ti(e),e.lookahead===0)){if(t===_i)return Qe;break}if(e.match_length=0,n=Vt._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(it(e,!1),e.strm.avail_out===0))return Qe}return e.insert=0,t===kr?(it(e,!0),e.strm.avail_out===0?Mi:ka):e.last_lit&&(it(e,!1),e.strm.avail_out===0)?Qe:_s}function zn(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}var za;za=[new zn(0,0,0,0,eB),new zn(4,4,8,4,k0),new zn(4,5,16,8,k0),new zn(4,6,32,32,k0),new zn(4,4,16,16,La),new zn(8,16,32,32,La),new zn(8,16,128,128,La),new zn(8,32,128,256,La),new zn(32,128,258,1024,La),new zn(32,258,258,4096,La)];function rB(e){e.window_size=2*e.w_size,Rr(e.head),e.max_lazy_match=za[e.level].max_lazy,e.good_match=za[e.level].good_length,e.nice_match=za[e.level].nice_length,e.max_chain_length=za[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=ae-1,e.match_available=0,e.ins_h=0}function iB(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Hf,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new mt.Buf16(WN*2),this.dyn_dtree=new mt.Buf16((2*YN+1)*2),this.bl_tree=new mt.Buf16((2*qN+1)*2),Rr(this.dyn_ltree),Rr(this.dyn_dtree),Rr(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new mt.Buf16(XN+1),this.heap=new mt.Buf16(2*B0+1),Rr(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new mt.Buf16(2*B0+1),Rr(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function pw(e){var t;return!e||!e.state?zr(e,Zt):(e.total_in=e.total_out=0,e.data_type=jN,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?Qf:Ii,e.adler=t.wrap===2?0:1,t.last_flush=_i,Vt._tr_init(t),Ln)}function mw(e){var t=pw(e);return t===Ln&&rB(e.state),t}function aB(e,t){return!e||!e.state||e.state.wrap!==2?Zt:(e.state.gzhead=t,Ln)}function bw(e,t,n,r,i,a){if(!e)return Zt;var o=1;if(t===zN&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>GN||n!==Hf||r<8||r>15||t<0||t>9||a<0||a>PN)return zr(e,Zt);r===8&&(r=9);var s=new iB;return e.state=s,s.strm=e,s.wrap=o,s.gzhead=null,s.w_bits=r,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=i+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+ae-1)/ae),s.window=new mt.Buf8(s.w_size*2),s.head=new mt.Buf16(s.hash_size),s.prev=new mt.Buf16(s.w_size),s.lit_bufsize=1<<i+6,s.pending_buf_size=s.lit_bufsize*4,s.pending_buf=new mt.Buf8(s.pending_buf_size),s.d_buf=1*s.lit_bufsize,s.l_buf=(1+2)*s.lit_bufsize,s.level=t,s.strategy=a,s.method=n,mw(e)}function oB(e,t){return bw(e,t,Hf,HN,QN,UN)}function sB(e,t){var n,r,i,a;if(!e||!e.state||t>lw||t<0)return e?zr(e,Zt):Zt;if(r=e.state,!e.output||!e.input&&e.avail_in!==0||r.status===Ds&&t!==kr)return zr(e,e.avail_out===0?N0:Zt);if(r.strm=e,n=r.last_flush,r.last_flush=t,r.status===Qf)if(r.wrap===2)e.adler=0,le(r,31),le(r,139),le(r,8),r.gzhead?(le(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),le(r,r.gzhead.time&255),le(r,r.gzhead.time>>8&255),le(r,r.gzhead.time>>16&255),le(r,r.gzhead.time>>24&255),le(r,r.level===9?2:r.strategy>=Gf||r.level<2?4:0),le(r,r.gzhead.os&255),r.gzhead.extra&&r.gzhead.extra.length&&(le(r,r.gzhead.extra.length&255),le(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=Fr(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=F0):(le(r,0),le(r,0),le(r,0),le(r,0),le(r,0),le(r,r.level===9?2:r.strategy>=Gf||r.level<2?4:0),le(r,JN),r.status=Ii);else{var o=Hf+(r.w_bits-8<<4)<<8,s=-1;r.strategy>=Gf||r.level<2?s=0:r.level<6?s=1:r.level===6?s=2:s=3,o|=s<<6,r.strstart!==0&&(o|=KN),o+=31-o%31,r.status=Ii,Is(r,o),r.strstart!==0&&(Is(r,e.adler>>>16),Is(r,e.adler&65535)),e.adler=1}if(r.status===F0)if(r.gzhead.extra){for(i=r.pending;r.gzindex<(r.gzhead.extra.length&65535)&&!(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(e.adler=Fr(e.adler,r.pending_buf,r.pending-i,i)),Or(e),i=r.pending,r.pending===r.pending_buf_size));)le(r,r.gzhead.extra[r.gzindex]&255),r.gzindex++;r.gzhead.hcrc&&r.pending>i&&(e.adler=Fr(e.adler,r.pending_buf,r.pending-i,i)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=Vf)}else r.status=Vf;if(r.status===Vf)if(r.gzhead.name){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(e.adler=Fr(e.adler,r.pending_buf,r.pending-i,i)),Or(e),i=r.pending,r.pending===r.pending_buf_size)){a=1;break}r.gzindex<r.gzhead.name.length?a=r.gzhead.name.charCodeAt(r.gzindex++)&255:a=0,le(r,a)}while(a!==0);r.gzhead.hcrc&&r.pending>i&&(e.adler=Fr(e.adler,r.pending_buf,r.pending-i,i)),a===0&&(r.gzindex=0,r.status=Zf)}else r.status=Zf;if(r.status===Zf)if(r.gzhead.comment){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(e.adler=Fr(e.adler,r.pending_buf,r.pending-i,i)),Or(e),i=r.pending,r.pending===r.pending_buf_size)){a=1;break}r.gzindex<r.gzhead.comment.length?a=r.gzhead.comment.charCodeAt(r.gzindex++)&255:a=0,le(r,a)}while(a!==0);r.gzhead.hcrc&&r.pending>i&&(e.adler=Fr(e.adler,r.pending_buf,r.pending-i,i)),a===0&&(r.status=Yf)}else r.status=Yf;if(r.status===Yf&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&Or(e),r.pending+2<=r.pending_buf_size&&(le(r,e.adler&255),le(r,e.adler>>8&255),e.adler=0,r.status=Ii)):r.status=Ii),r.pending!==0){if(Or(e),e.avail_out===0)return r.last_flush=-1,Ln}else if(e.avail_in===0&&dw(t)<=dw(n)&&t!==kr)return zr(e,N0);if(r.status===Ds&&e.avail_in!==0)return zr(e,N0);if(e.avail_in!==0||r.lookahead!==0||t!==_i&&r.status!==Ds){var f=r.strategy===Gf?nB(r,t):r.strategy===ON?tB(r,t):za[r.level].func(r,t);if((f===Mi||f===ka)&&(r.status=Ds),f===Qe||f===Mi)return e.avail_out===0&&(r.last_flush=-1),Ln;if(f===_s&&(t===FN?Vt._tr_align(r):t!==lw&&(Vt._tr_stored_block(r,0,0,!1),t===kN&&(Rr(r.head),r.lookahead===0&&(r.strstart=0,r.block_start=0,r.insert=0))),Or(e),e.avail_out===0))return r.last_flush=-1,Ln}return t!==kr?Ln:r.wrap<=0?hw:(r.wrap===2?(le(r,e.adler&255),le(r,e.adler>>8&255),le(r,e.adler>>16&255),le(r,e.adler>>24&255),le(r,e.total_in&255),le(r,e.total_in>>8&255),le(r,e.total_in>>16&255),le(r,e.total_in>>24&255)):(Is(r,e.adler>>>16),Is(r,e.adler&65535)),Or(e),r.wrap>0&&(r.wrap=-r.wrap),r.pending!==0?Ln:hw)}function uB(e){var t;return!e||!e.state?Zt:(t=e.state.status,t!==Qf&&t!==F0&&t!==Vf&&t!==Zf&&t!==Yf&&t!==Ii&&t!==Ds?zr(e,Zt):(e.state=null,t===Ii?zr(e,LN):Ln))}function fB(e,t){var n=t.length,r,i,a,o,s,f,u,c;if(!e||!e.state||(r=e.state,o=r.wrap,o===2||o===1&&r.status!==Qf||r.lookahead))return Zt;for(o===1&&(e.adler=cw(e.adler,t,n,0)),r.wrap=0,n>=r.w_size&&(o===0&&(Rr(r.head),r.strstart=0,r.block_start=0,r.insert=0),c=new mt.Buf8(r.w_size),mt.arraySet(c,t,n-r.w_size,r.w_size,0),t=c,n=r.w_size),s=e.avail_in,f=e.next_in,u=e.input,e.avail_in=n,e.next_in=0,e.input=t,Ti(r);r.lookahead>=ae;){i=r.strstart,a=r.lookahead-(ae-1);do r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+ae-1])&r.hash_mask,r.prev[i&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=i,i++;while(--a);r.strstart=i,r.lookahead=ae-1,Ti(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=ae-1,r.match_available=0,e.next_in=f,e.input=u,e.avail_in=s,r.wrap=o,Ln}Fn.deflateInit=oB,Fn.deflateInit2=bw,Fn.deflateReset=mw,Fn.deflateResetKeep=pw,Fn.deflateSetHeader=aB,Fn.deflate=sB,Fn.deflateEnd=uB,Fn.deflateSetDictionary=fB,Fn.deflateInfo="pako deflate (from Nodeca project)";var Ni={},qf=nr,yw=!0,ww=!0;try{String.fromCharCode.apply(null,[0])}catch{yw=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{ww=!1}for(var Ms=new qf.Buf8(256),Pr=0;Pr<256;Pr++)Ms[Pr]=Pr>=252?6:Pr>=248?5:Pr>=240?4:Pr>=224?3:Pr>=192?2:1;Ms[254]=Ms[254]=1,Ni.string2buf=function(e){var t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new qf.Buf8(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t};function xw(e,t){if(t<65534&&(e.subarray&&ww||!e.subarray&&yw))return String.fromCharCode.apply(null,qf.shrinkBuf(e,t));for(var n="",r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}Ni.buf2binstring=function(e){return xw(e,e.length)},Ni.binstring2buf=function(e){for(var t=new qf.Buf8(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t},Ni.buf2string=function(e,t){var n,r,i,a,o=t||e.length,s=new Array(o*2);for(r=0,n=0;n<o;){if(i=e[n++],i<128){s[r++]=i;continue}if(a=Ms[i],a>4){s[r++]=65533,n+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&n<o;)i=i<<6|e[n++]&63,a--;if(a>1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return xw(s,r)},Ni.utf8border=function(e,t){var n;for(t=t||e.length,t>e.length&&(t=e.length),n=t-1;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+Ms[e[n]]>t?n:t};function cB(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Aw=cB,Ts=Fn,Ns=nr,L0=Ni,z0=T0,lB=Aw,vw=Object.prototype.toString,hB=0,R0=4,Ra=0,Ew=1,Cw=2,dB=-1,gB=0,pB=8;function Bi(e){if(!(this instanceof Bi))return new Bi(e);this.options=Ns.assign({level:dB,method:pB,chunkSize:16384,windowBits:15,memLevel:8,strategy:gB,to:""},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new lB,this.strm.avail_out=0;var n=Ts.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ra)throw new Error(z0[n]);if(t.header&&Ts.deflateSetHeader(this.strm,t.header),t.dictionary){var r;if(typeof t.dictionary=="string"?r=L0.string2buf(t.dictionary):vw.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=Ts.deflateSetDictionary(this.strm,r),n!==Ra)throw new Error(z0[n]);this._dict_set=!0}}Bi.prototype.push=function(e,t){var n=this.strm,r=this.options.chunkSize,i,a;if(this.ended)return!1;a=t===~~t?t:t===!0?R0:hB,typeof e=="string"?n.input=L0.string2buf(e):vw.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=new Ns.Buf8(r),n.next_out=0,n.avail_out=r),i=Ts.deflate(n,a),i!==Ew&&i!==Ra)return this.onEnd(i),this.ended=!0,!1;(n.avail_out===0||n.avail_in===0&&(a===R0||a===Cw))&&(this.options.to==="string"?this.onData(L0.buf2binstring(Ns.shrinkBuf(n.output,n.next_out))):this.onData(Ns.shrinkBuf(n.output,n.next_out)))}while((n.avail_in>0||n.avail_out===0)&&i!==Ew);return a===R0?(i=Ts.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ra):(a===Cw&&(this.onEnd(Ra),n.avail_out=0),!0)},Bi.prototype.onData=function(e){this.chunks.push(e)},Bi.prototype.onEnd=function(e){e===Ra&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Ns.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function O0(e,t){var n=new Bi(t);if(n.push(e,!0),n.err)throw n.msg||z0[n.err];return n.result}function mB(e,t){return t=t||{},t.raw=!0,O0(e,t)}function bB(e,t){return t=t||{},t.gzip=!0,O0(e,t)}ws.Deflate=Bi,ws.deflate=O0,ws.deflateRaw=mB,ws.gzip=bB;var Bs={},mn={},Wf=30,yB=12,wB=function(t,n){var r,i,a,o,s,f,u,c,l,h,d,p,b,x,A,D,I,C,T,B,S,z,E,N,F;r=t.state,i=t.next_in,N=t.input,a=i+(t.avail_in-5),o=t.next_out,F=t.output,s=o-(n-t.avail_out),f=o+(t.avail_out-257),u=r.dmax,c=r.wsize,l=r.whave,h=r.wnext,d=r.window,p=r.hold,b=r.bits,x=r.lencode,A=r.distcode,D=(1<<r.lenbits)-1,I=(1<<r.distbits)-1;e:do{b<15&&(p+=N[i++]<<b,b+=8,p+=N[i++]<<b,b+=8),C=x[p&D];t:for(;;){if(T=C>>>24,p>>>=T,b-=T,T=C>>>16&255,T===0)F[o++]=C&65535;else if(T&16){B=C&65535,T&=15,T&&(b<T&&(p+=N[i++]<<b,b+=8),B+=p&(1<<T)-1,p>>>=T,b-=T),b<15&&(p+=N[i++]<<b,b+=8,p+=N[i++]<<b,b+=8),C=A[p&I];n:for(;;){if(T=C>>>24,p>>>=T,b-=T,T=C>>>16&255,T&16){if(S=C&65535,T&=15,b<T&&(p+=N[i++]<<b,b+=8,b<T&&(p+=N[i++]<<b,b+=8)),S+=p&(1<<T)-1,S>u){t.msg="invalid distance too far back",r.mode=Wf;break e}if(p>>>=T,b-=T,T=o-s,S>T){if(T=S-T,T>l&&r.sane){t.msg="invalid distance too far back",r.mode=Wf;break e}if(z=0,E=d,h===0){if(z+=c-T,T<B){B-=T;do F[o++]=d[z++];while(--T);z=o-S,E=F}}else if(h<T){if(z+=c+h-T,T-=h,T<B){B-=T;do F[o++]=d[z++];while(--T);if(z=0,h<B){T=h,B-=T;do F[o++]=d[z++];while(--T);z=o-S,E=F}}}else if(z+=h-T,T<B){B-=T;do F[o++]=d[z++];while(--T);z=o-S,E=F}for(;B>2;)F[o++]=E[z++],F[o++]=E[z++],F[o++]=E[z++],B-=3;B&&(F[o++]=E[z++],B>1&&(F[o++]=E[z++]))}else{z=o-S;do F[o++]=F[z++],F[o++]=F[z++],F[o++]=F[z++],B-=3;while(B>2);B&&(F[o++]=F[z++],B>1&&(F[o++]=F[z++]))}}else if(T&64){t.msg="invalid distance code",r.mode=Wf;break e}else{C=A[(C&65535)+(p&(1<<T)-1)];continue n}break}}else if(T&64)if(T&32){r.mode=yB;break e}else{t.msg="invalid literal/length code",r.mode=Wf;break e}else{C=x[(C&65535)+(p&(1<<T)-1)];continue t}break}}while(i<a&&o<f);B=b>>3,i-=B,b-=B<<3,p&=(1<<b)-1,t.next_in=i,t.next_out=o,t.avail_in=i<a?5+(a-i):5-(i-a),t.avail_out=o<f?257+(f-o):257-(o-f),r.hold=p,r.bits=b},Sw=nr,Oa=15,Dw=852,_w=592,Iw=0,P0=1,Mw=2,xB=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],AB=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],vB=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],EB=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64],CB=function(t,n,r,i,a,o,s,f){var u=f.bits,c=0,l=0,h=0,d=0,p=0,b=0,x=0,A=0,D=0,I=0,C,T,B,S,z,E=null,N=0,F,Z=new Sw.Buf16(Oa+1),W=new Sw.Buf16(Oa+1),Y=null,be=0,Ee,Ze,yt;for(c=0;c<=Oa;c++)Z[c]=0;for(l=0;l<i;l++)Z[n[r+l]]++;for(p=u,d=Oa;d>=1&&Z[d]===0;d--);if(p>d&&(p=d),d===0)return a[o++]=1<<24|64<<16|0,a[o++]=1<<24|64<<16|0,f.bits=1,0;for(h=1;h<d&&Z[h]===0;h++);for(p<h&&(p=h),A=1,c=1;c<=Oa;c++)if(A<<=1,A-=Z[c],A<0)return-1;if(A>0&&(t===Iw||d!==1))return-1;for(W[1]=0,c=1;c<Oa;c++)W[c+1]=W[c]+Z[c];for(l=0;l<i;l++)n[r+l]!==0&&(s[W[n[r+l]]++]=l);if(t===Iw?(E=Y=s,F=19):t===P0?(E=xB,N-=257,Y=AB,be-=257,F=256):(E=vB,Y=EB,F=-1),I=0,l=0,c=h,z=o,b=p,x=0,B=-1,D=1<<p,S=D-1,t===P0&&D>Dw||t===Mw&&D>_w)return 1;for(;;){Ee=c-x,s[l]<F?(Ze=0,yt=s[l]):s[l]>F?(Ze=Y[be+s[l]],yt=E[N+s[l]]):(Ze=32+64,yt=0),C=1<<c-x,T=1<<b,h=T;do T-=C,a[z+(I>>x)+T]=Ee<<24|Ze<<16|yt|0;while(T!==0);for(C=1<<c-1;I&C;)C>>=1;if(C!==0?(I&=C-1,I+=C):I=0,l++,--Z[c]===0){if(c===d)break;c=n[r+s[l]]}if(c>p&&(I&S)!==B){for(x===0&&(x=p),z+=h,b=c-x,A=1<<b;b+x<d&&(A-=Z[b+x],!(A<=0));)b++,A<<=1;if(D+=1<<b,t===P0&&D>Dw||t===Mw&&D>_w)return 1;B=I&S,a[B]=p<<24|b<<16|z-o|0}}return I!==0&&(a[z+I]=c-x<<24|64<<16|0),f.bits=p,0},Lt=nr,U0=uw,Rn=fw,SB=wB,Fs=CB,DB=0,Tw=1,Nw=2,Bw=4,_B=5,Xf=6,Fi=0,IB=1,MB=2,Yt=-2,Fw=-3,kw=-4,TB=-5,Lw=8,zw=1,Rw=2,Ow=3,Pw=4,Uw=5,jw=6,Gw=7,Hw=8,Qw=9,Vw=10,Kf=11,ir=12,j0=13,Zw=14,G0=15,Yw=16,qw=17,Ww=18,Xw=19,Jf=20,$f=21,Kw=22,Jw=23,$w=24,ex=25,tx=26,H0=27,nx=28,rx=29,Ne=30,ix=31,NB=32,BB=852,FB=592,kB=15,LB=kB;function ax(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function zB(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Lt.Buf16(320),this.work=new Lt.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ox(e){var t;return!e||!e.state?Yt:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=zw,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Lt.Buf32(BB),t.distcode=t.distdyn=new Lt.Buf32(FB),t.sane=1,t.back=-1,Fi)}function sx(e){var t;return!e||!e.state?Yt:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,ox(e))}function ux(e,t){var n,r;return!e||!e.state||(r=e.state,t<0?(n=0,t=-t):(n=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Yt:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,sx(e))}function fx(e,t){var n,r;return e?(r=new zB,e.state=r,r.window=null,n=ux(e,t),n!==Fi&&(e.state=null),n):Yt}function RB(e){return fx(e,LB)}var cx=!0,Q0,V0;function OB(e){if(cx){var t;for(Q0=new Lt.Buf32(512),V0=new Lt.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Fs(Tw,e.lens,0,288,Q0,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Fs(Nw,e.lens,0,32,V0,0,e.work,{bits:5}),cx=!1}e.lencode=Q0,e.lenbits=9,e.distcode=V0,e.distbits=5}function lx(e,t,n,r){var i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Lt.Buf8(a.wsize)),r>=a.wsize?(Lt.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),Lt.arraySet(a.window,t,n-r,i,a.wnext),r-=i,r?(Lt.arraySet(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0}function PB(e,t){var n,r,i,a,o,s,f,u,c,l,h,d,p,b,x=0,A,D,I,C,T,B,S,z,E=new Lt.Buf8(4),N,F,Z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return Yt;n=e.state,n.mode===ir&&(n.mode=j0),o=e.next_out,i=e.output,f=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,u=n.hold,c=n.bits,l=s,h=f,z=Fi;e:for(;;)switch(n.mode){case zw:if(n.wrap===0){n.mode=j0;break}for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(n.wrap&2&&u===35615){n.check=0,E[0]=u&255,E[1]=u>>>8&255,n.check=Rn(n.check,E,2,0),u=0,c=0,n.mode=Rw;break}if(n.flags=0,n.head&&(n.head.done=!1),!(n.wrap&1)||(((u&255)<<8)+(u>>8))%31){e.msg="incorrect header check",n.mode=Ne;break}if((u&15)!==Lw){e.msg="unknown compression method",n.mode=Ne;break}if(u>>>=4,c-=4,S=(u&15)+8,n.wbits===0)n.wbits=S;else if(S>n.wbits){e.msg="invalid window size",n.mode=Ne;break}n.dmax=1<<S,e.adler=n.check=1,n.mode=u&512?Vw:ir,u=0,c=0;break;case Rw:for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(n.flags=u,(n.flags&255)!==Lw){e.msg="unknown compression method",n.mode=Ne;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=Ne;break}n.head&&(n.head.text=u>>8&1),n.flags&512&&(E[0]=u&255,E[1]=u>>>8&255,n.check=Rn(n.check,E,2,0)),u=0,c=0,n.mode=Ow;case Ow:for(;c<32;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.head&&(n.head.time=u),n.flags&512&&(E[0]=u&255,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,n.check=Rn(n.check,E,4,0)),u=0,c=0,n.mode=Pw;case Pw:for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.head&&(n.head.xflags=u&255,n.head.os=u>>8),n.flags&512&&(E[0]=u&255,E[1]=u>>>8&255,n.check=Rn(n.check,E,2,0)),u=0,c=0,n.mode=Uw;case Uw:if(n.flags&1024){for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.length=u,n.head&&(n.head.extra_len=u),n.flags&512&&(E[0]=u&255,E[1]=u>>>8&255,n.check=Rn(n.check,E,2,0)),u=0,c=0}else n.head&&(n.head.extra=null);n.mode=jw;case jw:if(n.flags&1024&&(d=n.length,d>s&&(d=s),d&&(n.head&&(S=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),Lt.arraySet(n.head.extra,r,a,d,S)),n.flags&512&&(n.check=Rn(n.check,r,d,a)),s-=d,a+=d,n.length-=d),n.length))break e;n.length=0,n.mode=Gw;case Gw:if(n.flags&2048){if(s===0)break e;d=0;do S=r[a+d++],n.head&&S&&n.length<65536&&(n.head.name+=String.fromCharCode(S));while(S&&d<s);if(n.flags&512&&(n.check=Rn(n.check,r,d,a)),s-=d,a+=d,S)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Hw;case Hw:if(n.flags&4096){if(s===0)break e;d=0;do S=r[a+d++],n.head&&S&&n.length<65536&&(n.head.comment+=String.fromCharCode(S));while(S&&d<s);if(n.flags&512&&(n.check=Rn(n.check,r,d,a)),s-=d,a+=d,S)break e}else n.head&&(n.head.comment=null);n.mode=Qw;case Qw:if(n.flags&512){for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(u!==(n.check&65535)){e.msg="header crc mismatch",n.mode=Ne;break}u=0,c=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=ir;break;case Vw:for(;c<32;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}e.adler=n.check=ax(u),u=0,c=0,n.mode=Kf;case Kf:if(n.havedict===0)return e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,n.hold=u,n.bits=c,MB;e.adler=n.check=1,n.mode=ir;case ir:if(t===_B||t===Xf)break e;case j0:if(n.last){u>>>=c&7,c-=c&7,n.mode=H0;break}for(;c<3;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}switch(n.last=u&1,u>>>=1,c-=1,u&3){case 0:n.mode=Zw;break;case 1:if(OB(n),n.mode=Jf,t===Xf){u>>>=2,c-=2;break e}break;case 2:n.mode=qw;break;case 3:e.msg="invalid block type",n.mode=Ne}u>>>=2,c-=2;break;case Zw:for(u>>>=c&7,c-=c&7;c<32;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if((u&65535)!==(u>>>16^65535)){e.msg="invalid stored block lengths",n.mode=Ne;break}if(n.length=u&65535,u=0,c=0,n.mode=G0,t===Xf)break e;case G0:n.mode=Yw;case Yw:if(d=n.length,d){if(d>s&&(d=s),d>f&&(d=f),d===0)break e;Lt.arraySet(i,r,a,d,o),s-=d,a+=d,f-=d,o+=d,n.length-=d;break}n.mode=ir;break;case qw:for(;c<14;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(n.nlen=(u&31)+257,u>>>=5,c-=5,n.ndist=(u&31)+1,u>>>=5,c-=5,n.ncode=(u&15)+4,u>>>=4,c-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Ne;break}n.have=0,n.mode=Ww;case Ww:for(;n.have<n.ncode;){for(;c<3;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.lens[Z[n.have++]]=u&7,u>>>=3,c-=3}for(;n.have<19;)n.lens[Z[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,N={bits:n.lenbits},z=Fs(DB,n.lens,0,19,n.lencode,0,n.work,N),n.lenbits=N.bits,z){e.msg="invalid code lengths set",n.mode=Ne;break}n.have=0,n.mode=Xw;case Xw:for(;n.have<n.nlen+n.ndist;){for(;x=n.lencode[u&(1<<n.lenbits)-1],A=x>>>24,D=x>>>16&255,I=x&65535,!(A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(I<16)u>>>=A,c-=A,n.lens[n.have++]=I;else{if(I===16){for(F=A+2;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(u>>>=A,c-=A,n.have===0){e.msg="invalid bit length repeat",n.mode=Ne;break}S=n.lens[n.have-1],d=3+(u&3),u>>>=2,c-=2}else if(I===17){for(F=A+3;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}u>>>=A,c-=A,S=0,d=3+(u&7),u>>>=3,c-=3}else{for(F=A+7;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}u>>>=A,c-=A,S=0,d=11+(u&127),u>>>=7,c-=7}if(n.have+d>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Ne;break}for(;d--;)n.lens[n.have++]=S}}if(n.mode===Ne)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=Ne;break}if(n.lenbits=9,N={bits:n.lenbits},z=Fs(Tw,n.lens,0,n.nlen,n.lencode,0,n.work,N),n.lenbits=N.bits,z){e.msg="invalid literal/lengths set",n.mode=Ne;break}if(n.distbits=6,n.distcode=n.distdyn,N={bits:n.distbits},z=Fs(Nw,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,N),n.distbits=N.bits,z){e.msg="invalid distances set",n.mode=Ne;break}if(n.mode=Jf,t===Xf)break e;case Jf:n.mode=$f;case $f:if(s>=6&&f>=258){e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,n.hold=u,n.bits=c,SB(e,h),o=e.next_out,i=e.output,f=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,u=n.hold,c=n.bits,n.mode===ir&&(n.back=-1);break}for(n.back=0;x=n.lencode[u&(1<<n.lenbits)-1],A=x>>>24,D=x>>>16&255,I=x&65535,!(A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(D&&!(D&240)){for(C=A,T=D,B=I;x=n.lencode[B+((u&(1<<C+T)-1)>>C)],A=x>>>24,D=x>>>16&255,I=x&65535,!(C+A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}u>>>=C,c-=C,n.back+=C}if(u>>>=A,c-=A,n.back+=A,n.length=I,D===0){n.mode=tx;break}if(D&32){n.back=-1,n.mode=ir;break}if(D&64){e.msg="invalid literal/length code",n.mode=Ne;break}n.extra=D&15,n.mode=Kw;case Kw:if(n.extra){for(F=n.extra;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.length+=u&(1<<n.extra)-1,u>>>=n.extra,c-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Jw;case Jw:for(;x=n.distcode[u&(1<<n.distbits)-1],A=x>>>24,D=x>>>16&255,I=x&65535,!(A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(!(D&240)){for(C=A,T=D,B=I;x=n.distcode[B+((u&(1<<C+T)-1)>>C)],A=x>>>24,D=x>>>16&255,I=x&65535,!(C+A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}u>>>=C,c-=C,n.back+=C}if(u>>>=A,c-=A,n.back+=A,D&64){e.msg="invalid distance code",n.mode=Ne;break}n.offset=I,n.extra=D&15,n.mode=$w;case $w:if(n.extra){for(F=n.extra;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.offset+=u&(1<<n.extra)-1,u>>>=n.extra,c-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Ne;break}n.mode=ex;case ex:if(f===0)break e;if(d=h-f,n.offset>d){if(d=n.offset-d,d>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Ne;break}d>n.wnext?(d-=n.wnext,p=n.wsize-d):p=n.wnext-d,d>n.length&&(d=n.length),b=n.window}else b=i,p=o-n.offset,d=n.length;d>f&&(d=f),f-=d,n.length-=d;do i[o++]=b[p++];while(--d);n.length===0&&(n.mode=$f);break;case tx:if(f===0)break e;i[o++]=n.length,f--,n.mode=$f;break;case H0:if(n.wrap){for(;c<32;){if(s===0)break e;s--,u|=r[a++]<<c,c+=8}if(h-=f,e.total_out+=h,n.total+=h,h&&(e.adler=n.check=n.flags?Rn(n.check,i,h,o-h):U0(n.check,i,h,o-h)),h=f,(n.flags?u:ax(u))!==n.check){e.msg="incorrect data check",n.mode=Ne;break}u=0,c=0}n.mode=nx;case nx:if(n.wrap&&n.flags){for(;c<32;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(u!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=Ne;break}u=0,c=0}n.mode=rx;case rx:z=IB;break e;case Ne:z=Fw;break e;case ix:return kw;case NB:default:return Yt}return e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,n.hold=u,n.bits=c,(n.wsize||h!==e.avail_out&&n.mode<Ne&&(n.mode<H0||t!==Bw))&&lx(e,e.output,e.next_out,h-e.avail_out),l-=e.avail_in,h-=e.avail_out,e.total_in+=l,e.total_out+=h,n.total+=h,n.wrap&&h&&(e.adler=n.check=n.flags?Rn(n.check,i,h,e.next_out-h):U0(n.check,i,h,e.next_out-h)),e.data_type=n.bits+(n.last?64:0)+(n.mode===ir?128:0)+(n.mode===Jf||n.mode===G0?256:0),(l===0&&h===0||t===Bw)&&z===Fi&&(z=TB),z}function UB(e){if(!e||!e.state)return Yt;var t=e.state;return t.window&&(t.window=null),e.state=null,Fi}function jB(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?Yt:(n.head=t,t.done=!1,Fi)}function GB(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==Kf)?Yt:r.mode===Kf&&(i=1,i=U0(i,t,n,0),i!==r.check)?Fw:(a=lx(e,t,n,n),a?(r.mode=ix,kw):(r.havedict=1,Fi))}mn.inflateReset=sx,mn.inflateReset2=ux,mn.inflateResetKeep=ox,mn.inflateInit=RB,mn.inflateInit2=fx,mn.inflate=PB,mn.inflateEnd=UB,mn.inflateGetHeader=jB,mn.inflateSetDictionary=GB,mn.inflateInfo="pako inflate (from Nodeca project)";var hx={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};function HB(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var QB=HB,Pa=mn,ks=nr,ec=Ni,Ue=hx,Z0=T0,VB=Aw,ZB=QB,dx=Object.prototype.toString;function ki(e){if(!(this instanceof ki))return new ki(e);this.options=ks.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new VB,this.strm.avail_out=0;var n=Pa.inflateInit2(this.strm,t.windowBits);if(n!==Ue.Z_OK)throw new Error(Z0[n]);if(this.header=new ZB,Pa.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=ec.string2buf(t.dictionary):dx.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=Pa.inflateSetDictionary(this.strm,t.dictionary),n!==Ue.Z_OK)))throw new Error(Z0[n])}ki.prototype.push=function(e,t){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,o,s,f,u,c=!1;if(this.ended)return!1;o=t===~~t?t:t===!0?Ue.Z_FINISH:Ue.Z_NO_FLUSH,typeof e=="string"?n.input=ec.binstring2buf(e):dx.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=new ks.Buf8(r),n.next_out=0,n.avail_out=r),a=Pa.inflate(n,Ue.Z_NO_FLUSH),a===Ue.Z_NEED_DICT&&i&&(a=Pa.inflateSetDictionary(this.strm,i)),a===Ue.Z_BUF_ERROR&&c===!0&&(a=Ue.Z_OK,c=!1),a!==Ue.Z_STREAM_END&&a!==Ue.Z_OK)return this.onEnd(a),this.ended=!0,!1;n.next_out&&(n.avail_out===0||a===Ue.Z_STREAM_END||n.avail_in===0&&(o===Ue.Z_FINISH||o===Ue.Z_SYNC_FLUSH))&&(this.options.to==="string"?(s=ec.utf8border(n.output,n.next_out),f=n.next_out-s,u=ec.buf2string(n.output,s),n.next_out=f,n.avail_out=r-f,f&&ks.arraySet(n.output,n.output,s,f,0),this.onData(u)):this.onData(ks.shrinkBuf(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(c=!0)}while((n.avail_in>0||n.avail_out===0)&&a!==Ue.Z_STREAM_END);return a===Ue.Z_STREAM_END&&(o=Ue.Z_FINISH),o===Ue.Z_FINISH?(a=Pa.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===Ue.Z_OK):(o===Ue.Z_SYNC_FLUSH&&(this.onEnd(Ue.Z_OK),n.avail_out=0),!0)},ki.prototype.onData=function(e){this.chunks.push(e)},ki.prototype.onEnd=function(e){e===Ue.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ks.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Y0(e,t){var n=new ki(t);if(n.push(e,!0),n.err)throw n.msg||Z0[n.err];return n.result}function YB(e,t){return t=t||{},t.raw=!0,Y0(e,t)}Bs.Inflate=ki,Bs.inflate=Y0,Bs.inflateRaw=YB,Bs.ungzip=Y0;var qB=nr.assign,WB=ws,XB=Bs,KB=hx,gx={};qB(gx,WB,XB,KB);var tc=gx;async function q0(e){try{let t,n=0,r=0;const i=[];let a=0,o;do{const f=e.subarray(n);if(o=new tc.Inflate,{strm:t}=o,o.push(f,tc.Z_SYNC_FLUSH),o.err)throw new Error(o.msg);n+=t.next_in,i[r]=o.result,a+=i[r].length,r+=1}while(t.avail_in);const s=new Uint8Array(a);for(let f=0,u=0;f<i.length;f++)s.set(i[f],u),u+=i[f].length;return Buffer.from(s)}catch(t){throw`${t}`.match(/incorrect header check/)?new Error("problem decompressing block: incorrect gzip header check"):t}}async function JB(e,t){try{let n;const{minv:r,maxv:i}=t;let a=r.blockPosition,o=r.dataPosition;const s=[],f=[],u=[];let c=0,l=0;do{const p=e.subarray(a-r.blockPosition),b=new tc.Inflate;if({strm:n}=b,b.push(p,tc.Z_SYNC_FLUSH),b.err)throw new Error(b.msg);const x=b.result;s.push(x);let A=x.length;f.push(a),u.push(o),s.length===1&&r.dataPosition&&(s[0]=s[0].subarray(r.dataPosition),A=s[0].length);const D=a;if(a+=n.next_in,o+=A,D>=i.blockPosition){s[l]=s[l].subarray(0,i.blockPosition===r.blockPosition?i.dataPosition-r.dataPosition+1:i.dataPosition+1),f.push(a),u.push(o),c+=s[l].length;break}c+=s[l].length,l++}while(n.avail_in);const h=new Uint8Array(c);for(let p=0,b=0;p<s.length;p++)h.set(s[p],b),b+=s[p].length;return{buffer:Buffer.from(h),cpositions:f,dpositions:u}}catch(n){throw`${n}`.match(/incorrect header check/)?new Error("problem decompressing block: incorrect gzip header check"):n}}/**
|
|
157
|
+
* @license
|
|
158
|
+
* Copyright 2009 The Closure Library Authors
|
|
159
|
+
* Copyright 2020 Daniel Wirtz / The long.js Authors.
|
|
160
|
+
*
|
|
161
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
162
|
+
* you may not use this file except in compliance with the License.
|
|
163
|
+
* You may obtain a copy of the License at
|
|
164
|
+
*
|
|
165
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
166
|
+
*
|
|
167
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
168
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
169
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
170
|
+
* See the License for the specific language governing permissions and
|
|
171
|
+
* limitations under the License.
|
|
172
|
+
*
|
|
173
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
174
|
+
*/var qt=null;try{qt=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function De(e,t,n){this.low=e|0,this.high=t|0,this.unsigned=!!n}De.prototype.__isLong__,Object.defineProperty(De.prototype,"__isLong__",{value:!0});function ht(e){return(e&&e.__isLong__)===!0}function px(e){var t=Math.clz32(e&-e);return e?31-t:t}De.isLong=ht;var mx={},bx={};function Li(e,t){var n,r,i;return t?(e>>>=0,(i=0<=e&&e<256)&&(r=bx[e],r)?r:(n=he(e,0,!0),i&&(bx[e]=n),n)):(e|=0,(i=-128<=e&&e<128)&&(r=mx[e],r)?r:(n=he(e,e<0?-1:0,!1),i&&(mx[e]=n),n))}De.fromInt=Li;function Wt(e,t){if(isNaN(e))return t?ar:yn;if(t){if(e<0)return ar;if(e>=wx)return Cx}else{if(e<=-xx)return It;if(e+1>=xx)return Ex}return e<0?Wt(-e,t).neg():he(e%Ua|0,e/Ua|0,t)}De.fromNumber=Wt;function he(e,t,n){return new De(e,t,n)}De.fromBits=he;var nc=Math.pow;function W0(e,t,n){if(e.length===0)throw Error("empty string");if(typeof t=="number"?(n=t,t=!1):t=!!t,e==="NaN"||e==="Infinity"||e==="+Infinity"||e==="-Infinity")return t?ar:yn;if(n=n||10,n<2||36<n)throw RangeError("radix");var r;if((r=e.indexOf("-"))>0)throw Error("interior hyphen");if(r===0)return W0(e.substring(1),t,n).neg();for(var i=Wt(nc(n,8)),a=yn,o=0;o<e.length;o+=8){var s=Math.min(8,e.length-o),f=parseInt(e.substring(o,o+s),n);if(s<8){var u=Wt(nc(n,s));a=a.mul(u).add(Wt(f))}else a=a.mul(i),a=a.add(Wt(f))}return a.unsigned=t,a}De.fromString=W0;function bn(e,t){return typeof e=="number"?Wt(e,t):typeof e=="string"?W0(e,t):he(e.low,e.high,typeof t=="boolean"?t:e.unsigned)}De.fromValue=bn;var yx=1<<16,$B=1<<24,Ua=yx*yx,wx=Ua*Ua,xx=wx/2,Ax=Li($B),yn=Li(0);De.ZERO=yn;var ar=Li(0,!0);De.UZERO=ar;var ja=Li(1);De.ONE=ja;var vx=Li(1,!0);De.UONE=vx;var X0=Li(-1);De.NEG_ONE=X0;var Ex=he(-1,2147483647,!1);De.MAX_VALUE=Ex;var Cx=he(-1,-1,!0);De.MAX_UNSIGNED_VALUE=Cx;var It=he(0,-2147483648,!1);De.MIN_VALUE=It;var U=De.prototype;U.toInt=function(){return this.unsigned?this.low>>>0:this.low},U.toNumber=function(){return this.unsigned?(this.high>>>0)*Ua+(this.low>>>0):this.high*Ua+(this.low>>>0)},U.toString=function(t){if(t=t||10,t<2||36<t)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative())if(this.eq(It)){var n=Wt(t),r=this.div(n),i=r.mul(n).sub(this);return r.toString(t)+i.toInt().toString(t)}else return"-"+this.neg().toString(t);for(var a=Wt(nc(t,6),this.unsigned),o=this,s="";;){var f=o.div(a),u=o.sub(f.mul(a)).toInt()>>>0,c=u.toString(t);if(o=f,o.isZero())return c+s;for(;c.length<6;)c="0"+c;s=""+c+s}},U.getHighBits=function(){return this.high},U.getHighBitsUnsigned=function(){return this.high>>>0},U.getLowBits=function(){return this.low},U.getLowBitsUnsigned=function(){return this.low>>>0},U.getNumBitsAbs=function(){if(this.isNegative())return this.eq(It)?64:this.neg().getNumBitsAbs();for(var t=this.high!=0?this.high:this.low,n=31;n>0&&!(t&1<<n);n--);return this.high!=0?n+33:n+1},U.isZero=function(){return this.high===0&&this.low===0},U.eqz=U.isZero,U.isNegative=function(){return!this.unsigned&&this.high<0},U.isPositive=function(){return this.unsigned||this.high>=0},U.isOdd=function(){return(this.low&1)===1},U.isEven=function(){return(this.low&1)===0},U.equals=function(t){return ht(t)||(t=bn(t)),this.unsigned!==t.unsigned&&this.high>>>31===1&&t.high>>>31===1?!1:this.high===t.high&&this.low===t.low},U.eq=U.equals,U.notEquals=function(t){return!this.eq(t)},U.neq=U.notEquals,U.ne=U.notEquals,U.lessThan=function(t){return this.comp(t)<0},U.lt=U.lessThan,U.lessThanOrEqual=function(t){return this.comp(t)<=0},U.lte=U.lessThanOrEqual,U.le=U.lessThanOrEqual,U.greaterThan=function(t){return this.comp(t)>0},U.gt=U.greaterThan,U.greaterThanOrEqual=function(t){return this.comp(t)>=0},U.gte=U.greaterThanOrEqual,U.ge=U.greaterThanOrEqual,U.compare=function(t){if(ht(t)||(t=bn(t)),this.eq(t))return 0;var n=this.isNegative(),r=t.isNegative();return n&&!r?-1:!n&&r?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},U.comp=U.compare,U.negate=function(){return!this.unsigned&&this.eq(It)?It:this.not().add(ja)},U.neg=U.negate,U.add=function(t){ht(t)||(t=bn(t));var n=this.high>>>16,r=this.high&65535,i=this.low>>>16,a=this.low&65535,o=t.high>>>16,s=t.high&65535,f=t.low>>>16,u=t.low&65535,c=0,l=0,h=0,d=0;return d+=a+u,h+=d>>>16,d&=65535,h+=i+f,l+=h>>>16,h&=65535,l+=r+s,c+=l>>>16,l&=65535,c+=n+o,c&=65535,he(h<<16|d,c<<16|l,this.unsigned)},U.subtract=function(t){return ht(t)||(t=bn(t)),this.add(t.neg())},U.sub=U.subtract,U.multiply=function(t){if(this.isZero())return this;if(ht(t)||(t=bn(t)),qt){var n=qt.mul(this.low,this.high,t.low,t.high);return he(n,qt.get_high(),this.unsigned)}if(t.isZero())return this.unsigned?ar:yn;if(this.eq(It))return t.isOdd()?It:yn;if(t.eq(It))return this.isOdd()?It:yn;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(Ax)&&t.lt(Ax))return Wt(this.toNumber()*t.toNumber(),this.unsigned);var r=this.high>>>16,i=this.high&65535,a=this.low>>>16,o=this.low&65535,s=t.high>>>16,f=t.high&65535,u=t.low>>>16,c=t.low&65535,l=0,h=0,d=0,p=0;return p+=o*c,d+=p>>>16,p&=65535,d+=a*c,h+=d>>>16,d&=65535,d+=o*u,h+=d>>>16,d&=65535,h+=i*c,l+=h>>>16,h&=65535,h+=a*u,l+=h>>>16,h&=65535,h+=o*f,l+=h>>>16,h&=65535,l+=r*c+i*u+a*f+o*s,l&=65535,he(d<<16|p,l<<16|h,this.unsigned)},U.mul=U.multiply,U.divide=function(t){if(ht(t)||(t=bn(t)),t.isZero())throw Error("division by zero");if(qt){if(!this.unsigned&&this.high===-2147483648&&t.low===-1&&t.high===-1)return this;var n=(this.unsigned?qt.div_u:qt.div_s)(this.low,this.high,t.low,t.high);return he(n,qt.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?ar:yn;var r,i,a;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return ar;if(t.gt(this.shru(1)))return vx;a=ar}else{if(this.eq(It)){if(t.eq(ja)||t.eq(X0))return It;if(t.eq(It))return ja;var o=this.shr(1);return r=o.div(t).shl(1),r.eq(yn)?t.isNegative()?ja:X0:(i=this.sub(t.mul(r)),a=r.add(i.div(t)),a)}else if(t.eq(It))return this.unsigned?ar:yn;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();a=yn}for(i=this;i.gte(t);){r=Math.max(1,Math.floor(i.toNumber()/t.toNumber()));for(var s=Math.ceil(Math.log(r)/Math.LN2),f=s<=48?1:nc(2,s-48),u=Wt(r),c=u.mul(t);c.isNegative()||c.gt(i);)r-=f,u=Wt(r,this.unsigned),c=u.mul(t);u.isZero()&&(u=ja),a=a.add(u),i=i.sub(c)}return a},U.div=U.divide,U.modulo=function(t){if(ht(t)||(t=bn(t)),qt){var n=(this.unsigned?qt.rem_u:qt.rem_s)(this.low,this.high,t.low,t.high);return he(n,qt.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))},U.mod=U.modulo,U.rem=U.modulo,U.not=function(){return he(~this.low,~this.high,this.unsigned)},U.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32},U.clz=U.countLeadingZeros,U.countTrailingZeros=function(){return this.low?px(this.low):px(this.high)+32},U.ctz=U.countTrailingZeros,U.and=function(t){return ht(t)||(t=bn(t)),he(this.low&t.low,this.high&t.high,this.unsigned)},U.or=function(t){return ht(t)||(t=bn(t)),he(this.low|t.low,this.high|t.high,this.unsigned)},U.xor=function(t){return ht(t)||(t=bn(t)),he(this.low^t.low,this.high^t.high,this.unsigned)},U.shiftLeft=function(t){return ht(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?he(this.low<<t,this.high<<t|this.low>>>32-t,this.unsigned):he(0,this.low<<t-32,this.unsigned)},U.shl=U.shiftLeft,U.shiftRight=function(t){return ht(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?he(this.low>>>t|this.high<<32-t,this.high>>t,this.unsigned):he(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},U.shr=U.shiftRight,U.shiftRightUnsigned=function(t){return ht(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?he(this.low>>>t|this.high<<32-t,this.high>>>t,this.unsigned):t===32?he(this.high,0,this.unsigned):he(this.high>>>t-32,0,this.unsigned)},U.shru=U.shiftRightUnsigned,U.shr_u=U.shiftRightUnsigned,U.rotateLeft=function(t){var n;return ht(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?he(this.high,this.low,this.unsigned):t<32?(n=32-t,he(this.low<<t|this.high>>>n,this.high<<t|this.low>>>n,this.unsigned)):(t-=32,n=32-t,he(this.high<<t|this.low>>>n,this.low<<t|this.high>>>n,this.unsigned))},U.rotl=U.rotateLeft,U.rotateRight=function(t){var n;return ht(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?he(this.high,this.low,this.unsigned):t<32?(n=32-t,he(this.high<<n|this.low>>>t,this.low<<n|this.high>>>t,this.unsigned)):(t-=32,n=32-t,he(this.low<<n|this.high>>>t,this.high<<n|this.low>>>t,this.unsigned))},U.rotr=U.rotateRight,U.toSigned=function(){return this.unsigned?he(this.low,this.high,!1):this},U.toUnsigned=function(){return this.unsigned?this:he(this.low,this.high,!0)},U.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()},U.toBytesLE=function(){var t=this.high,n=this.low;return[n&255,n>>>8&255,n>>>16&255,n>>>24,t&255,t>>>8&255,t>>>16&255,t>>>24]},U.toBytesBE=function(){var t=this.high,n=this.low;return[t>>>24,t>>>16&255,t>>>8&255,t&255,n>>>24,n>>>16&255,n>>>8&255,n&255]},De.fromBytes=function(t,n,r){return r?De.fromBytesLE(t,n):De.fromBytesBE(t,n)},De.fromBytesLE=function(t,n){return new De(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,n)},De.fromBytesBE=function(t,n){return new De(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],n)};function Sx(e,t){return e.offset+e.lineBytes*Math.floor(t/e.lineLength)+t%e.lineLength}async function eF(e,t){const n=await e.readFile(t);if(!(n&&n.length))throw new Error("No data read from FASTA index (FAI) file");let r=0,i;const a=n.toString("utf8").split(/\r?\n/).filter(o=>/\S/.test(o)).map(o=>o.split(" ")).filter(o=>o[0]!=="").map(o=>((!i||i.name!==o[0])&&(i={name:o[0],id:r},r+=1),{id:i.id,name:o[0],length:+o[1],start:0,end:+o[1],offset:+o[2],lineLength:+o[3],lineBytes:+o[4]}));return{name:Object.fromEntries(a.map(o=>[o.name,o])),id:Object.fromEntries(a.map(o=>[o.id,o]))}}class tF{constructor({fasta:t,fai:n,path:r,faiPath:i,chunkSizeLimit:a=1e6}){if(t)this.fasta=t;else if(r)this.fasta=new Br(r);else throw new Error("Need to pass filehandle for fasta or path to localfile");if(n)this.fai=n;else if(i)this.fai=new Br(i);else if(r)this.fai=new Br(`${r}.fai`);else throw new Error("Need to pass filehandle for or path to localfile");this.chunkSizeLimit=a}async _getIndexes(t){return this.indexes||(this.indexes=eF(this.fai,t)),this.indexes}async getSequenceNames(t){return Object.keys((await this._getIndexes(t)).name)}async getSequenceSizes(t){const n={},r=await this._getIndexes(t),i=Object.values(r.id);for(let a=0;a<i.length;a+=1)n[i[a].name]=i[a].length;return n}async getSequenceSize(t,n){var r;return(r=(await this._getIndexes(n)).name[t])===null||r===void 0?void 0:r.length}async hasReferenceSequence(t,n){return!!(await this._getIndexes(n)).name[t]}async getResiduesById(t,n,r,i){const a=(await this._getIndexes(i)).id[t];if(a)return this._fetchFromIndexEntry(a,n,r,i)}async getResiduesByName(t,n,r,i){const a=(await this._getIndexes(i)).name[t];if(a)return this._fetchFromIndexEntry(a,n,r,i)}async getSequence(t,n,r,i){return this.getResiduesByName(t,n,r,i)}async _fetchFromIndexEntry(t,n=0,r,i){let a=r;if(n<0)throw new TypeError("regionStart cannot be less than 0");if((a===void 0||a>t.length)&&(a=t.length),n>=a)return"";const o=Sx(t,n),s=Sx(t,a)-o;if(s>this.chunkSizeLimit)throw new Error(`data size of ${s.toLocaleString()} bytes exceeded chunk size limit of ${this.chunkSizeLimit.toLocaleString()} bytes`);const f=Buffer.allocUnsafe(s);return await this.fasta.read(f,0,s,o,i),f.toString("utf8").replace(/\s+/g,"")}}function rc(e){return class extends e{constructor(){super(...arguments);Vn(this,"lastQuantizedInterval",[0,0])}quantizeInterval(r,i){return[Math.max(Math.floor(r[0]/i-1)*i,0),Math.min(Math.ceil(r[1]/i+1)*i,this.genome.totalSize)]}checkAndUpdateLastInterval(r){return sh(this.lastQuantizedInterval,r)?!1:(this.lastQuantizedInterval=r,!0)}}}function ic(e,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(e)||e.startsWith("/")?e:(t.endsWith("/")||(t+="/"),t+e)}typeof window<"u"&&(window.Buffer=kt.Buffer);class nF extends rc(Ia){constructor(t,n){const r={channel:"x",windowSize:7e3,...t};if(super(n,r.channel),this.params=r,!this.params.url)throw new Error("No URL provided for IndexedFastaSource");const i=a=>new tr(ic(a,this.view.getBaseUrl()));this.fasta=new tF({fasta:i(this.params.url),fai:i(this.params.indexUrl??this.params.url+".fai")})}async onDomainChanged(t){const n=this.params.windowSize;if(t[1]-t[0]>n)return;const r=this.quantizeInterval(t,n);if(this.checkAndUpdateLastInterval(r)){const i=this.genome.continuousToDiscreteChromosomeIntervals(r),a=await Promise.all(i.map(o=>this.fasta.getSequence(o.chrom,o.startPos,o.endPos).then(s=>({chrom:o.chrom,start:o.startPos,sequence:s}))));this.publishData(a)}}}const ac=BigInt(32);function rF(e,t,n){const r=+!!n,i=+!n;return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<ac|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function iF(e,t,n){const r=e.getUint32(t,n),i=e.getUint32(t+4,n),a=+!!n,o=+!n;return BigInt(r*o+i*a)<<ac|BigInt(r*a+i*o)}function aF(e,t,n,r){const i=Number(n>>ac),a=Number(n&BigInt(4294967295));r?(e.setInt32(t+4,i,r),e.setUint32(t,a,r)):(e.setInt32(t,i,r),e.setUint32(t+4,a,r))}function oF(e,t,n,r){const i=Number(n>>ac),a=Number(n&BigInt(4294967295));r?(e.setUint32(t+4,i,r),e.setUint32(t,a,r)):(e.setUint32(t,i,r),e.setUint32(t+4,a,r))}"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(e,t){return rF(this,e,t)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(e,t){return iF(this,e,t)}),"setBigInt64"in DataView||(DataView.prototype.setBigInt64=function(e,t,n){aF(this,e,t,n)}),"setBigUint64"in DataView||(DataView.prototype.setBigUint64=function(e,t,n){oF(this,e,t,n)});class sF{constructor(t,n){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references=new Map,this.imports=[],this.reverseImports=new Map,this.useContextVariables=!1,this.importPath=t,this.useContextVariables=n}generateVariable(t){const n=[...this.scopes[this.scopes.length-1]];return t&&n.push(t),n.join(".")}generateOption(t){switch(typeof t){case"number":return t.toString();case"string":return this.generateVariable(t);case"function":return`${this.addImport(t)}.call(${this.generateVariable()}, vars)`}}generateError(t){this.pushCode(`throw new Error(${t});`)}generateTmpVariable(){return"$tmp"+this.tmpVariableCount++}pushCode(t){this.code+=t+`
|
|
175
|
+
`}pushPath(t){t&&this.scopes[this.scopes.length-1].push(t)}popPath(t){t&&this.scopes[this.scopes.length-1].pop()}pushScope(t){this.scopes.push([t])}popScope(){this.scopes.pop()}addImport(t){if(!this.importPath)return`(${t})`;let n=this.reverseImports.get(t);return n||(n=this.imports.push(t)-1,this.reverseImports.set(t,n)),`${this.importPath}[${n}]`}addReference(t){this.references.has(t)||this.references.set(t,{resolved:!1,requested:!1})}markResolved(t){const n=this.references.get(t);n&&(n.resolved=!0)}markRequested(t){t.forEach(n=>{const r=this.references.get(n);r&&(r.requested=!0)})}getUnresolvedReferences(){return Array.from(this.references).filter(([t,n])=>!n.resolved&&!n.requested).map(([t,n])=>t)}}const wn=new Map,zi="___parser_",xn={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},oc={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},sc={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1};class ee{constructor(){this.varName="",this.type="",this.options={},this.endian="be",this.useContextVariables=!1}static start(){return new ee}primitiveGenerateN(t,n){const r=oc[t],i=sc[t];n.pushCode(`${n.generateVariable(this.varName)} = dataView.get${r}(offset, ${i});`),n.pushCode(`offset += ${xn[t]};`)}primitiveN(t,n,r){return this.setNextParser(t,n,r)}useThisEndian(t){return t+this.endian.toLowerCase()}uint8(t,n={}){return this.primitiveN("uint8",t,n)}uint16(t,n={}){return this.primitiveN(this.useThisEndian("uint16"),t,n)}uint16le(t,n={}){return this.primitiveN("uint16le",t,n)}uint16be(t,n={}){return this.primitiveN("uint16be",t,n)}uint32(t,n={}){return this.primitiveN(this.useThisEndian("uint32"),t,n)}uint32le(t,n={}){return this.primitiveN("uint32le",t,n)}uint32be(t,n={}){return this.primitiveN("uint32be",t,n)}int8(t,n={}){return this.primitiveN("int8",t,n)}int16(t,n={}){return this.primitiveN(this.useThisEndian("int16"),t,n)}int16le(t,n={}){return this.primitiveN("int16le",t,n)}int16be(t,n={}){return this.primitiveN("int16be",t,n)}int32(t,n={}){return this.primitiveN(this.useThisEndian("int32"),t,n)}int32le(t,n={}){return this.primitiveN("int32le",t,n)}int32be(t,n={}){return this.primitiveN("int32be",t,n)}bigIntVersionCheck(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported on this runtime")}int64(t,n={}){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),t,n)}int64be(t,n={}){return this.bigIntVersionCheck(),this.primitiveN("int64be",t,n)}int64le(t,n={}){return this.bigIntVersionCheck(),this.primitiveN("int64le",t,n)}uint64(t,n={}){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),t,n)}uint64be(t,n={}){return this.bigIntVersionCheck(),this.primitiveN("uint64be",t,n)}uint64le(t,n={}){return this.bigIntVersionCheck(),this.primitiveN("uint64le",t,n)}floatle(t,n={}){return this.primitiveN("floatle",t,n)}floatbe(t,n={}){return this.primitiveN("floatbe",t,n)}doublele(t,n={}){return this.primitiveN("doublele",t,n)}doublebe(t,n={}){return this.primitiveN("doublebe",t,n)}bitN(t,n,r){return r.length=t,this.setNextParser("bit",n,r)}bit1(t,n={}){return this.bitN(1,t,n)}bit2(t,n={}){return this.bitN(2,t,n)}bit3(t,n={}){return this.bitN(3,t,n)}bit4(t,n={}){return this.bitN(4,t,n)}bit5(t,n={}){return this.bitN(5,t,n)}bit6(t,n={}){return this.bitN(6,t,n)}bit7(t,n={}){return this.bitN(7,t,n)}bit8(t,n={}){return this.bitN(8,t,n)}bit9(t,n={}){return this.bitN(9,t,n)}bit10(t,n={}){return this.bitN(10,t,n)}bit11(t,n={}){return this.bitN(11,t,n)}bit12(t,n={}){return this.bitN(12,t,n)}bit13(t,n={}){return this.bitN(13,t,n)}bit14(t,n={}){return this.bitN(14,t,n)}bit15(t,n={}){return this.bitN(15,t,n)}bit16(t,n={}){return this.bitN(16,t,n)}bit17(t,n={}){return this.bitN(17,t,n)}bit18(t,n={}){return this.bitN(18,t,n)}bit19(t,n={}){return this.bitN(19,t,n)}bit20(t,n={}){return this.bitN(20,t,n)}bit21(t,n={}){return this.bitN(21,t,n)}bit22(t,n={}){return this.bitN(22,t,n)}bit23(t,n={}){return this.bitN(23,t,n)}bit24(t,n={}){return this.bitN(24,t,n)}bit25(t,n={}){return this.bitN(25,t,n)}bit26(t,n={}){return this.bitN(26,t,n)}bit27(t,n={}){return this.bitN(27,t,n)}bit28(t,n={}){return this.bitN(28,t,n)}bit29(t,n={}){return this.bitN(29,t,n)}bit30(t,n={}){return this.bitN(30,t,n)}bit31(t,n={}){return this.bitN(31,t,n)}bit32(t,n={}){return this.bitN(32,t,n)}namely(t){return wn.set(t,this),this.alias=t,this}skip(t,n={}){return this.seek(t,n)}seek(t,n={}){if(n.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:t})}string(t,n){if(!n.zeroTerminated&&!n.length&&!n.greedy)throw new Error("One of length, zeroTerminated, or greedy must be defined for string.");if((n.zeroTerminated||n.length)&&n.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(n.stripNull&&!(n.length||n.greedy))throw new Error("length or greedy must be defined if stripNull is enabled.");return n.encoding=n.encoding||"utf8",this.setNextParser("string",t,n)}buffer(t,n){if(!n.length&&!n.readUntil)throw new Error("length or readUntil must be defined for buffer.");return this.setNextParser("buffer",t,n)}wrapped(t,n){if(typeof n!="object"&&typeof t=="object"&&(n=t,t=""),!n||!n.wrapper||!n.type)throw new Error("Both wrapper and type must be defined for wrapped.");if(!n.length&&!n.readUntil)throw new Error("length or readUntil must be defined for wrapped.");return this.setNextParser("wrapper",t,n)}array(t,n){if(!n.readUntil&&!n.length&&!n.lengthInBytes)throw new Error("One of readUntil, length and lengthInBytes must be defined for array.");if(!n.type)throw new Error("type is required for array.");if(typeof n.type=="string"&&!wn.has(n.type)&&!(n.type in xn))throw new Error(`Array element type "${n.type}" is unkown.`);return this.setNextParser("array",t,n)}choice(t,n){if(typeof n!="object"&&typeof t=="object"&&(n=t,t=""),!n)throw new Error("tag and choices are are required for choice.");if(!n.tag)throw new Error("tag is requird for choice.");if(!n.choices)throw new Error("choices is required for choice.");for(const r in n.choices){const i=parseInt(r,10),a=n.choices[i];if(isNaN(i))throw new Error(`Choice key "${r}" is not a number.`);if(typeof a=="string"&&!wn.has(a)&&!(a in xn))throw new Error(`Choice type "${a}" is unkown.`)}return this.setNextParser("choice",t,n)}nest(t,n){if(typeof n!="object"&&typeof t=="object"&&(n=t,t=""),!n||!n.type)throw new Error("type is required for nest.");if(!(n.type instanceof ee)&&!wn.has(n.type))throw new Error("type must be a known parser name or a Parser object.");if(!(n.type instanceof ee)&&!t)throw new Error("type must be a Parser object if the variable name is omitted.");return this.setNextParser("nest",t,n)}pointer(t,n){if(!n.offset)throw new Error("offset is required for pointer.");if(!n.type)throw new Error("type is required for pointer.");if(typeof n.type=="string"&&!(n.type in xn)&&!wn.has(n.type))throw new Error(`Pointer type "${n.type}" is unkown.`);return this.setNextParser("pointer",t,n)}saveOffset(t,n={}){return this.setNextParser("saveOffset",t,n)}endianness(t){switch(t.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error('endianness must be one of "little" or "big"')}return this}endianess(t){return this.endianness(t)}useContextVars(t=!0){return this.useContextVariables=t,this}create(t){if(!(t instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=t,this}getContext(t){const n=new sF(t,this.useContextVariables);return n.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(n),n.pushCode(`return ${zi+this.alias}(0).result;`)):this.addRawCode(n),n}getCode(){const t="imports";return this.getContext(t).code}addRawCode(t){t.pushCode("var offset = 0;"),t.pushCode(`var vars = ${this.constructorFn?"new constructorFn()":"{}"};`),t.pushCode("vars.$parent = null;"),t.pushCode("vars.$root = vars;"),this.generate(t),this.resolveReferences(t),t.pushCode("delete vars.$parent;"),t.pushCode("delete vars.$root;"),t.pushCode("return vars;")}addAliasedCode(t){return t.pushCode(`function ${zi+this.alias}(offset, context) {`),t.pushCode(`var vars = ${this.constructorFn?"new constructorFn()":"{}"};`),t.pushCode("var ctx = Object.assign({$parent: null, $root: vars}, context || {});"),t.pushCode("vars = Object.assign(vars, ctx);"),this.generate(t),t.markResolved(this.alias),this.resolveReferences(t),t.pushCode("Object.keys(ctx).forEach(function (item) { delete vars[item]; });"),t.pushCode("return { offset: offset, result: vars };"),t.pushCode("}"),t}resolveReferences(t){const n=t.getUnresolvedReferences();t.markRequested(n),n.forEach(r=>{var i;(i=wn.get(r))===null||i===void 0||i.addAliasedCode(t)})}compile(){const t="imports",n=this.getContext(t);this.compiled=new Function(t,"TextDecoder",`return function (buffer, constructorFn) { ${n.code} };`)(n.imports,TextDecoder)}sizeOf(){let t=NaN;if(Object.keys(xn).indexOf(this.type)>=0)t=xn[this.type];else if(this.type==="string"&&typeof this.options.length=="number")t=this.options.length;else if(this.type==="buffer"&&typeof this.options.length=="number")t=this.options.length;else if(this.type==="array"&&typeof this.options.length=="number"){let n=NaN;typeof this.options.type=="string"?n=xn[this.options.type]:this.options.type instanceof ee&&(n=this.options.type.sizeOf()),t=this.options.length*n}else this.type==="seek"?t=this.options.length:this.type==="nest"?t=this.options.type.sizeOf():this.type||(t=0);return this.next&&(t+=this.next.sizeOf()),t}parse(t){return this.compiled||this.compile(),this.compiled(t,this.constructorFn)}setNextParser(t,n,r){const i=new ee;return i.type=t,i.varName=n,i.options=r,i.endian=this.endian,this.head?this.head.next=i:this.next=i,this.head=i,this}generate(t){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,t);break;case"bit":this.generateBit(t);break;case"string":this.generateString(t);break;case"buffer":this.generateBuffer(t);break;case"seek":this.generateSeek(t);break;case"nest":this.generateNest(t);break;case"array":this.generateArray(t);break;case"choice":this.generateChoice(t);break;case"pointer":this.generatePointer(t);break;case"saveOffset":this.generateSaveOffset(t);break;case"wrapper":this.generateWrapper(t);break}this.type!=="bit"&&this.generateAssert(t)}const n=t.generateVariable(this.varName);return this.options.formatter&&this.type!=="bit"&&this.generateFormatter(t,n,this.options.formatter),this.generateNext(t)}generateAssert(t){if(!this.options.assert)return;const n=t.generateVariable(this.varName);switch(typeof this.options.assert){case"function":{const r=t.addImport(this.options.assert);t.pushCode(`if (!${r}.call(vars, ${n})) {`)}break;case"number":t.pushCode(`if (${this.options.assert} !== ${n}) {`);break;case"string":t.pushCode(`if (${JSON.stringify(this.options.assert)} !== ${n}) {`);break;default:throw new Error("assert option must be a string, number or a function.")}t.generateError(`"Assertion error: ${n} is " + ${JSON.stringify(this.options.assert.toString())}`),t.pushCode("}")}generateNext(t){return this.next&&(t=this.next.generate(t)),t}generateBit(t){const n=JSON.parse(JSON.stringify(this));if(n.options=this.options,n.generateAssert=this.generateAssert.bind(this),n.generateFormatter=this.generateFormatter.bind(this),n.varName=t.generateVariable(n.varName),t.bitFields.push(n),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){const r=t.generateTmpVariable();t.pushCode(`var ${r} = 0;`);const i=(c=0)=>{let l=0;for(let h=c;h<t.bitFields.length;h++){const d=t.bitFields[h].options.length;if(l+d>32)break;l+=d}return l},a=c=>(c<=8?(t.pushCode(`${r} = dataView.getUint8(offset);`),c=8):c<=16?(t.pushCode(`${r} = dataView.getUint16(offset);`),c=16):c<=24?(t.pushCode(`${r} = (dataView.getUint16(offset) << 8) | dataView.getUint8(offset + 2);`),c=24):(t.pushCode(`${r} = dataView.getUint32(offset);`),c=32),t.pushCode(`offset += ${c/8};`),c);let o=0;const s=this.endian==="be";let f=0,u=0;t.bitFields.forEach((c,l)=>{let h=c.options.length;if(h>u){if(u){const b=-1>>>32-u;t.pushCode(`${c.varName} = (${r} & 0x${b.toString(16)}) << ${h-u};`),h-=u}o=0,u=f=a(i(l)-u)}const d=s?f-o-h:o,p=-1>>>32-h;t.pushCode(`${c.varName} ${h<c.options.length?"|=":"="} ${r} >> ${d} & 0x${p.toString(16)};`),c.options.length===32&&t.pushCode(`${c.varName} >>>= 0`),c.options.assert&&c.generateAssert(t),c.options.formatter&&c.generateFormatter(t,c.varName,c.options.formatter),o+=h,u-=h}),t.bitFields=[]}}generateSeek(t){const n=t.generateOption(this.options.length);t.pushCode(`offset += ${n};`)}generateString(t){const n=t.generateVariable(this.varName),r=t.generateTmpVariable(),i=this.options.encoding,a=i.toLowerCase()==="hex",o='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){const s=this.options.length;t.pushCode(`var ${r} = offset;`),t.pushCode(`while(dataView.getUint8(offset++) !== 0 && offset - ${r} < ${s});`);const f=`offset - ${r} < ${s} ? offset - 1 : offset`;t.pushCode(a?`${n} = Array.from(buffer.subarray(${r}, ${f}), ${o}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, ${f}));`)}else if(this.options.length){const s=t.generateOption(this.options.length);t.pushCode(a?`${n} = Array.from(buffer.subarray(offset, offset + ${s}), ${o}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(offset, offset + ${s}));`),t.pushCode(`offset += ${s};`)}else this.options.zeroTerminated?(t.pushCode(`var ${r} = offset;`),t.pushCode("while(dataView.getUint8(offset++) !== 0);"),t.pushCode(a?`${n} = Array.from(buffer.subarray(${r}, offset - 1), ${o}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, offset - 1));`)):this.options.greedy&&(t.pushCode(`var ${r} = offset;`),t.pushCode("while(buffer.length > offset++);"),t.pushCode(a?`${n} = Array.from(buffer.subarray(${r}, offset), ${o}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, offset));`));this.options.stripNull&&t.pushCode(`${n} = ${n}.replace(/\\x00+$/g, '')`)}generateBuffer(t){const n=t.generateVariable(this.varName);if(typeof this.options.readUntil=="function"){const r=this.options.readUntil,i=t.generateTmpVariable(),a=t.generateTmpVariable();t.pushCode(`var ${i} = offset;`),t.pushCode(`var ${a} = 0;`),t.pushCode("while (offset < buffer.length) {"),t.pushCode(`${a} = dataView.getUint8(offset);`);const o=t.addImport(r);t.pushCode(`if (${o}.call(${t.generateVariable()}, ${a}, buffer.subarray(offset))) break;`),t.pushCode("offset += 1;"),t.pushCode("}"),t.pushCode(`${n} = buffer.subarray(${i}, offset);`)}else if(this.options.readUntil==="eof")t.pushCode(`${n} = buffer.subarray(offset);`);else{const r=t.generateOption(this.options.length);t.pushCode(`${n} = buffer.subarray(offset, offset + ${r});`),t.pushCode(`offset += ${r};`)}this.options.clone&&t.pushCode(`${n} = buffer.constructor.from(${n});`)}generateArray(t){const n=t.generateOption(this.options.length),r=t.generateOption(this.options.lengthInBytes),i=this.options.type,a=t.generateTmpVariable(),o=t.generateVariable(this.varName),s=t.generateTmpVariable(),f=this.options.key,u=typeof f=="string";if(u?t.pushCode(`${o} = {};`):t.pushCode(`${o} = [];`),typeof this.options.readUntil=="function"?t.pushCode("do {"):this.options.readUntil==="eof"?t.pushCode(`for (var ${a} = 0; offset < buffer.length; ${a}++) {`):r!==void 0?t.pushCode(`for (var ${a} = offset + ${r}; offset < ${a}; ) {`):t.pushCode(`for (var ${a} = ${n}; ${a} > 0; ${a}--) {`),typeof i=="string")if(wn.get(i)){const c=t.generateTmpVariable();if(t.pushCode(`var ${c} = ${zi+i}(offset, {`),t.useContextVariables){const l=t.generateVariable();t.pushCode(`$parent: ${l},`),t.pushCode(`$root: ${l}.$root,`),!this.options.readUntil&&r===void 0&&t.pushCode(`$index: ${n} - ${a},`)}t.pushCode("});"),t.pushCode(`var ${s} = ${c}.result; offset = ${c}.offset;`),i!==this.alias&&t.addReference(i)}else{const c=oc[i],l=sc[i];t.pushCode(`var ${s} = dataView.get${c}(offset, ${l});`),t.pushCode(`offset += ${xn[i]};`)}else if(i instanceof ee){t.pushCode(`var ${s} = {};`);const c=t.generateVariable();t.pushScope(s),t.useContextVariables&&(t.pushCode(`${s}.$parent = ${c};`),t.pushCode(`${s}.$root = ${c}.$root;`),!this.options.readUntil&&r===void 0&&t.pushCode(`${s}.$index = ${n} - ${a};`)),i.generate(t),t.useContextVariables&&(t.pushCode(`delete ${s}.$parent;`),t.pushCode(`delete ${s}.$root;`),t.pushCode(`delete ${s}.$index;`)),t.popScope()}if(u?t.pushCode(`${o}[${s}.${f}] = ${s};`):t.pushCode(`${o}.push(${s});`),t.pushCode("}"),typeof this.options.readUntil=="function"){const c=this.options.readUntil,l=t.addImport(c);t.pushCode(`while (!${l}.call(${t.generateVariable()}, ${s}, buffer.subarray(offset)));`)}}generateChoiceCase(t,n,r){if(typeof r=="string"){const i=t.generateVariable(this.varName);if(wn.has(r)){const a=t.generateTmpVariable();t.pushCode(`var ${a} = ${zi+r}(offset, {`),t.useContextVariables&&(t.pushCode(`$parent: ${i}.$parent,`),t.pushCode(`$root: ${i}.$root,`)),t.pushCode("});"),t.pushCode(`${i} = ${a}.result; offset = ${a}.offset;`),r!==this.alias&&t.addReference(r)}else{const a=oc[r],o=sc[r];t.pushCode(`${i} = dataView.get${a}(offset, ${o});`),t.pushCode(`offset += ${xn[r]}`)}}else r instanceof ee&&(t.pushPath(n),r.generate(t),t.popPath(n))}generateChoice(t){const n=t.generateOption(this.options.tag),r=t.generateVariable(this.varName);if(this.varName&&(t.pushCode(`${r} = {};`),t.useContextVariables)){const i=t.generateVariable();t.pushCode(`${r}.$parent = ${i};`),t.pushCode(`${r}.$root = ${i}.$root;`)}t.pushCode(`switch(${n}) {`);for(const i in this.options.choices){const a=parseInt(i,10),o=this.options.choices[a];t.pushCode(`case ${a}:`),this.generateChoiceCase(t,this.varName,o),t.pushCode("break;")}t.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(t,this.varName,this.options.defaultChoice):t.generateError(`"Met undefined tag value " + ${n} + " at choice"`),t.pushCode("}"),this.varName&&t.useContextVariables&&(t.pushCode(`delete ${r}.$parent;`),t.pushCode(`delete ${r}.$root;`))}generateNest(t){const n=t.generateVariable(this.varName);if(this.options.type instanceof ee){if(this.varName&&(t.pushCode(`${n} = {};`),t.useContextVariables)){const r=t.generateVariable();t.pushCode(`${n}.$parent = ${r};`),t.pushCode(`${n}.$root = ${r}.$root;`)}t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName),this.varName&&t.useContextVariables&&t.useContextVariables&&(t.pushCode(`delete ${n}.$parent;`),t.pushCode(`delete ${n}.$root;`))}else if(wn.has(this.options.type)){const r=t.generateTmpVariable();if(t.pushCode(`var ${r} = ${zi+this.options.type}(offset, {`),t.useContextVariables){const i=t.generateVariable();t.pushCode(`$parent: ${i},`),t.pushCode(`$root: ${i}.$root,`)}t.pushCode("});"),t.pushCode(`${n} = ${r}.result; offset = ${r}.offset;`),this.options.type!==this.alias&&t.addReference(this.options.type)}}generateWrapper(t){const n=t.generateVariable(this.varName),r=t.generateTmpVariable();if(typeof this.options.readUntil=="function"){const f=this.options.readUntil,u=t.generateTmpVariable(),c=t.generateTmpVariable();t.pushCode(`var ${u} = offset;`),t.pushCode(`var ${c} = 0;`),t.pushCode("while (offset < buffer.length) {"),t.pushCode(`${c} = dataView.getUint8(offset);`);const l=t.addImport(f);t.pushCode(`if (${l}.call(${t.generateVariable()}, ${c}, buffer.subarray(offset))) break;`),t.pushCode("offset += 1;"),t.pushCode("}"),t.pushCode(`${r} = buffer.subarray(${u}, offset);`)}else if(this.options.readUntil==="eof")t.pushCode(`${r} = buffer.subarray(offset);`);else{const f=t.generateOption(this.options.length);t.pushCode(`${r} = buffer.subarray(offset, offset + ${f});`),t.pushCode(`offset += ${f};`)}this.options.clone&&t.pushCode(`${r} = buffer.constructor.from(${r});`);const i=t.generateTmpVariable(),a=t.generateTmpVariable(),o=t.generateTmpVariable(),s=t.addImport(this.options.wrapper);if(t.pushCode(`${r} = ${s}.call(this, ${r}).subarray(0);`),t.pushCode(`var ${i} = buffer;`),t.pushCode(`var ${a} = offset;`),t.pushCode(`var ${o} = dataView;`),t.pushCode(`buffer = ${r};`),t.pushCode("offset = 0;"),t.pushCode("dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.options.type instanceof ee)this.varName&&t.pushCode(`${n} = {};`),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(wn.has(this.options.type)){const f=t.generateTmpVariable();t.pushCode(`var ${f} = ${zi+this.options.type}(0);`),t.pushCode(`${n} = ${f}.result;`),this.options.type!==this.alias&&t.addReference(this.options.type)}t.pushCode(`buffer = ${i};`),t.pushCode(`dataView = ${o};`),t.pushCode(`offset = ${a};`)}generateFormatter(t,n,r){if(typeof r=="function"){const i=t.addImport(r);t.pushCode(`${n} = ${i}.call(${t.generateVariable()}, ${n});`)}}generatePointer(t){const n=this.options.type,r=t.generateOption(this.options.offset),i=t.generateTmpVariable(),a=t.generateVariable(this.varName);if(t.pushCode(`var ${i} = offset;`),t.pushCode(`offset = ${r};`),this.options.type instanceof ee){if(t.pushCode(`${a} = {};`),t.useContextVariables){const o=t.generateVariable();t.pushCode(`${a}.$parent = ${o};`),t.pushCode(`${a}.$root = ${o}.$root;`)}t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName),t.useContextVariables&&(t.pushCode(`delete ${a}.$parent;`),t.pushCode(`delete ${a}.$root;`))}else if(wn.has(this.options.type)){const o=t.generateTmpVariable();if(t.pushCode(`var ${o} = ${zi+this.options.type}(offset, {`),t.useContextVariables){const s=t.generateVariable();t.pushCode(`$parent: ${s},`),t.pushCode(`$root: ${s}.$root,`)}t.pushCode("});"),t.pushCode(`${a} = ${o}.result; offset = ${o}.offset;`),this.options.type!==this.alias&&t.addReference(this.options.type)}else if(Object.keys(xn).indexOf(this.options.type)>=0){const o=oc[n],s=sc[n];t.pushCode(`${a} = dataView.get${o}(offset, ${s});`),t.pushCode(`offset += ${xn[n]};`)}t.pushCode(`offset = ${i};`)}generateSaveOffset(t){const n=t.generateVariable(this.varName);t.pushCode(`${n} = offset`)}}var Dx={},K0={},Ri={},Ls={};Object.defineProperty(Ls,"__esModule",{value:!0});function J0(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function $0(e,t,n){return t&&_x(e.prototype,t),n&&_x(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function uF(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ed(e,t)}function Ga(e){return Ga=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Ga(e)}function ed(e,t){return ed=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},ed(e,t)}function fF(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function zs(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function cF(e,t){if(t&&(typeof t=="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return zs(e)}function lF(e){var t=fF();return function(){var r=Ga(e),i;if(t){var a=Ga(this).constructor;i=Reflect.construct(r,arguments,a)}else i=r.apply(this,arguments);return cF(this,i)}}function hF(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&(e=Ga(e),e!==null););return e}function uc(){return typeof Reflect<"u"&&Reflect.get?uc=Reflect.get.bind():uc=function(t,n,r){var i=hF(t,n);if(i){var a=Object.getOwnPropertyDescriptor(i,n);return a.get?a.get.call(arguments.length<3?t:r):a.value}},uc.apply(this,arguments)}var Ix=function(){function e(){J0(this,e),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return $0(e,[{key:"addEventListener",value:function(n,r,i){n in this.listeners||(this.listeners[n]=[]),this.listeners[n].push({callback:r,options:i})}},{key:"removeEventListener",value:function(n,r){if(n in this.listeners){for(var i=this.listeners[n],a=0,o=i.length;a<o;a++)if(i[a].callback===r){i.splice(a,1);return}}}},{key:"dispatchEvent",value:function(n){if(n.type in this.listeners){for(var r=this.listeners[n.type],i=r.slice(),a=0,o=i.length;a<o;a++){var s=i[a];try{s.callback.call(this,n)}catch(f){Promise.resolve().then(function(){throw f})}s.options&&s.options.once&&this.removeEventListener(n.type,s.callback)}return!n.defaultPrevented}}}]),e}(),td=function(e){uF(n,e);var t=lF(n);function n(){var r;return J0(this,n),r=t.call(this),r.listeners||Ix.call(zs(r)),Object.defineProperty(zs(r),"aborted",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(zs(r),"onabort",{value:null,writable:!0,configurable:!0}),Object.defineProperty(zs(r),"reason",{value:void 0,writable:!0,configurable:!0}),r}return $0(n,[{key:"toString",value:function(){return"[object AbortSignal]"}},{key:"dispatchEvent",value:function(i){i.type==="abort"&&(this.aborted=!0,typeof this.onabort=="function"&&this.onabort.call(this,i)),uc(Ga(n.prototype),"dispatchEvent",this).call(this,i)}}]),n}(Ix),Mx=function(){function e(){J0(this,e),Object.defineProperty(this,"signal",{value:new td,writable:!0,configurable:!0})}return $0(e,[{key:"abort",value:function(n){var r;try{r=new Event("abort")}catch{typeof document<"u"?document.createEvent?(r=document.createEvent("Event"),r.initEvent("abort",!1,!1)):(r=document.createEventObject(),r.type="abort"):r={type:"abort",bubbles:!1,cancelable:!1}}var i=n;if(i===void 0)if(typeof document>"u")i=new Error("This operation was aborted"),i.name="AbortError";else try{i=new DOMException("signal is aborted without reason")}catch{i=new Error("This operation was aborted"),i.name="AbortError"}this.signal.reason=i,this.signal.dispatchEvent(r)}},{key:"toString",value:function(){return"[object AbortController]"}}]),e}();typeof Symbol<"u"&&Symbol.toStringTag&&(Mx.prototype[Symbol.toStringTag]="AbortController",td.prototype[Symbol.toStringTag]="AbortSignal");function dF(e){return e.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):typeof e.Request=="function"&&!e.Request.prototype.hasOwnProperty("signal")||!e.AbortController}function gF(e){typeof e=="function"&&(e={fetch:e});var t=e,n=t.fetch,r=t.Request,i=r===void 0?n.Request:r,a=t.AbortController,o=t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL,s=o===void 0?!1:o;if(!dF({fetch:n,Request:i,AbortController:a,__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL:s}))return{fetch:n,Request:f};var f=i;(f&&!f.prototype.hasOwnProperty("signal")||s)&&(f=function(h,d){var p;d&&d.signal&&(p=d.signal,delete d.signal);var b=new i(h,d);return p&&Object.defineProperty(b,"signal",{writable:!1,enumerable:!1,configurable:!0,value:p}),b},f.prototype=i.prototype);var u=n,c=function(h,d){var p=f&&f.prototype.isPrototypeOf(h)?h.signal:d?d.signal:void 0;if(p){var b;try{b=new DOMException("Aborted","AbortError")}catch{b=new Error("Aborted"),b.name="AbortError"}if(p.aborted)return Promise.reject(b);var x=new Promise(function(A,D){p.addEventListener("abort",function(){return D(b)},{once:!0})});return d&&d.signal&&delete d.signal,Promise.race([x,u(h,d)])}return u(h,d)};return{fetch:c,Request:f}}Ls.AbortController=Mx,Ls.AbortSignal=td,Ls.abortableFetch=gF,Object.defineProperty(Ri,"__esModule",{value:!0}),Ri.AbortSignal=Ri.AbortController=void 0;const Tx=Ls;var fc=function(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof Si<"u")return Si;throw new Error("unable to locate global object")};let pF=typeof fc().AbortController>"u"?Tx.AbortController:fc().AbortController;Ri.AbortController=pF;let mF=typeof fc().AbortController>"u"?Tx.AbortSignal:fc().AbortSignal;Ri.AbortSignal=mF;var nd={};Object.defineProperty(nd,"__esModule",{value:!0});const bF=Ri;class yF{}class wF{constructor(){this.signals=new Set,this.abortController=new bF.AbortController}addSignal(t=new yF){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(t),t.aborted?this.handleAborted(t):typeof t.addEventListener=="function"&&t.addEventListener("abort",()=>{this.handleAborted(t)})}handleAborted(t){this.signals.delete(t),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}nd.default=wF;var rd={};Object.defineProperty(rd,"__esModule",{value:!0});class xF{constructor(){this.callbacks=new Set}addCallback(t=()=>{}){this.callbacks.add(t),t(this.currentMessage)}callback(t){this.currentMessage=t,this.callbacks.forEach(n=>{n(t)})}}rd.default=xF;var Nx=Si&&Si.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(K0,"__esModule",{value:!0});const AF=Ri,vF=Nx(nd),EF=Nx(rd);class cc{constructor({fill:t,cache:n}){if(typeof t!="function")throw new TypeError("must pass a fill function");if(typeof n!="object")throw new TypeError("must pass a cache object");if(typeof n.get!="function"||typeof n.set!="function"||typeof n.delete!="function")throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=n,this.fillCallback=t}static isAbortException(t){return t.name==="AbortError"||t.code==="ERR_ABORTED"||t.message==="AbortError: aborted"||t.message==="Error: aborted"}evict(t,n){this.cache.get(t)===n&&this.cache.delete(t)}fill(t,n,r,i){const a=new vF.default,o=new EF.default;o.addCallback(i);const s={aborter:a,promise:this.fillCallback(n,a.signal,f=>{o.callback(f)}),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};s.aborter.addSignal(r),s.aborter.signal.addEventListener("abort",()=>{s.settled||this.evict(t,s)}),s.promise.then(()=>{s.settled=!0},()=>{s.settled=!0,this.evict(t,s)}).catch(f=>{throw console.error(f),f}),this.cache.set(t,s)}static checkSinglePromise(t,n){function r(){if(n&&n.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return t.then(i=>(r(),i),i=>{throw r(),i})}has(t){return this.cache.has(t)}get(t,n,r,i){if(!r&&n instanceof AF.AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const a=this.cache.get(t);return a?a.aborted&&!a.settled?(this.evict(t,a),this.get(t,n,r,i)):a.settled?a.promise:(a.aborter.addSignal(r),a.statusReporter.addCallback(i),cc.checkSinglePromise(a.promise,r)):(this.fill(t,n,r,i),cc.checkSinglePromise(this.cache.get(t).promise,r))}delete(t){const n=this.cache.get(t);n&&(n.settled||n.aborter.abort(),this.cache.delete(t))}clear(){const t=this.cache.keys();let n=0;for(let r=t.next();!r.done;r=t.next())this.delete(r.value),n+=1;return n}}K0.default=cc;var CF=Si&&Si.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Dx,"__esModule",{value:!0});const SF=CF(K0);var id=Dx.default=SF.default,DF=class{constructor(t={}){if(!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=t.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(t,n){this.cache.set(t,n),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t)){const n=this.oldCache.get(t);return this.oldCache.delete(t),this._set(t,n),n}}set(t,n){return this.cache.has(t)?this.cache.set(t,n):this._set(t,n),this}has(t){return this.cache.has(t)||this.oldCache.has(t)}peek(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t))return this.oldCache.get(t)}delete(t){const n=this.cache.delete(t);return n&&this._size--,this.oldCache.delete(t)||n}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[t]of this)yield t}*values(){for(const[,t]of this)yield t}*[Symbol.iterator](){for(const t of this.cache)yield t;for(const t of this.oldCache){const[n]=t;this.cache.has(n)||(yield t)}}get size(){let t=0;for(const n of this.oldCache.keys())this.cache.has(n)||t++;return this._size+t}};const Bx=Ma(DF);class Ur{constructor(t,n){this.ranges=arguments.length===2?[{min:t,max:n}]:0 in t?Object.assign({},t):[t]}min(){return this.ranges[0].min}max(){return this.ranges[this.ranges.length-1].max}contains(t){for(let n=0;n<this.ranges.length;n+=1){const r=this.ranges[n];if(r.min<=t&&r.max>=t)return!0}return!1}isContiguous(){return this.ranges.length>1}getRanges(){return this.ranges.map(t=>new Ur(t.min,t.max))}toString(){return this.ranges.map(t=>`[${t.min}-${t.max}]`).join(",")}union(t){const n=this.getRanges().concat(t.getRanges()).sort(this.rangeOrder),r=[];let i=n[0];for(let a=1;a<n.length;a+=1){const o=n[a];o.min()>i.max()+1?(r.push(i),i=o):o.max()>i.max()&&(i=new Ur(i.min(),o.max()))}return r.push(i),r.length===1?r[0]:new Ur(r)}intersection(t){let n=this,r=t;const i=this.ranges(),a=r.ranges(),o=i.length,s=a.length;let f=0,u=0;const c=[];for(;f<o&&u<s;){n=i[f],r=a[u];const l=Math.max(n.min(),r.min()),h=Math.min(n.max(),r.max());h>=l&&c.push(new Ur(l,h)),n.max()>r.max()?u+=1:f+=1}if(c.length===0)throw new Error("found range of length 0");return c.length===1?c[0]:new Ur(c)}coverage(){let t=0;const n=this.ranges();for(const r of n)t+=r.max()-r.min()+1;return t}rangeOrder(t,n){let r=t,i=n;return arguments.length<2&&(i=r,r=this),r.min()<i.min()?-1:r.min()>i.min()?1:r.max()<i.max()?-1:i.max()>r.max()?1:0}}/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */const _F=4,Fx=0,kx=1,IF=2;function Ha(e){let t=e.length;for(;--t>=0;)e[t]=0}const MF=0,Lx=1,TF=2,NF=3,BF=258,ad=29,Rs=256,Os=Rs+1+ad,Qa=30,od=19,zx=2*Os+1,Oi=15,sd=16,FF=7,ud=256,Rx=16,Ox=17,Px=18,fd=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),lc=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),kF=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Ux=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),LF=512,or=new Array((Os+2)*2);Ha(or);const Ps=new Array(Qa*2);Ha(Ps);const Us=new Array(LF);Ha(Us);const js=new Array(BF-NF+1);Ha(js);const cd=new Array(ad);Ha(cd);const hc=new Array(Qa);Ha(hc);function ld(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let jx,Gx,Hx;function hd(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}const Qx=e=>e<256?Us[e]:Us[256+(e>>>7)],Gs=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Mt=(e,t,n)=>{e.bi_valid>sd-n?(e.bi_buf|=t<<e.bi_valid&65535,Gs(e,e.bi_buf),e.bi_buf=t>>sd-e.bi_valid,e.bi_valid+=n-sd):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},On=(e,t,n)=>{Mt(e,n[t*2],n[t*2+1])},Vx=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},zF=e=>{e.bi_valid===16?(Gs(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},RF=(e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,f=t.stat_desc.max_length;let u,c,l,h,d,p,b=0;for(h=0;h<=Oi;h++)e.bl_count[h]=0;for(n[e.heap[e.heap_max]*2+1]=0,u=e.heap_max+1;u<zx;u++)c=e.heap[u],h=n[n[c*2+1]*2+1]+1,h>f&&(h=f,b++),n[c*2+1]=h,!(c>r)&&(e.bl_count[h]++,d=0,c>=s&&(d=o[c-s]),p=n[c*2],e.opt_len+=p*(h+d),a&&(e.static_len+=p*(i[c*2+1]+d)));if(b!==0){do{for(h=f-1;e.bl_count[h]===0;)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[f]--,b-=2}while(b>0);for(h=f;h!==0;h--)for(c=e.bl_count[h];c!==0;)l=e.heap[--u],!(l>r)&&(n[l*2+1]!==h&&(e.opt_len+=(h-n[l*2+1])*n[l*2],n[l*2+1]=h),c--)}},Zx=(e,t,n)=>{const r=new Array(Oi+1);let i=0,a,o;for(a=1;a<=Oi;a++)i=i+n[a-1]<<1,r[a]=i;for(o=0;o<=t;o++){let s=e[o*2+1];s!==0&&(e[o*2]=Vx(r[s]++,s))}},OF=()=>{let e,t,n,r,i;const a=new Array(Oi+1);for(n=0,r=0;r<ad-1;r++)for(cd[r]=n,e=0;e<1<<fd[r];e++)js[n++]=r;for(js[n-1]=r,i=0,r=0;r<16;r++)for(hc[r]=i,e=0;e<1<<lc[r];e++)Us[i++]=r;for(i>>=7;r<Qa;r++)for(hc[r]=i<<7,e=0;e<1<<lc[r]-7;e++)Us[256+i++]=r;for(t=0;t<=Oi;t++)a[t]=0;for(e=0;e<=143;)or[e*2+1]=8,e++,a[8]++;for(;e<=255;)or[e*2+1]=9,e++,a[9]++;for(;e<=279;)or[e*2+1]=7,e++,a[7]++;for(;e<=287;)or[e*2+1]=8,e++,a[8]++;for(Zx(or,Os+1,a),e=0;e<Qa;e++)Ps[e*2+1]=5,Ps[e*2]=Vx(e,5);jx=new ld(or,fd,Rs+1,Os,Oi),Gx=new ld(Ps,lc,0,Qa,Oi),Hx=new ld(new Array(0),kF,0,od,FF)},Yx=e=>{let t;for(t=0;t<Os;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Qa;t++)e.dyn_dtree[t*2]=0;for(t=0;t<od;t++)e.bl_tree[t*2]=0;e.dyn_ltree[ud*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},qx=e=>{e.bi_valid>8?Gs(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Wx=(e,t,n,r)=>{const i=t*2,a=n*2;return e[i]<e[a]||e[i]===e[a]&&r[t]<=r[n]},dd=(e,t,n)=>{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i<e.heap_len&&Wx(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!Wx(t,r,e.heap[i],e.depth));)e.heap[n]=e.heap[i],n=i,i<<=1;e.heap[n]=r},Xx=(e,t,n)=>{let r,i,a=0,o,s;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+a++]&255,r+=(e.pending_buf[e.sym_buf+a++]&255)<<8,i=e.pending_buf[e.sym_buf+a++],r===0?On(e,i,t):(o=js[i],On(e,o+Rs+1,t),s=fd[o],s!==0&&(i-=cd[o],Mt(e,i,s)),r--,o=Qx(r),On(e,o,n),s=lc[o],s!==0&&(r-=hc[o],Mt(e,r,s)));while(a<e.sym_next);On(e,ud,t)},gd=(e,t)=>{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.elems;let o,s,f=-1,u;for(e.heap_len=0,e.heap_max=zx,o=0;o<a;o++)n[o*2]!==0?(e.heap[++e.heap_len]=f=o,e.depth[o]=0):n[o*2+1]=0;for(;e.heap_len<2;)u=e.heap[++e.heap_len]=f<2?++f:0,n[u*2]=1,e.depth[u]=0,e.opt_len--,i&&(e.static_len-=r[u*2+1]);for(t.max_code=f,o=e.heap_len>>1;o>=1;o--)dd(e,n,o);u=a;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],dd(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=s,n[u*2]=n[o*2]+n[s*2],e.depth[u]=(e.depth[o]>=e.depth[s]?e.depth[o]:e.depth[s])+1,n[o*2+1]=n[s*2+1]=u,e.heap[1]=u++,dd(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],RF(e,t),Zx(n,f,e.bl_count)},Kx=(e,t,n)=>{let r,i=-1,a,o=t[0*2+1],s=0,f=7,u=4;for(o===0&&(f=138,u=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)a=o,o=t[(r+1)*2+1],!(++s<f&&a===o)&&(s<u?e.bl_tree[a*2]+=s:a!==0?(a!==i&&e.bl_tree[a*2]++,e.bl_tree[Rx*2]++):s<=10?e.bl_tree[Ox*2]++:e.bl_tree[Px*2]++,s=0,i=a,o===0?(f=138,u=3):a===o?(f=6,u=3):(f=7,u=4))},Jx=(e,t,n)=>{let r,i=-1,a,o=t[0*2+1],s=0,f=7,u=4;for(o===0&&(f=138,u=3),r=0;r<=n;r++)if(a=o,o=t[(r+1)*2+1],!(++s<f&&a===o)){if(s<u)do On(e,a,e.bl_tree);while(--s!==0);else a!==0?(a!==i&&(On(e,a,e.bl_tree),s--),On(e,Rx,e.bl_tree),Mt(e,s-3,2)):s<=10?(On(e,Ox,e.bl_tree),Mt(e,s-3,3)):(On(e,Px,e.bl_tree),Mt(e,s-11,7));s=0,i=a,o===0?(f=138,u=3):a===o?(f=6,u=3):(f=7,u=4)}},PF=e=>{let t;for(Kx(e,e.dyn_ltree,e.l_desc.max_code),Kx(e,e.dyn_dtree,e.d_desc.max_code),gd(e,e.bl_desc),t=od-1;t>=3&&e.bl_tree[Ux[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},UF=(e,t,n,r)=>{let i;for(Mt(e,t-257,5),Mt(e,n-1,5),Mt(e,r-4,4),i=0;i<r;i++)Mt(e,e.bl_tree[Ux[i]*2+1],3);Jx(e,e.dyn_ltree,t-1),Jx(e,e.dyn_dtree,n-1)},jF=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return Fx;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return kx;for(n=32;n<Rs;n++)if(e.dyn_ltree[n*2]!==0)return kx;return Fx};let $x=!1;const GF=e=>{$x||(OF(),$x=!0),e.l_desc=new hd(e.dyn_ltree,jx),e.d_desc=new hd(e.dyn_dtree,Gx),e.bl_desc=new hd(e.bl_tree,Hx),e.bi_buf=0,e.bi_valid=0,Yx(e)},e2=(e,t,n,r)=>{Mt(e,(MF<<1)+(r?1:0),3),qx(e),Gs(e,n),Gs(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},HF=e=>{Mt(e,Lx<<1,3),On(e,ud,or),zF(e)},QF=(e,t,n,r)=>{let i,a,o=0;e.level>0?(e.strm.data_type===IF&&(e.strm.data_type=jF(e)),gd(e,e.l_desc),gd(e,e.d_desc),o=PF(e),i=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=i&&(i=a)):i=a=n+5,n+4<=i&&t!==-1?e2(e,t,n,r):e.strategy===_F||a===i?(Mt(e,(Lx<<1)+(r?1:0),3),Xx(e,or,Ps)):(Mt(e,(TF<<1)+(r?1:0),3),UF(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),Xx(e,e.dyn_ltree,e.dyn_dtree)),Yx(e),r&&qx(e)},VF=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(js[n]+Rs+1)*2]++,e.dyn_dtree[Qx(t)*2]++),e.sym_next===e.sym_end);var ZF=GF,YF=e2,qF=QF,WF=VF,XF=HF,KF={_tr_init:ZF,_tr_stored_block:YF,_tr_flush_block:qF,_tr_tally:WF,_tr_align:XF},Hs=(e,t,n,r)=>{let i=e&65535|0,a=e>>>16&65535|0,o=0;for(;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0};const JF=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},$F=new Uint32Array(JF());var et=(e,t,n,r)=>{const i=$F,a=r+n;e^=-1;for(let o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1},Va={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Qs={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:ek,_tr_stored_block:pd,_tr_flush_block:tk,_tr_tally:jr,_tr_align:nk}=KF,{Z_NO_FLUSH:Gr,Z_PARTIAL_FLUSH:rk,Z_FULL_FLUSH:ik,Z_FINISH:Xt,Z_BLOCK:t2,Z_OK:at,Z_STREAM_END:n2,Z_STREAM_ERROR:Pn,Z_DATA_ERROR:ak,Z_BUF_ERROR:md,Z_DEFAULT_COMPRESSION:ok,Z_FILTERED:sk,Z_HUFFMAN_ONLY:dc,Z_RLE:uk,Z_FIXED:fk,Z_DEFAULT_STRATEGY:ck,Z_UNKNOWN:lk,Z_DEFLATED:gc}=Qs,hk=9,dk=15,gk=8,pk=29,bd=256+1+pk,mk=30,bk=19,yk=2*bd+1,wk=15,oe=3,Hr=258,Un=Hr+oe+1,xk=32,Za=42,yd=57,wd=69,xd=73,Ad=91,vd=103,Pi=113,Vs=666,bt=1,Ya=2,Ui=3,qa=4,Ak=3,ji=(e,t)=>(e.msg=Va[t],t),r2=e=>e*2-(e>4?9:0),Qr=e=>{let t=e.length;for(;--t>=0;)e[t]=0},vk=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)};let Vr=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask;const zt=e=>{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Rt=(e,t)=>{tk(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,zt(e.strm)},de=(e,t)=>{e.pending_buf[e.pending++]=t},Zs=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},Ed=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=Hs(e.adler,t,i,n):e.state.wrap===2&&(e.adler=et(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},i2=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,a,o=e.prev_length,s=e.nice_match;const f=e.strstart>e.w_size-Un?e.strstart-(e.w_size-Un):0,u=e.window,c=e.w_mask,l=e.prev,h=e.strstart+Hr;let d=u[r+o-1],p=u[r+o];e.prev_length>=e.good_match&&(n>>=2),s>e.lookahead&&(s=e.lookahead);do if(i=t,!(u[i+o]!==p||u[i+o-1]!==d||u[i]!==u[r]||u[++i]!==u[r+1])){r+=2,i++;do;while(u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&r<h);if(a=Hr-(h-r),r=h-Hr,a>o){if(e.match_start=t,o=a,a>=s)break;d=u[r+o-1],p=u[r+o]}}while((t=l[t&c])>f&&--n!==0);return o<=e.lookahead?o:e.lookahead},Wa=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Un)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),vk(e),r+=t),e.strm.avail_in===0)break;if(n=Ed(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=oe)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=Vr(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=Vr(e,e.ins_h,e.window[i+oe-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<oe)););}while(e.lookahead<Un&&e.strm.avail_in!==0)},a2=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,a,o=0,s=e.strm.avail_in;do{if(r=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,i=e.strstart-e.block_start,r>i+e.strm.avail_in&&(r=i+e.strm.avail_in),r>a&&(r=a),r<n&&(r===0&&t!==Xt||t===Gr||r!==i+e.strm.avail_in)))break;o=t===Xt&&r===i+e.strm.avail_in?1:0,pd(e,0,0,o),e.pending_buf[e.pending-4]=r,e.pending_buf[e.pending-3]=r>>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,zt(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(Ed(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(o===0);return s-=e.strm.avail_in,s&&(s>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=s&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-s,e.strm.next_in),e.strstart),e.strstart+=s,e.insert+=s>e.w_size-e.insert?e.w_size-e.insert:s),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),o?qa:t!==Gr&&t!==Xt&&e.strm.avail_in===0&&e.strstart===e.block_start?Ya:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(Ed(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,i=e.strstart-e.block_start,(i>=n||(i||t===Xt)&&t!==Gr&&e.strm.avail_in===0&&i<=a)&&(r=i>a?a:i,o=t===Xt&&e.strm.avail_in===0&&r===i?1:0,pd(e,e.block_start,r,o),e.block_start+=r,zt(e.strm)),o?Ui:bt)},Cd=(e,t)=>{let n,r;for(;;){if(e.lookahead<Un){if(Wa(e),e.lookahead<Un&&t===Gr)return bt;if(e.lookahead===0)break}if(n=0,e.lookahead>=oe&&(e.ins_h=Vr(e,e.ins_h,e.window[e.strstart+oe-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-Un&&(e.match_length=i2(e,n)),e.match_length>=oe)if(r=jr(e,e.strstart-e.match_start,e.match_length-oe),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=oe){e.match_length--;do e.strstart++,e.ins_h=Vr(e,e.ins_h,e.window[e.strstart+oe-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Vr(e,e.ins_h,e.window[e.strstart+1]);else r=jr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Rt(e,!1),e.strm.avail_out===0))return bt}return e.insert=e.strstart<oe-1?e.strstart:oe-1,t===Xt?(Rt(e,!0),e.strm.avail_out===0?Ui:qa):e.sym_next&&(Rt(e,!1),e.strm.avail_out===0)?bt:Ya},Xa=(e,t)=>{let n,r,i;for(;;){if(e.lookahead<Un){if(Wa(e),e.lookahead<Un&&t===Gr)return bt;if(e.lookahead===0)break}if(n=0,e.lookahead>=oe&&(e.ins_h=Vr(e,e.ins_h,e.window[e.strstart+oe-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=oe-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-Un&&(e.match_length=i2(e,n),e.match_length<=5&&(e.strategy===sk||e.match_length===oe&&e.strstart-e.match_start>4096)&&(e.match_length=oe-1)),e.prev_length>=oe&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-oe,r=jr(e,e.strstart-1-e.prev_match,e.prev_length-oe),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=Vr(e,e.ins_h,e.window[e.strstart+oe-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=oe-1,e.strstart++,r&&(Rt(e,!1),e.strm.avail_out===0))return bt}else if(e.match_available){if(r=jr(e,0,e.window[e.strstart-1]),r&&Rt(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return bt}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=jr(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<oe-1?e.strstart:oe-1,t===Xt?(Rt(e,!0),e.strm.avail_out===0?Ui:qa):e.sym_next&&(Rt(e,!1),e.strm.avail_out===0)?bt:Ya},Ek=(e,t)=>{let n,r,i,a;const o=e.window;for(;;){if(e.lookahead<=Hr){if(Wa(e),e.lookahead<=Hr&&t===Gr)return bt;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=oe&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){a=e.strstart+Hr;do;while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&i<a);e.match_length=Hr-(a-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=oe?(n=jr(e,1,e.match_length-oe),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=jr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Rt(e,!1),e.strm.avail_out===0))return bt}return e.insert=0,t===Xt?(Rt(e,!0),e.strm.avail_out===0?Ui:qa):e.sym_next&&(Rt(e,!1),e.strm.avail_out===0)?bt:Ya},Ck=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Wa(e),e.lookahead===0)){if(t===Gr)return bt;break}if(e.match_length=0,n=jr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Rt(e,!1),e.strm.avail_out===0))return bt}return e.insert=0,t===Xt?(Rt(e,!0),e.strm.avail_out===0?Ui:qa):e.sym_next&&(Rt(e,!1),e.strm.avail_out===0)?bt:Ya};function jn(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const Ys=[new jn(0,0,0,0,a2),new jn(4,4,8,4,Cd),new jn(4,5,16,8,Cd),new jn(4,6,32,32,Cd),new jn(4,4,16,16,Xa),new jn(8,16,32,32,Xa),new jn(8,16,128,128,Xa),new jn(8,32,128,256,Xa),new jn(32,128,258,1024,Xa),new jn(32,258,258,4096,Xa)],Sk=e=>{e.window_size=2*e.w_size,Qr(e.head),e.max_lazy_match=Ys[e.level].max_lazy,e.good_match=Ys[e.level].good_length,e.nice_match=Ys[e.level].nice_length,e.max_chain_length=Ys[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=oe-1,e.match_available=0,e.ins_h=0};function Dk(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=gc,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(yk*2),this.dyn_dtree=new Uint16Array((2*mk+1)*2),this.bl_tree=new Uint16Array((2*bk+1)*2),Qr(this.dyn_ltree),Qr(this.dyn_dtree),Qr(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(wk+1),this.heap=new Uint16Array(2*bd+1),Qr(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*bd+1),Qr(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const qs=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==Za&&t.status!==yd&&t.status!==wd&&t.status!==xd&&t.status!==Ad&&t.status!==vd&&t.status!==Pi&&t.status!==Vs?1:0},o2=e=>{if(qs(e))return ji(e,Pn);e.total_in=e.total_out=0,e.data_type=lk;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?yd:t.wrap?Za:Pi,e.adler=t.wrap===2?0:1,t.last_flush=-2,ek(t),at},s2=e=>{const t=o2(e);return t===at&&Sk(e.state),t},_k=(e,t)=>qs(e)||e.state.wrap!==2?Pn:(e.state.gzhead=t,at),u2=(e,t,n,r,i,a)=>{if(!e)return Pn;let o=1;if(t===ok&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>hk||n!==gc||r<8||r>15||t<0||t>9||a<0||a>fk||r===8&&o!==1)return ji(e,Pn);r===8&&(r=9);const s=new Dk;return e.state=s,s.strm=e,s.status=Za,s.wrap=o,s.gzhead=null,s.w_bits=r,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=i+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+oe-1)/oe),s.window=new Uint8Array(s.w_size*2),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<i+6,s.pending_buf_size=s.lit_bufsize*4,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=(s.lit_bufsize-1)*3,s.level=t,s.strategy=a,s.method=n,s2(e)},Ik=(e,t)=>u2(e,t,gc,dk,gk,ck),Mk=(e,t)=>{if(qs(e)||t>t2||t<0)return e?ji(e,Pn):Pn;const n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Vs&&t!==Xt)return ji(e,e.avail_out===0?md:Pn);const r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(zt(e),e.avail_out===0)return n.last_flush=-1,at}else if(e.avail_in===0&&r2(t)<=r2(r)&&t!==Xt)return ji(e,md);if(n.status===Vs&&e.avail_in!==0)return ji(e,md);if(n.status===Za&&n.wrap===0&&(n.status=Pi),n.status===Za){let i=gc+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=dc||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,i|=a<<6,n.strstart!==0&&(i|=xk),i+=31-i%31,Zs(n,i),n.strstart!==0&&(Zs(n,e.adler>>>16),Zs(n,e.adler&65535)),e.adler=1,n.status=Pi,zt(e),n.pending!==0)return n.last_flush=-1,at}if(n.status===yd){if(e.adler=0,de(n,31),de(n,139),de(n,8),n.gzhead)de(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),de(n,n.gzhead.time&255),de(n,n.gzhead.time>>8&255),de(n,n.gzhead.time>>16&255),de(n,n.gzhead.time>>24&255),de(n,n.level===9?2:n.strategy>=dc||n.level<2?4:0),de(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(de(n,n.gzhead.extra.length&255),de(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=et(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=wd;else if(de(n,0),de(n,0),de(n,0),de(n,0),de(n,0),de(n,n.level===9?2:n.strategy>=dc||n.level<2?4:0),de(n,Ak),n.status=Pi,zt(e),n.pending!==0)return n.last_flush=-1,at}if(n.status===wd){if(n.gzhead.extra){let i=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let s=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+s),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=et(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=s,zt(e),n.pending!==0)return n.last_flush=-1,at;i=0,a-=s}let o=new Uint8Array(n.gzhead.extra);n.pending_buf.set(o.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>i&&(e.adler=et(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=xd}if(n.status===xd){if(n.gzhead.name){let i=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=et(e.adler,n.pending_buf,n.pending-i,i)),zt(e),n.pending!==0)return n.last_flush=-1,at;i=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,de(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=et(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Ad}if(n.status===Ad){if(n.gzhead.comment){let i=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=et(e.adler,n.pending_buf,n.pending-i,i)),zt(e),n.pending!==0)return n.last_flush=-1,at;i=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,de(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=et(e.adler,n.pending_buf,n.pending-i,i))}n.status=vd}if(n.status===vd){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(zt(e),n.pending!==0))return n.last_flush=-1,at;de(n,e.adler&255),de(n,e.adler>>8&255),e.adler=0}if(n.status=Pi,zt(e),n.pending!==0)return n.last_flush=-1,at}if(e.avail_in!==0||n.lookahead!==0||t!==Gr&&n.status!==Vs){let i=n.level===0?a2(n,t):n.strategy===dc?Ck(n,t):n.strategy===uk?Ek(n,t):Ys[n.level].func(n,t);if((i===Ui||i===qa)&&(n.status=Vs),i===bt||i===Ui)return e.avail_out===0&&(n.last_flush=-1),at;if(i===Ya&&(t===rk?nk(n):t!==t2&&(pd(n,0,0,!1),t===ik&&(Qr(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),zt(e),e.avail_out===0))return n.last_flush=-1,at}return t!==Xt?at:n.wrap<=0?n2:(n.wrap===2?(de(n,e.adler&255),de(n,e.adler>>8&255),de(n,e.adler>>16&255),de(n,e.adler>>24&255),de(n,e.total_in&255),de(n,e.total_in>>8&255),de(n,e.total_in>>16&255),de(n,e.total_in>>24&255)):(Zs(n,e.adler>>>16),Zs(n,e.adler&65535)),zt(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?at:n2)},Tk=e=>{if(qs(e))return Pn;const t=e.state.status;return e.state=null,t===Pi?ji(e,ak):at},Nk=(e,t)=>{let n=t.length;if(qs(e))return Pn;const r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==Za||r.lookahead)return Pn;if(i===1&&(e.adler=Hs(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(Qr(r.head),r.strstart=0,r.block_start=0,r.insert=0);let f=new Uint8Array(r.w_size);f.set(t.subarray(n-r.w_size,n),0),t=f,n=r.w_size}const a=e.avail_in,o=e.next_in,s=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Wa(r);r.lookahead>=oe;){let f=r.strstart,u=r.lookahead-(oe-1);do r.ins_h=Vr(r,r.ins_h,r.window[f+oe-1]),r.prev[f&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=f,f++;while(--u);r.strstart=f,r.lookahead=oe-1,Wa(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=oe-1,r.match_available=0,e.next_in=o,e.input=s,e.avail_in=a,r.wrap=i,at};var Bk=Ik,Fk=u2,kk=s2,Lk=o2,zk=_k,Rk=Mk,Ok=Tk,Pk=Nk,Uk="pako deflate (from Nodeca project)",Ws={deflateInit:Bk,deflateInit2:Fk,deflateReset:kk,deflateResetKeep:Lk,deflateSetHeader:zk,deflate:Rk,deflateEnd:Ok,deflateSetDictionary:Pk,deflateInfo:Uk};const jk=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Gk=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(const r in n)jk(n,r)&&(e[r]=n[r])}}return e},Hk=e=>{let t=0;for(let r=0,i=e.length;r<i;r++)t+=e[r].length;const n=new Uint8Array(t);for(let r=0,i=0,a=e.length;r<a;r++){let o=e[r];n.set(o,i),i+=o.length}return n},pc={assign:Gk,flattenChunks:Hk};let f2=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{f2=!1}const Xs=new Uint8Array(256);for(let e=0;e<256;e++)Xs[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Xs[254]=Xs[254]=1;var Qk=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t};const Vk=(e,t)=>{if(t<65534&&e.subarray&&f2)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n};var Zk=(e,t)=>{const n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i;const a=new Array(n*2);for(i=0,r=0;r<n;){let o=e[r++];if(o<128){a[i++]=o;continue}let s=Xs[o];if(s>4){a[i++]=65533,r+=s-1;continue}for(o&=s===2?31:s===3?15:7;s>1&&r<n;)o=o<<6|e[r++]&63,s--;if(s>1){a[i++]=65533;continue}o<65536?a[i++]=o:(o-=65536,a[i++]=55296|o>>10&1023,a[i++]=56320|o&1023)}return Vk(a,i)},Yk=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+Xs[e[n]]>t?n:t},Ks={string2buf:Qk,buf2string:Zk,utf8border:Yk};function qk(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var c2=qk;const l2=Object.prototype.toString,{Z_NO_FLUSH:Wk,Z_SYNC_FLUSH:Xk,Z_FULL_FLUSH:Kk,Z_FINISH:Jk,Z_OK:mc,Z_STREAM_END:$k,Z_DEFAULT_COMPRESSION:e5,Z_DEFAULT_STRATEGY:t5,Z_DEFLATED:n5}=Qs;function Sd(e){this.options=pc.assign({level:e5,method:n5,chunkSize:16384,windowBits:15,memLevel:8,strategy:t5},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new c2,this.strm.avail_out=0;let n=Ws.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==mc)throw new Error(Va[n]);if(t.header&&Ws.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=Ks.string2buf(t.dictionary):l2.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=Ws.deflateSetDictionary(this.strm,r),n!==mc)throw new Error(Va[n]);this._dict_set=!0}}Sd.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?Jk:Wk,typeof e=="string"?n.input=Ks.string2buf(e):l2.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(a===Xk||a===Kk)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Ws.deflate(n,a),i===$k)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Ws.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===mc;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0},Sd.prototype.onData=function(e){this.chunks.push(e)},Sd.prototype.onEnd=function(e){e===mc&&(this.result=pc.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};const bc=16209,r5=16191;var i5=function(t,n){let r,i,a,o,s,f,u,c,l,h,d,p,b,x,A,D,I,C,T,B,S,z,E,N;const F=t.state;r=t.next_in,E=t.input,i=r+(t.avail_in-5),a=t.next_out,N=t.output,o=a-(n-t.avail_out),s=a+(t.avail_out-257),f=F.dmax,u=F.wsize,c=F.whave,l=F.wnext,h=F.window,d=F.hold,p=F.bits,b=F.lencode,x=F.distcode,A=(1<<F.lenbits)-1,D=(1<<F.distbits)-1;e:do{p<15&&(d+=E[r++]<<p,p+=8,d+=E[r++]<<p,p+=8),I=b[d&A];t:for(;;){if(C=I>>>24,d>>>=C,p-=C,C=I>>>16&255,C===0)N[a++]=I&65535;else if(C&16){T=I&65535,C&=15,C&&(p<C&&(d+=E[r++]<<p,p+=8),T+=d&(1<<C)-1,d>>>=C,p-=C),p<15&&(d+=E[r++]<<p,p+=8,d+=E[r++]<<p,p+=8),I=x[d&D];n:for(;;){if(C=I>>>24,d>>>=C,p-=C,C=I>>>16&255,C&16){if(B=I&65535,C&=15,p<C&&(d+=E[r++]<<p,p+=8,p<C&&(d+=E[r++]<<p,p+=8)),B+=d&(1<<C)-1,B>f){t.msg="invalid distance too far back",F.mode=bc;break e}if(d>>>=C,p-=C,C=a-o,B>C){if(C=B-C,C>c&&F.sane){t.msg="invalid distance too far back",F.mode=bc;break e}if(S=0,z=h,l===0){if(S+=u-C,C<T){T-=C;do N[a++]=h[S++];while(--C);S=a-B,z=N}}else if(l<C){if(S+=u+l-C,C-=l,C<T){T-=C;do N[a++]=h[S++];while(--C);if(S=0,l<T){C=l,T-=C;do N[a++]=h[S++];while(--C);S=a-B,z=N}}}else if(S+=l-C,C<T){T-=C;do N[a++]=h[S++];while(--C);S=a-B,z=N}for(;T>2;)N[a++]=z[S++],N[a++]=z[S++],N[a++]=z[S++],T-=3;T&&(N[a++]=z[S++],T>1&&(N[a++]=z[S++]))}else{S=a-B;do N[a++]=N[S++],N[a++]=N[S++],N[a++]=N[S++],T-=3;while(T>2);T&&(N[a++]=N[S++],T>1&&(N[a++]=N[S++]))}}else if(C&64){t.msg="invalid distance code",F.mode=bc;break e}else{I=x[(I&65535)+(d&(1<<C)-1)];continue n}break}}else if(C&64)if(C&32){F.mode=r5;break e}else{t.msg="invalid literal/length code",F.mode=bc;break e}else{I=b[(I&65535)+(d&(1<<C)-1)];continue t}break}}while(r<i&&a<s);T=p>>3,r-=T,p-=T<<3,d&=(1<<p)-1,t.next_in=r,t.next_out=a,t.avail_in=r<i?5+(i-r):5-(r-i),t.avail_out=a<s?257+(s-a):257-(a-s),F.hold=d,F.bits=p};const Ka=15,h2=852,d2=592,g2=0,Dd=1,p2=2,a5=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),o5=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),s5=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),u5=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var Js=(e,t,n,r,i,a,o,s)=>{const f=s.bits;let u=0,c=0,l=0,h=0,d=0,p=0,b=0,x=0,A=0,D=0,I,C,T,B,S,z=null,E;const N=new Uint16Array(Ka+1),F=new Uint16Array(Ka+1);let Z=null,W,Y,be;for(u=0;u<=Ka;u++)N[u]=0;for(c=0;c<r;c++)N[t[n+c]]++;for(d=f,h=Ka;h>=1&&N[h]===0;h--);if(d>h&&(d=h),h===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,s.bits=1,0;for(l=1;l<h&&N[l]===0;l++);for(d<l&&(d=l),x=1,u=1;u<=Ka;u++)if(x<<=1,x-=N[u],x<0)return-1;if(x>0&&(e===g2||h!==1))return-1;for(F[1]=0,u=1;u<Ka;u++)F[u+1]=F[u]+N[u];for(c=0;c<r;c++)t[n+c]!==0&&(o[F[t[n+c]]++]=c);if(e===g2?(z=Z=o,E=20):e===Dd?(z=a5,Z=o5,E=257):(z=s5,Z=u5,E=0),D=0,c=0,u=l,S=a,p=d,b=0,T=-1,A=1<<d,B=A-1,e===Dd&&A>h2||e===p2&&A>d2)return 1;for(;;){W=u-b,o[c]+1<E?(Y=0,be=o[c]):o[c]>=E?(Y=Z[o[c]-E],be=z[o[c]-E]):(Y=32+64,be=0),I=1<<u-b,C=1<<p,l=C;do C-=I,i[S+(D>>b)+C]=W<<24|Y<<16|be|0;while(C!==0);for(I=1<<u-1;D&I;)I>>=1;if(I!==0?(D&=I-1,D+=I):D=0,c++,--N[u]===0){if(u===h)break;u=t[n+o[c]]}if(u>d&&(D&B)!==T){for(b===0&&(b=d),S+=l,p=u-b,x=1<<p;p+b<h&&(x-=N[p+b],!(x<=0));)p++,x<<=1;if(A+=1<<p,e===Dd&&A>h2||e===p2&&A>d2)return 1;T=D&B,i[T]=d<<24|p<<16|S-a|0}}return D!==0&&(i[S+D]=u-b<<24|64<<16|0),s.bits=d,0};const f5=0,m2=1,b2=2,{Z_FINISH:y2,Z_BLOCK:c5,Z_TREES:yc,Z_OK:Gi,Z_STREAM_END:l5,Z_NEED_DICT:h5,Z_STREAM_ERROR:Kt,Z_DATA_ERROR:w2,Z_MEM_ERROR:x2,Z_BUF_ERROR:d5,Z_DEFLATED:A2}=Qs,wc=16180,v2=16181,E2=16182,C2=16183,S2=16184,D2=16185,_2=16186,I2=16187,M2=16188,T2=16189,xc=16190,sr=16191,_d=16192,N2=16193,Id=16194,B2=16195,F2=16196,k2=16197,L2=16198,Ac=16199,vc=16200,z2=16201,R2=16202,O2=16203,P2=16204,U2=16205,Md=16206,j2=16207,G2=16208,Be=16209,H2=16210,Q2=16211,g5=852,p5=592,m5=15,V2=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function b5(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Hi=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<wc||t.mode>Q2?1:0},Z2=e=>{if(Hi(e))return Kt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=wc,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(g5),t.distcode=t.distdyn=new Int32Array(p5),t.sane=1,t.back=-1,Gi},Y2=e=>{if(Hi(e))return Kt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Z2(e)},q2=(e,t)=>{let n;if(Hi(e))return Kt;const r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Kt:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,Y2(e))},W2=(e,t)=>{if(!e)return Kt;const n=new b5;e.state=n,n.strm=e,n.window=null,n.mode=wc;const r=q2(e,t);return r!==Gi&&(e.state=null),r},y5=e=>W2(e,m5);let X2=!0,Td,Nd;const w5=e=>{if(X2){Td=new Int32Array(512),Nd=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Js(m2,e.lens,0,288,Td,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Js(b2,e.lens,0,32,Nd,0,e.work,{bits:5}),X2=!1}e.lencode=Td,e.lenbits=9,e.distcode=Nd,e.distbits=5},K2=(e,t,n,r)=>{let i;const a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),r>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),a.window.set(t.subarray(n-r,n-r+i),a.wnext),r-=i,r?(a.window.set(t.subarray(n-r,n),0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0},x5=(e,t)=>{let n,r,i,a,o,s,f,u,c,l,h,d,p,b,x=0,A,D,I,C,T,B,S,z;const E=new Uint8Array(4);let N,F;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Hi(e)||!e.output||!e.input&&e.avail_in!==0)return Kt;n=e.state,n.mode===sr&&(n.mode=_d),o=e.next_out,i=e.output,f=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,u=n.hold,c=n.bits,l=s,h=f,z=Gi;e:for(;;)switch(n.mode){case wc:if(n.wrap===0){n.mode=_d;break}for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(n.wrap&2&&u===35615){n.wbits===0&&(n.wbits=15),n.check=0,E[0]=u&255,E[1]=u>>>8&255,n.check=et(n.check,E,2,0),u=0,c=0,n.mode=v2;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((u&255)<<8)+(u>>8))%31){e.msg="incorrect header check",n.mode=Be;break}if((u&15)!==A2){e.msg="unknown compression method",n.mode=Be;break}if(u>>>=4,c-=4,S=(u&15)+8,n.wbits===0&&(n.wbits=S),S>15||S>n.wbits){e.msg="invalid window size",n.mode=Be;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=u&512?T2:sr,u=0,c=0;break;case v2:for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(n.flags=u,(n.flags&255)!==A2){e.msg="unknown compression method",n.mode=Be;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=Be;break}n.head&&(n.head.text=u>>8&1),n.flags&512&&n.wrap&4&&(E[0]=u&255,E[1]=u>>>8&255,n.check=et(n.check,E,2,0)),u=0,c=0,n.mode=E2;case E2:for(;c<32;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.head&&(n.head.time=u),n.flags&512&&n.wrap&4&&(E[0]=u&255,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,n.check=et(n.check,E,4,0)),u=0,c=0,n.mode=C2;case C2:for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.head&&(n.head.xflags=u&255,n.head.os=u>>8),n.flags&512&&n.wrap&4&&(E[0]=u&255,E[1]=u>>>8&255,n.check=et(n.check,E,2,0)),u=0,c=0,n.mode=S2;case S2:if(n.flags&1024){for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.length=u,n.head&&(n.head.extra_len=u),n.flags&512&&n.wrap&4&&(E[0]=u&255,E[1]=u>>>8&255,n.check=et(n.check,E,2,0)),u=0,c=0}else n.head&&(n.head.extra=null);n.mode=D2;case D2:if(n.flags&1024&&(d=n.length,d>s&&(d=s),d&&(n.head&&(S=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(a,a+d),S)),n.flags&512&&n.wrap&4&&(n.check=et(n.check,r,d,a)),s-=d,a+=d,n.length-=d),n.length))break e;n.length=0,n.mode=_2;case _2:if(n.flags&2048){if(s===0)break e;d=0;do S=r[a+d++],n.head&&S&&n.length<65536&&(n.head.name+=String.fromCharCode(S));while(S&&d<s);if(n.flags&512&&n.wrap&4&&(n.check=et(n.check,r,d,a)),s-=d,a+=d,S)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=I2;case I2:if(n.flags&4096){if(s===0)break e;d=0;do S=r[a+d++],n.head&&S&&n.length<65536&&(n.head.comment+=String.fromCharCode(S));while(S&&d<s);if(n.flags&512&&n.wrap&4&&(n.check=et(n.check,r,d,a)),s-=d,a+=d,S)break e}else n.head&&(n.head.comment=null);n.mode=M2;case M2:if(n.flags&512){for(;c<16;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(n.wrap&4&&u!==(n.check&65535)){e.msg="header crc mismatch",n.mode=Be;break}u=0,c=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=sr;break;case T2:for(;c<32;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}e.adler=n.check=V2(u),u=0,c=0,n.mode=xc;case xc:if(n.havedict===0)return e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,n.hold=u,n.bits=c,h5;e.adler=n.check=1,n.mode=sr;case sr:if(t===c5||t===yc)break e;case _d:if(n.last){u>>>=c&7,c-=c&7,n.mode=Md;break}for(;c<3;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}switch(n.last=u&1,u>>>=1,c-=1,u&3){case 0:n.mode=N2;break;case 1:if(w5(n),n.mode=Ac,t===yc){u>>>=2,c-=2;break e}break;case 2:n.mode=F2;break;case 3:e.msg="invalid block type",n.mode=Be}u>>>=2,c-=2;break;case N2:for(u>>>=c&7,c-=c&7;c<32;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if((u&65535)!==(u>>>16^65535)){e.msg="invalid stored block lengths",n.mode=Be;break}if(n.length=u&65535,u=0,c=0,n.mode=Id,t===yc)break e;case Id:n.mode=B2;case B2:if(d=n.length,d){if(d>s&&(d=s),d>f&&(d=f),d===0)break e;i.set(r.subarray(a,a+d),o),s-=d,a+=d,f-=d,o+=d,n.length-=d;break}n.mode=sr;break;case F2:for(;c<14;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(n.nlen=(u&31)+257,u>>>=5,c-=5,n.ndist=(u&31)+1,u>>>=5,c-=5,n.ncode=(u&15)+4,u>>>=4,c-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Be;break}n.have=0,n.mode=k2;case k2:for(;n.have<n.ncode;){for(;c<3;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.lens[Z[n.have++]]=u&7,u>>>=3,c-=3}for(;n.have<19;)n.lens[Z[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,N={bits:n.lenbits},z=Js(f5,n.lens,0,19,n.lencode,0,n.work,N),n.lenbits=N.bits,z){e.msg="invalid code lengths set",n.mode=Be;break}n.have=0,n.mode=L2;case L2:for(;n.have<n.nlen+n.ndist;){for(;x=n.lencode[u&(1<<n.lenbits)-1],A=x>>>24,D=x>>>16&255,I=x&65535,!(A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(I<16)u>>>=A,c-=A,n.lens[n.have++]=I;else{if(I===16){for(F=A+2;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(u>>>=A,c-=A,n.have===0){e.msg="invalid bit length repeat",n.mode=Be;break}S=n.lens[n.have-1],d=3+(u&3),u>>>=2,c-=2}else if(I===17){for(F=A+3;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}u>>>=A,c-=A,S=0,d=3+(u&7),u>>>=3,c-=3}else{for(F=A+7;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}u>>>=A,c-=A,S=0,d=11+(u&127),u>>>=7,c-=7}if(n.have+d>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Be;break}for(;d--;)n.lens[n.have++]=S}}if(n.mode===Be)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=Be;break}if(n.lenbits=9,N={bits:n.lenbits},z=Js(m2,n.lens,0,n.nlen,n.lencode,0,n.work,N),n.lenbits=N.bits,z){e.msg="invalid literal/lengths set",n.mode=Be;break}if(n.distbits=6,n.distcode=n.distdyn,N={bits:n.distbits},z=Js(b2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,N),n.distbits=N.bits,z){e.msg="invalid distances set",n.mode=Be;break}if(n.mode=Ac,t===yc)break e;case Ac:n.mode=vc;case vc:if(s>=6&&f>=258){e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,n.hold=u,n.bits=c,i5(e,h),o=e.next_out,i=e.output,f=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,u=n.hold,c=n.bits,n.mode===sr&&(n.back=-1);break}for(n.back=0;x=n.lencode[u&(1<<n.lenbits)-1],A=x>>>24,D=x>>>16&255,I=x&65535,!(A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(D&&!(D&240)){for(C=A,T=D,B=I;x=n.lencode[B+((u&(1<<C+T)-1)>>C)],A=x>>>24,D=x>>>16&255,I=x&65535,!(C+A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}u>>>=C,c-=C,n.back+=C}if(u>>>=A,c-=A,n.back+=A,n.length=I,D===0){n.mode=U2;break}if(D&32){n.back=-1,n.mode=sr;break}if(D&64){e.msg="invalid literal/length code",n.mode=Be;break}n.extra=D&15,n.mode=z2;case z2:if(n.extra){for(F=n.extra;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.length+=u&(1<<n.extra)-1,u>>>=n.extra,c-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=R2;case R2:for(;x=n.distcode[u&(1<<n.distbits)-1],A=x>>>24,D=x>>>16&255,I=x&65535,!(A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(!(D&240)){for(C=A,T=D,B=I;x=n.distcode[B+((u&(1<<C+T)-1)>>C)],A=x>>>24,D=x>>>16&255,I=x&65535,!(C+A<=c);){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}u>>>=C,c-=C,n.back+=C}if(u>>>=A,c-=A,n.back+=A,D&64){e.msg="invalid distance code",n.mode=Be;break}n.offset=I,n.extra=D&15,n.mode=O2;case O2:if(n.extra){for(F=n.extra;c<F;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}n.offset+=u&(1<<n.extra)-1,u>>>=n.extra,c-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Be;break}n.mode=P2;case P2:if(f===0)break e;if(d=h-f,n.offset>d){if(d=n.offset-d,d>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Be;break}d>n.wnext?(d-=n.wnext,p=n.wsize-d):p=n.wnext-d,d>n.length&&(d=n.length),b=n.window}else b=i,p=o-n.offset,d=n.length;d>f&&(d=f),f-=d,n.length-=d;do i[o++]=b[p++];while(--d);n.length===0&&(n.mode=vc);break;case U2:if(f===0)break e;i[o++]=n.length,f--,n.mode=vc;break;case Md:if(n.wrap){for(;c<32;){if(s===0)break e;s--,u|=r[a++]<<c,c+=8}if(h-=f,e.total_out+=h,n.total+=h,n.wrap&4&&h&&(e.adler=n.check=n.flags?et(n.check,i,h,o-h):Hs(n.check,i,h,o-h)),h=f,n.wrap&4&&(n.flags?u:V2(u))!==n.check){e.msg="incorrect data check",n.mode=Be;break}u=0,c=0}n.mode=j2;case j2:if(n.wrap&&n.flags){for(;c<32;){if(s===0)break e;s--,u+=r[a++]<<c,c+=8}if(n.wrap&4&&u!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=Be;break}u=0,c=0}n.mode=G2;case G2:z=l5;break e;case Be:z=w2;break e;case H2:return x2;case Q2:default:return Kt}return e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,n.hold=u,n.bits=c,(n.wsize||h!==e.avail_out&&n.mode<Be&&(n.mode<Md||t!==y2))&&K2(e,e.output,e.next_out,h-e.avail_out),l-=e.avail_in,h-=e.avail_out,e.total_in+=l,e.total_out+=h,n.total+=h,n.wrap&4&&h&&(e.adler=n.check=n.flags?et(n.check,i,h,e.next_out-h):Hs(n.check,i,h,e.next_out-h)),e.data_type=n.bits+(n.last?64:0)+(n.mode===sr?128:0)+(n.mode===Ac||n.mode===Id?256:0),(l===0&&h===0||t===y2)&&z===Gi&&(z=d5),z},A5=e=>{if(Hi(e))return Kt;let t=e.state;return t.window&&(t.window=null),e.state=null,Gi},v5=(e,t)=>{if(Hi(e))return Kt;const n=e.state;return n.wrap&2?(n.head=t,t.done=!1,Gi):Kt},E5=(e,t)=>{const n=t.length;let r,i,a;return Hi(e)||(r=e.state,r.wrap!==0&&r.mode!==xc)?Kt:r.mode===xc&&(i=1,i=Hs(i,t,n,0),i!==r.check)?w2:(a=K2(e,t,n,n),a?(r.mode=H2,x2):(r.havedict=1,Gi))};var C5=Y2,S5=q2,D5=Z2,_5=y5,I5=W2,M5=x5,T5=A5,N5=v5,B5=E5,F5="pako inflate (from Nodeca project)",ur={inflateReset:C5,inflateReset2:S5,inflateResetKeep:D5,inflateInit:_5,inflateInit2:I5,inflate:M5,inflateEnd:T5,inflateGetHeader:N5,inflateSetDictionary:B5,inflateInfo:F5};function k5(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var L5=k5;const J2=Object.prototype.toString,{Z_NO_FLUSH:z5,Z_FINISH:R5,Z_OK:$s,Z_STREAM_END:Bd,Z_NEED_DICT:Fd,Z_STREAM_ERROR:O5,Z_DATA_ERROR:$2,Z_MEM_ERROR:P5}=Qs;function eu(e){this.options=pc.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new c2,this.strm.avail_out=0;let n=ur.inflateInit2(this.strm,t.windowBits);if(n!==$s)throw new Error(Va[n]);if(this.header=new L5,ur.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Ks.string2buf(t.dictionary):J2.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=ur.inflateSetDictionary(this.strm,t.dictionary),n!==$s)))throw new Error(Va[n])}eu.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let a,o,s;if(this.ended)return!1;for(t===~~t?o=t:o=t===!0?R5:z5,J2.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),a=ur.inflate(n,o),a===Fd&&i&&(a=ur.inflateSetDictionary(n,i),a===$s?a=ur.inflate(n,o):a===$2&&(a=Fd));n.avail_in>0&&a===Bd&&n.state.wrap>0&&e[n.next_in]!==0;)ur.inflateReset(n),a=ur.inflate(n,o);switch(a){case O5:case $2:case Fd:case P5:return this.onEnd(a),this.ended=!0,!1}if(s=n.avail_out,n.next_out&&(n.avail_out===0||a===Bd))if(this.options.to==="string"){let f=Ks.utf8border(n.output,n.next_out),u=n.next_out-f,c=Ks.buf2string(n.output,f);n.next_out=u,n.avail_out=r-u,u&&n.output.set(n.output.subarray(f,f+u),0),this.onData(c)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===$s&&s===0)){if(a===Bd)return a=ur.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0},eu.prototype.onData=function(e){this.chunks.push(e)},eu.prototype.onEnd=function(e){e===$s&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=pc.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function kd(e,t){const n=new eu(t);if(n.push(e),n.err)throw n.msg||Va[n.err];return n.result}function U5(e,t){return t=t||{},t.raw=!0,kd(e,t)}var j5=eu,G5=kd,H5=U5,Q5=kd,V5=Qs,Z5={Inflate:j5,inflate:G5,inflateRaw:H5,ungzip:Q5,constants:V5};const{Inflate:q9,inflate:W9,inflateRaw:Y5,ungzip:X9}=Z5;var q5=Y5;function W5(e){return q5(e.subarray(2))}class X5 extends Error{constructor(t){super(t),this.code="ERR_ABORTED"}}function K5(e){e.sort((i,a)=>Number(i.offset)-Number(a.offset));const t=[];let n,r;for(const i of e)n&&r&&Number(i.offset)-r<=2e3?(n.length=BigInt(Number(n.length)+Number(i.length)-r+Number(i.offset)),n.blocks.push(i)):t.push(n={blocks:[i],length:i.length,offset:i.offset}),r=Number(n.offset)+Number(n.length);return t}function Ec(e){if(e&&e.aborted)if(typeof DOMException>"u"){const t=new X5("aborted");throw t.code="ERR_ABORTED",t}else throw new DOMException("aborted","AbortError")}const J5=1,$5=2,eL=3;function Ld(e,t,n,r){return e<r&&t>=n}function tL(e){const t=e?"big":"little",n=new ee().endianess(t).uint32("chromId").uint32("start").uint32("end").uint32("validCnt").floatle("minScore").floatle("maxScore").floatle("sumData").floatle("sumSqData").saveOffset("offset"),r=new ee().endianess(t).uint8("isLeaf").skip(1).uint16("cnt").choice({tag:"isLeaf",choices:{1:new ee().endianess(t).array("blocksToFetch",{length:"cnt",type:new ee().endianess(t).uint32("startChrom").uint32("startBase").uint32("endChrom").uint32("endBase").uint64("blockOffset").uint64("blockSize").saveOffset("offset")}),0:new ee().array("recurOffsets",{length:"cnt",type:new ee().endianess(t).uint32("startChrom").uint32("startBase").uint32("endChrom").uint32("endBase").uint64("blockOffset").saveOffset("offset")})}}),i=new ee().endianess(t).uint32("chromId").int32("start").int32("end").string("rest",{zeroTerminated:!0}).saveOffset("offset");return{bigWigParser:new ee().endianess(t).skip(4).int32("blockStart").skip(4).uint32("itemStep").uint32("itemSpan").uint8("blockType").skip(1).uint16("itemCount").choice({tag:"blockType",choices:{[eL]:new ee().array("items",{length:"itemCount",type:new ee().floatle("score")}),[$5]:new ee().array("items",{length:"itemCount",type:new ee().endianess(t).int32("start").floatle("score")}),[J5]:new ee().array("items",{length:"itemCount",type:new ee().endianess(t).int32("start").int32("end").floatle("score")})}}),bigBedParser:i,summaryParser:n,leafParser:r}}class eA{constructor(t,n,r,i,a,o){if(this.bbi=t,this.refsByName=n,this.cirTreeOffset=r,this.isBigEndian=i,this.isCompressed=a,this.blockType=o,this.featureCache=new id({cache:new Bx({maxSize:1e3}),fill:async(f,u)=>{const c=Number(f.length),l=Number(f.offset),{buffer:h}=await this.bbi.read(kt.Buffer.alloc(c),0,c,l,{signal:u});return h}}),!(r>=0))throw new Error("invalid cirTreeOffset!");const s=tL(i);this.leafParser=s.leafParser,this.bigBedParser=s.bigBedParser}async readWigData(t,n,r,i,a){try{const{refsByName:o,bbi:s,cirTreeOffset:f,isBigEndian:u}=this,c=o[t];c===void 0&&i.complete();const l={chrId:c,start:n,end:r};this.cirTreePromise||(this.cirTreePromise=s.read(kt.Buffer.alloc(48),0,48,Number(f),a));const{buffer:h}=await this.cirTreePromise,d=u?h.readUInt32BE(4):h.readUInt32LE(4);let p=[],b=0;const x=(C,T,B)=>{try{const S=C.subarray(T),z=this.leafParser.parse(S);if(z.blocksToFetch&&(p=p.concat(z.blocksToFetch.filter(E=>A(E)).map(E=>({offset:E.blockOffset,length:E.blockSize})))),z.recurOffsets){const E=z.recurOffsets.filter(N=>A(N)).map(N=>Number(N.blockOffset));E.length>0&&I(E,B+1)}}catch(S){i.error(S)}},A=C=>{const{startChrom:T,startBase:B,endChrom:S,endBase:z}=C;return(T<c||T===c&&B<=r)&&(S>c||S===c&&z>=n)},D=async(C,T,B)=>{try{const S=T.max()-T.min(),z=T.min(),E=await this.featureCache.get(`${S}_${z}`,{length:S,offset:z},a==null?void 0:a.signal);for(const N of C)T.contains(N)&&(x(E,N-z,B),b-=1,b===0&&this.readFeatures(i,p,{...a,request:l}))}catch(S){i.error(S)}},I=(C,T)=>{try{b+=C.length;const B=4+Number(d)*32;let S=new Ur(C[0],C[0]+B);for(let z=1;z<C.length;z+=1){const E=new Ur(C[z],C[z]+B);S=S.union(E)}S.getRanges().map(z=>D(C,z,T))}catch(B){i.error(B)}};return I([Number(f)+48],1)}catch(o){i.error(o)}}parseSummaryBlock(t,n,r){const i=[];let a=n;const o=new DataView(t.buffer,t.byteOffset,t.length);for(;a<t.byteLength;){const s=o.getUint32(a,!0);a+=4;const f=o.getUint32(a,!0);a+=4;const u=o.getUint32(a,!0);a+=4;const c=o.getUint32(a,!0);a+=4;const l=o.getFloat32(a,!0);a+=4;const h=o.getFloat32(a,!0);a+=4;const d=o.getFloat32(a,!0);a+=4,a+=4,(!r||s===r.chrId&&Ld(f,u,r.start,r.end))&&i.push({start:f,end:u,maxScore:h,minScore:l,summary:!0,score:d/(c||1)})}return i}parseBigBedBlock(t,n,r,i){const a=[];let o=n;for(;o<t.byteLength;){const s=this.bigBedParser.parse(t.subarray(o));a.push({...s,uniqueId:`bb-${r+o}`}),o+=s.offset}return i?a.filter(s=>Ld(s.start,s.end,i.start,i.end)):a}parseBigWigBlock(t,n,r){const i=t.subarray(n),a=new DataView(i.buffer,i.byteOffset,i.length);let o=0;o+=4;const s=a.getInt32(o,!0);o+=8;const f=a.getUint32(o,!0);o+=4;const u=a.getUint32(o,!0);o+=4;const c=a.getUint8(o);o+=2;const l=a.getUint16(o,!0);o+=2;const h=new Array(l);switch(c){case 1:{for(let d=0;d<l;d++){const p=a.getInt32(o,!0);o+=4;const b=a.getInt32(o,!0);o+=4;const x=a.getFloat32(o,!0);o+=4,h[d]={start:p,end:b,score:x}}break}case 2:{for(let d=0;d<l;d++){const p=a.getInt32(o,!0);o+=4;const b=a.getFloat32(o,!0);o+=4,h[d]={score:b,start:p,end:p+u}}break}case 3:{for(let d=0;d<l;d++){const p=a.getFloat32(o,!0);o+=4;const b=s+d*f;h[d]={score:p,start:b,end:b+u}}break}}return r?h.filter(d=>Ld(d.start,d.end,r.start,r.end)):h}async readFeatures(t,n,r={}){try{const{blockType:i,isCompressed:a}=this,{signal:o,request:s}=r,f=K5(n);Ec(o),await Promise.all(f.map(async u=>{Ec(o);const{length:c,offset:l}=u,h=await this.featureCache.get(`${c}_${l}`,u,o);for(const d of u.blocks){Ec(o);let p=Number(d.offset)-Number(u.offset),b=h;switch(a&&(b=W5(h.subarray(p)),p=0),Ec(o),i){case"summary":{t.next(this.parseSummaryBlock(b,p,s));break}case"bigwig":{t.next(this.parseBigWigBlock(b,p,s));break}case"bigbed":{t.next(this.parseBigBedBlock(b,p,Number(d.offset)*(1<<8),s));break}default:console.warn(`Don't know what to do with ${i}`)}}})),t.complete()}catch(i){t.error(i)}}}var zd=function(e,t){return zd=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},zd(e,t)};function Rd(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");zd(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function nL(e,t,n,r){function i(a){return a instanceof n?a:new n(function(o){o(a)})}return new(n||(n=Promise))(function(a,o){function s(c){try{u(r.next(c))}catch(l){o(l)}}function f(c){try{u(r.throw(c))}catch(l){o(l)}}function u(c){c.done?a(c.value):i(c.value).then(s,f)}u((r=r.apply(e,t||[])).next())})}function tA(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o;return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function s(u){return function(c){return f([u,c])}}function f(u){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(a=u[0]&2?i.return:u[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,u[1])).done)return a;switch(i=0,a&&(u=[u[0]&2,a.value]),u[0]){case 0:case 1:a=u;break;case 4:return n.label++,{value:u[1],done:!1};case 5:n.label++,i=u[1],u=[0];continue;case 7:u=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]<a[3])){n.label=u[1];break}if(u[0]===6&&n.label<a[1]){n.label=a[1],a=u;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(u);break}a[2]&&n.ops.pop(),n.trys.pop();continue}u=t.call(e,n)}catch(c){u=[6,c],i=0}finally{r=a=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}function tu(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Cc(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(s){o={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function Sc(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||(a=Array.prototype.slice.call(t,0,r)),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))}function Ja(e){return this instanceof Ja?(this.v=e,this):new Ja(e)}function rL(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),i,a=[];return i={},o("next"),o("throw"),o("return"),i[Symbol.asyncIterator]=function(){return this},i;function o(h){r[h]&&(i[h]=function(d){return new Promise(function(p,b){a.push([h,d,p,b])>1||s(h,d)})})}function s(h,d){try{f(r[h](d))}catch(p){l(a[0][3],p)}}function f(h){h.value instanceof Ja?Promise.resolve(h.value.v).then(u,c):l(a[0][2],h)}function u(h){s("next",h)}function c(h){s("throw",h)}function l(h,d){h(d),a.shift(),a.length&&s(a[0][0],a[0][1])}}function iL(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof tu=="function"?tu(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(a){n[a]=e[a]&&function(o){return new Promise(function(s,f){o=e[a](o),i(s,f,o.done,o.value)})}}function i(a,o,s,f){Promise.resolve(f).then(function(u){a({value:u,done:s})},o)}}function Ve(e){return typeof e=="function"}function nA(e){var t=function(r){Error.call(r),r.stack=new Error().stack},n=e(t);return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var Od=nA(function(e){return function(n){e(this),this.message=n?n.length+` errors occurred during unsubscription:
|
|
176
|
+
`+n.map(function(r,i){return i+1+") "+r.toString()}).join(`
|
|
177
|
+
`):"",this.name="UnsubscriptionError",this.errors=n}});function rA(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var Pd=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,n,r,i,a;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var s=tu(o),f=s.next();!f.done;f=s.next()){var u=f.value;u.remove(this)}}catch(b){t={error:b}}finally{try{f&&!f.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}else o.remove(this);var c=this.initialTeardown;if(Ve(c))try{c()}catch(b){a=b instanceof Od?b.errors:[b]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var h=tu(l),d=h.next();!d.done;d=h.next()){var p=d.value;try{aA(p)}catch(b){a=a??[],b instanceof Od?a=Sc(Sc([],Cc(a)),Cc(b.errors)):a.push(b)}}}catch(b){r={error:b}}finally{try{d&&!d.done&&(i=h.return)&&i.call(h)}finally{if(r)throw r.error}}}if(a)throw new Od(a)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)aA(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}},e.prototype._hasParent=function(t){var n=this._parentage;return n===t||Array.isArray(n)&&n.includes(t)},e.prototype._addParent=function(t){var n=this._parentage;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t},e.prototype._removeParent=function(t){var n=this._parentage;n===t?this._parentage=null:Array.isArray(n)&&rA(n,t)},e.prototype.remove=function(t){var n=this._finalizers;n&&rA(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();Pd.EMPTY;function iA(e){return e instanceof Pd||e&&"closed"in e&&Ve(e.remove)&&Ve(e.add)&&Ve(e.unsubscribe)}function aA(e){Ve(e)?e():e.unsubscribe()}var oA={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Ud={setTimeout:function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i=Ud.delegate;return i!=null&&i.setTimeout?i.setTimeout.apply(i,Sc([e,t],Cc(n))):setTimeout.apply(void 0,Sc([e,t],Cc(n)))},clearTimeout:function(e){var t=Ud.delegate;return((t==null?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function sA(e){Ud.setTimeout(function(){throw e})}function uA(){}function aL(e){e()}var jd=function(e){Rd(t,e);function t(n){var r=e.call(this)||this;return r.isStopped=!1,n?(r.destination=n,iA(n)&&n.add(r)):r.destination=fL,r}return t.create=function(n,r,i){return new Dc(n,r,i)},t.prototype.next=function(n){this.isStopped||this._next(n)},t.prototype.error=function(n){this.isStopped||(this.isStopped=!0,this._error(n))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(n){this.destination.next(n)},t.prototype._error=function(n){try{this.destination.error(n)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Pd),oL=Function.prototype.bind;function Gd(e,t){return oL.call(e,t)}var sL=function(){function e(t){this.partialObserver=t}return e.prototype.next=function(t){var n=this.partialObserver;if(n.next)try{n.next(t)}catch(r){_c(r)}},e.prototype.error=function(t){var n=this.partialObserver;if(n.error)try{n.error(t)}catch(r){_c(r)}else _c(t)},e.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(n){_c(n)}},e}(),Dc=function(e){Rd(t,e);function t(n,r,i){var a=e.call(this)||this,o;if(Ve(n)||!n)o={next:n??void 0,error:r??void 0,complete:i??void 0};else{var s;a&&oA.useDeprecatedNextContext?(s=Object.create(n),s.unsubscribe=function(){return a.unsubscribe()},o={next:n.next&&Gd(n.next,s),error:n.error&&Gd(n.error,s),complete:n.complete&&Gd(n.complete,s)}):o=n}return a.destination=new sL(o),a}return t}(jd);function _c(e){sA(e)}function uL(e){throw e}var fL={closed:!0,next:uA,error:uL,complete:uA},Hd=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function fA(e){return e}function cL(e){return e.length===0?fA:e.length===1?e[0]:function(n){return e.reduce(function(r,i){return i(r)},n)}}var Jt=function(){function e(t){t&&(this._subscribe=t)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(t,n,r){var i=this,a=hL(t)?t:new Dc(t,n,r);return aL(function(){var o=i,s=o.operator,f=o.source;a.add(s?s.call(a,f):f?i._subscribe(a):i._trySubscribe(a))}),a},e.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(n){t.error(n)}},e.prototype.forEach=function(t,n){var r=this;return n=cA(n),new n(function(i,a){var o=new Dc({next:function(s){try{t(s)}catch(f){a(f),o.unsubscribe()}},error:a,complete:i});r.subscribe(o)})},e.prototype._subscribe=function(t){var n;return(n=this.source)===null||n===void 0?void 0:n.subscribe(t)},e.prototype[Hd]=function(){return this},e.prototype.pipe=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return cL(t)(this)},e.prototype.toPromise=function(t){var n=this;return t=cA(t),new t(function(r,i){var a;n.subscribe(function(o){return a=o},function(o){return i(o)},function(){return r(a)})})},e.create=function(t){return new e(t)},e}();function cA(e){var t;return(t=e??oA.Promise)!==null&&t!==void 0?t:Promise}function lL(e){return e&&Ve(e.next)&&Ve(e.error)&&Ve(e.complete)}function hL(e){return e&&e instanceof jd||lL(e)&&iA(e)}function dL(e){return Ve(e==null?void 0:e.lift)}function $a(e){return function(t){if(dL(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function nu(e,t,n,r,i){return new gL(e,t,n,r,i)}var gL=function(e){Rd(t,e);function t(n,r,i,a,o,s){var f=e.call(this,n)||this;return f.onFinalize=o,f.shouldUnsubscribe=s,f._next=r?function(u){try{r(u)}catch(c){n.error(c)}}:e.prototype._next,f._error=a?function(u){try{a(u)}catch(c){n.error(c)}finally{this.unsubscribe()}}:e.prototype._error,f._complete=i?function(){try{i()}catch(u){n.error(u)}finally{this.unsubscribe()}}:e.prototype._complete,f}return t.prototype.unsubscribe=function(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;e.prototype.unsubscribe.call(this),!r&&((n=this.onFinalize)===null||n===void 0||n.call(this))}},t}(jd),pL=new Jt(function(e){return e.complete()});function mL(e){return e&&Ve(e.schedule)}function lA(e){return e[e.length-1]}function bL(e){return mL(lA(e))?e.pop():void 0}function yL(e,t){return typeof lA(e)=="number"?e.pop():t}var hA=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function dA(e){return Ve(e==null?void 0:e.then)}function gA(e){return Ve(e[Hd])}function pA(e){return Symbol.asyncIterator&&Ve(e==null?void 0:e[Symbol.asyncIterator])}function mA(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function wL(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var bA=wL();function yA(e){return Ve(e==null?void 0:e[bA])}function wA(e){return rL(this,arguments,function(){var n,r,i,a;return tA(this,function(o){switch(o.label){case 0:n=e.getReader(),o.label=1;case 1:o.trys.push([1,,9,10]),o.label=2;case 2:return[4,Ja(n.read())];case 3:return r=o.sent(),i=r.value,a=r.done,a?[4,Ja(void 0)]:[3,5];case 4:return[2,o.sent()];case 5:return[4,Ja(i)];case 6:return[4,o.sent()];case 7:return o.sent(),[3,2];case 8:return[3,10];case 9:return n.releaseLock(),[7];case 10:return[2]}})})}function xA(e){return Ve(e==null?void 0:e.getReader)}function eo(e){if(e instanceof Jt)return e;if(e!=null){if(gA(e))return xL(e);if(hA(e))return AL(e);if(dA(e))return vL(e);if(pA(e))return AA(e);if(yA(e))return EL(e);if(xA(e))return CL(e)}throw mA(e)}function xL(e){return new Jt(function(t){var n=e[Hd]();if(Ve(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function AL(e){return new Jt(function(t){for(var n=0;n<e.length&&!t.closed;n++)t.next(e[n]);t.complete()})}function vL(e){return new Jt(function(t){e.then(function(n){t.closed||(t.next(n),t.complete())},function(n){return t.error(n)}).then(null,sA)})}function EL(e){return new Jt(function(t){var n,r;try{for(var i=tu(e),a=i.next();!a.done;a=i.next()){var o=a.value;if(t.next(o),t.closed)return}}catch(s){n={error:s}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}t.complete()})}function AA(e){return new Jt(function(t){SL(e,t).catch(function(n){return t.error(n)})})}function CL(e){return AA(wA(e))}function SL(e,t){var n,r,i,a;return nL(this,void 0,void 0,function(){var o,s;return tA(this,function(f){switch(f.label){case 0:f.trys.push([0,5,6,11]),n=iL(e),f.label=1;case 1:return[4,n.next()];case 2:if(r=f.sent(),!!r.done)return[3,4];if(o=r.value,t.next(o),t.closed)return[2];f.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return s=f.sent(),i={error:s},[3,11];case 6:return f.trys.push([6,,9,10]),r&&!r.done&&(a=n.return)?[4,a.call(n)]:[3,8];case 7:f.sent(),f.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function Zr(e,t,n,r,i){r===void 0&&(r=0),i===void 0&&(i=!1);var a=t.schedule(function(){n(),i?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(a),!i)return a}function vA(e,t){return t===void 0&&(t=0),$a(function(n,r){n.subscribe(nu(r,function(i){return Zr(r,e,function(){return r.next(i)},t)},function(){return Zr(r,e,function(){return r.complete()},t)},function(i){return Zr(r,e,function(){return r.error(i)},t)}))})}function EA(e,t){return t===void 0&&(t=0),$a(function(n,r){r.add(e.schedule(function(){return n.subscribe(r)},t))})}function DL(e,t){return eo(e).pipe(EA(t),vA(t))}function _L(e,t){return eo(e).pipe(EA(t),vA(t))}function IL(e,t){return new Jt(function(n){var r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}function ML(e,t){return new Jt(function(n){var r;return Zr(n,t,function(){r=e[bA](),Zr(n,t,function(){var i,a,o;try{i=r.next(),a=i.value,o=i.done}catch(s){n.error(s);return}o?n.complete():n.next(a)},0,!0)}),function(){return Ve(r==null?void 0:r.return)&&r.return()}})}function CA(e,t){if(!e)throw new Error("Iterable cannot be null");return new Jt(function(n){Zr(n,t,function(){var r=e[Symbol.asyncIterator]();Zr(n,t,function(){r.next().then(function(i){i.done?n.complete():n.next(i.value)})},0,!0)})})}function TL(e,t){return CA(wA(e),t)}function NL(e,t){if(e!=null){if(gA(e))return DL(e,t);if(hA(e))return IL(e,t);if(dA(e))return _L(e,t);if(pA(e))return CA(e,t);if(yA(e))return ML(e,t);if(xA(e))return TL(e,t)}throw mA(e)}function BL(e,t){return t?NL(e,t):eo(e)}var FL=nA(function(e){return function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}});function SA(e,t){var n=typeof t=="object";return new Promise(function(r,i){var a=new Dc({next:function(o){r(o),a.unsubscribe()},error:i,complete:function(){n?r(t.defaultValue):i(new FL)}});e.subscribe(a)})}function DA(e,t){return $a(function(n,r){var i=0;n.subscribe(nu(r,function(a){r.next(e.call(t,a,i++))}))})}function kL(e,t,n,r,i,a,o,s){var f=[],u=0,c=0,l=!1,h=function(){l&&!f.length&&!u&&t.complete()},d=function(b){return u<r?p(b):f.push(b)},p=function(b){a&&t.next(b),u++;var x=!1;eo(n(b,c++)).subscribe(nu(t,function(A){i==null||i(A),a?d(A):t.next(A)},function(){x=!0},void 0,function(){if(x)try{u--;for(var A=function(){var D=f.shift();o?Zr(t,o,function(){return p(D)}):p(D)};f.length&&u<r;)A();h()}catch(D){t.error(D)}}))};return e.subscribe(nu(t,d,function(){l=!0,h()})),function(){s==null||s()}}function _A(e,t,n){return n===void 0&&(n=1/0),Ve(t)?_A(function(r,i){return DA(function(a,o){return t(r,a,i,o)})(eo(e(r,i)))},n):(typeof t=="number"&&(n=t),$a(function(r,i){return kL(r,i,e,n)}))}function LL(e){return e===void 0&&(e=1/0),_A(fA,e)}function zL(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=bL(e),r=yL(e,1/0),i=e;return i.length?i.length===1?eo(i[0]):LL(r)(BL(i,n)):pL}function RL(e,t,n,r,i){return function(a,o){var s=n,f=t,u=0;a.subscribe(nu(o,function(c){var l=u++;f=s?e(f,c,l):(s=!0,c),r&&o.next(f)},i&&function(){s&&o.next(f),o.complete()}))}}function IA(e,t){return $a(RL(e,t,arguments.length>=2,!1,!0))}var OL=function(e,t){return e.push(t),e};function PL(){return $a(function(e,t){IA(OL,[])(e).subscribe(t)})}const MA=-2003829722,Qd=-2021002517;function UL(e){return new TextDecoder().decode(e)}function TA(e){const t=e?"big":"little",n=new ee().endianess(t).int32("magic").uint16("version").uint16("numZoomLevels").uint64("chromTreeOffset").uint64("unzoomedDataOffset").uint64("unzoomedIndexOffset").uint16("fieldCount").uint16("definedFieldCount").uint64("asOffset").uint64("totalSummaryOffset").uint32("uncompressBufSize").uint64("extHeaderOffset").array("zoomLevels",{length:"numZoomLevels",type:new ee().endianess(t).uint32("reductionLevel").uint32("reserved").uint64("dataOffset").uint64("indexOffset")}),r=new ee().endianess(t).uint64("basesCovered").doublele("scoreMin").doublele("scoreMax").doublele("scoreSum").doublele("scoreSumSquares"),i=new ee().endianess(t).uint32("magic").uint32("blockSize").uint32("keySize").uint32("valSize").uint64("itemCount"),a=new ee().endianess(t).uint8("isLeafNode").skip(1).uint16("cnt").saveOffset("offset");return{chromTreeParser:i,totalSummaryParser:r,headerParser:n,isLeafNode:a}}class NA{getHeader(t){return this.headerP||(this.headerP=this._getHeader(t).catch(n=>{throw this.headerP=void 0,n})),this.headerP}constructor(t){const{filehandle:n,renameRefSeqs:r=o=>o,path:i,url:a}=t;if(this.renameRefSeqs=r,n)this.bbi=n;else if(a)this.bbi=new tr(a);else if(i)this.bbi=new Br(i);else throw new Error("no file given")}async _getHeader(t){const n=await this._getMainHeader(t),r=await this._readChromTree(n,t);return{...n,...r}}async _getMainHeader(t,n=2e3){const{buffer:r}=await this.bbi.read(kt.Buffer.alloc(n),0,n,0,t),i=this._isBigEndian(r),a=TA(i),o=a.headerParser.parse(r),{magic:s,asOffset:f,totalSummaryOffset:u}=o;if(o.fileType=s===Qd?"bigbed":"bigwig",f>n||u>n)return this._getMainHeader(t,n*2);if(f){const c=Number(o.asOffset);o.autoSql=UL(r.subarray(c,r.indexOf(0,c)))}if(o.totalSummaryOffset>n)return this._getMainHeader(t,n*2);if(o.totalSummaryOffset){const c=r.subarray(Number(o.totalSummaryOffset)),l=a.totalSummaryParser.parse(c);o.totalSummary={...l,basesCovered:Number(l.basesCovered)}}return{...o,isBigEndian:i}}_isBigEndian(t){let n=t.readInt32LE(0);if(n===MA||n===Qd)return!1;if(n=t.readInt32BE(0),n===MA||n===Qd)return!0;throw new Error("not a BigWig/BigBed file")}async _readChromTree(t,n){const r=t.isBigEndian,i=r?"big":"little",a=[],o={};let s=Number(t.unzoomedDataOffset);const f=Number(t.chromTreeOffset);for(;s%4!==0;)s+=1;const u=s-f,{buffer:c}=await this.bbi.read(kt.Buffer.alloc(u),0,u,Number(f),n),l=TA(r),{keySize:h}=l.chromTreeParser.parse(c),d=new ee().endianess(i).string("key",{stripNull:!0,length:h}).uint32("refId").uint32("refSize").saveOffset("offset"),p=new ee().endianess(i).skip(h).uint64("childOffset").saveOffset("offset"),b=32,x=async A=>{let D=A;if(D>=c.length)throw new Error("reading beyond end of buffer");const I=l.isLeafNode.parse(c.subarray(D)),{isLeafNode:C,cnt:T}=I;if(D+=I.offset,C)for(let B=0;B<T;B+=1){const S=d.parse(c.subarray(D));D+=S.offset;const{key:z,refId:E,refSize:N}=S,F={name:z,id:E,length:N};o[this.renameRefSeqs(z)]=E,a[E]=F}else{const B=[];for(let S=0;S<T;S+=1){const z=p.parse(c.subarray(D)),{childOffset:E}=z;D+=z.offset,B.push(x(Number(E)-Number(f)))}await Promise.all(B)}};return await x(b),{refsByName:o,refsByNumber:a}}async getUnzoomedView(t){const{unzoomedIndexOffset:n,refsByName:r,uncompressBufSize:i,isBigEndian:a,fileType:o}=await this.getHeader(t);return new eA(this.bbi,r,n,a,i>0,o)}async getFeatureStream(t,n,r,i){await this.getHeader(i);const a=this.renameRefSeqs(t);let o;const{basesPerSpan:s,scale:f}=i||{};return s?o=await this.getView(1/s,i):f?o=await this.getView(f,i):o=await this.getView(1,i),new Jt(u=>{o.readWigData(a,n,r,u,i)})}async getFeatures(t,n,r,i){const a=await this.getFeatureStream(t,n,r,i);return(await SA(a.pipe(PL()))).flat()}}class jL extends NA{async getView(t,n){const{zoomLevels:r,refsByName:i,fileSize:a,isBigEndian:o,uncompressBufSize:s}=await this.getHeader(n),f=1/t;let u=r.length;a||(u-=1);for(let c=u;c>=0;c-=1){const l=r[c];if(l&&l.reductionLevel<=2*f){const h=Number(l.indexOffset);return new eA(this.bbi,i,h,o,s>0,"summary")}}return this.getUnzoomedView(n)}}function GL(e){return e.filter(t=>!!t)}class HL extends NA{constructor(){super(...arguments),this.readIndicesCache=new id({cache:new Bx({maxSize:1}),fill:(t,n)=>this._readIndices({...t,signal:n})})}readIndices(t={}){const{signal:n,...r}=t;return this.readIndicesCache.get(JSON.stringify(r),t,n)}async getView(t,n){return this.getUnzoomedView(n)}async _readIndices(t){const{extHeaderOffset:n,isBigEndian:r}=await this.getHeader(t),{buffer:i}=await this.bbi.read(kt.Buffer.alloc(64),0,64,Number(n)),a=r?"big":"little",o=new ee().endianess(a).uint16("size").uint16("count").uint64("offset").parse(i),{count:s,offset:f}=o;if(s===0)return[];const u=20,c=u*s,{buffer:l}=await this.bbi.read(kt.Buffer.alloc(c),0,c,Number(f)),h=new ee().endianess(a).int16("type").int16("fieldcount").uint64("offset").skip(4).int16("field"),d=[];for(let p=0;p<s;p+=1)d.push(h.parse(l.subarray(p*u)));return d}async searchExtraIndexBlocks(t,n={}){const{isBigEndian:r}=await this.getHeader(n),i=await this.readIndices(n);if(i.length===0)return[];const a=i.map(async o=>{const{offset:s,field:f}=o,{buffer:u}=await this.bbi.read(kt.Buffer.alloc(32),0,32,Number(s),n),c=r?"big":"little",l=new ee().endianess(c).int32("magic").int32("blockSize").int32("keySize").int32("valSize").uint64("itemCount"),{blockSize:h,keySize:d,valSize:p}=l.parse(u),b=new ee().endianess(c).int8("nodeType").skip(1).int16("cnt").choice({tag:"nodeType",choices:{0:new ee().array("leafkeys",{length:"cnt",type:new ee().endianess(c).string("key",{length:d,stripNull:!0}).uint64("offset")}),1:new ee().array("keys",{length:"cnt",type:new ee().endianess(c).string("key",{length:d,stripNull:!0}).uint64("offset").uint32("length").uint32("reserved")})}}),x=async D=>{const I=Number(D),C=4+h*(d+p),{buffer:T}=await this.bbi.read(kt.Buffer.alloc(C),0,C,I,n),B=b.parse(T);if(B.leafkeys){let S;for(let z=0;z<B.leafkeys.length;z+=1){const{key:E}=B.leafkeys[z];if(t.localeCompare(E)<0&&S)return x(S);S=B.leafkeys[z].offset}return x(S)}for(let S=0;S<B.keys.length;S+=1)if(B.keys[S].key===t)return{...B.keys[S],field:f}},A=32;return x(Number(s)+A)});return GL(await Promise.all(a))}async searchExtraIndex(t,n={}){const r=await this.searchExtraIndexBlocks(t,n);if(r.length===0)return[];const i=await this.getUnzoomedView(n),a=r.map(s=>new Jt(f=>{i.readFeatures(f,[s],n)}).pipe(IA((f,u)=>f.concat(u)),DA(f=>{for(const u of f)u.field=s.field;return f})));return(await SA(zL(...a))).filter(s=>{var f;return((f=s.rest)===null||f===void 0?void 0:f.split(" ")[(s.field||0)-3])===t})}}function Vd(e,t,n=!0){let r,i=o=>{};return function(...s){return new Promise((f,u)=>{const c=()=>{clearTimeout(r),i=l=>{},f(e(...s))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(c,t)})}}class QL extends rc(Ia){constructor(n,r){const i={pixelsPerBin:2,channel:"x",...n};super(r,i.channel);Vn(this,"reductionLevels",[]);Vn(this,"lastRequestId",0);if(this.params=i,!this.params.url)throw new Error("No URL provided for BigWigSource");this.bbi=new jL({filehandle:new tr(ic(this.params.url,this.view.getBaseUrl()))}),this.doDebouncedRequest=Vd(this.doRequest.bind(this),200,!1),this.headerPromise=this.bbi.getHeader(),this.headerPromise.then(a=>{this.reductionLevels=a.zoomLevels.map(o=>o.reductionLevel).reverse(),this.reductionLevels.push(1)})}async onDomainChanged(n){await this.headerPromise;const r=this.getAxisLength()||700,i=VL(n,r,this.reductionLevels),a=Math.max(i*r,5e3),o=this.quantizeInterval(n,a);this.checkAndUpdateLastInterval(o)&&this.doDebouncedRequest(o,i)}async doRequest(n,r){const i=await this.getFeatures(n,.5/r/this.params.pixelsPerBin);i.requestId<this.lastRequestId||this.publishData(i.features)}async getFeatures(n,r){let i=++this.lastRequestId;const a=new AbortController,o=this.genome.continuousToDiscreteChromosomeIntervals(n),s=await Promise.all(o.map(f=>this.bbi.getFeatures(f.chrom,f.startPos,f.endPos,{scale:r,signal:a.signal}).then(u=>u.map(c=>({chrom:f.chrom,start:c.start,end:c.end,score:c.score})))));return{requestId:i,abort:()=>a.abort(),features:s.flat()}}}function VL(e,t,n){const r=(e[1]-e[0])/t;return n.find(i=>i<r)??n.at(-1)}function ZL(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}function to(e,t,n,r){this.message=e,this.expected=t,this.found=n,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,to)}ZL(to,Error),to.buildMessage=function(e,t){var n={literal:function(u){return'"'+i(u.text)+'"'},class:function(u){var c="",l;for(l=0;l<u.parts.length;l++)c+=u.parts[l]instanceof Array?a(u.parts[l][0])+"-"+a(u.parts[l][1]):a(u.parts[l]);return"["+(u.inverted?"^":"")+c+"]"},any:function(u){return"any character"},end:function(u){return"end of input"},other:function(u){return u.description}};function r(u){return u.charCodeAt(0).toString(16).toUpperCase()}function i(u){return u.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(c){return"\\x0"+r(c)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(c){return"\\x"+r(c)})}function a(u){return u.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(c){return"\\x0"+r(c)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(c){return"\\x"+r(c)})}function o(u){return n[u.type](u)}function s(u){var c=new Array(u.length),l,h;for(l=0;l<u.length;l++)c[l]=o(u[l]);if(c.sort(),c.length>0){for(l=1,h=1;l<c.length;l++)c[l-1]!==c[l]&&(c[h]=c[l],h++);c.length=h}switch(c.length){case 1:return c[0];case 2:return c[0]+" or "+c[1];default:return c.slice(0,-1).join(", ")+", or "+c[c.length-1]}}function f(u){return u?'"'+i(u)+'"':"end of input"}return"Expected "+s(e)+" but "+f(t)+" found."};function YL(e,t){t=t!==void 0?t:{};var n={},r={declaration:wv},i=wv,a="(",o=ye("(",!1),s=")",f=ye(")",!1),u=function(w,L,G,H){return{type:w,name:L,comment:G,fields:H}},c="simple",l=ye("simple",!1),h="object",d=ye("object",!1),p="table",b=ye("table",!1),x="auto",A=ye("auto",!1),D="primary",I=ye("primary",!1),C="index",T=ye("index",!1),B="unique",S=ye("unique",!1),z=function(w,L){return L},E=function(w,L){return w.name&&L.unshift(w),L},N="#",F=ye("#",!1),Z=";",W=ye(";",!1),Y=function(w,L,G){return{type:w,name:L,comment:G}},be="[",Ee=ye("[",!1),Ze="]",yt=ye("]",!1),wt=function(w,L,G,H){return{type:w,size:L,name:G,comment:H}},lu=function(w,L,G,H){return{type:w,vals:L,name:G,comment:H}},Re=",",Ye=ye(",",!1),uo=function(w,L){return L.unshift(w),L},Yi="int",fo=ye("int",!1),qi="uint",co=ye("uint",!1),vn="short",Q=ye("short",!1),$="ushort",ie=ye("ushort",!1),P="byte",Oe=ye("byte",!1),se="ubyte",ot=ye("ubyte",!1),tt="float",Ot=ye("float",!1),Wi="char",ag=ye("char",!1),hu="string",lo=ye("string",!1),Pt="lstring",du=ye("lstring",!1),kc="enum",Hn=ye("enum",!1),Lc="double",y=ye("double",!1),g="bigint",m=ye("bigint",!1),v="set",M=ye("set",!1),k=function(w,L){return w+" "+L},O=/^[a-zA-Z_]/,te=gu([["a","z"],["A","Z"],"_"],!1,!1),_e=/^[a-zA-Z0-9_]/,we=gu([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Fe=function(w){return pv()},pe=/^[^\n\r]/,cv=gu([`
|
|
178
|
+
`,"\r"],!0,!1),x9=function(w){return w.join("").replace(/^"/,"").replace(/"$/,"")},A9=mv("integer"),lv=/^[0-9]/,hv=gu([["0","9"]],!1,!1),v9=function(){return parseInt(pv(),10)},E9=mv("whitespace"),dv=/^[ \t\n\r]/,gv=gu([" "," ",`
|
|
179
|
+
`,"\r"],!1,!1),_=0,xt=0,zc=[{line:1,column:1}],Qn=0,og=[],X=0,Rc;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');i=r[t.startRule]}function pv(){return e.substring(xt,_)}function ye(w,L){return{type:"literal",text:w,ignoreCase:L}}function gu(w,L,G){return{type:"class",parts:w,inverted:L,ignoreCase:G}}function C9(){return{type:"end"}}function mv(w){return{type:"other",description:w}}function bv(w){var L=zc[w],G;if(L)return L;for(G=w-1;!zc[G];)G--;for(L=zc[G],L={line:L.line,column:L.column};G<w;)e.charCodeAt(G)===10?(L.line++,L.column=1):L.column++,G++;return zc[w]=L,L}function yv(w,L){var G=bv(w),H=bv(L);return{start:{offset:w,line:G.line,column:G.column},end:{offset:L,line:H.line,column:H.column}}}function K(w){_<Qn||(_>Qn&&(Qn=_,og=[]),og.push(w))}function S9(w,L,G){return new to(to.buildMessage(w,L),w,L,G)}function wv(){var w,L,G,H,q,Ce,ke,an,qr,cr,Wr,lr,Xr,hr;return w=_,L=ue(),L!==n?(G=xv(),G!==n?(H=ue(),H!==n?(q=Av(),q!==n?(Ce=ue(),Ce!==n?(ke=Oc(),ke!==n?(an=ue(),an!==n?(e.charCodeAt(_)===40?(qr=a,_++):(qr=n,X===0&&K(o)),qr!==n?(cr=ue(),cr!==n?(Wr=D9(),Wr!==n?(lr=ue(),lr!==n?(e.charCodeAt(_)===41?(Xr=s,_++):(Xr=n,X===0&&K(f)),Xr!==n?(hr=ue(),hr!==n?(xt=w,L=u(G,q,ke,Wr),w=L):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n),w}function xv(){var w;return e.substr(_,6)===c?(w=c,_+=6):(w=n,X===0&&K(l)),w===n&&(e.substr(_,6)===h?(w=h,_+=6):(w=n,X===0&&K(d)),w===n&&(e.substr(_,5)===p?(w=p,_+=5):(w=n,X===0&&K(b)))),w}function Av(){var w,L,G,H;return w=En(),w===n&&(w=_,L=En(),L!==n?(G=vv(),G!==n?(L=[L,G],w=L):(_=w,w=n)):(_=w,w=n),w===n&&(w=_,L=En(),L!==n?(e.substr(_,4)===x?(G=x,_+=4):(G=n,X===0&&K(A)),G!==n?(L=[L,G],w=L):(_=w,w=n)):(_=w,w=n),w===n&&(w=_,L=En(),L!==n?(G=vv(),G!==n?(e.substr(_,4)===x?(H=x,_+=4):(H=n,X===0&&K(A)),H!==n?(L=[L,G,H],w=L):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)))),w}function vv(){var w;return e.substr(_,7)===D?(w=D,_+=7):(w=n,X===0&&K(I)),w===n&&(e.substr(_,5)===C?(w=C,_+=5):(w=n,X===0&&K(T)),w===n&&(e.substr(_,6)===B?(w=B,_+=6):(w=n,X===0&&K(S)))),w}function Oc(){var w;return w=Ev(),w===n&&(w=ue()),w}function D9(){var w,L,G,H,q,Ce,ke;if(w=_,L=sg(),L!==n)if(G=ue(),G!==n){for(H=[],q=_,Ce=ue(),Ce!==n?(ke=sg(),ke!==n?(xt=q,Ce=z(L,ke),q=Ce):(_=q,q=n)):(_=q,q=n);q!==n;)H.push(q),q=_,Ce=ue(),Ce!==n?(ke=sg(),ke!==n?(xt=q,Ce=z(L,ke),q=Ce):(_=q,q=n)):(_=q,q=n);H!==n?(q=ue(),q!==n?(xt=w,L=E(L,H),w=L):(_=w,w=n)):(_=w,w=n)}else _=w,w=n;else _=w,w=n;return w}function _9(){var w;return e.charCodeAt(_)===35?(w=N,_++):(w=n,X===0&&K(F)),w}function I9(){var w,L,G,H,q;return w=_,L=ue(),L!==n?(G=_9(),G!==n?(H=Ev(),H!==n?(q=ue(),q!==n?(L=[L,G,H,q],w=L):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n),w}function sg(){var w,L,G,H,q,Ce,ke,an,qr,cr,Wr,lr,Xr,hr;return w=_,L=ug(),L!==n?(G=ue(),G!==n?(H=En(),H!==n?(q=ue(),q!==n?(e.charCodeAt(_)===59?(Ce=Z,_++):(Ce=n,X===0&&K(W)),Ce!==n?(ke=ue(),ke!==n?(an=Oc(),an!==n?(xt=w,L=Y(L,H,an),w=L):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n),w===n&&(w=_,L=ug(),L!==n?(G=ue(),G!==n?(e.charCodeAt(_)===91?(H=be,_++):(H=n,X===0&&K(Ee)),H!==n?(q=ue(),q!==n?(Ce=T9(),Ce!==n?(ke=ue(),ke!==n?(e.charCodeAt(_)===93?(an=Ze,_++):(an=n,X===0&&K(yt)),an!==n?(qr=ue(),qr!==n?(cr=En(),cr!==n?(Wr=ue(),Wr!==n?(e.charCodeAt(_)===59?(lr=Z,_++):(lr=n,X===0&&K(W)),lr!==n?(Xr=ue(),Xr!==n?(hr=Oc(),hr!==n?(xt=w,L=wt(L,Ce,cr,hr),w=L):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n),w===n&&(w=_,L=ug(),L!==n?(G=ue(),G!==n?(e.charCodeAt(_)===40?(H=a,_++):(H=n,X===0&&K(o)),H!==n?(q=ue(),q!==n?(Ce=M9(),Ce!==n?(ke=ue(),ke!==n?(e.charCodeAt(_)===41?(an=s,_++):(an=n,X===0&&K(f)),an!==n?(qr=ue(),qr!==n?(cr=En(),cr!==n?(Wr=ue(),Wr!==n?(e.charCodeAt(_)===59?(lr=Z,_++):(lr=n,X===0&&K(W)),lr!==n?(Xr=ue(),Xr!==n?(hr=Oc(),hr!==n?(xt=w,L=lu(L,Ce,cr,hr),w=L):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n)):(_=w,w=n),w===n&&(w=I9()))),w}function M9(){var w,L,G,H,q,Ce,ke;if(w=_,L=En(),L!==n){for(G=[],H=_,e.charCodeAt(_)===44?(q=Re,_++):(q=n,X===0&&K(Ye)),q!==n?(Ce=ue(),Ce!==n?(ke=En(),ke!==n?(xt=H,q=z(L,ke),H=q):(_=H,H=n)):(_=H,H=n)):(_=H,H=n);H!==n;)G.push(H),H=_,e.charCodeAt(_)===44?(q=Re,_++):(q=n,X===0&&K(Ye)),q!==n?(Ce=ue(),Ce!==n?(ke=En(),ke!==n?(xt=H,q=z(L,ke),H=q):(_=H,H=n)):(_=H,H=n)):(_=H,H=n);G!==n?(xt=w,L=uo(L,G),w=L):(_=w,w=n)}else _=w,w=n;return w}function ug(){var w,L,G,H;return e.substr(_,3)===Yi?(w=Yi,_+=3):(w=n,X===0&&K(fo)),w===n&&(e.substr(_,4)===qi?(w=qi,_+=4):(w=n,X===0&&K(co)),w===n&&(e.substr(_,5)===vn?(w=vn,_+=5):(w=n,X===0&&K(Q)),w===n&&(e.substr(_,6)===$?(w=$,_+=6):(w=n,X===0&&K(ie)),w===n&&(e.substr(_,4)===P?(w=P,_+=4):(w=n,X===0&&K(Oe)),w===n&&(e.substr(_,5)===se?(w=se,_+=5):(w=n,X===0&&K(ot)),w===n&&(e.substr(_,5)===tt?(w=tt,_+=5):(w=n,X===0&&K(Ot)),w===n&&(e.substr(_,4)===Wi?(w=Wi,_+=4):(w=n,X===0&&K(ag)),w===n&&(e.substr(_,6)===hu?(w=hu,_+=6):(w=n,X===0&&K(lo)),w===n&&(e.substr(_,7)===Pt?(w=Pt,_+=7):(w=n,X===0&&K(du)),w===n&&(e.substr(_,4)===kc?(w=kc,_+=4):(w=n,X===0&&K(Hn)),w===n&&(e.substr(_,6)===Lc?(w=Lc,_+=6):(w=n,X===0&&K(y)),w===n&&(e.substr(_,6)===g?(w=g,_+=6):(w=n,X===0&&K(m)),w===n&&(e.substr(_,3)===v?(w=v,_+=3):(w=n,X===0&&K(M)),w===n&&(w=_,L=xv(),L!==n?(G=ue(),G!==n?(H=Av(),H!==n?(xt=w,L=k(L,H),w=L):(_=w,w=n)):(_=w,w=n)):(_=w,w=n))))))))))))))),w}function T9(){var w;return w=N9(),w===n&&(w=En()),w}function En(){var w,L,G,H,q;if(w=_,L=_,O.test(e.charAt(_))?(G=e.charAt(_),_++):(G=n,X===0&&K(te)),G!==n){for(H=[],_e.test(e.charAt(_))?(q=e.charAt(_),_++):(q=n,X===0&&K(we));q!==n;)H.push(q),_e.test(e.charAt(_))?(q=e.charAt(_),_++):(q=n,X===0&&K(we));H!==n?(G=[G,H],L=G):(_=L,L=n)}else _=L,L=n;return L!==n&&(xt=w,L=Fe()),w=L,w}function Ev(){var w,L,G;for(w=_,L=[],pe.test(e.charAt(_))?(G=e.charAt(_),_++):(G=n,X===0&&K(cv));G!==n;)L.push(G),pe.test(e.charAt(_))?(G=e.charAt(_),_++):(G=n,X===0&&K(cv));return L!==n&&(xt=w,L=x9(L)),w=L,w}function N9(){var w,L,G,H;if(X++,w=_,L=ue(),L!==n){if(G=[],lv.test(e.charAt(_))?(H=e.charAt(_),_++):(H=n,X===0&&K(hv)),H!==n)for(;H!==n;)G.push(H),lv.test(e.charAt(_))?(H=e.charAt(_),_++):(H=n,X===0&&K(hv));else G=n;G!==n?(xt=w,L=v9(),w=L):(_=w,w=n)}else _=w,w=n;return X--,w===n&&(L=n,X===0&&K(A9)),w}function ue(){var w,L;for(X++,w=[],dv.test(e.charAt(_))?(L=e.charAt(_),_++):(L=n,X===0&&K(gv));L!==n;)w.push(L),dv.test(e.charAt(_))?(L=e.charAt(_),_++):(L=n,X===0&&K(gv));return X--,w===n&&(L=n,X===0&&K(E9)),w}if(Rc=i(),Rc!==n&&_===e.length)return Rc;throw Rc!==n&&_<e.length&&K(C9()),S9(og,Qn<e.length?e.charAt(Qn):null,Qn<e.length?yv(Qn,Qn+1):yv(Qn,Qn))}var BA={SyntaxError:to,parse:YL};const qL=Ma(BA),Zd=Object.fromEntries(Object.entries(Object.freeze(Object.defineProperty({__proto__:null,bigChain:`table bigChain
|
|
180
|
+
"bigChain pairwise alignment"
|
|
181
|
+
(
|
|
182
|
+
string chrom; "Reference sequence chromosome or scaffold"
|
|
183
|
+
uint chromStart; "Start position in chromosome"
|
|
184
|
+
uint chromEnd; "End position in chromosome"
|
|
185
|
+
string name; "Name or ID of item, ideally both human readable and unique"
|
|
186
|
+
uint score; "Score (0-1000)"
|
|
187
|
+
char[1] strand; "+ or - for strand"
|
|
188
|
+
uint tSize; "size of target sequence"
|
|
189
|
+
string qName; "name of query sequence"
|
|
190
|
+
uint qSize; "size of query sequence"
|
|
191
|
+
uint qStart; "start of alignment on query sequence"
|
|
192
|
+
uint qEnd; "end of alignment on query sequence"
|
|
193
|
+
uint chainScore; "score from chain"
|
|
194
|
+
)`,bigGenePred:`table bigGenePred
|
|
195
|
+
"bigGenePred gene models"
|
|
196
|
+
(
|
|
197
|
+
string chrom; "Reference sequence chromosome or scaffold"
|
|
198
|
+
uint chromStart; "Start position in chromosome"
|
|
199
|
+
uint chromEnd; "End position in chromosome"
|
|
200
|
+
string name; "Name or ID of item, ideally both human readable and unique"
|
|
201
|
+
uint score; "Score (0-1000)"
|
|
202
|
+
char[1] strand; "+ or - for strand"
|
|
203
|
+
uint thickStart; "Start of where display should be thick (start codon)"
|
|
204
|
+
uint thickEnd; "End of where display should be thick (stop codon)"
|
|
205
|
+
uint reserved; "RGB value (use R,G,B string in input file)"
|
|
206
|
+
int blockCount; "Number of blocks"
|
|
207
|
+
int[blockCount] blockSizes; "Comma separated list of block sizes"
|
|
208
|
+
int[blockCount] chromStarts; "Start positions relative to chromStart"
|
|
209
|
+
string name2; "Alternative/human readable name"
|
|
210
|
+
string cdsStartStat; "Status of CDS start annotation (none, unknown, incomplete, or complete)"
|
|
211
|
+
string cdsEndStat; "Status of CDS end annotation (none, unknown, incomplete, or complete)"
|
|
212
|
+
int[blockCount] exonFrames; "Exon frame {0,1,2}, or -1 if no frame for exon"
|
|
213
|
+
string type; "Transcript type"
|
|
214
|
+
string geneName; "Primary identifier for gene"
|
|
215
|
+
string geneName2; "Alternative/human readable gene name"
|
|
216
|
+
string geneType; "Gene type"
|
|
217
|
+
)`,bigInteract:`table interact
|
|
218
|
+
"interaction between two regions"
|
|
219
|
+
(
|
|
220
|
+
string chrom; "Chromosome (or contig, scaffold, etc.). For interchromosomal, use 2 records"
|
|
221
|
+
uint chromStart; "Start position of lower region. For interchromosomal, set to chromStart of this region"
|
|
222
|
+
uint chromEnd; "End position of upper region. For interchromosomal, set to chromEnd of this region"
|
|
223
|
+
string name; "Name of item, for display. Usually 'sourceName/targetName/exp' or empty"
|
|
224
|
+
uint score; "Score (0-1000)"
|
|
225
|
+
double value; "Strength of interaction or other data value. Typically basis for score"
|
|
226
|
+
string exp; "Experiment name (metadata for filtering). Use . if not applicable"
|
|
227
|
+
string color; "Item color. Specified as r,g,b or hexadecimal #RRGGBB or html color name, as in //www.w3.org/TR/css3-color/#html4. Use 0 and spectrum setting to shade by score"
|
|
228
|
+
string sourceChrom; "Chromosome of source region (directional) or lower region. For non-directional interchromosomal, chrom of this region."
|
|
229
|
+
uint sourceStart; "Start position in chromosome of source/lower/this region"
|
|
230
|
+
uint sourceEnd; "End position in chromosome of source/lower/this region"
|
|
231
|
+
string sourceName; "Identifier of source/lower/this region"
|
|
232
|
+
string sourceStrand; "Orientation of source/lower/this region: + or -. Use . if not applicable"
|
|
233
|
+
string targetChrom; "Chromosome of target region (directional) or upper region. For non-directional interchromosomal, chrom of other region"
|
|
234
|
+
uint targetStart; "Start position in chromosome of target/upper/this region"
|
|
235
|
+
uint targetEnd; "End position in chromosome of target/upper/this region"
|
|
236
|
+
string targetName; "Identifier of target/upper/this region"
|
|
237
|
+
string targetStrand; "Orientation of target/upper/this region: + or -. Use . if not applicable"
|
|
238
|
+
|
|
239
|
+
)`,bigLink:`table bigLink
|
|
240
|
+
"bigLink pairwise alignment"
|
|
241
|
+
(
|
|
242
|
+
string chrom; "Reference sequence chromosome or scaffold"
|
|
243
|
+
uint chromStart; "Start position in chromosome"
|
|
244
|
+
uint chromEnd; "End position in chromosome"
|
|
245
|
+
string name; "Name or ID of item, ideally both human readable and unique"
|
|
246
|
+
uint qStart; "start of alignment on query sequence"
|
|
247
|
+
)`,bigMaf:`table bedMaf
|
|
248
|
+
"Bed3 with MAF block"
|
|
249
|
+
(
|
|
250
|
+
string chrom; "Reference sequence chromosome or scaffold"
|
|
251
|
+
uint chromStart; "Start position in chromosome"
|
|
252
|
+
uint chromEnd; "End position in chromosome"
|
|
253
|
+
lstring mafBlock; "MAF block"
|
|
254
|
+
)`,bigNarrowPeak:`table bigNarrowPeak
|
|
255
|
+
"BED6+4 Peaks of signal enrichment based on pooled, normalized (interpreted) data."
|
|
256
|
+
(
|
|
257
|
+
string chrom; "Reference sequence chromosome or scaffold"
|
|
258
|
+
uint chromStart; "Start position in chromosome"
|
|
259
|
+
uint chromEnd; "End position in chromosome"
|
|
260
|
+
string name; "Name given to a region (preferably unique). Use . if no name is assigned"
|
|
261
|
+
uint score; "Indicates how dark the peak will be displayed in the browser (0-1000) "
|
|
262
|
+
char[1] strand; "+ or - or . for unknown"
|
|
263
|
+
float signalValue; "Measurement of average enrichment for the region"
|
|
264
|
+
float pValue; "Statistical significance of signal value (-log10). Set to -1 if not used."
|
|
265
|
+
float qValue; "Statistical significance with multiple-test correction applied (FDR -log10). Set to -1 if not used."
|
|
266
|
+
int peak; "Point-source called for this peak; 0-based offset from chromStart. Set to -1 if no point-source called."
|
|
267
|
+
)`,bigPsl:`table bigPsl
|
|
268
|
+
"bigPsl pairwise alignment"
|
|
269
|
+
(
|
|
270
|
+
string chrom; "Reference sequence chromosome or scaffold"
|
|
271
|
+
uint chromStart; "Start position in chromosome"
|
|
272
|
+
uint chromEnd; "End position in chromosome"
|
|
273
|
+
string name; "Name or ID of item, ideally both human readable and unique"
|
|
274
|
+
uint score; "Score (0-1000)"
|
|
275
|
+
char[1] strand; "+ or - indicates whether the query aligns to the + or - strand on the reference"
|
|
276
|
+
uint thickStart; "Start of where display should be thick (start codon)"
|
|
277
|
+
uint thickEnd; "End of where display should be thick (stop codon)"
|
|
278
|
+
uint reserved; "RGB value (use R,G,B string in input file)"
|
|
279
|
+
int blockCount; "Number of blocks"
|
|
280
|
+
int[blockCount] blockSizes; "Comma separated list of block sizes"
|
|
281
|
+
int[blockCount] chromStarts; "Start positions relative to chromStart"
|
|
282
|
+
|
|
283
|
+
uint oChromStart;"Start position in other chromosome"
|
|
284
|
+
uint oChromEnd; "End position in other chromosome"
|
|
285
|
+
char[1] oStrand; "+ or -, - means that psl was reversed into BED-compatible coordinates"
|
|
286
|
+
uint oChromSize; "Size of other chromosome."
|
|
287
|
+
int[blockCount] oChromStarts; "Start positions relative to oChromStart or from oChromStart+oChromSize depending on strand"
|
|
288
|
+
|
|
289
|
+
lstring oSequence; "Sequence on other chrom (or empty)"
|
|
290
|
+
string oCDS; "CDS in NCBI format"
|
|
291
|
+
|
|
292
|
+
uint chromSize;"Size of target chromosome"
|
|
293
|
+
|
|
294
|
+
uint match; "Number of bases matched."
|
|
295
|
+
uint misMatch; " Number of bases that don't match "
|
|
296
|
+
uint repMatch; " Number of bases that match but are part of repeats "
|
|
297
|
+
uint nCount; " Number of 'N' bases "
|
|
298
|
+
uint seqType; "0=empty, 1=nucleotide, 2=amino_acid"
|
|
299
|
+
)`,defaultBedSchema:`table defaultBedSchema
|
|
300
|
+
"BED12"
|
|
301
|
+
(
|
|
302
|
+
string chrom; "The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671)."
|
|
303
|
+
uint chromStart; "The starting position of the feature in the chromosome or scaffold. The first base in a chromosome is numbered 0."
|
|
304
|
+
uint chromEnd; "The ending position of the feature in the chromosome or scaffold. The chromEnd base is not included in the display of the feature. For example, the first 100 bases of a chromosome are defined as chromStart=0, chromEnd=100, and span the bases numbered 0-99."
|
|
305
|
+
string name; "Defines the name of the BED line."
|
|
306
|
+
float score; "Feature score, doesn't care about the 0-1000 limit as in bed"
|
|
307
|
+
char strand; "Defines the strand. Either '.' (=no strand) or '+' or '-'"
|
|
308
|
+
uint thickStart; "The starting position at which the feature is drawn thickly (for example, the start codon in gene displays). When there is no thick part, thickStart and thickEnd are usually set to the chromStart position."
|
|
309
|
+
uint thickEnd; "The ending position at which the feature is drawn thickly (for example the stop codon in gene displays)."
|
|
310
|
+
string itemRgb; "An RGB value of the form R,G,B (e.g. 255,0,0). "
|
|
311
|
+
uint blockCount; " The number of blocks (exons) in the BED line."
|
|
312
|
+
uint[blockCount] blockSizes; " A comma-separated list of the block sizes. The number of items in this list should correspond to blockCount."
|
|
313
|
+
uint[blockCount] blockStarts; "A comma-separated list of block starts. All of the blockStart positions should be calculated relative to chromStart. The number of items in this list should correspond to blockCount."
|
|
314
|
+
)`,mafFrames:`table mafFrames
|
|
315
|
+
"codon frame assignment for MAF components"
|
|
316
|
+
(
|
|
317
|
+
string chrom; "Reference sequence chromosome or scaffold"
|
|
318
|
+
uint chromStart; "Start range in chromosome"
|
|
319
|
+
uint chromEnd; "End range in chromosome"
|
|
320
|
+
string src; "Name of sequence source in MAF"
|
|
321
|
+
ubyte frame; "frame (0,1,2) for first base(+) or last bast(-)"
|
|
322
|
+
char[1] strand; "+ or -"
|
|
323
|
+
string name; "Name of gene used to define frame"
|
|
324
|
+
int prevFramePos; "target position of the previous base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous"
|
|
325
|
+
int nextFramePos; "target position of the next base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous"
|
|
326
|
+
ubyte isExonStart; "does this start the CDS portion of an exon?"
|
|
327
|
+
ubyte isExonEnd; "does this end the CDS portion of an exon?"
|
|
328
|
+
)`,mafSummary:`table mafSummary
|
|
329
|
+
"Positions and scores for alignment blocks"
|
|
330
|
+
(
|
|
331
|
+
string chrom; "Reference sequence chromosome or scaffold"
|
|
332
|
+
uint chromStart; "Start position in chromosome"
|
|
333
|
+
uint chromEnd; "End position in chromosome"
|
|
334
|
+
string src; "Sequence name or database of alignment"
|
|
335
|
+
float score; "Floating point score."
|
|
336
|
+
char[1] leftStatus; "Gap/break annotation for preceding block"
|
|
337
|
+
char[1] rightStatus; "Gap/break annotation for following block"
|
|
338
|
+
)`},Symbol.toStringTag,{value:"Module"}))).map(([e,t])=>[e,BA.parse(t.trim())]));function Yd(e){const t=["uint","int","float","long"];return{...e,fields:e.fields.map(n=>({...n,isArray:n.size&&n.type!=="char",arrayIsNumeric:n.size&&t.includes(n.type),isNumeric:!n.size&&t.includes(n.type)}))}}const WL={".":0,"-":-1,"+":1};function XL(e){var t;return e.length>=12&&!Number.isNaN(parseInt(e[9],10))&&((t=e[10])===null||t===void 0?void 0:t.split(",").filter(n=>!!n).length)===parseInt(e[9],10)}class KL{constructor(t={}){if(t.autoSql)this.autoSql=Yd(qL.parse(t.autoSql));else if(t.type){if(!Zd[t.type])throw new Error("Type not found");this.autoSql=Yd(Zd[t.type])}else this.autoSql=Yd(Zd.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(t,n={}){const{autoSql:r}=this,{uniqueId:i}=n,a=Array.isArray(t)?t:t.split(" ");let o={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&XL(a))for(let s=0;s<r.fields.length;s++){const f=r.fields[s];let u=a[s];const{isNumeric:c,isArray:l,arrayIsNumeric:h,name:d}=f;if(u==null)break;if(u!=="."){if(c){const p=Number(u);u=Number.isNaN(p)?u:p}else l&&(u=u.split(","),u[u.length-1]===""&&u.pop(),h&&(u=u.map(p=>Number(p))));o[d]=u}}else{const s=["chrom","chromStart","chromEnd","name"];o=Object.fromEntries(a.map((f,u)=>[s[u]||"field"+u,f])),o.chromStart=+o.chromStart,o.chromEnd=+o.chromEnd,Number.isNaN(Number.parseFloat(o.field4))||(o.score=+o.field4,delete o.field4),(o.field5==="+"||o.field5==="-")&&(o.strand=o.field5,delete o.field5)}return i&&(o.uniqueId=i),o.strand=WL[o.strand]||0,o.chrom=decodeURIComponent(o.chrom),o}}class JL extends rc(Ia){constructor(n,r){const i={channel:"x",windowSize:1e6,...n};super(r,i.channel);Vn(this,"lastRequestId",0);Vn(this,"parser");if(this.params=i,!this.params.url)throw new Error("No URL provided for BigBedSource");this.bbi=new HL({filehandle:new tr(ic(this.params.url,this.view.getBaseUrl()))}),this.doDebouncedRequest=Vd(this.doRequest.bind(this),200,!1),this.headerPromise=this.bbi.getHeader(),this.headerPromise.then(a=>{this.parser=new KL({autoSql:a.autoSql})})}async onDomainChanged(n){const r=this.params.windowSize;if(n[1]-n[0]>r)return;const i=this.quantizeInterval(n,r);this.checkAndUpdateLastInterval(i)&&this.doDebouncedRequest(i)}async doRequest(n){const r=await this.getFeatures(n);r.requestId<this.lastRequestId||this.publishData(r.features)}async getFeatures(n){let r=++this.lastRequestId;const i=new AbortController,a=this.genome.continuousToDiscreteChromosomeIntervals(n),o=await Promise.all(a.map(s=>this.bbi.getFeatures(s.chrom,s.startPos,s.endPos,{signal:i.signal}).then(f=>f.map(u=>this.parser.parseLine(`${s.chrom} ${u.start} ${u.end} ${u.rest}`,{uniqueId:u.uniqueId})))));return{requestId:r,abort:()=>i.abort(),features:o.flat()}}}var $L=Ae,$t=null;try{$t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function Ae(e,t,n){this.low=e|0,this.high=t|0,this.unsigned=!!n}Ae.prototype.__isLong__,Object.defineProperty(Ae.prototype,"__isLong__",{value:!0});function Tt(e){return(e&&e.__isLong__)===!0}Ae.isLong=Tt;var FA={},kA={};function Qi(e,t){var n,r,i;return t?(e>>>=0,(i=0<=e&&e<256)&&(r=kA[e],r)?r:(n=ve(e,(e|0)<0?-1:0,!0),i&&(kA[e]=n),n)):(e|=0,(i=-128<=e&&e<128)&&(r=FA[e],r)?r:(n=ve(e,e<0?-1:0,!1),i&&(FA[e]=n),n))}Ae.fromInt=Qi;function en(e,t){if(isNaN(e))return t?Vi:tn;if(t){if(e<0)return Vi;if(e>=zA)return jA}else{if(e<=-RA)return Nt;if(e+1>=RA)return UA}return e<0?en(-e,t).neg():ve(e%no|0,e/no|0,t)}Ae.fromNumber=en;function ve(e,t,n){return new Ae(e,t,n)}Ae.fromBits=ve;var Ic=Math.pow;function qd(e,t,n){if(e.length===0)throw Error("empty string");if(e==="NaN"||e==="Infinity"||e==="+Infinity"||e==="-Infinity")return tn;if(typeof t=="number"?(n=t,t=!1):t=!!t,n=n||10,n<2||36<n)throw RangeError("radix");var r;if((r=e.indexOf("-"))>0)throw Error("interior hyphen");if(r===0)return qd(e.substring(1),t,n).neg();for(var i=en(Ic(n,8)),a=tn,o=0;o<e.length;o+=8){var s=Math.min(8,e.length-o),f=parseInt(e.substring(o,o+s),n);if(s<8){var u=en(Ic(n,s));a=a.mul(u).add(en(f))}else a=a.mul(i),a=a.add(en(f))}return a.unsigned=t,a}Ae.fromString=qd;function An(e,t){return typeof e=="number"?en(e,t):typeof e=="string"?qd(e,t):ve(e.low,e.high,typeof t=="boolean"?t:e.unsigned)}Ae.fromValue=An;var LA=1<<16,ez=1<<24,no=LA*LA,zA=no*no,RA=zA/2,OA=Qi(ez),tn=Qi(0);Ae.ZERO=tn;var Vi=Qi(0,!0);Ae.UZERO=Vi;var ro=Qi(1);Ae.ONE=ro;var PA=Qi(1,!0);Ae.UONE=PA;var Wd=Qi(-1);Ae.NEG_ONE=Wd;var UA=ve(-1,2147483647,!1);Ae.MAX_VALUE=UA;var jA=ve(-1,-1,!0);Ae.MAX_UNSIGNED_VALUE=jA;var Nt=ve(0,-2147483648,!1);Ae.MIN_VALUE=Nt;var j=Ae.prototype;j.toInt=function(){return this.unsigned?this.low>>>0:this.low},j.toNumber=function(){return this.unsigned?(this.high>>>0)*no+(this.low>>>0):this.high*no+(this.low>>>0)},j.toString=function(t){if(t=t||10,t<2||36<t)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative())if(this.eq(Nt)){var n=en(t),r=this.div(n),i=r.mul(n).sub(this);return r.toString(t)+i.toInt().toString(t)}else return"-"+this.neg().toString(t);for(var a=en(Ic(t,6),this.unsigned),o=this,s="";;){var f=o.div(a),u=o.sub(f.mul(a)).toInt()>>>0,c=u.toString(t);if(o=f,o.isZero())return c+s;for(;c.length<6;)c="0"+c;s=""+c+s}},j.getHighBits=function(){return this.high},j.getHighBitsUnsigned=function(){return this.high>>>0},j.getLowBits=function(){return this.low},j.getLowBitsUnsigned=function(){return this.low>>>0},j.getNumBitsAbs=function(){if(this.isNegative())return this.eq(Nt)?64:this.neg().getNumBitsAbs();for(var t=this.high!=0?this.high:this.low,n=31;n>0&&!(t&1<<n);n--);return this.high!=0?n+33:n+1},j.isZero=function(){return this.high===0&&this.low===0},j.eqz=j.isZero,j.isNegative=function(){return!this.unsigned&&this.high<0},j.isPositive=function(){return this.unsigned||this.high>=0},j.isOdd=function(){return(this.low&1)===1},j.isEven=function(){return(this.low&1)===0},j.equals=function(t){return Tt(t)||(t=An(t)),this.unsigned!==t.unsigned&&this.high>>>31===1&&t.high>>>31===1?!1:this.high===t.high&&this.low===t.low},j.eq=j.equals,j.notEquals=function(t){return!this.eq(t)},j.neq=j.notEquals,j.ne=j.notEquals,j.lessThan=function(t){return this.comp(t)<0},j.lt=j.lessThan,j.lessThanOrEqual=function(t){return this.comp(t)<=0},j.lte=j.lessThanOrEqual,j.le=j.lessThanOrEqual,j.greaterThan=function(t){return this.comp(t)>0},j.gt=j.greaterThan,j.greaterThanOrEqual=function(t){return this.comp(t)>=0},j.gte=j.greaterThanOrEqual,j.ge=j.greaterThanOrEqual,j.compare=function(t){if(Tt(t)||(t=An(t)),this.eq(t))return 0;var n=this.isNegative(),r=t.isNegative();return n&&!r?-1:!n&&r?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},j.comp=j.compare,j.negate=function(){return!this.unsigned&&this.eq(Nt)?Nt:this.not().add(ro)},j.neg=j.negate,j.add=function(t){Tt(t)||(t=An(t));var n=this.high>>>16,r=this.high&65535,i=this.low>>>16,a=this.low&65535,o=t.high>>>16,s=t.high&65535,f=t.low>>>16,u=t.low&65535,c=0,l=0,h=0,d=0;return d+=a+u,h+=d>>>16,d&=65535,h+=i+f,l+=h>>>16,h&=65535,l+=r+s,c+=l>>>16,l&=65535,c+=n+o,c&=65535,ve(h<<16|d,c<<16|l,this.unsigned)},j.subtract=function(t){return Tt(t)||(t=An(t)),this.add(t.neg())},j.sub=j.subtract,j.multiply=function(t){if(this.isZero())return tn;if(Tt(t)||(t=An(t)),$t){var n=$t.mul(this.low,this.high,t.low,t.high);return ve(n,$t.get_high(),this.unsigned)}if(t.isZero())return tn;if(this.eq(Nt))return t.isOdd()?Nt:tn;if(t.eq(Nt))return this.isOdd()?Nt:tn;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(OA)&&t.lt(OA))return en(this.toNumber()*t.toNumber(),this.unsigned);var r=this.high>>>16,i=this.high&65535,a=this.low>>>16,o=this.low&65535,s=t.high>>>16,f=t.high&65535,u=t.low>>>16,c=t.low&65535,l=0,h=0,d=0,p=0;return p+=o*c,d+=p>>>16,p&=65535,d+=a*c,h+=d>>>16,d&=65535,d+=o*u,h+=d>>>16,d&=65535,h+=i*c,l+=h>>>16,h&=65535,h+=a*u,l+=h>>>16,h&=65535,h+=o*f,l+=h>>>16,h&=65535,l+=r*c+i*u+a*f+o*s,l&=65535,ve(d<<16|p,l<<16|h,this.unsigned)},j.mul=j.multiply,j.divide=function(t){if(Tt(t)||(t=An(t)),t.isZero())throw Error("division by zero");if($t){if(!this.unsigned&&this.high===-2147483648&&t.low===-1&&t.high===-1)return this;var n=(this.unsigned?$t.div_u:$t.div_s)(this.low,this.high,t.low,t.high);return ve(n,$t.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?Vi:tn;var r,i,a;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return Vi;if(t.gt(this.shru(1)))return PA;a=Vi}else{if(this.eq(Nt)){if(t.eq(ro)||t.eq(Wd))return Nt;if(t.eq(Nt))return ro;var o=this.shr(1);return r=o.div(t).shl(1),r.eq(tn)?t.isNegative()?ro:Wd:(i=this.sub(t.mul(r)),a=r.add(i.div(t)),a)}else if(t.eq(Nt))return this.unsigned?Vi:tn;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();a=tn}for(i=this;i.gte(t);){r=Math.max(1,Math.floor(i.toNumber()/t.toNumber()));for(var s=Math.ceil(Math.log(r)/Math.LN2),f=s<=48?1:Ic(2,s-48),u=en(r),c=u.mul(t);c.isNegative()||c.gt(i);)r-=f,u=en(r,this.unsigned),c=u.mul(t);u.isZero()&&(u=ro),a=a.add(u),i=i.sub(c)}return a},j.div=j.divide,j.modulo=function(t){if(Tt(t)||(t=An(t)),$t){var n=(this.unsigned?$t.rem_u:$t.rem_s)(this.low,this.high,t.low,t.high);return ve(n,$t.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))},j.mod=j.modulo,j.rem=j.modulo,j.not=function(){return ve(~this.low,~this.high,this.unsigned)},j.and=function(t){return Tt(t)||(t=An(t)),ve(this.low&t.low,this.high&t.high,this.unsigned)},j.or=function(t){return Tt(t)||(t=An(t)),ve(this.low|t.low,this.high|t.high,this.unsigned)},j.xor=function(t){return Tt(t)||(t=An(t)),ve(this.low^t.low,this.high^t.high,this.unsigned)},j.shiftLeft=function(t){return Tt(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?ve(this.low<<t,this.high<<t|this.low>>>32-t,this.unsigned):ve(0,this.low<<t-32,this.unsigned)},j.shl=j.shiftLeft,j.shiftRight=function(t){return Tt(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?ve(this.low>>>t|this.high<<32-t,this.high>>t,this.unsigned):ve(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},j.shr=j.shiftRight,j.shiftRightUnsigned=function(t){if(Tt(t)&&(t=t.toInt()),t&=63,t===0)return this;var n=this.high;if(t<32){var r=this.low;return ve(r>>>t|n<<32-t,n>>>t,this.unsigned)}else return t===32?ve(n,0,this.unsigned):ve(n>>>t-32,0,this.unsigned)},j.shru=j.shiftRightUnsigned,j.shr_u=j.shiftRightUnsigned,j.toSigned=function(){return this.unsigned?ve(this.low,this.high,!1):this},j.toUnsigned=function(){return this.unsigned?this:ve(this.low,this.high,!0)},j.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()},j.toBytesLE=function(){var t=this.high,n=this.low;return[n&255,n>>>8&255,n>>>16&255,n>>>24,t&255,t>>>8&255,t>>>16&255,t>>>24]},j.toBytesBE=function(){var t=this.high,n=this.low;return[t>>>24,t>>>16&255,t>>>8&255,t&255,n>>>24,n>>>16&255,n>>>8&255,n&255]},Ae.fromBytes=function(t,n,r){return r?Ae.fromBytesLE(t,n):Ae.fromBytesBE(t,n)},Ae.fromBytesLE=function(t,n){return new Ae(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,n)},Ae.fromBytesBE=function(t,n){return new Ae(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],n)};const GA=Ma($L);class HA{constructor(t,n){this.blockPosition=t,this.dataPosition=n}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}static min(...t){let n,r=0;for(;!n;r+=1)n=t[r];for(;r<t.length;r+=1)n.compareTo(t[r])>0&&(n=t[r]);return n}}function io(e,t=0,n=!1){if(n)throw new Error("big-endian virtual file offsets not implemented");return new HA(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}class Mc{constructor(t,n,r,i=void 0){this.minv=t,this.maxv=n,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+(1<<16)-this.minv.blockPosition}}class QA{constructor({filehandle:t,renameRefSeq:n=r=>r}){this.filehandle=t,this.renameRefSeq=n}_findFirstData(t,n){const r=t.firstDataLine;r?t.firstDataLine=r.compareTo(n)>0?n:r:t.firstDataLine=n}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(n=>{throw this.setupP=void 0,n})),this.setupP}async hasRefSeq(t,n={}){return!!((await this.parse(n)).indices[t]||{}).binIndex}}function tz(e){return new Promise(t=>setTimeout(t,e))}function VA(e){if(e.greaterThan(Number.MAX_SAFE_INTEGER)||e.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");return e.toNumber()}function ZA(e){if(e&&e.aborted){if(typeof DOMException<"u")throw new DOMException("aborted","AbortError");{const t=new Error("aborted");throw t.code="ERR_ABORTED",t}}}async function YA(e){await Promise.resolve(),ZA(e)}function nz(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function rz(e={}){return"aborted"in e?{signal:e}:e}function qA(e,t){const n=[];let r=null;return e.length===0?e:(e.sort((i,a)=>{const o=i.minv.blockPosition-a.minv.blockPosition;return o!==0?o:i.minv.dataPosition-a.minv.dataPosition}),e.forEach(i=>{(!t||i.maxv.compareTo(t)>0)&&(r===null?(n.push(i),r=i):nz(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i))}),n)}const iz=21578050;function az(e,t){return e-e%t}function oz(e,t){return e-e%t+t}class ru extends QA{parsePseudoBin(t,n){return{lineCount:VA(GA.fromBytesLE(Array.prototype.slice.call(t,n+16,n+24),!0))}}async lineCount(t,n={}){const i=(await this.parse(n)).indices[t];if(!i)return-1;const a=i.stats||{};return a.lineCount===void 0?-1:a.lineCount}fetchBai(t={}){return this.baiP||(this.baiP=this.filehandle.readFile(t).catch(n=>{throw this.baiP=void 0,n})),this.baiP}async _parse(){const t={bai:!0,maxBlockSize:65536},n=await this.fetchBai();if(n.readUInt32LE(0)!==iz)throw new Error("Not a BAI file");t.refCount=n.readInt32LE(4);const i=((1<<(5+1)*3)-1)/7;t.indices=new Array(t.refCount);let a=8;for(let o=0;o<t.refCount;o+=1){const s=n.readInt32LE(a);let f;a+=4;const u={};for(let h=0;h<s;h+=1){const d=n.readUInt32LE(a);if(a+=4,d===i+1)a+=4,f=this.parsePseudoBin(n,a),a+=32;else{if(d>i+1)throw new Error("bai index contains too many bins, please use CSI");{const p=n.readInt32LE(a);a+=4;const b=new Array(p);for(let x=0;x<p;x+=1){const A=io(n,a),D=io(n,a+8);a+=16,this._findFirstData(t,A),b[x]=new Mc(A,D,d)}u[d]=b}}}const c=n.readInt32LE(a);a+=4;const l=new Array(c);for(let h=0;h<c;h+=1)l[h]=io(n,a),a+=8,this._findFirstData(t,l[h]);t.indices[o]={binIndex:u,linearIndex:l,stats:f}}return t}async indexCov(t,n,r,i={}){const o=n!==void 0,f=(await this.parse(i)).indices[t];if(!f)return[];const{linearIndex:u=[],stats:c}=f;if(!u.length)return[];const l=r!==void 0?oz(r,16384):(u.length-1)*16384,h=n!==void 0?az(n,16384):0;let d;o?d=new Array((l-h)/16384):d=new Array(u.length-1);const p=u[u.length-1].blockPosition;if(l>(u.length-1)*16384)throw new Error("query outside of range of linear index");let b=u[h/16384].blockPosition;for(let x=h/16384,A=0;x<l/16384;x++,A++)d[A]={score:u[x+1].blockPosition-b,start:x*16384,end:x*16384+16384},b=u[x+1].blockPosition;return d.map(x=>({...x,score:x.score*c.lineCount/p}))}reg2bins(t,n){return n-=1,[[0,0],[1+(t>>26),1+(n>>26)],[9+(t>>23),9+(n>>23)],[73+(t>>20),73+(n>>20)],[585+(t>>17),585+(n>>17)],[4681+(t>>14),4681+(n>>14)]]}async blocksForRange(t,n,r,i={}){n<0&&(n=0);const a=await this.parse(i);if(!a)return[];const o=a.indices[t];if(!o)return[];const s=this.reg2bins(n,r),f=[];for(const[d,p]of s)for(let b=d;b<=p;b++)if(o.binIndex[b]){const x=o.binIndex[b];for(let A=0;A<x.length;++A)f.push(new Mc(x[A].minv,x[A].maxv,b))}const u=o.linearIndex.length;let c=null;const l=Math.min(n>>14,u-1),h=Math.min(r>>14,u-1);for(let d=l;d<=h;++d){const p=o.linearIndex[d];p&&(!c||p.compareTo(c)<0)&&(c=p)}return qA(f,c)}}const sz=21582659,uz=38359875;function fz(e,t){return e*2**t}function WA(e,t){return Math.floor(e/2**t)}class Xd extends QA{constructor(t){super(t),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t){const n=await this.parse();if(!n||!n.indices[t])return-1;const{stats:i}=n.indices[t];return i?i.lineCount:-1}async indexCov(){return[]}parseAuxData(t,n,r){if(r<30)return{};const i={};if(i.formatFlags=t.readInt32LE(n),i.coordinateType=i.formatFlags&65536?"zero-based-half-open":"1-based-closed",i.format={0:"generic",1:"SAM",2:"VCF"}[i.formatFlags&15],!i.format)throw new Error(`invalid Tabix preset format flags ${i.formatFlags}`);i.columnNumbers={ref:t.readInt32LE(n+4),start:t.readInt32LE(n+8),end:t.readInt32LE(n+12)},i.metaValue=t.readInt32LE(n+16),i.metaChar=i.metaValue?String.fromCharCode(i.metaValue):"",i.skipLines=t.readInt32LE(n+20);const a=t.readInt32LE(n+24);return Object.assign(i,this._parseNameBytes(t.subarray(n+28,n+28+a))),i}_parseNameBytes(t){let n=0,r=0;const i=[],a={};for(let o=0;o<t.length;o+=1)if(!t[o]){if(r<o){let s=t.toString("utf8",r,o);s=this.renameRefSeq(s),i[n]=s,a[s]=n}r=o+1,n+=1}return{refNameToId:a,refIdToName:i}}async _parse(t){const n={csi:!0,maxBlockSize:65536},r=await this.filehandle.readFile(t),i=await q0(r);if(i.readUInt32LE(0)===sz)n.csiVersion=1;else if(i.readUInt32LE(0)===uz)n.csiVersion=2;else throw new Error("Not a CSI file");this.minShift=i.readInt32LE(4),this.depth=i.readInt32LE(8),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const a=i.readInt32LE(12);a&&Object.assign(n,this.parseAuxData(i,16,a)),n.refCount=i.readInt32LE(16+a),n.indices=new Array(n.refCount);let o=16+a+4;for(let s=0;s<n.refCount;s+=1){await YA(t.signal);const f=i.readInt32LE(o);o+=4;const u={};let c;for(let l=0;l<f;l+=1){const h=i.readUInt32LE(o);if(h>this.maxBinNumber)c=this.parsePseudoBin(i,o+4),o+=4+8+4+16+16;else{const d=io(i,o+4);this._findFirstData(n,d);const p=i.readInt32LE(o+12);o+=16;const b=new Array(p);for(let x=0;x<p;x+=1){const A=io(i,o),D=io(i,o+8);o+=16,b[x]=new Mc(A,D,h)}u[h]=b}}n.indices[s]={binIndex:u,stats:c}}return n}parsePseudoBin(t,n){return{lineCount:VA(GA.fromBytesLE(Array.prototype.slice.call(t,n+28,n+36),!0))}}async blocksForRange(t,n,r,i={}){n<0&&(n=0);const a=await this.parse(i),o=a==null?void 0:a.indices[t];if(!o)return[];const s=this.reg2bins(n,r),f=[];for(const[u,c]of s)for(let l=u;l<=c;l++)if(o.binIndex[l]){const h=o.binIndex[l];for(let d=0;d<h.length;++d)f.push(new Mc(h[d].minv,h[d].maxv,l))}return qA(f,new HA(0,0))}reg2bins(t,n){t-=1,t<1&&(t=1),n>2**50&&(n=2**34),n-=1;let r=0,i=0,a=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;a-=3,i+=fz(1,r*3),r+=1){const s=i+WA(t,a),f=i+WA(n,a);if(f-s+o.length>this.maxBinNumber)throw new Error(`query ${t}-${n} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([s,f])}return o}}var Yr=kt.Buffer,Kd=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(Kd=new Int32Array(Kd));function XA(e){if(Yr.isBuffer(e))return e;var t=typeof Yr.alloc=="function"&&typeof Yr.from=="function";if(typeof e=="number")return t?Yr.alloc(e):new Yr(e);if(typeof e=="string")return t?Yr.from(e):new Yr(e);throw new Error("input must be buffer, number, or string, received "+typeof e)}function cz(e){var t=XA(4);return t.writeInt32BE(e,0),t}function Jd(e,t){e=XA(e),Yr.isBuffer(t)&&(t=t.readUInt32BE(0));for(var n=~~t^-1,r=0;r<e.length;r++)n=Kd[(n^e[r])&255]^n>>>8;return n^-1}function $d(){return cz(Jd.apply(null,arguments))}$d.signed=function(){return Jd.apply(null,arguments)},$d.unsigned=function(){return Jd.apply(null,arguments)>>>0};var lz=$d;const hz=Ma(lz);var eg,KA;function dz(){if(KA)return eg;KA=1;var e=function(r,i){return Object.prototype.hasOwnProperty.call(r,i)},t=function(r,i){return Object.prototype.propertyIsEnumerable.call(r,i)};function n(r){if(r==null)throw new TypeError("Cannot convert undefined or null to object");var i=[];for(var a in r)e(r,a)&&t(r,a)&&i.push([a,r[a]]);return i}return eg=n,eg}var gz=typeof Object.entries=="function"?Object.entries:dz();const pz=Ma(gz);class mz{constructor(t={}){if(!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=t.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(t,n){this.cache.set(t,n),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t)){const n=this.oldCache.get(t);return this._set(t,n),n}}set(t,n){return this.cache.has(t)?this.cache.set(t,n):this._set(t,n),this}has(t){return this.cache.has(t)||this.oldCache.has(t)}peek(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t))return this.oldCache.get(t)}delete(t){const n=this.cache.delete(t);return n&&this._size--,this.oldCache.delete(t)||n}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[t]of this)yield t}*values(){for(const[,t]of this)yield t}*[Symbol.iterator](){for(const t of this.cache)yield t;for(const t of this.oldCache){const[n]=t;this.cache.has(n)||(yield t)}}get size(){let t=0;for(const n of this.oldCache.keys())this.cache.has(n)||t++;return this._size+t}}var bz=mz;const yz=Ma(bz),nn={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048},JA="=ACMGRSVTWYHKDBN".split(""),iu="MIDNSHP=X???????".split("");class wz{constructor(t){this.data={},this._tagList=[],this._allTagsParsed=!1;const{bytes:n,fileOffset:r}=t,{byteArray:i,start:a}=n;this.data={},this.bytes=n,this._id=r,this._refID=i.readInt32LE(a+4),this.data.start=i.readInt32LE(a+8),this.flags=(i.readInt32LE(a+16)&4294901760)>>16}get(t){return this[t]?this.data[t]?this.data[t]:(this.data[t]=this[t](),this.data[t]):this._get(t.toLowerCase())}end(){return this.get("start")+this.get("length_on_ref")}seq_id(){return this._refID}_get(t){return t in this.data?this.data[t]:(this.data[t]=this._parseTag(t),this.data[t])}_tags(){this._parseAllTags();let t=["seq"];this.isSegmentUnmapped()||t.push("start","end","strand","score","qual","MQ","CIGAR","length_on_ref","template_length"),this.isPaired()&&t.push("next_segment_position","pair_orientation"),t=t.concat(this._tagList||[]),Object.keys(this.data).forEach(r=>{r[0]!=="_"&&r!=="next_seq_id"&&t.push(r)});const n={};return t.filter(r=>{if(r in this.data&&this.data[r]===void 0||r==="CG"||r==="cg")return!1;const i=r.toLowerCase(),a=n[i];return n[i]=!0,!a})}parent(){}children(){return this.get("subfeatures")}id(){return this._id}mq(){const t=(this.get("_bin_mq_nl")&65280)>>8;return t===255?void 0:t}score(){return this.get("mq")}qual(){var t;return(t=this.qualRaw())===null||t===void 0?void 0:t.join(" ")}qualRaw(){if(this.isSegmentUnmapped())return;const{start:t,byteArray:n}=this.bytes,r=t+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4+this.get("_seq_bytes"),i=this.get("seq_length");return n.subarray(r,r+i)}strand(){return this.isReverseComplemented()?-1:1}multi_segment_next_segment_strand(){if(!this.isMateUnmapped())return this.isMateReverseComplemented()?-1:1}name(){return this.get("_read_name")}_read_name(){const t=this.get("_l_read_name"),{byteArray:n,start:r}=this.bytes;return n.toString("ascii",r+36,r+36+t-1)}_parseTag(t){if(this._allTagsParsed)return;const{byteArray:n,start:r}=this.bytes;let i=this._tagOffset||r+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4+this.get("_seq_bytes")+this.get("seq_length");const a=this.bytes.end;let o;for(;i<a&&o!==t;){const s=String.fromCharCode(n[i],n[i+1]);o=s.toLowerCase();const f=String.fromCharCode(n[i+2]);i+=3;let u;switch(f){case"A":u=String.fromCharCode(n[i]),i+=1;break;case"i":u=n.readInt32LE(i),i+=4;break;case"I":u=n.readUInt32LE(i),i+=4;break;case"c":u=n.readInt8(i),i+=1;break;case"C":u=n.readUInt8(i),i+=1;break;case"s":u=n.readInt16LE(i),i+=2;break;case"S":u=n.readUInt16LE(i),i+=2;break;case"f":u=n.readFloatLE(i),i+=4;break;case"Z":case"H":for(u="";i<=a;){const c=n[i++];if(c===0)break;u+=String.fromCharCode(c)}break;case"B":{u="";const c=n[i++],l=String.fromCharCode(c),h=n.readInt32LE(i);if(i+=4,l==="i")if(s==="CG")for(let d=0;d<h;d++){const p=n.readInt32LE(i),b=p>>4,x=iu[p&15];u+=b+x,i+=4}else for(let d=0;d<h;d++)u+=n.readInt32LE(i),d+1<h&&(u+=","),i+=4;if(l==="I")if(s==="CG")for(let d=0;d<h;d++){const p=n.readUInt32LE(i),b=p>>4,x=iu[p&15];u+=b+x,i+=4}else for(let d=0;d<h;d++)u+=n.readUInt32LE(i),d+1<h&&(u+=","),i+=4;if(l==="s")for(let d=0;d<h;d++)u+=n.readInt16LE(i),d+1<h&&(u+=","),i+=2;if(l==="S")for(let d=0;d<h;d++)u+=n.readUInt16LE(i),d+1<h&&(u+=","),i+=2;if(l==="c")for(let d=0;d<h;d++)u+=n.readInt8(i),d+1<h&&(u+=","),i+=1;if(l==="C")for(let d=0;d<h;d++)u+=n.readUInt8(i),d+1<h&&(u+=","),i+=1;if(l==="f")for(let d=0;d<h;d++)u+=n.readFloatLE(i),d+1<h&&(u+=","),i+=4;break}default:console.warn(`Unknown BAM tag type '${f}', tags may be incomplete`),u=void 0,i=a}if(this._tagOffset=i,this._tagList.push(s),o===t)return u;this.data[o]=u}this._allTagsParsed=!0}_parseAllTags(){this._parseTag("")}_parseCigar(t){return t.match(/\d+\D/g).map(n=>[n.match(/\D/)[0].toUpperCase(),parseInt(n,10)])}isPaired(){return!!(this.flags&nn.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&nn.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&nn.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&nn.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&nn.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&nn.BAM_FMREVERSE)}isRead1(){return!!(this.flags&nn.BAM_FREAD1)}isRead2(){return!!(this.flags&nn.BAM_FREAD2)}isSecondary(){return!!(this.flags&nn.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&nn.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&nn.BAM_FDUP)}isSupplementary(){return!!(this.flags&nn.BAM_FSUPPLEMENTARY)}cigar(){if(this.isSegmentUnmapped())return;const{byteArray:t,start:n}=this.bytes,r=this.get("_n_cigar_op");let i=n+36+this.get("_l_read_name");const a=this.get("seq_length");let o="",s=0,f=t.readInt32LE(i),u=f>>4,c=iu[f&15];if(c==="S"&&u===a)return i+=4,f=t.readInt32LE(i),u=f>>4,c=iu[f&15],c!=="N"&&console.warn("CG tag with no N tag"),this.data.length_on_ref=u,this.get("CG");for(let l=0;l<r;++l)f=t.readInt32LE(i),u=f>>4,c=iu[f&15],o+=u+c,c!=="H"&&c!=="S"&&c!=="I"&&(s+=u),i+=4;return this.data.length_on_ref=s,o}_flags(){}length_on_ref(){return this.data.length_on_ref?this.data.length_on_ref:(this.get("cigar"),this.data.length_on_ref)}_n_cigar_op(){return this.get("_flag_nc")&65535}_l_read_name(){return this.get("_bin_mq_nl")&255}_seq_bytes(){return this.get("seq_length")+1>>1}getReadBases(){return this.seq()}seq(){const{byteArray:t,start:n}=this.bytes,r=n+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4,i=this.get("_seq_bytes"),a=this.get("seq_length");let o="",s=0;for(let f=0;f<i;++f){const u=t[r+f];o+=JA[(u&240)>>4],s++,s<a&&(o+=JA[u&15],s++)}return o}getPairOrientation(){if(!this.isSegmentUnmapped()&&!this.isMateUnmapped()&&this._refID===this._next_refid()){const t=this.isReverseComplemented()?"R":"F",n=this.isMateReverseComplemented()?"R":"F";let r=" ",i=" ";this.isRead1()?(r="1",i="2"):this.isRead2()&&(r="2",i="1");const a=[];return this.template_length()>0?(a[0]=t,a[1]=r,a[2]=n,a[3]=i):(a[2]=t,a[3]=r,a[0]=n,a[1]=i),a.join("")}return null}_bin_mq_nl(){return this.bytes.byteArray.readInt32LE(this.bytes.start+12)}_flag_nc(){return this.bytes.byteArray.readInt32LE(this.bytes.start+16)}seq_length(){return this.bytes.byteArray.readInt32LE(this.bytes.start+20)}_next_refid(){return this.bytes.byteArray.readInt32LE(this.bytes.start+24)}_next_pos(){return this.bytes.byteArray.readInt32LE(this.bytes.start+28)}template_length(){return this.bytes.byteArray.readInt32LE(this.bytes.start+32)}toJSON(){const t={};return Object.keys(this).forEach(n=>{n.charAt(0)==="_"||n==="bytes"||(t[n]=this[n])}),t}}function xz(e){const t=e.split(/\r?\n/),n=[];return t.forEach(r=>{const[i,...a]=r.split(/\t/),o=a.map(s=>{const[f,u]=s.split(":",2);return{tag:f,value:u}});i&&n.push({tag:i.substr(1),data:o})}),n}const Az=21840194,tg=1<<16;function ng(e){return[].concat(...e)}async function vz(e){const t=[];for await(const n of e)t.push(n);return t}class Ez{constructor({bamFilehandle:t,bamPath:n,bamUrl:r,baiPath:i,baiFilehandle:a,baiUrl:o,csiPath:s,csiFilehandle:f,csiUrl:u,fetchSizeLimit:c,chunkSizeLimit:l,yieldThreadTime:h=100,renameRefSeqs:d=p=>p}){if(this.featureCache=new id({cache:new yz({maxSize:50}),fill:async({chunk:p,opts:b},x)=>{const{data:A,cpositions:D,dpositions:I}=await this._readChunk({chunk:p,opts:{...b,signal:x}});return await this.readBamFeatures(A,D,I,p)}}),this.renameRefSeq=d,t)this.bam=t;else if(n)this.bam=new Br(n);else if(r)this.bam=new tr(r);else throw new Error("unable to initialize bam");if(f)this.index=new Xd({filehandle:f});else if(s)this.index=new Xd({filehandle:new Br(s)});else if(u)this.index=new Xd({filehandle:new tr(u)});else if(a)this.index=new ru({filehandle:a});else if(i)this.index=new ru({filehandle:new Br(i)});else if(o)this.index=new ru({filehandle:new tr(o)});else if(n)this.index=new ru({filehandle:new Br(`${n}.bai`)});else if(r)this.index=new ru({filehandle:new tr(`${r}.bai`)});else throw new Error("unable to infer index format");this.fetchSizeLimit=c||5e8,this.chunkSizeLimit=l||3e8,this.yieldThreadTime=h}async getHeader(t={}){const n=rz(t),r=await this.index.parse(n),i=r.firstDataLine?r.firstDataLine.blockPosition+65535:void 0;let a;if(i){const c=await this.bam.read(Buffer.alloc(i+tg),0,i+tg,0,n),{bytesRead:l}=c;if({buffer:a}=c,!l)throw new Error("Error reading header");l<i?a=a.subarray(0,l):a=a.subarray(0,i)}else a=await this.bam.readFile(n);const o=await q0(a);if(o.readInt32LE(0)!==Az)throw new Error("Not a BAM file");const s=o.readInt32LE(4);this.header=o.toString("utf8",8,8+s);const{chrToIndex:f,indexToChr:u}=await this._readRefSeqs(s+8,65535,n);return this.chrToIndex=f,this.indexToChr=u,xz(this.header)}async getHeaderText(t={}){return await this.getHeader(t),this.header}async _readRefSeqs(t,n,r={}){if(t>n)return this._readRefSeqs(t,n*2,r);const i=n+tg,{bytesRead:a,buffer:o}=await this.bam.read(Buffer.alloc(i),0,n,0,r);if(!a)throw new Error("Error reading refseqs from header");const s=await q0(o.subarray(0,Math.min(a,n))),f=s.readInt32LE(t);let u=t+4;const c={},l=[];for(let h=0;h<f;h+=1){const d=s.readInt32LE(u),p=this.renameRefSeq(s.toString("utf8",u+4,u+4+d-1)),b=s.readInt32LE(u+d+4);if(c[p]=h,l.push({refName:p,length:b}),u=u+8+d,u>s.length)return console.warn(`BAM header is very big. Re-fetching ${n} bytes.`),this._readRefSeqs(t,n*2,r)}return{chrToIndex:c,indexToChr:l}}async getRecordsForRange(t,n,r,i={viewAsPairs:!1,pairAcrossChr:!1,maxInsertSize:2e5}){return ng(await vz(this.streamRecordsForRange(t,n,r,i)))}async*streamRecordsForRange(t,n,r,i={}){const{signal:a}=i,o=this.chrToIndex&&this.chrToIndex[t];let s;if(!(o>=0))s=[];else if(s=await this.index.blocksForRange(o,n-1,r,i),!s)throw new Error("Error in index fetch");for(let u=0;u<s.length;u+=1){await YA(a);const c=s[u].fetchedSize();if(c>this.chunkSizeLimit)throw new Error(`Too many BAM features. BAM chunk size ${c} bytes exceeds chunkSizeLimit of ${this.chunkSizeLimit}`)}const f=s.map(u=>u.fetchedSize()).reduce((u,c)=>u+c,0);if(f>this.fetchSizeLimit)throw new Error(`data size of ${f.toLocaleString()} bytes exceeded fetch size limit of ${this.fetchSizeLimit.toLocaleString()} bytes`);yield*this._fetchChunkFeatures(s,o,n,r,i)}async*_fetchChunkFeatures(t,n,r,i,a){const{viewAsPairs:o=!1}=a,s=[];let f=!1;for(let u=0;u<t.length;u++){const c=t[u],l=await this.featureCache.get(c.toString(),{chunk:c,opts:a},a.signal),h=[];for(let d=0;d<l.length;d+=1){const p=l[d];if(p.seq_id()===n)if(p.get("start")>=i){f=!0;break}else p.get("end")>=r&&h.push(p)}if(s.push(h),yield h,f)break}ZA(a.signal),o&&(yield this.fetchPairs(n,s,a))}async fetchPairs(t,n,r){const{pairAcrossChr:i=!1,maxInsertSize:a=2e5}=r,o={},s={};n.map(h=>{const d={};for(let p=0;p<h.length;p++){const b=h[p].name(),x=h[p].id();d[b]||(d[b]=0),d[b]++,s[x]=1}pz(d).forEach(([p,b])=>{b===1&&(o[p]=!0)})});const f=[];n.map(h=>{for(let d=0;d<h.length;d++){const p=h[d],b=p.name(),x=p.get("start"),A=p._next_pos(),D=p._next_refid();o[b]&&(i||D===t&&Math.abs(x-A)<a)&&f.push(this.index.blocksForRange(D,A,A+1,r))}});const u=ng(await Promise.all(f)).sort().filter((h,d,p)=>!d||h.toString()!==p[d-1].toString()),c=u.map(h=>h.fetchedSize()).reduce((h,d)=>h+d,0);if(c>this.fetchSizeLimit)throw new Error(`data size of ${c.toLocaleString()} bytes exceeded fetch size limit of ${this.fetchSizeLimit.toLocaleString()} bytes`);const l=u.map(async h=>{const{data:d,cpositions:p,dpositions:b,chunk:x}=await this._readChunk({chunk:h,opts:r}),A=await this.readBamFeatures(d,p,b,x),D=[];for(let I=0;I<A.length;I+=1){const C=A[I];o[C.get("name")]&&!s[C.id()]&&D.push(C)}return D});return ng(await Promise.all(l))}async _readChunk({chunk:t,opts:n}){const r=t.fetchedSize(),{buffer:i,bytesRead:a}=await this.bam.read(Buffer.alloc(r),0,r,t.minv.blockPosition,n),{buffer:o,cpositions:s,dpositions:f}=await JB(i.subarray(0,Math.min(a,r)),t);return{data:o,cpositions:s,dpositions:f,chunk:t}}async readBamFeatures(t,n,r,i){let a=0;const o=[];let s=0,f=+Date.now();for(;a+4<t.length;){const u=t.readInt32LE(a),c=a+4+u-1;if(r){for(;a+i.minv.dataPosition>=r[s++];);s--}if(c<t.length){const l=new wz({bytes:{byteArray:t,start:a,end:c},fileOffset:n?n[s]*256+(a-r[s])+i.minv.dataPosition+1:hz.signed(t.slice(a,c))});o.push(l),this.yieldThreadTime&&+Date.now()-f>this.yieldThreadTime&&(await tz(1),f=+Date.now())}a=c+1}return o}async hasRefSeq(t){const n=this.chrToIndex&&this.chrToIndex[t];return this.index.hasRefSeq(n)}async lineCount(t){const n=this.chrToIndex&&this.chrToIndex[t];return this.index.lineCount(n)}async indexCov(t,n,r){await this.index.parse();const i=this.chrToIndex&&this.chrToIndex[t];return this.index.indexCov(i,n,r)}async blocksForRange(t,n,r,i){await this.index.parse();const a=this.chrToIndex&&this.chrToIndex[t];return this.index.blocksForRange(a,n,r,i)}}(function(){(function(e){(function(t){var n={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};function r(E){return E&&DataView.prototype.isPrototypeOf(E)}if(n.arrayBuffer)var i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(E){return E&&i.indexOf(Object.prototype.toString.call(E))>-1};function o(E){if(typeof E!="string"&&(E=String(E)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(E))throw new TypeError("Invalid character in header field name");return E.toLowerCase()}function s(E){return typeof E!="string"&&(E=String(E)),E}function f(E){var N={next:function(){var F=E.shift();return{done:F===void 0,value:F}}};return n.iterable&&(N[Symbol.iterator]=function(){return N}),N}function u(E){this.map={},E instanceof u?E.forEach(function(N,F){this.append(F,N)},this):Array.isArray(E)?E.forEach(function(N){this.append(N[0],N[1])},this):E&&Object.getOwnPropertyNames(E).forEach(function(N){this.append(N,E[N])},this)}u.prototype.append=function(E,N){E=o(E),N=s(N);var F=this.map[E];this.map[E]=F?F+", "+N:N},u.prototype.delete=function(E){delete this.map[o(E)]},u.prototype.get=function(E){return E=o(E),this.has(E)?this.map[E]:null},u.prototype.has=function(E){return this.map.hasOwnProperty(o(E))},u.prototype.set=function(E,N){this.map[o(E)]=s(N)},u.prototype.forEach=function(E,N){for(var F in this.map)this.map.hasOwnProperty(F)&&E.call(N,this.map[F],F,this)},u.prototype.keys=function(){var E=[];return this.forEach(function(N,F){E.push(F)}),f(E)},u.prototype.values=function(){var E=[];return this.forEach(function(N){E.push(N)}),f(E)},u.prototype.entries=function(){var E=[];return this.forEach(function(N,F){E.push([F,N])}),f(E)},n.iterable&&(u.prototype[Symbol.iterator]=u.prototype.entries);function c(E){if(E.bodyUsed)return Promise.reject(new TypeError("Already read"));E.bodyUsed=!0}function l(E){return new Promise(function(N,F){E.onload=function(){N(E.result)},E.onerror=function(){F(E.error)}})}function h(E){var N=new FileReader,F=l(N);return N.readAsArrayBuffer(E),F}function d(E){var N=new FileReader,F=l(N);return N.readAsText(E),F}function p(E){for(var N=new Uint8Array(E),F=new Array(N.length),Z=0;Z<N.length;Z++)F[Z]=String.fromCharCode(N[Z]);return F.join("")}function b(E){if(E.slice)return E.slice(0);var N=new Uint8Array(E.byteLength);return N.set(new Uint8Array(E)),N.buffer}function x(){return this.bodyUsed=!1,this._initBody=function(E){this._bodyInit=E,E?typeof E=="string"?this._bodyText=E:n.blob&&Blob.prototype.isPrototypeOf(E)?this._bodyBlob=E:n.formData&&FormData.prototype.isPrototypeOf(E)?this._bodyFormData=E:n.searchParams&&URLSearchParams.prototype.isPrototypeOf(E)?this._bodyText=E.toString():n.arrayBuffer&&n.blob&&r(E)?(this._bodyArrayBuffer=b(E.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):n.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(E)||a(E))?this._bodyArrayBuffer=b(E):this._bodyText=E=Object.prototype.toString.call(E):this._bodyText="",this.headers.get("content-type")||(typeof E=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n.searchParams&&URLSearchParams.prototype.isPrototypeOf(E)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},n.blob&&(this.blob=function(){var E=c(this);if(E)return E;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?c(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(h)}),this.text=function(){var E=c(this);if(E)return E;if(this._bodyBlob)return d(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(p(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},n.formData&&(this.formData=function(){return this.text().then(C)}),this.json=function(){return this.text().then(JSON.parse)},this}var A=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function D(E){var N=E.toUpperCase();return A.indexOf(N)>-1?N:E}function I(E,N){N=N||{};var F=N.body;if(E instanceof I){if(E.bodyUsed)throw new TypeError("Already read");this.url=E.url,this.credentials=E.credentials,N.headers||(this.headers=new u(E.headers)),this.method=E.method,this.mode=E.mode,this.signal=E.signal,!F&&E._bodyInit!=null&&(F=E._bodyInit,E.bodyUsed=!0)}else this.url=String(E);if(this.credentials=N.credentials||this.credentials||"same-origin",(N.headers||!this.headers)&&(this.headers=new u(N.headers)),this.method=D(N.method||this.method||"GET"),this.mode=N.mode||this.mode||null,this.signal=N.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&F)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(F)}I.prototype.clone=function(){return new I(this,{body:this._bodyInit})};function C(E){var N=new FormData;return E.trim().split("&").forEach(function(F){if(F){var Z=F.split("="),W=Z.shift().replace(/\+/g," "),Y=Z.join("=").replace(/\+/g," ");N.append(decodeURIComponent(W),decodeURIComponent(Y))}}),N}function T(E){var N=new u,F=E.replace(/\r?\n[\t ]+/g," ");return F.split(/\r?\n/).forEach(function(Z){var W=Z.split(":"),Y=W.shift().trim();if(Y){var be=W.join(":").trim();N.append(Y,be)}}),N}x.call(I.prototype);function B(E,N){N||(N={}),this.type="default",this.status=N.status===void 0?200:N.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in N?N.statusText:"OK",this.headers=new u(N.headers),this.url=N.url||"",this._initBody(E)}x.call(B.prototype),B.prototype.clone=function(){return new B(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new u(this.headers),url:this.url})},B.error=function(){var E=new B(null,{status:0,statusText:""});return E.type="error",E};var S=[301,302,303,307,308];B.redirect=function(E,N){if(S.indexOf(N)===-1)throw new RangeError("Invalid status code");return new B(null,{status:N,headers:{location:E}})},t.DOMException=e.DOMException;try{new t.DOMException}catch{t.DOMException=function(N,F){this.message=N,this.name=F;var Z=Error(N);this.stack=Z.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function z(E,N){return new Promise(function(F,Z){var W=new I(E,N);if(W.signal&&W.signal.aborted)return Z(new t.DOMException("Aborted","AbortError"));var Y=new XMLHttpRequest;function be(){Y.abort()}Y.onload=function(){var Ee={status:Y.status,statusText:Y.statusText,headers:T(Y.getAllResponseHeaders()||"")};Ee.url="responseURL"in Y?Y.responseURL:Ee.headers.get("X-Request-URL");var Ze="response"in Y?Y.response:Y.responseText;F(new B(Ze,Ee))},Y.onerror=function(){Z(new TypeError("Network request failed"))},Y.ontimeout=function(){Z(new TypeError("Network request failed"))},Y.onabort=function(){Z(new t.DOMException("Aborted","AbortError"))},Y.open(W.method,W.url,!0),W.credentials==="include"?Y.withCredentials=!0:W.credentials==="omit"&&(Y.withCredentials=!1),"responseType"in Y&&n.blob&&(Y.responseType="blob"),W.headers.forEach(function(Ee,Ze){Y.setRequestHeader(Ze,Ee)}),W.signal&&(W.signal.addEventListener("abort",be),Y.onreadystatechange=function(){Y.readyState===4&&W.signal.removeEventListener("abort",be)}),Y.send(typeof W._bodyInit>"u"?null:W._bodyInit)})}return z.polyfill=!0,e.fetch||(e.fetch=z,e.Headers=u,e.Request=I,e.Response=B),t.Headers=u,t.Request=I,t.Response=B,t.fetch=z,Object.defineProperty(t,"__esModule",{value:!0}),t})({})})(typeof self<"u"?self:Si)})();class Cz extends rc(Ia){constructor(n,r){const i={channel:"x",windowSize:2e4,...n};super(r,i.channel);Vn(this,"lastRequestId",0);Vn(this,"chrPrefixFixer",n=>n);if(this.params=i,!this.params.url)throw new Error("No URL provided for BamSource");const a=o=>new tr(ic(o,this.view.getBaseUrl()));this.bam=new Ez({bamFilehandle:a(this.params.url),baiFilehandle:a(this.params.indexUrl??this.params.url+".bai")}),this.headerPromise=this.bam.getHeader(),this.headerPromise.then(o=>{var u,c;const s=this.genome.hasChrPrefix(),f=(c=(u=this.bam.indexToChr)==null?void 0:u[0])==null?void 0:c.refName.startsWith("chr");s&&!f?this.chrPrefixFixer=l=>l.replace("chr",""):!s&&f&&(this.chrPrefixFixer=l=>"chr"+l)})}async onDomainChanged(n){const r=this.params.windowSize;if(n[1]-n[0]>r)return;await this.headerPromise;const i=this.quantizeInterval(n,r);if(this.checkAndUpdateLastInterval(i)){const a=this.genome.continuousToDiscreteChromosomeIntervals(i),o=await Promise.all(a.map(s=>this.bam.getRecordsForRange(this.chrPrefixFixer(s.chrom),s.startPos,s.endPos).then(f=>f.map(u=>({chrom:s.chrom,start:u.get("start"),end:u.get("end"),name:u.get("name"),MD:u.get("MD"),cigar:u.get("cigar"),mapq:u.get("mq"),strand:u.get("strand")===1?"+":"-"})))));this.publishData(o.flat())}}}function Sz(e,t){if(QT(e))return new VT(e,t);if(ZT(e))return new YT(e,t);if(qT(e))return new WT(e,t);if(Dz(e))return Fz(e.lazy,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(e))}function Dz(e){return"lazy"in e}function _z(e){return(e==null?void 0:e.type)=="axisTicks"}function Iz(e){return(e==null?void 0:e.type)=="axisGenome"}function Mz(e){return(e==null?void 0:e.type)=="indexedFasta"}function Tz(e){return(e==null?void 0:e.type)=="bigwig"}function Nz(e){return(e==null?void 0:e.type)=="bigbed"}function Bz(e){return(e==null?void 0:e.type)=="bam"}function Fz(e,t){if(_z(e))return new KT(e,t);if(Iz(e))return new JT(e,t);if(Mz(e))return new nF(e,t);if(Tz(e))return new QL(e,t);if(Nz(e))return new JL(e,t);if(Bz(e))return new Cz(e,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(e))}function kz(e){const t=Object.keys(e).filter(r=>typeof r=="string"),n=new Function("source","return { "+t.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
|
|
339
|
+
`)+" };");return n.properties=t,n}class Tc extends Ge{get behavior(){return $n}constructor(){super();const t=n=>{const r=kz(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=t,this.beginBatch=n=>{Kb(n)&&(this.handle=t),super.beginBatch(n)}}}function Lz(e){return"name"in e}class $A extends ys{constructor(n,r,i){super();dt(this,cu,void 0);this.provider=i,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){ho(this,cu,n),this.loadSynchronously()}loadSynchronously(){const n=Ie(this,cu)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(n))n.length>0&&(r=Oy(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}cu=new WeakMap;class ev{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(t,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(t)}_relayObserverCallback(t,n){const r=this._observers.get(n);if(r)for(const i of r)i(t)}addDataSource(t,n){this._dataSourcesByHost.set(n,t)}findDataSourceByKey(t){return this._dataSourcesByHost.get(t)}findNamedDataSource(t){let n,r=[];for(const[i,a]of this._dataSourcesByHost.entries())if(a instanceof $A&&t==a.identifier){if(n&&n!==a)throw new Error(`Found multiple instances of named data: ${t}. Data flow optimization is broken (it's a bug).`);n=a,r.push(i)}if(n)return{dataSource:n,hosts:r}}addCollector(t,n){this._collectorsByHost.set(n,t),t.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(t){return this._collectorsByHost.get(t)}initialize(){for(const t of this.dataSources)t.visit(n=>n.initialize())}}function zz(e,t){const n=[];let r;const i=t??new ev,a=[];function o(c,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(c),r=c,c}function s(c,l){return o(c,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function f(c,l){for(const h of c){let d;try{d=PT(h,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${h.type}" transform: ${p}`)}d.behavior&Tr&&s(new Tc),s(d)}}const u=c=>{if(n.push(r),c.spec.data){const l=Lz(c.spec.data)?new $A(c.spec.data,c,c.context.getNamedDataFromProvider):Sz(c.spec.data,c);r=l,i.addDataSource(l,c)}if(c.spec.transform&&f(c.spec.transform,c),c instanceof lt){if(!r)throw new Error("A unit view has no (inherited) data source");const l=Rz(c);if(l){a.push(l.rewrite);for(const d of l.transforms)s(d)}c.mark.isPickingParticipant()&&(s(new Tc),s(new zy({type:"identifier"})));const h=new Ny({type:"collect",groupby:c.getFacetFields(),sort:Oz(c,l==null?void 0:l.rewrittenEncoding)});o(h),i.addCollector(h,c)}Ty(c.spec)};return u.postOrder=c=>{r=n.pop()},e.visit(u),a.forEach(c=>c()),i}function Rz(e){var a;const t=[],n={},r=[];for(const[o,s]of Object.entries(e.getEncoding())){const f=o;rs(f)&&mm(s)&&r.push({channel:f,chromPosDef:s})}const i=Su(r,o=>da(o.channel),o=>o.chromPosDef.chrom);for(const[o,s]of i.entries())for(const[f,u]of s.entries()){const c=[],l=[],h=[];for(const{channel:d,chromPosDef:p}of u){const b=D=>D.replace(/[^A-Za-z0-9_]/g,""),x=["_linearized_",b(p.chrom),"_",b(p.pos)].join(""),A={...((a=e.spec.encoding)==null?void 0:a[d])??e.getEncoding()[d]??{},field:x};delete A.chrom,delete A.pos,!A.type&&p.type&&(A.type=p.type),n[d]=A,c.push(p.pos),h.push(p.offset??0),l.push(x)}t.push(new Tc),t.push(new By({type:"linearizeGenomicCoordinate",channel:o,chrom:f,pos:c,offset:h,as:l},e))}return t.length?{transforms:t,rewrittenEncoding:n,rewrite:()=>{e.spec.encoding={...e.spec.encoding,...n},Qb(e.mark,"encoding")}}:void 0}function Oz(e,t){var r;const n={...e.getEncoding(),...t}.x;if(Ht(n)&&(r=e.getScaleResolution("x"))!=null&&r.isZoomable()){if(es(n))return{field:n.field};if(!ts(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function tv(e,t=void 0){if(e.parent!==t)return!1;for(const n of e.children)if(!tv(n,e))return!1;return!0}function rg(e,t=!1){if(e.behavior&n0&&(t=!0),e instanceof Tc)if(t)t=!1;else{const n=e.children[0];e.excise(),n&&rg(n,t);return}e.behavior&$n&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)rg(e.children[n],t||r>1)}function Pz(e){const t=[...e._dataSourcesByHost.entries()],n=new Map;for(const r of t){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}e._dataSourcesByHost.clear();for(let[r,i]of t){const a=n.get(i.identifier);a&&(a.adoptChildrenOf(i),i=a),e.addDataSource(i,r)}}function Uz(e){if(rg(e),!tv(e))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function jz(e){for(const t of e.dataSources)Uz(t);Pz(e)}function Gz(e){e.visit(n=>{n instanceof lt&&n.resolve("scale")});const t=new Set;e.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&t.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);t.add(i)}}),e.visit(n=>{n instanceof lt&&n.resolve("axis")}),e.visit(n=>n.onScalesResolved())}function Hz(e){for(const t of ns){const n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}async function Qz(e,t,n){var o;if(!e.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(e));const r=Ou({baseURL:t}),i=e.import.url,a=JSON.parse(await r.load(i).catch(s=>{throw new Error(`Could not load imported view spec: ${i}
|
|
340
|
+
Reason: ${s.message}`)}));if(n.isViewSpec(a))return a.baseUrl=(o=i.match(/^[^?#]*\//))==null?void 0:o[0],a;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}async function nv(e){const t=[];e.visit(n=>{if(n instanceof vy)return t.push(n),ty});for(const n of t){const r=n.context,i=await Qz(n.spec,n.getBaseUrl(),r),a=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,a),await nv(a)}}class rv{constructor(t){this.globalOptions=t}pushView(t,n){}popView(t){}renderMark(t,n){}}class iv extends rv{constructor(t,n){super(t),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(t,n){this.views.add(t),this.coords=n}renderMark(t,n){if(this.globalOptions.picking&&!t.isPickingParticipant())return;const r=t.render(n);r&&this.buffer.push({mark:t,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const t=this.webGLHelper.gl,n=this.globalOptions.picking;t.bindFramebuffer(t.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&t.bindFramebuffer(t.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let t=!0,n=!0;const r=o=>()=>{t&&o()},i=o=>()=>{t&&n&&o()},a=Su(this.buffer,o=>o.mark);for(const[o,s]of a.entries()){if(!o.isReady())continue;this.batch.push(()=>{t=o.unitView.getEffectiveOpacity()>0}),this.batch.push(...o.prepareRender(this.globalOptions).map(u=>r(u)));let f;for(const u of s){const c=u.coords;c.equals(f)||this.batch.push(r(()=>{n=o.setViewport(c,u.clipRect)})),this.batch.push(i(u.callback)),f=u.coords}}}}class Vz extends rv{constructor(...t){super({}),this.contexts=t}pushView(t,n){for(const r of this.contexts)r.pushView(t,n)}popView(t){for(const n of this.contexts)n.popView(t)}renderMark(t,n){for(const r of this.contexts)r.renderMark(t,n)}}class Zz{constructor(t,n){this.point=t,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class Yz{constructor(t,n){this.x=t,this.y=n}equals(t){return t?t===this||t.x===this.x&&t.y===this.y:!1}}const qz=e=>new Promise(t=>setTimeout(t,e));function Wz(e){const t=e.requestAnimationFrame||window.requestAnimationFrame,n=e.signal,r=()=>new Promise((i,a)=>{if(n!=null&&n.aborted)return a("aborted");const o=performance.now(),s=o+(e.duration||1e3),f=typeof e.from=="number"?e.from:0,u=typeof e.to=="number"?e.to:1,c=e.easingFunction||(b=>b),l=b=>(b-o)/(s-o),h=b=>b*(u-f)+f,d=b=>Math.max(0,Math.min(1,b)),p=b=>{n!=null&&n.aborted?a("aborted"):(e.onUpdate(h(c(d(l(b))))),b<s?t(p):(e.onUpdate(h(c(1))),i()))};t(p)});return e.delay?n!=null&&n.aborted?Promise.reject("aborted"):qz(e.delay).then(r):r()}class Xz{constructor(t){this._renderCallback=t,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(t){this.cancelTransition(t),this.transitions.push(t),this.requestRender()}cancelTransition(t){const n=this.transitions.indexOf(t);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(t=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(t);this._renderCallback(t)}))}transition(t){return Wz({requestAnimationFrame:n=>this.requestTransition(n),...t})}}function av(){const e=t=>t;return e.invert=t=>t,e.copy=av,e.invertRange=()=>{},e}class Kz{constructor(t){this.genomes=new Map,this.genomeSpy=t}async initialize(t){const n=new k6(t);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(t){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(t){const n=this.genomes.get(t);if(!n)throw new Error(`No genome with the name ${t} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const Jz="data:image/png;base64,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",$z={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class e9{constructor(t){this._webGLHelper=t,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new ei([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:$h(Fy),texture:this._createTextureNow(Jz)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(t,n="normal",r="regular"){if(ze(r)&&(r=$z[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:t,style:n,weight:r};let a=this._fonts.get(i);return a||(a={metrics:void 0,texture:void 0},this._fonts.set(i,a),this._promises.push(this._loadFontEntry(a,i))),a}async _loadFontEntry(t,n){try{const r=await this._loadMetadata(n.family),i=n9(r,n),a=this.fontRepository+ov(n.family)+"/"+i.replace(/\.\w+/,""),o=this._createTexture(a+".png"),s=this._loadFont(a+".json");t.texture=await o,t.metrics=await s}catch(r){console.log("Cannot load font. Using default.",r),t.metrics=this._defaultFontEntry.metrics,t.texture=this._defaultFontEntry.texture}}_loadFont(t){let n=this._fontPromises.get(t);return n||(n=fetch(t).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>$h(r)),this._fontPromises.set(t,n)),n}_loadMetadata(t){const n=ov(t);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>t9(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(t){const n=this._webGLHelper.gl;return new Promise((r,i)=>{cs(n,{src:t,min:n.LINEAR},(a,o,s)=>{a?i(a):r(o)})})}_createTextureNow(t){const n=this._webGLHelper.gl;let r;const i=new Promise((a,o)=>{r=cs(n,{src:t,min:n.LINEAR},(s,f,u)=>{s?o(s):a(f)})});return this._promises.push(i),r}}function ov(e){return e.toLowerCase().replaceAll(/[^\w]/g,"")}function t9(e){const t=e.split(`
|
|
341
|
+
`),n=[];let r;for(const i of t)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(n.push(r),r=void 0),r){let a=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(a){const o=a[1];r[o]=a[2]}if(a=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),a){const o=a[1];r[o]=+a[2]}}return n}function n9(e,t){let n,r=Number.POSITIVE_INFINITY;for(const i of e)if(t.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&t.style==i.style){const a=Math.abs(t.weight-i.weight);a<r&&(r=a,n=i)}return n==null?void 0:n.filename}function r9(e,t){const n=[];let r;for(const i of e.split(`
|
|
342
|
+
`))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class i9{constructor(t,n){this.animator=t,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(t,n){if(this.disabled){n(t);return}t*this.momentum<0?this.momentum=0:Math.abs(t)>this.accelerationThreshold?this.momentum=Yv([this.momentum,t],this.acceleration):this.momentum=t,this.callback=n,this.loop||this.animate()}animate(t){this.callback(this.momentum);const n=t-this.timestamp||0;this.timestamp=t;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function a9(e){const t={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in e){const a=i;!r.includes(i)&&n.includes(typeof e[a])&&(t[a]=e[a])}return t}const sv=new Map;async function o9(e,t,n){const r=e.symbol;let i=sv.get(r)??await f9(e.symbol);return i?(sv.set(r,i),qn`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function s9(e){console.log("Searching: "+e);const t={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${e}[GENE]&sort=relevance&retmode=json`,t).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,t).then(o=>o.json())).result[r]:null}const u9=Vd(s9,500);function f9(e){return u9(e)}const c9=nt(".4~r"),l9=nt(".4~e");function h9(e){return e===null?qn`<span class="na">NA</span>`:ze(e)?e.substring(0,30):Number.isInteger(e)?""+e:vt(e)?Math.abs(e)>Math.pow(10,8)||Math.abs(e)<Math.pow(10,-8)?l9(e):c9(e):xu(e)?e?"True":"False":"?"+typeof e+" "+e}async function d9(e,t,n){const r=(f,u)=>{var c;for(const[l,h]of Object.entries(t.encoders))if((c=h==null?void 0:h.accessor)!=null&&c.fields.includes(f))switch(l){case"color":case"fill":case"stroke":return qn`<span class="color-legend" style="${`background-color: ${h(u)}`}"></span>`}return""},i=Object.entries(e).filter(([f,u])=>!f.startsWith("_"));if(i.length===0)return;const a=qn`<table class="attributes">${i.map(([f,u])=>qn`<tr><th>${f}</th><td>${h9(u)} ${r(f,e)}</td></tr>`)}</table>`,o=t.unitView.getTitleText(),s=o?qn`<div class="title"><strong>${o}</strong></div>`:"";return qn`${s}${a}`}class g9 extends My{constructor(t,n){super({vconcat:[]},t,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}ge("index",vl,["continuous"]),ge("locus",DC,["continuous"]),ge("null",av,[]),Ep("fasta",r9);class uv{constructor(t,n,r={}){this.container=t,this.spec=n,this.accessorFactory=new hD,this.viewFactory=new dT,this.namedDataProviders=[],this.animator=new Xz(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new i9(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this._extraBroadcastListeners=new Map,this.tooltipHandlers={default:d9,refseqgene:o9,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(t){this.namedDataProviders.unshift(t)}getNamedDataFromProvider(t){for(const n of this.namedDataProviders){const r=n(t);if(r)return r}}updateNamedData(t,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(t);if(!r)throw new Error("No such named data source: "+t);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(a=>{for(const o of Object.values(a.resolutions.scale))o.reconfigure()});this.animator.requestRender()}broadcast(t,n){var i;const r={type:t,payload:n};this.viewRoot.visit(a=>a.handleBroadcast(r)),(i=this._extraBroadcastListeners.get(t))==null||i.forEach(a=>a(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new MM(this.container,()=>{if(this.viewRoot){const t=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(t.width),height:n(t.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new V4(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[t,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(t,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new Kz(this),await this.genomeStore.initialize(this.spec.genome));const t=this,n={dataFlow:new ev,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new e9(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(s,f)=>{document.addEventListener(s,f);let u=this._keyboardListeners.get(s);u||(u=[],this._keyboardListeners.set(s,u)),u.push(f)},addBroadcastListener(s,f){const u=t._extraBroadcastListeners;let c=u.get(s);c||(c=new Set,u.set(s,c)),c.add(f)},removeBroadcastListener(s,f){var c;(c=t._extraBroadcastListeners.get(s))==null||c.delete(f)},isViewConfiguredVisible:t.viewVisibilityPredicate,isViewSpec:s=>t.viewFactory.isViewSpec(s),createView:function(s,f,u){return t.viewFactory.createView(s,n,f,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(s=>r.datasets[s]),this.viewRoot=n.createView(r,null,"viewRoot"),await nv(this.viewRoot),(this.viewRoot instanceof lt||this.viewRoot instanceof Nr)&&(this.viewRoot=new g9(n,this.viewRoot)),Gz(this.viewRoot),Hz(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof lt&&i.push(s)});const a=zz(this.viewRoot,n.dataFlow);jz(a),this.broadcast("dataFlowBuilt",a),a.dataSources.forEach(s=>console.log(s.subtreeToString())),i.forEach(s=>s.mark.initializeEncoders());const o=Promise.all(i.map(s=>s.mark.initializeGraphics()));for(const s of i)a.addObserver(f=>{s.mark.initializeData(),s.mark.updateGraphicsData()},s);await n.fontManager.waitUntilReady(),a.initialize(),await Promise.all(a.dataSources.map(s=>s.load())),this.viewRoot.visit(s=>{for(const f of Object.values(s.resolutions.scale))f.reconfigure()}),this.broadcast("dataLoaded"),await o,this.viewRoot.visit(s=>{for(const f of Object.values(s.resolutions.scale))this._glHelper.createRangeTexture(f)});for(const s of i)s.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(s=>kf(s,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(t){const n=`${t.view?`At "${t.view.getPathString()}": `:""}${t.toString()}`;return console.error(t.stack),p9(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const t=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const a=t.getBoundingClientRect(),o=new Yz(r.clientX-a.left-t.clientLeft,r.clientY-a.top-t.clientTop),s=f=>{this.viewRoot.propagateInteractionEvent(new Zz(o,f)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(o.x,o.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const f=r;if(Math.abs(f.deltaX)>Math.abs(f.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=a9(f);this._wheelInertia.setMomentum(f.deltaY*(f.deltaMode?80:1),c=>{const l=new WheelEvent("wheel",{...u,deltaMode:0,deltaX:0,deltaY:c});s(l)}),f.preventDefault();return}}if(r.type=="click"){const f=this._currentHover?{type:r.type,viewPath:this._currentHover.mark.unitView.getAncestors().map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(f))}s(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>t.addEventListener(r,n)),t.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),t.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(t,n){var a;const r=this._glHelper.readPickingPixel(t,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((a=this._currentHover)==null?void 0:a.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(o=>{if(o instanceof lt){if(o.mark.isPickingParticipant()){const s=o.mark.encoders.uniqueId.accessor;o.getCollector().visitData(f=>{s(f)==i&&(this._currentHover={mark:o.mark,datum:f,uniqueId:i})})}if(this._currentHover)return ms}}),this._currentHover){const o=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{if(!o.isPickingParticipant())return;const f=o.properties.tooltip;if(f!==null){const u=(f==null?void 0:f.handler)??"default",c=this.tooltipHandlers[u];if(!c)throw new Error("No such tooltip handler: "+u);return c(s,o,f==null?void 0:f.params)}})}}updateTooltip(t,n){if(!this._tooltipUpdateRequested||!t)this.tooltip.updateWithDatum(t,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const t=this.viewRoot;if(!t)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new iv({picking:!1},this._glHelper),this._pickingContext=new iv({picking:!0},this._glHelper),t.render(new Vz(this._renderingContext,this._pickingContext),_a.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var t;(t=this._renderingContext)==null||t.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const t=[];return this.viewRoot.visit(n=>{n instanceof lt&&n.getAccessor("search")&&t.push(n)}),t}getNamedScaleResolutions(){const t=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&t.set(r.name,r)}),t}}function p9(e,t){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=t,n.appendChild(r),e.appendChild(n)}const m9="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+",b9="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";async function y9(e,t,n={}){let r;if(ze(e)){if(r=document.querySelector(e),!r)throw new Error(`No such element: ${e}`)}else if(e instanceof HTMLElement)r=e;else throw new Error(`Invalid element: ${e}`);let i;try{const a=on(t)?t:await fv(t);if(a.baseUrl??(a.baseUrl=""),a.width??(a.width="container"),a.padding??(a.padding=10),r==document.body){const o=document.createElement("div");o.style.position="fixed",o.style.inset="0",o.style.overflow="hidden",r.appendChild(o),r=o}i=new uv(r,a,n),w9(i,n),await i.launch()}catch(a){r.innerText=a.toString(),console.error(a)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(a,o){const s=i._eventListeners;let f=s.get(a);f||(f=new Set,s.set(a,f)),f.add(o)},removeEventListener(a,o){var f;(f=i._eventListeners.get(a))==null||f.delete(o)},getScaleResolutionByName(a){return i.getNamedScaleResolutions().get(a)},updateNamedData:i.updateNamedData.bind(i)}}function w9(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function fv(e){let t;try{t=JSON.parse(await Ou().load(e))}catch(n){throw new Error(`Could not load or parse configuration: ${e}, reason: ${n.message}`)}if(!t.baseUrl){const n=e.match(/^[^?#]*\//);t.baseUrl=n&&n[0]||"./"}return t}re.GenomeSpy=uv,re.embed=y9,re.favIcon=b9,re.html=qn,re.icon=m9,re.loadSpec=fv,Object.defineProperty(re,Symbol.toStringTag,{value:"Module"})});
|