@genome-spy/app 0.14.0 → 0.16.0
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/LICENSE +24 -0
- package/dist/index.js +70 -68
- package/dist/style.css +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
var
|
2
|
-
\r]`),n=t.charCodeAt(0);function r(l,h){var d,p,g=i(l,function(m,y){if(d)return d(m,y-1);p=m,d=h?
|
3
|
-
`)}function a(l,h){return h==null&&(h=
|
1
|
+
var zI=Object.defineProperty,RI=Object.defineProperties;var UI=Object.getOwnPropertyDescriptors;var p1=Object.getOwnPropertySymbols;var jI=Object.prototype.hasOwnProperty,GI=Object.prototype.propertyIsEnumerable;var g1=(re,Z,He)=>Z in re?zI(re,Z,{enumerable:!0,configurable:!0,writable:!0,value:He}):re[Z]=He,T=(re,Z)=>{for(var He in Z||(Z={}))jI.call(Z,He)&&g1(re,He,Z[He]);if(p1)for(var He of p1(Z))GI.call(Z,He)&&g1(re,He,Z[He]);return re},U=(re,Z)=>RI(re,UI(Z));(function(re,Z){typeof exports=="object"&&typeof module!="undefined"?Z(exports):typeof define=="function"&&define.amd?define(["exports"],Z):(re=typeof globalThis!="undefined"?globalThis:re||self,Z(re.genomeSpyApp={}))})(this,function(re){"use strict";function Z(t,e,n){return t.fields=e||[],t.fname=n,t}function He(t){return t==null?null:t.fname}function Nl(t){return t==null?null:t.fields}function m1(t){return t.length===1?y1(t[0]):A1(t)}const y1=t=>function(e){return e[t]},A1=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function te(t){throw Error(t)}function b1(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,c;t=t+"";function u(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(c=t[a],c==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(c===r)u(),r=null,i=-1;else{if(r)continue;s===i&&c==='"'||s===i&&c==="'"?(s=a+1,r=c):c==="."&&!i?a>s?u():s=a+1:c==="["?(a>s&&u(),i=s=a+1):c==="]"&&(i||te("Access path missing open bracket: "+t),i>0&&u(),i=0,s=a+1)}return i&&te("Access path missing closing bracket: "+t),r&&te("Access path missing closing quote: "+t),a>s&&(a++,u()),e}function Vi(t,e,n){const r=b1(t);return t=r.length===1?r[0]:t,Z((n&&n.get||m1)(r),[t],e||t)}Vi("id");const _i=Z(t=>t,[],"identity");Z(()=>0,[],"zero"),Z(()=>1,[],"one"),Z(()=>!0,[],"true"),Z(()=>!1,[],"false");var Qe=Array.isArray;function Be(t){return t===Object(t)}function Je(t){return t[t.length-1]}function wr(t){return t==null||t===""?null:+t}const Ll=t=>e=>t*Math.exp(e),Ol=t=>e=>Math.log(t*e),x1=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),v1=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,Yi=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function zs(t,e,n,r){const i=n(t[0]),o=n(Je(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function w1(t,e){return zs(t,e,wr,_i)}function E1(t,e){var n=Math.sign(t[0]);return zs(t,e,Ol(n),Ll(n))}function S1(t,e,n){return zs(t,e,Yi(n),Yi(1/n))}function Wi(t,e,n,r,i){const o=r(t[0]),s=r(Je(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function Xi(t,e,n){return Wi(t,e,n,wr,_i)}function kl(t,e,n){const r=Math.sign(t[0]);return Wi(t,e,n,Ol(r),Ll(r))}function Rs(t,e,n,r){return Wi(t,e,n,Yi(r),Yi(1/r))}function D1(t,e,n,r){return Wi(t,e,n,x1(r),v1(r))}function Us(t){return t!=null?Qe(t)?t:[t]:[]}function C1(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function Ce(t){return typeof t=="function"}const M1="descending";function Bl(t,e,n){n=n||{},e=Us(e)||[];const r=[],i=[],o={},s=n.comparator||I1;return Us(t).forEach((a,c)=>{a!=null&&(r.push(e[c]===M1?-1:1),i.push(a=Ce(a)?a:Vi(a,null,n)),(Nl(a)||[]).forEach(u=>o[u]=1))}),i.length===0?null:Z(s(i,r),Object.keys(o))}const Fl=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),I1=(t,e)=>t.length===1?T1(t[0],e[0]):N1(t,e,t.length),T1=(t,e)=>function(n,r){return Fl(t(n),t(r))*e},N1=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=Fl(o(r),o(i));return s*e[a]});function L1(t){return Ce(t)?t:()=>t}function js(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const O1=Object.prototype.hasOwnProperty;function an(t,e){return O1.call(t,e)}function qi(t){return typeof t=="boolean"}function k1(t){return Object.prototype.toString.call(t)==="[object Date]"}function B1(t){return t&&Ce(t[Symbol.iterator])}function se(t){return typeof t=="number"}function ie(t){return typeof t=="string"}function F1(t,e){const n=t[0],r=Je(t),i=+e;return i?i===1?r:n+i*(r-n):n}function Zi(t){return t&&Je(t)-t[0]||0}function Ki(t){return Qe(t)?"["+t.map(Ki)+"]":Be(t)||ie(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function P1(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const z1=t=>se(t)||k1(t)?t:Date.parse(t);function R1(t,e){return e=e||z1,t==null||t===""?null:e(t)}function U1(t){return t==null||t===""?null:t+""}function Ji(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var Pl={},Gs={},Hs=34,Er=10,Qs=13;function zl(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function j1(t,e){var n=zl(t);return function(r,i){return e(n(r),i,t)}}function Rl(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Me(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function G1(t){return t<0?"-"+Me(-t,6):t>9999?"+"+Me(t,6):Me(t,4)}function H1(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":G1(t.getUTCFullYear())+"-"+Me(t.getUTCMonth()+1,2)+"-"+Me(t.getUTCDate(),2)+(i?"T"+Me(e,2)+":"+Me(n,2)+":"+Me(r,2)+"."+Me(i,3)+"Z":r?"T"+Me(e,2)+":"+Me(n,2)+":"+Me(r,2)+"Z":n||e?"T"+Me(e,2)+":"+Me(n,2)+"Z":"")}function Ul(t){var e=new RegExp('["'+t+`
|
2
|
+
\r]`),n=t.charCodeAt(0);function r(l,h){var d,p,g=i(l,function(m,y){if(d)return d(m,y-1);p=m,d=h?j1(m,h):zl(m)});return g.columns=p||[],g}function i(l,h){var d=[],p=l.length,g=0,m=0,y,v=p<=0,w=!1;l.charCodeAt(p-1)===Er&&--p,l.charCodeAt(p-1)===Qs&&--p;function S(){if(v)return Gs;if(w)return w=!1,Pl;var A,x=g,E;if(l.charCodeAt(x)===Hs){for(;g++<p&&l.charCodeAt(g)!==Hs||l.charCodeAt(++g)===Hs;);return(A=g)>=p?v=!0:(E=l.charCodeAt(g++))===Er?w=!0:E===Qs&&(w=!0,l.charCodeAt(g)===Er&&++g),l.slice(x+1,A-1).replace(/""/g,'"')}for(;g<p;){if((E=l.charCodeAt(A=g++))===Er)w=!0;else if(E===Qs)w=!0,l.charCodeAt(g)===Er&&++g;else if(E!==n)continue;return l.slice(x,A)}return v=!0,l.slice(x,p)}for(;(y=S())!==Gs;){for(var b=[];y!==Pl&&y!==Gs;)b.push(y),y=S();h&&(b=h(b,m++))==null||d.push(b)}return d}function o(l,h){return l.map(function(d){return h.map(function(p){return f(d[p])}).join(t)})}function s(l,h){return h==null&&(h=Rl(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
|
3
|
+
`)}function a(l,h){return h==null&&(h=Rl(l)),o(l,h).join(`
|
4
4
|
`)}function c(l){return l.map(u).join(`
|
5
|
-
`)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?j1(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var G1=Rl(" "),H1=G1.parseRows;function Q1(t){return t}function V1(t){if(t==null)return Q1;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,c){c||(e=n=0);var u=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;u<f;)l[u]=a[u],++u;return l}}function _1(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Y1(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Ul(t,n)})}:Ul(t,e)}function Ul(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=jl(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function jl(t,e){var n=V1(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],d=0,p=h.length;d<p;++d)l.push(n(h[d],d));f<0&&_1(l,p)}function o(f){return n(f)}function s(f){for(var l=[],h=0,d=f.length;h<d;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(a)}function u(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":h=o(f.coordinates);break;case"MultiPoint":h=f.coordinates.map(o);break;case"LineString":h=s(f.arcs);break;case"MultiLineString":h=f.arcs.map(s);break;case"Polygon":h=c(f.arcs);break;case"MultiPolygon":h=f.arcs.map(c);break;default:return null}return{type:l,coordinates:h}}return u(e)}function W1(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=u,e[f]=h)}),e.forEach(function(u){var f=a(u),l=f[0],h=f[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 g=p===d?d:d.concat(p);r[g.start=d.start]=i[g.end=p.end]=g}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 m=p===d?d:p.concat(d);r[m.start=p.start]=i[m.end=d.end]=m}else r[d.start]=i[d.end]=d;else d=[u],r[d.start=l]=i[d.end=h]=d});function a(u){var f=t.arcs[u<0?~u:u],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(d){h[0]+=d[0],h[1]+=d[1]})):h=f[f.length-1],u<0?[h,l]:[l,h]}function c(u,f){for(var l in u){var h=u[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(d){n[d<0?~d:d]=1}),o.push(h)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function X1(t){return jl(t,q1.apply(this,arguments))}function q1(t,e,n){var r,i,o;if(arguments.length>1)r=Z1(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:W1(t,r)}}function Z1(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function c(l){l.forEach(a)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(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 Fn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Vs(t){let e=t,n=t;t.length===1&&(e=(s,a)=>t(s)-a,n=K1(t));function r(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)<0?c=f+1:u=f}return c}function i(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)>0?u=f:c=f+1}return c}function o(s,a,c,u){c==null&&(c=0),u==null&&(u=s.length);const f=r(s,a,c,u-1);return f>c&&e(s[f-1],a)>-e(s[f],a)?f-1:f}return{left:r,center:o,right:i}}function K1(t){return(e,n)=>Fn(t(e),n)}function Gl(t){return t===null?NaN:+t}const _s=Vs(Fn).right;Vs(Gl).center;var Dr=_s;class J1 extends Map{constructor(e,n=ty){super();if(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(Hl(this,e))}has(e){return super.has(Hl(this,e))}set(e,n){return super.set($1(this,e),n)}delete(e){return super.delete(ey(this,e))}}function Hl({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function $1({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function ey({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(n),t.delete(r)),n}function ty(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Ql(t){return t}function ny(t,...e){return ry(t,Ql,Ql,e)}function ry(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new J1,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}function iy(t,e){return Array.from(e,n=>t[n])}function oy(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n=Fn]=e;if(n.length===1||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const s of e){const a=Fn(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>Fn(n[i],n[o]))),iy(t,r)}return t.sort(n)}var Ys=Math.sqrt(50),Ws=Math.sqrt(10),Xs=Math.sqrt(2);function qs(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=Vl(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function Vl(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Ys?10:o>=Ws?5:o>=Xs?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ys?10:o>=Ws?5:o>=Xs?2:1)}function Zi(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Ys?i*=10:o>=Ws?i*=5:o>=Xs&&(i*=2),e<t?-i:i}function _l(t,e,n=Gl){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,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Ki(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,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function sy(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Ji(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 Pn(t){return t=Ji(Math.abs(t)),t?t[1]:NaN}function ay(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(n.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function cy(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var uy=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function zn(t){if(!(e=uy.exec(t)))throw new Error("invalid format: "+t);var e;return new Zs({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]})}zn.prototype=Zs.prototype;function Zs(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+""}Zs.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 ly(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 Yl;function fy(t,e){var n=Ji(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Yl=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Ji(t,Math.max(0,e+o-1))[0]}function Wl(t,e){var n=Ji(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")}var Xl={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:sy,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)=>Wl(t*100,e),r:Wl,s:fy,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function ql(t){return t}var Zl=Array.prototype.map,Kl=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function hy(t){var e=t.grouping===void 0||t.thousands===void 0?ql:ay(Zl.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+"",o=t.numerals===void 0?ql:cy(Zl.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=zn(l);var h=l.fill,d=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,w=l.comma,x=l.precision,E=l.trim,b=l.type;b==="n"?(w=!0,b="g"):Xl[b]||(x===void 0&&(x=12),E=!0,b="g"),(m||h==="0"&&d==="=")&&(m=!0,h="0",d="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",v=g==="$"?r:/[%p]/.test(b)?s:"",D=Xl[b],L=/[defgprs%]/.test(b);x=x===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function B(C){var k=A,P=v,H,qe,Re;if(b==="c")P=D(C)+P,C="";else{C=+C;var Ue=C<0||1/C<0;if(C=isNaN(C)?c:D(Math.abs(C),x),E&&(C=ly(C)),Ue&&+C==0&&p!=="+"&&(Ue=!1),k=(Ue?p==="("?p:a:p==="-"||p==="("?"":p)+k,P=(b==="s"?Kl[8+Yl/3]:"")+P+(Ue&&p==="("?")":""),L){for(H=-1,qe=C.length;++H<qe;)if(Re=C.charCodeAt(H),48>Re||Re>57){P=(Re===46?i+C.slice(H+1):C.slice(H))+P,C=C.slice(0,H);break}}}w&&!m&&(C=e(C,1/0));var z=k.length+C.length+P.length,ne=z<y?new Array(y-z+1).join(h):"";switch(w&&m&&(C=e(ne+C,ne.length?y-P.length:1/0),ne=""),d){case"<":C=k+C+P+ne;break;case"=":C=k+ne+C+P;break;case"^":C=ne.slice(0,z=ne.length>>1)+k+C+P+ne.slice(z);break;default:C=ne+k+C+P;break}return o(C)}return B.toString=function(){return l+""},B}function f(l,h){var d=u((l=zn(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(Pn(h)/3)))*3,g=Math.pow(10,-p),m=Kl[8+p/3];return function(y){return d(g*y)+m}}return{format:u,formatPrefix:f}}var $i,Rn,Ks;dy({thousands:",",grouping:[3],currency:["$",""]});function dy(t){return $i=hy(t),Rn=$i.format,Ks=$i.formatPrefix,$i}function Jl(t){return Math.max(0,-Pn(Math.abs(t)))}function $l(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Pn(e)/3)))*3-Pn(Math.abs(t)))}function ef(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Pn(e)-Pn(t))+1}var Js=new Date,$s=new Date;function ue(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var c=[],u;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return c;do c.push(u=new Date(+o)),e(o,a),t(o);while(u<o&&o<s);return c},i.filter=function(o){return ue(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return Js.setTime(+o),$s.setTime(+s),t(Js),t($s),Math.floor(n(Js,$s))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o==0}:function(s){return i.count(0,s)%o==0}):i}),i}var ea=ue(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ea.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?ue(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ea};var ta=ea;const xt=1e3,Ve=xt*60,vt=Ve*60,cn=vt*24,na=cn*7,tf=cn*30,ra=cn*365;var py=ue(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*xt)},function(t,e){return(e-t)/xt},function(t){return t.getUTCSeconds()}),Ft=py,gy=ue(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*xt)},function(t,e){t.setTime(+t+e*Ve)},function(t,e){return(e-t)/Ve},function(t){return t.getMinutes()}),ia=gy,my=ue(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*xt-t.getMinutes()*Ve)},function(t,e){t.setTime(+t+e*vt)},function(t,e){return(e-t)/vt},function(t){return t.getHours()}),oa=my,yy=ue(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ve)/cn,t=>t.getDate()-1),un=yy;function ln(t){return ue(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())*Ve)/na})}var eo=ln(0),sa=ln(1);ln(2),ln(3);var Cr=ln(4);ln(5),ln(6);var Ay=ue(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()}),to=Ay,nf=ue(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()});nf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:ue(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)})};var Pt=nf,by=ue(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ve)},function(t,e){return(e-t)/Ve},function(t){return t.getUTCMinutes()}),aa=by,xy=ue(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*vt)},function(t,e){return(e-t)/vt},function(t){return t.getUTCHours()}),ca=xy,vy=ue(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/cn},function(t){return t.getUTCDate()-1}),fn=vy;function hn(t){return ue(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)/na})}var no=hn(0),ua=hn(1);hn(2),hn(3);var Mr=hn(4);hn(5),hn(6);var wy=ue(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()}),ro=wy,rf=ue(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()});rf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:ue(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)})};var zt=rf;function of(t,e,n,r,i,o){const s=[[Ft,1,xt],[Ft,5,5*xt],[Ft,15,15*xt],[Ft,30,30*xt],[o,1,Ve],[o,5,5*Ve],[o,15,15*Ve],[o,30,30*Ve],[i,1,vt],[i,3,3*vt],[i,6,6*vt],[i,12,12*vt],[r,1,cn],[r,2,2*cn],[n,1,na],[e,1,tf],[e,3,3*tf],[t,1,ra]];function a(u,f,l){const h=f<u;h&&([u,f]=[f,u]);const d=l&&typeof l.range=="function"?l:c(u,f,l),p=d?d.range(u,+f+1):[];return h?p.reverse():p}function c(u,f,l){const h=Math.abs(f-u)/l,d=Vs(([,,m])=>m).right(s,h);if(d===s.length)return t.every(Zi(u/ra,f/ra,l));if(d===0)return ta.every(Math.max(Zi(u,f,l),1));const[p,g]=s[h/s[d-1][2]<s[d][2]/h?d-1:d];return p.every(g)}return[a,c]}const[Ey,Sy]=of(zt,ro,no,fn,ca,aa),[Dy,Cy]=of(Pt,to,eo,un,oa,ia),Ir="year",Tr="quarter",Nr="month",Lr="week",Or="date",io="day",la="dayofyear",kr="hours",Br="minutes",Fr="seconds",oo="milliseconds";[Ir,Tr,Nr,Lr,Or,io,la,kr,Br,Fr,oo].reduce((t,e,n)=>(t[e]=1+n,t),{});const My={[Ir]:Pt,[Tr]:to.every(3),[Nr]:to,[Lr]:eo,[Or]:un,[io]:un,[la]:un,[kr]:oa,[Br]:ia,[Fr]:Ft,[oo]:ta},Iy={[Ir]:zt,[Tr]:ro.every(3),[Nr]:ro,[Lr]:no,[Or]:fn,[io]:fn,[la]:fn,[kr]:ca,[Br]:aa,[Fr]:Ft,[oo]:ta};function Ty(t){return My[t]}function Ny(t){return Iy[t]}function fa(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 ha(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 Pr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function sf(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,c=t.shortMonths,u=zr(i),f=Rr(i),l=zr(o),h=Rr(o),d=zr(s),p=Rr(s),g=zr(a),m=Rr(a),y=zr(c),w=Rr(c),x={a:Ue,A:z,b:ne,B:ji,c:null,d:hf,e:hf,f:$y,g:uA,G:fA,H:Zy,I:Ky,j:Jy,L:df,m:eA,M:tA,p:Gi,q:Fs,Q:bf,s:xf,S:nA,u:rA,U:iA,V:oA,w:sA,W:aA,x:null,X:null,y:cA,Y:lA,Z:hA,"%":Af},E={a:Il,A:wI,b:EI,B:SI,c:null,d:gf,e:gf,f:mA,g:CA,G:IA,H:dA,I:pA,j:gA,L:mf,m:yA,M:AA,p:DI,q:CI,Q:bf,s:xf,S:bA,u:xA,U:vA,V:wA,w:EA,W:SA,x:null,X:null,y:DA,Y:MA,Z:TA,"%":Af},b={a:B,A:C,b:k,B:P,c:H,d:lf,e:lf,f:Yy,g:uf,G:cf,H:ff,I:ff,j:Hy,L:_y,m:Gy,M:Qy,p:L,q:jy,Q:Xy,s:qy,S:Vy,u:Fy,U:Py,V:zy,w:By,W:Ry,x:qe,X:Re,y:uf,Y:cf,Z:Uy,"%":Wy};x.x=A(n,x),x.X=A(r,x),x.c=A(e,x),E.x=A(n,E),E.X=A(r,E),E.c=A(e,E);function A(O,R){return function(Q){var M=[],ke=-1,q=0,je=O.length,Ge,Bn,f1;for(Q instanceof Date||(Q=new Date(+Q));++ke<je;)O.charCodeAt(ke)===37&&(M.push(O.slice(q,ke)),(Bn=af[Ge=O.charAt(++ke)])!=null?Ge=O.charAt(++ke):Bn=Ge==="e"?" ":"0",(f1=R[Ge])&&(Ge=f1(Q,Bn)),M.push(Ge),q=ke+1);return M.push(O.slice(q,ke)),M.join("")}}function v(O,R){return function(Q){var M=Pr(1900,void 0,1),ke=D(M,O,Q+="",0),q,je;if(ke!=Q.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(R&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?(q=ha(Pr(M.y,0,1)),je=q.getUTCDay(),q=je>4||je===0?ua.ceil(q):ua(q),q=fn.offset(q,(M.V-1)*7),M.y=q.getUTCFullYear(),M.m=q.getUTCMonth(),M.d=q.getUTCDate()+(M.w+6)%7):(q=fa(Pr(M.y,0,1)),je=q.getDay(),q=je>4||je===0?sa.ceil(q):sa(q),q=un.offset(q,(M.V-1)*7),M.y=q.getFullYear(),M.m=q.getMonth(),M.d=q.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),je="Z"in M?ha(Pr(M.y,0,1)).getUTCDay():fa(Pr(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(je+5)%7:M.w+M.U*7-(je+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,ha(M)):fa(M)}}function D(O,R,Q,M){for(var ke=0,q=R.length,je=Q.length,Ge,Bn;ke<q;){if(M>=je)return-1;if(Ge=R.charCodeAt(ke++),Ge===37){if(Ge=R.charAt(ke++),Bn=b[Ge in af?R.charAt(ke++):Ge],!Bn||(M=Bn(O,Q,M))<0)return-1}else if(Ge!=Q.charCodeAt(M++))return-1}return M}function L(O,R,Q){var M=u.exec(R.slice(Q));return M?(O.p=f.get(M[0].toLowerCase()),Q+M[0].length):-1}function B(O,R,Q){var M=d.exec(R.slice(Q));return M?(O.w=p.get(M[0].toLowerCase()),Q+M[0].length):-1}function C(O,R,Q){var M=l.exec(R.slice(Q));return M?(O.w=h.get(M[0].toLowerCase()),Q+M[0].length):-1}function k(O,R,Q){var M=y.exec(R.slice(Q));return M?(O.m=w.get(M[0].toLowerCase()),Q+M[0].length):-1}function P(O,R,Q){var M=g.exec(R.slice(Q));return M?(O.m=m.get(M[0].toLowerCase()),Q+M[0].length):-1}function H(O,R,Q){return D(O,e,R,Q)}function qe(O,R,Q){return D(O,n,R,Q)}function Re(O,R,Q){return D(O,r,R,Q)}function Ue(O){return s[O.getDay()]}function z(O){return o[O.getDay()]}function ne(O){return c[O.getMonth()]}function ji(O){return a[O.getMonth()]}function Gi(O){return i[+(O.getHours()>=12)]}function Fs(O){return 1+~~(O.getMonth()/3)}function Il(O){return s[O.getUTCDay()]}function wI(O){return o[O.getUTCDay()]}function EI(O){return c[O.getUTCMonth()]}function SI(O){return a[O.getUTCMonth()]}function DI(O){return i[+(O.getUTCHours()>=12)]}function CI(O){return 1+~~(O.getUTCMonth()/3)}return{format:function(O){var R=A(O+="",x);return R.toString=function(){return O},R},parse:function(O){var R=v(O+="",!1);return R.toString=function(){return O},R},utcFormat:function(O){var R=A(O+="",E);return R.toString=function(){return O},R},utcParse:function(O){var R=v(O+="",!0);return R.toString=function(){return O},R}}}var af={"-":"",_:" ","0":"0"},le=/^\s*\d+/,Ly=/^%/,Oy=/[\\^$*+?|[\]().{}]/g;function j(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function ky(t){return t.replace(Oy,"\\$&")}function zr(t){return new RegExp("^(?:"+t.map(ky).join("|")+")","i")}function Rr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function By(t,e,n){var r=le.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Fy(t,e,n){var r=le.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Py(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function zy(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Ry(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function cf(t,e,n){var r=le.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function uf(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Uy(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 jy(t,e,n){var r=le.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Gy(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function lf(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Hy(t,e,n){var r=le.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function ff(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Qy(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Vy(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function _y(t,e,n){var r=le.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Yy(t,e,n){var r=le.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Wy(t,e,n){var r=Ly.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Xy(t,e,n){var r=le.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function qy(t,e,n){var r=le.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function hf(t,e){return j(t.getDate(),e,2)}function Zy(t,e){return j(t.getHours(),e,2)}function Ky(t,e){return j(t.getHours()%12||12,e,2)}function Jy(t,e){return j(1+un.count(Pt(t),t),e,3)}function df(t,e){return j(t.getMilliseconds(),e,3)}function $y(t,e){return df(t,e)+"000"}function eA(t,e){return j(t.getMonth()+1,e,2)}function tA(t,e){return j(t.getMinutes(),e,2)}function nA(t,e){return j(t.getSeconds(),e,2)}function rA(t){var e=t.getDay();return e===0?7:e}function iA(t,e){return j(eo.count(Pt(t)-1,t),e,2)}function pf(t){var e=t.getDay();return e>=4||e===0?Cr(t):Cr.ceil(t)}function oA(t,e){return t=pf(t),j(Cr.count(Pt(t),t)+(Pt(t).getDay()===4),e,2)}function sA(t){return t.getDay()}function aA(t,e){return j(sa.count(Pt(t)-1,t),e,2)}function cA(t,e){return j(t.getFullYear()%100,e,2)}function uA(t,e){return t=pf(t),j(t.getFullYear()%100,e,2)}function lA(t,e){return j(t.getFullYear()%1e4,e,4)}function fA(t,e){var n=t.getDay();return t=n>=4||n===0?Cr(t):Cr.ceil(t),j(t.getFullYear()%1e4,e,4)}function hA(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+j(e/60|0,"0",2)+j(e%60,"0",2)}function gf(t,e){return j(t.getUTCDate(),e,2)}function dA(t,e){return j(t.getUTCHours(),e,2)}function pA(t,e){return j(t.getUTCHours()%12||12,e,2)}function gA(t,e){return j(1+fn.count(zt(t),t),e,3)}function mf(t,e){return j(t.getUTCMilliseconds(),e,3)}function mA(t,e){return mf(t,e)+"000"}function yA(t,e){return j(t.getUTCMonth()+1,e,2)}function AA(t,e){return j(t.getUTCMinutes(),e,2)}function bA(t,e){return j(t.getUTCSeconds(),e,2)}function xA(t){var e=t.getUTCDay();return e===0?7:e}function vA(t,e){return j(no.count(zt(t)-1,t),e,2)}function yf(t){var e=t.getUTCDay();return e>=4||e===0?Mr(t):Mr.ceil(t)}function wA(t,e){return t=yf(t),j(Mr.count(zt(t),t)+(zt(t).getUTCDay()===4),e,2)}function EA(t){return t.getUTCDay()}function SA(t,e){return j(ua.count(zt(t)-1,t),e,2)}function DA(t,e){return j(t.getUTCFullYear()%100,e,2)}function CA(t,e){return t=yf(t),j(t.getUTCFullYear()%100,e,2)}function MA(t,e){return j(t.getUTCFullYear()%1e4,e,4)}function IA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Mr(t):Mr.ceil(t),j(t.getUTCFullYear()%1e4,e,4)}function TA(){return"+0000"}function Af(){return"%"}function bf(t){return+t}function xf(t){return Math.floor(+t/1e3)}var Un,da,vf,pa,wf;NA({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 NA(t){return Un=sf(t),da=Un.format,vf=Un.parse,pa=Un.utcFormat,wf=Un.utcParse,Un}function Ur(t){const e={};return n=>e[n]||(e[n]=t(n))}function LA(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=OA(r,i);const s=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function OA(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 kA(t){const e=Ur(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=zn(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return LA(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=zn(s==null?",f":s);const a=Zi(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(s.precision==null)switch(s.type){case"s":return isNaN(u=$l(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=ef(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=Jl(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}BA();function BA(){return kA({format:Rn,formatPrefix:Ks})}function Ef(t,e,n){n=n||{},Be(n)||te("Invalid time multi-format specifier: ".concat(n));const r=e(Fr),i=e(Br),o=e(kr),s=e(Or),a=e(Lr),c=e(Nr),u=e(Tr),f=e(Ir),l=t(n[oo]||".%L"),h=t(n[Fr]||":%S"),d=t(n[Br]||"%I:%M"),p=t(n[kr]||"%I %p"),g=t(n[Or]||n[io]||"%a %d"),m=t(n[Lr]||"%b %d"),y=t(n[Nr]||"%B"),w=t(n[Tr]||"%B"),x=t(n[Ir]||"%Y");return E=>(r(E)<E?l:i(E)<E?h:o(E)<E?d:s(E)<E?p:c(E)<E?a(E)<E?g:m:f(E)<E?u(E)<E?y:w:x)(E)}function Sf(t){const e=Ur(t.format),n=Ur(t.utcFormat);return{timeFormat:r=>se(r)?e(r):Ef(e,Ty,r),utcFormat:r=>se(r)?n(r):Ef(n,Ny,r),timeParse:Ur(t.parse),utcParse:Ur(t.utcParse)}}let ga;FA();function FA(){return ga=Sf({format:da,parse:vf,utcFormat:pa,utcParse:wf})}function PA(t){return Sf(sf(t))}function zA(t){return arguments.length?ga=PA(t):ga}const RA=/^(data:|([A-Za-z]+:)?\/\/)/,UA=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,jA=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Df="file://";function GA(t,e){return n=>({options:n||{},sanitize:QA,load:HA,fileAccess:!!e,file:VA(e),http:YA(t)})}async function HA(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function QA(t,e){e=Us({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=UA.test(t.replace(jA,""));(t==null||typeof t!="string"||!a)&&te("Sanitize failure, invalid URI: "+Xi(t));const c=RA.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Df))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Df.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),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 VA(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):_A}async function _A(){te("No file system access.")}function YA(t){return t?async function(e,n){const r=Us({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Ce(o[i])?o[i]():o.text():te(o.status+""+o.statusText)}:WA}async function WA(){te("No HTTP fetch method available.")}const XA=t=>t!=null&&t===t,qA=t=>t==="true"||t==="false"||t===!0||t===!1,ZA=t=>!Number.isNaN(Date.parse(t)),Cf=t=>!Number.isNaN(+t)&&!(t instanceof Date),KA=t=>Cf(t)&&Number.isInteger(+t),Mf={boolean:B1,integer:Er,number:Er,date:P1,string:z1,unknown:Qi},so=[qA,KA,Cf,ZA],JA=["boolean","integer","number","date"];function If(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=so.length,i=so.map((o,s)=>s+1);for(let o=0,s=0,a,c;o<n;++o)for(c=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&XA(c)&&!so[a](c)&&(i[a]=0,++s,s===so.length))return"string";return JA[i.reduce((o,s)=>o===0?s:o,0)-1]}function $A(t,e){return e.reduce((n,r)=>(n[r]=If(t,r),n),{})}function Tf(t){const e=function(n,r){const i={delimiter:t};return ma(n,r?Us(r,i):i)};return e.responseType="text",e}function ma(t,e){return e.header&&(t=e.header.map(Xi).join(e.delimiter)+`
|
6
|
-
`+t),Rl(e.delimiter).parse(t+"")}ma.responseType="text";function e2(t){return typeof Buffer=="function"&&Ce(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function ya(t,e){const n=e&&e.property?Hi(e.property):Qi;return Be(t)&&!e2(t)?t2(n(t),e):n(JSON.parse(t))}ya.responseType="json";function t2(t,e){return!Qe(t)&&O1(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const n2={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function Nf(t,e){let n,r,i,o;return t=ya(t,e),e&&e.feature?(n=Y1,i=e.feature):e&&e.mesh?(n=X1,i=e.mesh,o=n2[e.filter]):te("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):te("Invalid TopoJSON object: "+i),r&&r.features||[r]}Nf.responseType="json";const Aa={dsv:ma,csv:Tf(","),tsv:Tf(" "),json:ya,topojson:Nf};function Lf(t,e){return arguments.length>1?(Aa[t]=e,this):an(Aa,t)?Aa[t]:null}function Of(t,e,n,r){e=e||{};const i=Lf(e.type||"json");return i||te("Unknown data format type: "+e.type),t=i(t,e),e.parse&&r2(t,e.parse,n,r),an(t,"columns")&&delete t.columns,t}function r2(t,e,n,r){if(!t.length)return;const i=zA();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,c,u,f,l;e==="auto"&&(e=$A(t,o)),o=Object.keys(e);const h=o.map(d=>{const p=e[d];let g,m;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return g=p.split(/:(.+)?/,2),m=g[1],(m[0]==="'"&&m[m.length-1]==="'"||m[0]==='"'&&m[m.length-1]==='"')&&(m=m.slice(1,-1)),(g[0]==="utc"?r:n)(m);if(!Mf[p])throw Error("Illegal format pattern: "+d+":"+p);return Mf[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(s=t[c],u=0;u<l;++u)a=o[u],s[a]=h[u](s[a])}const ao=GA(typeof fetch!="undefined"&&fetch,null);function ba(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function co(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=ba,r=(a,c)=>ba(t(a),c));function i(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function s(a,c,u=0,f=a.length){const l=i(a,c,u,f-1);return l>u&&e(a[l-1],c)>-e(a[l],c)?l-1:l}return{left:i,center:s,right:o}}function kf(t){return t===null?NaN:+t}const Bf=co(ba),i2=Bf.right;Bf.left,co(kf).center;var o2=i2;function s2(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 o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class uo extends Map{constructor(e,n=u2){super();if(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(Ff(this,e))}has(e){return super.has(Ff(this,e))}set(e,n){return super.set(a2(this,e),n)}delete(e){return super.delete(c2(this,e))}}function Ff({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function a2({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function c2({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function u2(t){return t!==null&&typeof t=="object"?t.valueOf():t}function lo(t){return t}function fo(t,...e){return xa(t,lo,lo,e)}function l2(t,...e){return xa(t,Array.from,lo,e)}function f2(t,e,...n){return xa(t,lo,e,n)}function xa(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new uo,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var va=Math.sqrt(50),wa=Math.sqrt(10),Ea=Math.sqrt(2);function h2(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=d2(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function d2(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=va?10:o>=wa?5:o>=Ea?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=va?10:o>=wa?5:o>=Ea?2:1)}function Sa(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=va?i*=10:o>=wa?i*=5:o>=Ea&&(i*=2),e<t?-i:i}function p2(t,e,n=kf){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,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function ho(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,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function po(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 g2(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function go(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 m2(t){return t=go(Math.abs(t)),t?t[1]:NaN}function y2(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(n.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function A2(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var b2=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function mo(t){if(!(e=b2.exec(t)))throw new Error("invalid format: "+t);var e;return new Da({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]})}mo.prototype=Da.prototype;function Da(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+""}Da.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 x2(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 Pf;function v2(t,e){var n=go(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Pf=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+go(t,Math.max(0,e+o-1))[0]}function zf(t,e){var n=go(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")}var Rf={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:g2,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)=>zf(t*100,e),r:zf,s:v2,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Uf(t){return t}var jf=Array.prototype.map,Gf=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function w2(t){var e=t.grouping===void 0||t.thousands===void 0?Uf:y2(jf.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+"",o=t.numerals===void 0?Uf:A2(jf.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=mo(l);var h=l.fill,d=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,w=l.comma,x=l.precision,E=l.trim,b=l.type;b==="n"?(w=!0,b="g"):Rf[b]||(x===void 0&&(x=12),E=!0,b="g"),(m||h==="0"&&d==="=")&&(m=!0,h="0",d="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",v=g==="$"?r:/[%p]/.test(b)?s:"",D=Rf[b],L=/[defgprs%]/.test(b);x=x===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function B(C){var k=A,P=v,H,qe,Re;if(b==="c")P=D(C)+P,C="";else{C=+C;var Ue=C<0||1/C<0;if(C=isNaN(C)?c:D(Math.abs(C),x),E&&(C=x2(C)),Ue&&+C==0&&p!=="+"&&(Ue=!1),k=(Ue?p==="("?p:a:p==="-"||p==="("?"":p)+k,P=(b==="s"?Gf[8+Pf/3]:"")+P+(Ue&&p==="("?")":""),L){for(H=-1,qe=C.length;++H<qe;)if(Re=C.charCodeAt(H),48>Re||Re>57){P=(Re===46?i+C.slice(H+1):C.slice(H))+P,C=C.slice(0,H);break}}}w&&!m&&(C=e(C,1/0));var z=k.length+C.length+P.length,ne=z<y?new Array(y-z+1).join(h):"";switch(w&&m&&(C=e(ne+C,ne.length?y-P.length:1/0),ne=""),d){case"<":C=k+C+P+ne;break;case"=":C=k+ne+C+P;break;case"^":C=ne.slice(0,z=ne.length>>1)+k+C+P+ne.slice(z);break;default:C=ne+k+C+P;break}return o(C)}return B.toString=function(){return l+""},B}function f(l,h){var d=u((l=mo(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(m2(h)/3)))*3,g=Math.pow(10,-p),m=Gf[8+p/3];return function(y){return d(g*y)+m}}return{format:u,formatPrefix:f}}var Ca,Ie;E2({thousands:",",grouping:[3],currency:["$",""]});function E2(t){return Ca=w2(t),Ie=Ca.format,Ca}const Hf=1;function Ma(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;function c(u){return(u-t[0])/n*r+e[0]}return c.invert=function(u){return(u-e[0])/r*n+t[0]},c.domain=function(u){if(arguments.length){if(t=s2(u),n=t[1]-t[0],n<Hf){n=Hf;const f=(t[0]+t[1])/2;t[0]=f-n/2,t[1]=f+n/2}return c}else return t},c.range=function(u){return arguments.length?(e=[...u],r=e[1]-e[0],c):e},c.numberingOffset=function(u){return arguments.length?(a=u,c):a},c.padding=function(u){return arguments.length?(o=u,i=Math.min(1,u),c):i},c.paddingInner=function(u){return arguments.length?(i=Math.min(1,u),c):i},c.paddingOuter=function(u){return arguments.length?(o=u,c):o},c.align=function(u){return arguments.length?(s=Math.max(0,Math.min(1,u)),c):s},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=u=>{const f=c.align(),l=c.numberingOffset();return h2(t[0]-f+l,t[1]-f+l,Math.min(u,Math.ceil(n))).filter(Number.isInteger).map(h=>h-a)},c.tickFormat=function(u,f){if(f)throw new Error("Index scale's tickFormat does not support a specifier!");const h=Sa(t[0],t[1],Math.min(u,Math.ceil(n)))<1e5?Ie(","):Ie(".3s");return d=>h(d+a)},c.copy=()=>Ma().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),c}function S2(){const t=Ma().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(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,Sa(i[0],i[1],r)),u=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),d=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=h;p<=d;p+=c){const g=p-o;g>=i[0]&&g<i[1]&&u.push(g)}}return u},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),s=o[1]-o[0],a=t.numberingOffset(),u=Sa(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?Ie(","):Ie(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function ot(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Rt(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 Ia=Symbol("implicit");function Ta(){var t=new Map,e=[],n=[],r=Ia;function i(o){var s=o+"",a=t.get(s);if(!a){if(r!==Ia)return r;t.set(s,a=e.push(o))}return n[(a-1)%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Map;for(const s of o){const a=s+"";t.has(a)||t.set(a,e.push(s))}return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return Ta(e,n).unknown(r)},ot.apply(i,arguments),i}function jn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function jr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Ut(){}var dn=.7,Gn=1/dn,Hn="\\s*([+-]?\\d+)\\s*",Gr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",st="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",D2=/^#([0-9a-f]{3,8})$/,C2=new RegExp("^rgb\\("+[Hn,Hn,Hn]+"\\)$"),M2=new RegExp("^rgb\\("+[st,st,st]+"\\)$"),I2=new RegExp("^rgba\\("+[Hn,Hn,Hn,Gr]+"\\)$"),T2=new RegExp("^rgba\\("+[st,st,st,Gr]+"\\)$"),N2=new RegExp("^hsl\\("+[Gr,st,st]+"\\)$"),L2=new RegExp("^hsla\\("+[Gr,st,st,Gr]+"\\)$"),Qf={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};jn(Ut,Hr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Vf,formatHex:Vf,formatHsl:O2,formatRgb:_f,toString:_f});function Vf(){return this.rgb().formatHex()}function O2(){return Zf(this).formatHsl()}function _f(){return this.rgb().formatRgb()}function Hr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=D2.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Yf(e):n===3?new pe(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?yo(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?yo(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=C2.exec(t))?new pe(e[1],e[2],e[3],1):(e=M2.exec(t))?new pe(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=I2.exec(t))?yo(e[1],e[2],e[3],e[4]):(e=T2.exec(t))?yo(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=N2.exec(t))?qf(e[1],e[2]/100,e[3]/100,1):(e=L2.exec(t))?qf(e[1],e[2]/100,e[3]/100,e[4]):Qf.hasOwnProperty(t)?Yf(Qf[t]):t==="transparent"?new pe(NaN,NaN,NaN,0):null}function Yf(t){return new pe(t>>16&255,t>>8&255,t&255,1)}function yo(t,e,n,r){return r<=0&&(t=e=n=NaN),new pe(t,e,n,r)}function Na(t){return t instanceof Ut||(t=Hr(t)),t?(t=t.rgb(),new pe(t.r,t.g,t.b,t.opacity)):new pe}function Ao(t,e,n,r){return arguments.length===1?Na(t):new pe(t,e,n,r==null?1:r)}function pe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}jn(pe,Ao,jr(Ut,{brighter:function(t){return t=t==null?Gn:Math.pow(Gn,t),new pe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?dn:Math.pow(dn,t),new pe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){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:Wf,formatHex:Wf,formatRgb:Xf,toString:Xf}));function Wf(){return"#"+La(this.r)+La(this.g)+La(this.b)}function Xf(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function La(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function qf(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new at(t,e,n,r)}function Zf(t){if(t instanceof at)return new at(t.h,t.s,t.l,t.opacity);if(t instanceof Ut||(t=Hr(t)),!t)return new at;if(t instanceof at)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new at(s,a,c,t.opacity)}function Oa(t,e,n,r){return arguments.length===1?Zf(t):new at(t,e,n,r==null?1:r)}function at(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}jn(at,Oa,jr(Ut,{brighter:function(t){return t=t==null?Gn:Math.pow(Gn,t),new at(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?dn:Math.pow(dn,t),new at(this.h,this.s,this.l*t,this.opacity)},rgb:function(){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 pe(ka(t>=240?t-240:t+120,i,r),ka(t,i,r),ka(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function ka(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 Kf=Math.PI/180,Jf=180/Math.PI,bo=18,$f=.96422,eh=1,th=.82521,nh=4/29,Qn=6/29,rh=3*Qn*Qn,k2=Qn*Qn*Qn;function ih(t){if(t instanceof ct)return new ct(t.l,t.a,t.b,t.opacity);if(t instanceof wt)return oh(t);t instanceof pe||(t=Na(t));var e=Ra(t.r),n=Ra(t.g),r=Ra(t.b),i=Fa((.2225045*e+.7168786*n+.0606169*r)/eh),o,s;return e===n&&n===r?o=s=i:(o=Fa((.4360747*e+.3850649*n+.1430804*r)/$f),s=Fa((.0139322*e+.0971045*n+.7141733*r)/th)),new ct(116*i-16,500*(o-i),200*(i-s),t.opacity)}function Ba(t,e,n,r){return arguments.length===1?ih(t):new ct(t,e,n,r==null?1:r)}function ct(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}jn(ct,Ba,jr(Ut,{brighter:function(t){return new ct(this.l+bo*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new ct(this.l-bo*(t==null?1:t),this.a,this.b,this.opacity)},rgb:function(){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=$f*Pa(e),t=eh*Pa(t),n=th*Pa(n),new pe(za(3.1338561*e-1.6168667*t-.4906146*n),za(-.9787684*e+1.9161415*t+.033454*n),za(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function Fa(t){return t>k2?Math.pow(t,1/3):t/rh+nh}function Pa(t){return t>Qn?t*t*t:rh*(t-nh)}function za(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ra(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function B2(t){if(t instanceof wt)return new wt(t.h,t.c,t.l,t.opacity);if(t instanceof ct||(t=ih(t)),t.a===0&&t.b===0)return new wt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Jf;return new wt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Ua(t,e,n,r){return arguments.length===1?B2(t):new wt(t,e,n,r==null?1:r)}function wt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function oh(t){if(isNaN(t.h))return new ct(t.l,0,0,t.opacity);var e=t.h*Kf;return new ct(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}jn(wt,Ua,jr(Ut,{brighter:function(t){return new wt(this.h,this.c,this.l+bo*(t==null?1:t),this.opacity)},darker:function(t){return new wt(this.h,this.c,this.l-bo*(t==null?1:t),this.opacity)},rgb:function(){return oh(this).rgb()}}));var sh=-.14861,ja=1.78277,Ga=-.29227,xo=-.90649,Qr=1.97294,ah=Qr*xo,ch=Qr*ja,uh=ja*Ga-xo*sh;function F2(t){if(t instanceof pn)return new pn(t.h,t.s,t.l,t.opacity);t instanceof pe||(t=Na(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(uh*r+ah*e-ch*n)/(uh+ah-ch),o=r-i,s=(Qr*(n-i)-Ga*o)/xo,a=Math.sqrt(s*s+o*o)/(Qr*i*(1-i)),c=a?Math.atan2(s,o)*Jf-120:NaN;return new pn(c<0?c+360:c,a,i,t.opacity)}function Ha(t,e,n,r){return arguments.length===1?F2(t):new pn(t,e,n,r==null?1:r)}function pn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}jn(pn,Ha,jr(Ut,{brighter:function(t){return t=t==null?Gn:Math.pow(Gn,t),new pn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?dn:Math.pow(dn,t),new pn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Kf,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new pe(255*(e+n*(sh*r+ja*i)),255*(e+n*(Ga*r+xo*i)),255*(e+n*(Qr*r)),this.opacity)}}));function lh(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function fh(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],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return lh((n-r/e)*e,s,i,o,a)}}function hh(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return lh((n-r/e)*e,i,o,s,a)}}var vo=t=>()=>t;function dh(t,e){return function(n){return t+n*e}}function P2(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 wo(t,e){var n=e-t;return n?dh(t,n>180||n<-180?n-360*Math.round(n/360):n):vo(isNaN(t)?e:t)}function z2(t){return(t=+t)==1?fe:function(e,n){return n-e?P2(e,n,t):vo(isNaN(e)?n:e)}}function fe(t,e){var n=e-t;return n?dh(t,n):vo(isNaN(t)?e:t)}var Qa=function t(e){var n=z2(e);function r(i,o){var s=n((i=Ao(i)).r,(o=Ao(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=fe(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function ph(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=Ao(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(c){return a.r=r(c),a.g=i(c),a.b=o(c),a+""}}}var R2=ph(fh),U2=ph(hh);function Va(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function gh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function j2(t,e){return(gh(e)?Va:mh)(t,e)}function mh(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=jt(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function yh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Ke(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Ah(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]=jt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var _a=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ya=new RegExp(_a.source,"g");function G2(t){return function(){return t}}function H2(t){return function(e){return t(e)+""}}function bh(t,e){var n=_a.lastIndex=Ya.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=_a.exec(t))&&(i=Ya.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:Ke(r,i)})),n=Ya.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?H2(c[0].x):G2(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)a[(l=c[f]).i]=l.x(u);return a.join("")})}function jt(t,e){var n=typeof e,r;return e==null||n==="boolean"?vo(e):(n==="number"?Ke:n==="string"?(r=Hr(e))?(e=r,Qa):bh:e instanceof Hr?Qa:e instanceof Date?yh:gh(e)?Va:Array.isArray(e)?mh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Ah:Ke)(t,e)}function Q2(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function V2(t,e){var n=wo(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Vr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var xh=180/Math.PI,Wa={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function vh(t,e,n,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*xh,skewX:Math.atan(c)*xh,scaleX:s,scaleY:a}}var Eo;function _2(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Wa:vh(e.a,e.b,e.c,e.d,e.e,e.f)}function Y2(t){return t==null||(Eo||(Eo=document.createElementNS("http://www.w3.org/2000/svg","g")),Eo.setAttribute("transform",t),!(t=Eo.transform.baseVal.consolidate()))?Wa:(t=t.matrix,vh(t.a,t.b,t.c,t.d,t.e,t.f))}function wh(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,h,d,p){if(u!==l||f!==h){var g=d.push("translate(",null,e,null,n);p.push({i:g-4,x:Ke(u,l)},{i:g-2,x:Ke(f,h)})}else(l||h)&&d.push("translate("+l+e+h+n)}function s(u,f,l,h){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:Ke(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(u,f,l,h){u!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:Ke(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,h,d,p){if(u!==l||f!==h){var g=d.push(i(d)+"scale(",null,",",null,")");p.push({i:g-4,x:Ke(u,l)},{i:g-2,x:Ke(f,h)})}else(l!==1||h!==1)&&d.push(i(d)+"scale("+l+","+h+")")}return function(u,f){var l=[],h=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,h),s(u.rotate,f.rotate,l,h),a(u.skewX,f.skewX,l,h),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,h),u=f=null,function(d){for(var p=-1,g=h.length,m;++p<g;)l[(m=h[p]).i]=m.x(d);return l.join("")}}}var W2=wh(_2,"px, ","px)","deg)"),X2=wh(Y2,", ",")",")"),q2=1e-12;function Eh(t){return((t=Math.exp(t))+1/t)/2}function Z2(t){return((t=Math.exp(t))-1/t)/2}function K2(t){return((t=Math.exp(2*t))-1)/(t+1)}var Sh=function t(e,n,r){function i(o,s){var a=o[0],c=o[1],u=o[2],f=s[0],l=s[1],h=s[2],d=f-a,p=l-c,g=d*d+p*p,m,y;if(g<q2)y=Math.log(h/u)/e,m=function(v){return[a+v*d,c+v*p,u*Math.exp(e*v*y)]};else{var w=Math.sqrt(g),x=(h*h-u*u+r*g)/(2*u*n*w),E=(h*h-u*u-r*g)/(2*h*n*w),b=Math.log(Math.sqrt(x*x+1)-x),A=Math.log(Math.sqrt(E*E+1)-E);y=(A-b)/e,m=function(v){var D=v*y,L=Eh(b),B=u/(n*w)*(L*K2(e*D+b)-Z2(b));return[a+B*d,c+B*p,u*L/Eh(e*D+b)]}}return m.duration=y*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,c=a*a;return t(s,a,c)},i}(Math.SQRT2,2,4);function Dh(t){return function(e,n){var r=t((e=Oa(e)).h,(n=Oa(n)).h),i=fe(e.s,n.s),o=fe(e.l,n.l),s=fe(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var J2=Dh(wo),$2=Dh(fe);function eb(t,e){var n=fe((t=Ba(t)).l,(e=Ba(e)).l),r=fe(t.a,e.a),i=fe(t.b,e.b),o=fe(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function Ch(t){return function(e,n){var r=t((e=Ua(e)).h,(n=Ua(n)).h),i=fe(e.c,n.c),o=fe(e.l,n.l),s=fe(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var tb=Ch(wo),nb=Ch(fe);function Mh(t){return function e(n){n=+n;function r(i,o){var s=t((i=Ha(i)).h,(o=Ha(o)).h),a=fe(i.s,o.s),c=fe(i.l,o.l),u=fe(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}var rb=Mh(wo),ib=Mh(fe);function Xa(t,e){e===void 0&&(e=t,t=jt);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function ob(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var sb=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:jt,interpolateArray:j2,interpolateBasis:fh,interpolateBasisClosed:hh,interpolateDate:yh,interpolateDiscrete:Q2,interpolateHue:V2,interpolateNumber:Ke,interpolateNumberArray:Va,interpolateObject:Ah,interpolateRound:Vr,interpolateString:bh,interpolateTransformCss:W2,interpolateTransformSvg:X2,interpolateZoom:Sh,interpolateRgb:Qa,interpolateRgbBasis:R2,interpolateRgbBasisClosed:U2,interpolateHsl:J2,interpolateHslLong:$2,interpolateLab:eb,interpolateHcl:tb,interpolateHclLong:nb,interpolateCubehelix:rb,interpolateCubehelixLong:ib,piecewise:Xa,quantize:ob});function ab(t){return function(){return t}}function qa(t){return+t}var Ih=[0,1];function Te(t){return t}function Za(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:ab(isNaN(e)?NaN:.5)}function cb(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function ub(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=Za(i,r),o=n(s,o)):(r=Za(r,i),o=n(o,s)),function(a){return o(r(a))}}function lb(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=Za(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=Dr(t,a,1,r)-1;return o[c](i[c](a))}}function _r(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function So(){var t=Ih,e=Ih,n=jt,r,i,o,s=Te,a,c,u;function f(){var h=Math.min(t.length,e.length);return s!==Te&&(s=cb(t[0],t[h-1])),a=h>2?lb:ub,c=u=null,l}function l(h){return h==null||isNaN(h=+h)?o:(c||(c=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((u||(u=a(e,t.map(r),Ke)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,qa),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=Vr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:Te,f()):s!==Te},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,d){return r=h,i=d,f()}}function Th(){return So()(Te,Te)}function Nh(t,e,n,r){var i=Zi(t,e,n),o;switch(r=zn(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=$l(i,s))&&(r.precision=o),Ks(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=ef(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Jl(i))&&(r.precision=o-(r.type==="%")*2);break}}return Rn(r)}function gn(t){var e=t.domain;return t.ticks=function(n){var r=e();return qs(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return Nh(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],c,u,f=10;for(a<s&&(u=s,s=a,a=u,u=i,i=o,o=u);f-- >0;){if(u=Vl(s,a,n),u===c)return r[i]=s,r[o]=a,e(r);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;c=u}return t},t}function Lh(){var t=Th();return t.copy=function(){return _r(t,Lh())},ot.apply(t,arguments),gn(t)}function Oh(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,qa),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Oh(t).unknown(e)},t=arguments.length?Array.from(t,qa):[0,1],gn(n)}function kh(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function Bh(t){return Math.log(t)}function Fh(t){return Math.exp(t)}function fb(t){return-Math.log(-t)}function hb(t){return-Math.exp(-t)}function db(t){return isFinite(t)?+("1e"+t):t<0?0:t}function pb(t){return t===10?db:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function gb(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function Ph(t){return function(e){return-t(-e)}}function Ka(t){var e=t(Bh,Fh),n=e.domain,r=10,i,o;function s(){return i=gb(r),o=pb(r),n()[0]<0?(i=Ph(i),o=Ph(o),t(fb,hb)):t(Bh,Fh),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=function(a){var c=n(),u=c[0],f=c[c.length-1],l;(l=f<u)&&(h=u,u=f,f=h);var h=i(u),d=i(f),p,g,m,y=a==null?10:+a,w=[];if(!(r%1)&&d-h<y){if(h=Math.floor(h),d=Math.ceil(d),u>0){for(;h<=d;++h)for(g=1,p=o(h);g<r;++g)if(m=p*g,!(m<u)){if(m>f)break;w.push(m)}}else for(;h<=d;++h)for(g=r-1,p=o(h);g>=1;--g)if(m=p*g,!(m<u)){if(m>f)break;w.push(m)}w.length*2<y&&(w=qs(u,f,y))}else w=qs(h,d,Math.min(d-h,y)).map(o);return l?w.reverse():w},e.tickFormat=function(a,c){if(c==null&&(c=r===10?".0e":","),typeof c!="function"&&(c=Rn(c)),a===1/0)return c;a==null&&(a=10);var u=Math.max(1,r*a/e.ticks().length);return function(f){var l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=function(){return n(kh(n(),{floor:function(a){return o(Math.floor(i(a)))},ceil:function(a){return o(Math.ceil(i(a)))}}))},e}function Ja(){var t=Ka(So()).domain([1,10]);return t.copy=function(){return _r(t,Ja()).base(t.base())},ot.apply(t,arguments),t}function zh(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Rh(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function $a(t){var e=1,n=t(zh(e),Rh(e));return n.constant=function(r){return arguments.length?t(zh(e=+r),Rh(e)):e},gn(n)}function Uh(){var t=$a(So());return t.copy=function(){return _r(t,Uh()).constant(t.constant())},ot.apply(t,arguments)}function jh(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function mb(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function yb(t){return t<0?-t*t:t*t}function ec(t){var e=t(Te,Te),n=1;function r(){return n===1?t(Te,Te):n===.5?t(mb,yb):t(jh(n),jh(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},gn(e)}function tc(){var t=ec(So());return t.copy=function(){return _r(t,tc()).exponent(t.exponent())},ot.apply(t,arguments),t}function Ab(){return tc.apply(null,arguments).exponent(.5)}function Gh(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=_l(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[Dr(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(Fn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return Gh().domain(t).range(e).unknown(r)},ot.apply(o,arguments)}function Hh(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(c){return c!=null&&c<=c?i[Dr(r,c,0,n)]:o}function a(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return s}return s.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,a()):[t,e]},s.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,a()):i.slice()},s.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},s.unknown=function(c){return arguments.length&&(o=c),s},s.thresholds=function(){return r.slice()},s.copy=function(){return Hh().domain([t,e]).range(i).unknown(o)},ot.apply(gn(s),arguments)}function Qh(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Dr(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Qh().domain(t).range(e).unknown(n)},ot.apply(i,arguments)}function bb(t){return new Date(t)}function xb(t){return t instanceof Date?+t:+new Date(+t)}function nc(t,e,n,r,i,o,s,a,c,u){var f=Th(),l=f.invert,h=f.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),w=u("%b %d"),x=u("%B"),E=u("%Y");function b(A){return(c(A)<A?d:a(A)<A?p:s(A)<A?g:o(A)<A?m:r(A)<A?i(A)<A?y:w:n(A)<A?x:E)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?h(Array.from(A,xb)):h().map(bb)},f.ticks=function(A){var v=h();return t(v[0],v[v.length-1],A==null?10:A)},f.tickFormat=function(A,v){return v==null?b:u(v)},f.nice=function(A){var v=h();return(!A||typeof A.range!="function")&&(A=e(v[0],v[v.length-1],A==null?10:A)),A?h(kh(v,A)):f},f.copy=function(){return _r(f,nc(t,e,n,r,i,o,s,a,c,u))},f}function vb(){return ot.apply(nc(Dy,Cy,Pt,to,eo,un,oa,ia,Ft,da).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function wb(){return ot.apply(nc(Ey,Sy,zt,ro,no,fn,ca,aa,Ft,pa).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Do(){var t=0,e=1,n,r,i,o,s=Te,a=!1,c;function u(l){return l==null||isNaN(l=+l)?c:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(a=!!l,u):a},u.interpolator=function(l){return arguments.length?(s=l,u):s};function f(l){return function(h){var d,p;return arguments.length?([d,p]=h,s=l(d,p),u):[s(0),s(1)]}}return u.range=f(jt),u.rangeRound=f(Vr),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function Gt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function rc(){var t=gn(Do()(Te));return t.copy=function(){return Gt(t,rc())},Rt.apply(t,arguments)}function Vh(){var t=Ka(Do()).domain([1,10]);return t.copy=function(){return Gt(t,Vh()).base(t.base())},Rt.apply(t,arguments)}function _h(){var t=$a(Do());return t.copy=function(){return Gt(t,_h()).constant(t.constant())},Rt.apply(t,arguments)}function ic(){var t=ec(Do());return t.copy=function(){return Gt(t,ic()).exponent(t.exponent())},Rt.apply(t,arguments)}function Eb(){return ic.apply(null,arguments).exponent(.5)}function Co(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=Te,f,l=!1,h;function d(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:c),u(l?Math.max(0,Math.min(1,g)):g))}d.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,d):[t,e,n]},d.clamp=function(g){return arguments.length?(l=!!g,d):l},d.interpolator=function(g){return arguments.length?(u=g,d):u};function p(g){return function(m){var y,w,x;return arguments.length?([y,w,x]=m,u=Xa(g,[y,w,x]),d):[u(0),u(.5),u(1)]}}return d.range=p(jt),d.rangeRound=p(Vr),d.unknown=function(g){return arguments.length?(h=g,d):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,d}}function Yh(){var t=gn(Co()(Te));return t.copy=function(){return Gt(t,Yh())},Rt.apply(t,arguments)}function Wh(){var t=Ka(Co()).domain([.1,1,10]);return t.copy=function(){return Gt(t,Wh()).base(t.base())},Rt.apply(t,arguments)}function Xh(){var t=$a(Co());return t.copy=function(){return Gt(t,Xh()).constant(t.constant())},Rt.apply(t,arguments)}function oc(){var t=ec(Co());return t.copy=function(){return Gt(t,oc()).exponent(t.exponent())},Rt.apply(t,arguments)}function Sb(){return oc.apply(null,arguments).exponent(.5)}function sc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Db="identity",Vn="linear",Ht="log",Yr="pow",Wr="sqrt",Mo="symlog",qh="time",Zh="utc",ut="sequential",_n="diverging",ac="quantile",Kh="quantize",Jh="threshold",cc="ordinal",uc="point",$h="band",lc="bin-ordinal",ce="continuous",Xr="discrete",qr="discretizing",_e="interpolating",ed="temporal";function Cb(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 Mb(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,c,u;for(i<r&&(a=r,r=i,i=a),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),s=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function fc(){const t=Ta().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],d=r[1-h],p=sc(l,a,c);let g=r[h-0];i=(d-g)/(p||1),s&&(i=Math.floor(i)),g+=(d-g-i*(l-a))*u,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=Ki(l).map(y=>g+i*y);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]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),a=c,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?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.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 g=+l[0],m=+l[1],y,w,x;if(!(g!==g||m!==m)&&(m<g&&(x=g,g=m,m=x),!(m<d[0]||g>r[1-h])))return y=Math.max(0,_s(d,g)-1),w=g===m?y:_s(d,m)-1,g-d[y]>o+1e-10&&++y,h&&(x=y,y=p-w,w=p-x),y>w?void 0:e().slice(y,w+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return fc().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(c).align(u)},f()}function td(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return td(e())},t}function Ib(){return td(fc().paddingInner(1))}var Tb=Array.prototype.map;function Nb(t){return Tb.call(t,Er)}const Lb=Array.prototype.slice;function nd(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Dr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Nb(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Lb.call(r),n):e.slice()},n.tickFormat=function(r,i){return Nh(t[0],Ze(t),r==null?10:r,i)},n.copy=function(){return nd().domain(n.domain()).range(n.range())},n}const Io={};function Ob(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Cb(o):o.invertExtent?Mb(o):void 0),o.type=t,o};return r.metadata=qi(Rs(n)),r}function _(t,e,n){return arguments.length>1?(Io[t]=Ob(t,e,n),this):kb(t)?Io[t]:void 0}_(Db,Oh),_(Vn,Lh,ce),_(Ht,Ja,[ce,Ht]),_(Yr,tc,ce),_(Wr,Ab,ce),_(Mo,Uh,ce),_(qh,vb,[ce,ed]),_(Zh,wb,[ce,ed]),_(ut,rc,[ce,_e]),_("".concat(ut,"-").concat(Vn),rc,[ce,_e]),_("".concat(ut,"-").concat(Ht),Vh,[ce,_e,Ht]),_("".concat(ut,"-").concat(Yr),ic,[ce,_e]),_("".concat(ut,"-").concat(Wr),Eb,[ce,_e]),_("".concat(ut,"-").concat(Mo),_h,[ce,_e]),_("".concat(_n,"-").concat(Vn),Yh,[ce,_e]),_("".concat(_n,"-").concat(Ht),Wh,[ce,_e,Ht]),_("".concat(_n,"-").concat(Yr),oc,[ce,_e]),_("".concat(_n,"-").concat(Wr),Sb,[ce,_e]),_("".concat(_n,"-").concat(Mo),Xh,[ce,_e]),_(ac,Gh,[qr,ac]),_(Kh,Hh,qr),_(Jh,Qh,qr),_(lc,nd,[Xr,qr]),_(cc,Ta,Xr),_($h,fc,Xr),_(uc,Ib,Xr);function kb(t){return an(Io,t)}function Zr(t,e){const n=Io[t];return n&&n.metadata[e]}function Je(t){return Zr(t,ce)}function Qt(t){return Zr(t,Xr)}function Yn(t){return Zr(t,qr)}function rd(t){return Zr(t,Ht)}function To(t){return Zr(t,_e)}function Bb(t,e){const n=e[0],r=Ze(e)-n;return function(i){return t(n+i*r)}}function No(t,e,n){return Xa(id(e||"rgb",n),t)}function Fb(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function id(t,e){const n=sb[Pb(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Pb(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const zb={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"},Rb={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 od(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 sd(t,e){for(const n in t)hc(n,e(t[n]))}const ad={};sd(Rb,od),sd(zb,t=>No(od(t)));function hc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(ad[t]=e,this):ad[t]}var BI="";function Ub(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
|
5
|
+
`)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?H1(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var Q1=Ul(" "),V1=Q1.parseRows;function _1(t){return t}function Y1(t){if(t==null)return _1;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,c){c||(e=n=0);var u=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;u<f;)l[u]=a[u],++u;return l}}function W1(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function X1(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return jl(t,n)})}:jl(t,e)}function jl(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Gl(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Gl(t,e){var n=Y1(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],d=0,p=h.length;d<p;++d)l.push(n(h[d],d));f<0&&W1(l,p)}function o(f){return n(f)}function s(f){for(var l=[],h=0,d=f.length;h<d;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(a)}function u(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":h=o(f.coordinates);break;case"MultiPoint":h=f.coordinates.map(o);break;case"LineString":h=s(f.arcs);break;case"MultiLineString":h=f.arcs.map(s);break;case"Polygon":h=c(f.arcs);break;case"MultiPolygon":h=f.arcs.map(c);break;default:return null}return{type:l,coordinates:h}}return u(e)}function q1(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=u,e[f]=h)}),e.forEach(function(u){var f=a(u),l=f[0],h=f[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 g=p===d?d:d.concat(p);r[g.start=d.start]=i[g.end=p.end]=g}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 m=p===d?d:p.concat(d);r[m.start=p.start]=i[m.end=d.end]=m}else r[d.start]=i[d.end]=d;else d=[u],r[d.start=l]=i[d.end=h]=d});function a(u){var f=t.arcs[u<0?~u:u],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(d){h[0]+=d[0],h[1]+=d[1]})):h=f[f.length-1],u<0?[h,l]:[l,h]}function c(u,f){for(var l in u){var h=u[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(d){n[d<0?~d:d]=1}),o.push(h)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function Z1(t){return Gl(t,K1.apply(this,arguments))}function K1(t,e,n){var r,i,o;if(arguments.length>1)r=J1(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:q1(t,r)}}function J1(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function c(l){l.forEach(a)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(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 Bn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Vs(t){let e=t,n=t;t.length===1&&(e=(s,a)=>t(s)-a,n=$1(t));function r(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)<0?c=f+1:u=f}return c}function i(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)>0?u=f:c=f+1}return c}function o(s,a,c,u){c==null&&(c=0),u==null&&(u=s.length);const f=r(s,a,c,u-1);return f>c&&e(s[f-1],a)>-e(s[f],a)?f-1:f}return{left:r,center:o,right:i}}function $1(t){return(e,n)=>Bn(t(e),n)}function Hl(t){return t===null?NaN:+t}const _s=Vs(Bn).right;Vs(Hl).center;var Sr=_s;class ey extends Map{constructor(e,n=ry){super();if(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(Ql(this,e))}has(e){return super.has(Ql(this,e))}set(e,n){return super.set(ty(this,e),n)}delete(e){return super.delete(ny(this,e))}}function Ql({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function ty({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function ny({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(n),t.delete(r)),n}function ry(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Vl(t){return t}function iy(t,...e){return oy(t,Vl,Vl,e)}function oy(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new ey,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}function sy(t,e){return Array.from(e,n=>t[n])}function ay(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n=Bn]=e;if(n.length===1||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const s of e){const a=Bn(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>Bn(n[i],n[o]))),sy(t,r)}return t.sort(n)}var Ys=Math.sqrt(50),Ws=Math.sqrt(10),Xs=Math.sqrt(2);function qs(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=_l(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function _l(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Ys?10:o>=Ws?5:o>=Xs?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ys?10:o>=Ws?5:o>=Xs?2:1)}function $i(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Ys?i*=10:o>=Ws?i*=5:o>=Xs&&(i*=2),e<t?-i:i}function Yl(t,e,n=Hl){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,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function eo(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,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function cy(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function to(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 Fn(t){return t=to(Math.abs(t)),t?t[1]:NaN}function uy(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(n.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function ly(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var fy=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Pn(t){if(!(e=fy.exec(t)))throw new Error("invalid format: "+t);var e;return new Zs({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]})}Pn.prototype=Zs.prototype;function Zs(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+""}Zs.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 hy(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 Wl;function dy(t,e){var n=to(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Wl=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+to(t,Math.max(0,e+o-1))[0]}function Xl(t,e){var n=to(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")}var ql={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:cy,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)=>Xl(t*100,e),r:Xl,s:dy,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Zl(t){return t}var Kl=Array.prototype.map,Jl=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function py(t){var e=t.grouping===void 0||t.thousands===void 0?Zl:uy(Kl.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+"",o=t.numerals===void 0?Zl:ly(Kl.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Pn(l);var h=l.fill,d=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,v=l.comma,w=l.precision,S=l.trim,b=l.type;b==="n"?(v=!0,b="g"):ql[b]||(w===void 0&&(w=12),S=!0,b="g"),(m||h==="0"&&d==="=")&&(m=!0,h="0",d="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x=g==="$"?r:/[%p]/.test(b)?s:"",E=ql[b],F=/[defgprs%]/.test(b);w=w===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function k(C){var O=A,P=x,H,Ke,Re;if(b==="c")P=E(C)+P,C="";else{C=+C;var Ue=C<0||1/C<0;if(C=isNaN(C)?c:E(Math.abs(C),w),S&&(C=hy(C)),Ue&&+C==0&&p!=="+"&&(Ue=!1),O=(Ue?p==="("?p:a:p==="-"||p==="("?"":p)+O,P=(b==="s"?Jl[8+Wl/3]:"")+P+(Ue&&p==="("?")":""),F){for(H=-1,Ke=C.length;++H<Ke;)if(Re=C.charCodeAt(H),48>Re||Re>57){P=(Re===46?i+C.slice(H+1):C.slice(H))+P,C=C.slice(0,H);break}}}v&&!m&&(C=e(C,1/0));var z=O.length+C.length+P.length,ne=z<y?new Array(y-z+1).join(h):"";switch(v&&m&&(C=e(ne+C,ne.length?y-P.length:1/0),ne=""),d){case"<":C=O+C+P+ne;break;case"=":C=O+ne+C+P;break;case"^":C=ne.slice(0,z=ne.length>>1)+O+C+P+ne.slice(z);break;default:C=ne+O+C+P;break}return o(C)}return k.toString=function(){return l+""},k}function f(l,h){var d=u((l=Pn(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(Fn(h)/3)))*3,g=Math.pow(10,-p),m=Jl[8+p/3];return function(y){return d(g*y)+m}}return{format:u,formatPrefix:f}}var no,zn,Ks;gy({thousands:",",grouping:[3],currency:["$",""]});function gy(t){return no=py(t),zn=no.format,Ks=no.formatPrefix,no}function $l(t){return Math.max(0,-Fn(Math.abs(t)))}function ef(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Fn(e)/3)))*3-Fn(Math.abs(t)))}function tf(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Fn(e)-Fn(t))+1}var Js=new Date,$s=new Date;function ue(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var c=[],u;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return c;do c.push(u=new Date(+o)),e(o,a),t(o);while(u<o&&o<s);return c},i.filter=function(o){return ue(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return Js.setTime(+o),$s.setTime(+s),t(Js),t($s),Math.floor(n(Js,$s))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o==0}:function(s){return i.count(0,s)%o==0}):i}),i}var ea=ue(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ea.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?ue(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ea};var ta=ea;const wt=1e3,Ve=wt*60,Et=Ve*60,cn=Et*24,na=cn*7,nf=cn*30,ra=cn*365;var my=ue(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*wt)},function(t,e){return(e-t)/wt},function(t){return t.getUTCSeconds()}),Pt=my,yy=ue(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*wt)},function(t,e){t.setTime(+t+e*Ve)},function(t,e){return(e-t)/Ve},function(t){return t.getMinutes()}),ia=yy,Ay=ue(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*wt-t.getMinutes()*Ve)},function(t,e){t.setTime(+t+e*Et)},function(t,e){return(e-t)/Et},function(t){return t.getHours()}),oa=Ay,by=ue(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ve)/cn,t=>t.getDate()-1),un=by;function ln(t){return ue(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())*Ve)/na})}var ro=ln(0),sa=ln(1);ln(2),ln(3);var Dr=ln(4);ln(5),ln(6);var xy=ue(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()}),io=xy,rf=ue(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()});rf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:ue(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)})};var zt=rf,vy=ue(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ve)},function(t,e){return(e-t)/Ve},function(t){return t.getUTCMinutes()}),aa=vy,wy=ue(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Et)},function(t,e){return(e-t)/Et},function(t){return t.getUTCHours()}),ca=wy,Ey=ue(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/cn},function(t){return t.getUTCDate()-1}),fn=Ey;function hn(t){return ue(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)/na})}var oo=hn(0),ua=hn(1);hn(2),hn(3);var Cr=hn(4);hn(5),hn(6);var Sy=ue(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()}),so=Sy,of=ue(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()});of.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:ue(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)})};var Rt=of;function sf(t,e,n,r,i,o){const s=[[Pt,1,wt],[Pt,5,5*wt],[Pt,15,15*wt],[Pt,30,30*wt],[o,1,Ve],[o,5,5*Ve],[o,15,15*Ve],[o,30,30*Ve],[i,1,Et],[i,3,3*Et],[i,6,6*Et],[i,12,12*Et],[r,1,cn],[r,2,2*cn],[n,1,na],[e,1,nf],[e,3,3*nf],[t,1,ra]];function a(u,f,l){const h=f<u;h&&([u,f]=[f,u]);const d=l&&typeof l.range=="function"?l:c(u,f,l),p=d?d.range(u,+f+1):[];return h?p.reverse():p}function c(u,f,l){const h=Math.abs(f-u)/l,d=Vs(([,,m])=>m).right(s,h);if(d===s.length)return t.every($i(u/ra,f/ra,l));if(d===0)return ta.every(Math.max($i(u,f,l),1));const[p,g]=s[h/s[d-1][2]<s[d][2]/h?d-1:d];return p.every(g)}return[a,c]}const[Dy,Cy]=sf(Rt,so,oo,fn,ca,aa),[My,Iy]=sf(zt,io,ro,un,oa,ia),Mr="year",Ir="quarter",Tr="month",Nr="week",Lr="date",ao="day",la="dayofyear",Or="hours",kr="minutes",Br="seconds",co="milliseconds";[Mr,Ir,Tr,Nr,Lr,ao,la,Or,kr,Br,co].reduce((t,e,n)=>(t[e]=1+n,t),{});const Ty={[Mr]:zt,[Ir]:io.every(3),[Tr]:io,[Nr]:ro,[Lr]:un,[ao]:un,[la]:un,[Or]:oa,[kr]:ia,[Br]:Pt,[co]:ta},Ny={[Mr]:Rt,[Ir]:so.every(3),[Tr]:so,[Nr]:oo,[Lr]:fn,[ao]:fn,[la]:fn,[Or]:ca,[kr]:aa,[Br]:Pt,[co]:ta};function Ly(t){return Ty[t]}function Oy(t){return Ny[t]}function fa(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 ha(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 Fr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function af(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,c=t.shortMonths,u=Pr(i),f=zr(i),l=Pr(o),h=zr(o),d=Pr(s),p=zr(s),g=Pr(a),m=zr(a),y=Pr(c),v=zr(c),w={a:Ue,A:z,b:ne,B:Hi,c:null,d:df,e:df,f:tA,g:fA,G:dA,H:Jy,I:$y,j:eA,L:pf,m:nA,M:rA,p:Qi,q:Ps,Q:xf,s:vf,S:iA,u:oA,U:sA,V:aA,w:cA,W:uA,x:null,X:null,y:lA,Y:hA,Z:pA,"%":bf},S={a:Tl,A:OI,b:kI,B:BI,c:null,d:mf,e:mf,f:AA,g:IA,G:NA,H:gA,I:mA,j:yA,L:yf,m:bA,M:xA,p:FI,q:PI,Q:xf,s:vf,S:vA,u:wA,U:EA,V:SA,w:DA,W:CA,x:null,X:null,y:MA,Y:TA,Z:LA,"%":bf},b={a:k,A:C,b:O,B:P,c:H,d:ff,e:ff,f:Xy,g:lf,G:uf,H:hf,I:hf,j:Vy,L:Wy,m:Qy,M:_y,p:F,q:Hy,Q:Zy,s:Ky,S:Yy,u:zy,U:Ry,V:Uy,w:Py,W:jy,x:Ke,X:Re,y:lf,Y:uf,Z:Gy,"%":qy};w.x=A(n,w),w.X=A(r,w),w.c=A(e,w),S.x=A(n,S),S.X=A(r,S),S.c=A(e,S);function A(L,R){return function(Q){var M=[],ke=-1,q=0,je=L.length,Ge,kn,d1;for(Q instanceof Date||(Q=new Date(+Q));++ke<je;)L.charCodeAt(ke)===37&&(M.push(L.slice(q,ke)),(kn=cf[Ge=L.charAt(++ke)])!=null?Ge=L.charAt(++ke):kn=Ge==="e"?" ":"0",(d1=R[Ge])&&(Ge=d1(Q,kn)),M.push(Ge),q=ke+1);return M.push(L.slice(q,ke)),M.join("")}}function x(L,R){return function(Q){var M=Fr(1900,void 0,1),ke=E(M,L,Q+="",0),q,je;if(ke!=Q.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(R&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?(q=ha(Fr(M.y,0,1)),je=q.getUTCDay(),q=je>4||je===0?ua.ceil(q):ua(q),q=fn.offset(q,(M.V-1)*7),M.y=q.getUTCFullYear(),M.m=q.getUTCMonth(),M.d=q.getUTCDate()+(M.w+6)%7):(q=fa(Fr(M.y,0,1)),je=q.getDay(),q=je>4||je===0?sa.ceil(q):sa(q),q=un.offset(q,(M.V-1)*7),M.y=q.getFullYear(),M.m=q.getMonth(),M.d=q.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),je="Z"in M?ha(Fr(M.y,0,1)).getUTCDay():fa(Fr(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(je+5)%7:M.w+M.U*7-(je+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,ha(M)):fa(M)}}function E(L,R,Q,M){for(var ke=0,q=R.length,je=Q.length,Ge,kn;ke<q;){if(M>=je)return-1;if(Ge=R.charCodeAt(ke++),Ge===37){if(Ge=R.charAt(ke++),kn=b[Ge in cf?R.charAt(ke++):Ge],!kn||(M=kn(L,Q,M))<0)return-1}else if(Ge!=Q.charCodeAt(M++))return-1}return M}function F(L,R,Q){var M=u.exec(R.slice(Q));return M?(L.p=f.get(M[0].toLowerCase()),Q+M[0].length):-1}function k(L,R,Q){var M=d.exec(R.slice(Q));return M?(L.w=p.get(M[0].toLowerCase()),Q+M[0].length):-1}function C(L,R,Q){var M=l.exec(R.slice(Q));return M?(L.w=h.get(M[0].toLowerCase()),Q+M[0].length):-1}function O(L,R,Q){var M=y.exec(R.slice(Q));return M?(L.m=v.get(M[0].toLowerCase()),Q+M[0].length):-1}function P(L,R,Q){var M=g.exec(R.slice(Q));return M?(L.m=m.get(M[0].toLowerCase()),Q+M[0].length):-1}function H(L,R,Q){return E(L,e,R,Q)}function Ke(L,R,Q){return E(L,n,R,Q)}function Re(L,R,Q){return E(L,r,R,Q)}function Ue(L){return s[L.getDay()]}function z(L){return o[L.getDay()]}function ne(L){return c[L.getMonth()]}function Hi(L){return a[L.getMonth()]}function Qi(L){return i[+(L.getHours()>=12)]}function Ps(L){return 1+~~(L.getMonth()/3)}function Tl(L){return s[L.getUTCDay()]}function OI(L){return o[L.getUTCDay()]}function kI(L){return c[L.getUTCMonth()]}function BI(L){return a[L.getUTCMonth()]}function FI(L){return i[+(L.getUTCHours()>=12)]}function PI(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var R=A(L+="",w);return R.toString=function(){return L},R},parse:function(L){var R=x(L+="",!1);return R.toString=function(){return L},R},utcFormat:function(L){var R=A(L+="",S);return R.toString=function(){return L},R},utcParse:function(L){var R=x(L+="",!0);return R.toString=function(){return L},R}}}var cf={"-":"",_:" ","0":"0"},le=/^\s*\d+/,ky=/^%/,By=/[\\^$*+?|[\]().{}]/g;function j(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function Fy(t){return t.replace(By,"\\$&")}function Pr(t){return new RegExp("^(?:"+t.map(Fy).join("|")+")","i")}function zr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function Py(t,e,n){var r=le.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function zy(t,e,n){var r=le.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Ry(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Uy(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function jy(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function uf(t,e,n){var r=le.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function lf(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Gy(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 Hy(t,e,n){var r=le.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Qy(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function ff(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Vy(t,e,n){var r=le.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function hf(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function _y(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Yy(t,e,n){var r=le.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Wy(t,e,n){var r=le.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Xy(t,e,n){var r=le.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function qy(t,e,n){var r=ky.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Zy(t,e,n){var r=le.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Ky(t,e,n){var r=le.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function df(t,e){return j(t.getDate(),e,2)}function Jy(t,e){return j(t.getHours(),e,2)}function $y(t,e){return j(t.getHours()%12||12,e,2)}function eA(t,e){return j(1+un.count(zt(t),t),e,3)}function pf(t,e){return j(t.getMilliseconds(),e,3)}function tA(t,e){return pf(t,e)+"000"}function nA(t,e){return j(t.getMonth()+1,e,2)}function rA(t,e){return j(t.getMinutes(),e,2)}function iA(t,e){return j(t.getSeconds(),e,2)}function oA(t){var e=t.getDay();return e===0?7:e}function sA(t,e){return j(ro.count(zt(t)-1,t),e,2)}function gf(t){var e=t.getDay();return e>=4||e===0?Dr(t):Dr.ceil(t)}function aA(t,e){return t=gf(t),j(Dr.count(zt(t),t)+(zt(t).getDay()===4),e,2)}function cA(t){return t.getDay()}function uA(t,e){return j(sa.count(zt(t)-1,t),e,2)}function lA(t,e){return j(t.getFullYear()%100,e,2)}function fA(t,e){return t=gf(t),j(t.getFullYear()%100,e,2)}function hA(t,e){return j(t.getFullYear()%1e4,e,4)}function dA(t,e){var n=t.getDay();return t=n>=4||n===0?Dr(t):Dr.ceil(t),j(t.getFullYear()%1e4,e,4)}function pA(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+j(e/60|0,"0",2)+j(e%60,"0",2)}function mf(t,e){return j(t.getUTCDate(),e,2)}function gA(t,e){return j(t.getUTCHours(),e,2)}function mA(t,e){return j(t.getUTCHours()%12||12,e,2)}function yA(t,e){return j(1+fn.count(Rt(t),t),e,3)}function yf(t,e){return j(t.getUTCMilliseconds(),e,3)}function AA(t,e){return yf(t,e)+"000"}function bA(t,e){return j(t.getUTCMonth()+1,e,2)}function xA(t,e){return j(t.getUTCMinutes(),e,2)}function vA(t,e){return j(t.getUTCSeconds(),e,2)}function wA(t){var e=t.getUTCDay();return e===0?7:e}function EA(t,e){return j(oo.count(Rt(t)-1,t),e,2)}function Af(t){var e=t.getUTCDay();return e>=4||e===0?Cr(t):Cr.ceil(t)}function SA(t,e){return t=Af(t),j(Cr.count(Rt(t),t)+(Rt(t).getUTCDay()===4),e,2)}function DA(t){return t.getUTCDay()}function CA(t,e){return j(ua.count(Rt(t)-1,t),e,2)}function MA(t,e){return j(t.getUTCFullYear()%100,e,2)}function IA(t,e){return t=Af(t),j(t.getUTCFullYear()%100,e,2)}function TA(t,e){return j(t.getUTCFullYear()%1e4,e,4)}function NA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Cr(t):Cr.ceil(t),j(t.getUTCFullYear()%1e4,e,4)}function LA(){return"+0000"}function bf(){return"%"}function xf(t){return+t}function vf(t){return Math.floor(+t/1e3)}var Rn,da,wf,pa,Ef;OA({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 OA(t){return Rn=af(t),da=Rn.format,wf=Rn.parse,pa=Rn.utcFormat,Ef=Rn.utcParse,Rn}function Rr(t){const e={};return n=>e[n]||(e[n]=t(n))}function kA(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=BA(r,i);const s=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function BA(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 FA(t){const e=Rr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Pn(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return kA(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=Pn(s==null?",f":s);const a=$i(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(s.precision==null)switch(s.type){case"s":return isNaN(u=ef(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=tf(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=$l(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}PA();function PA(){return FA({format:zn,formatPrefix:Ks})}function Sf(t,e,n){n=n||{},Be(n)||te("Invalid time multi-format specifier: ".concat(n));const r=e(Br),i=e(kr),o=e(Or),s=e(Lr),a=e(Nr),c=e(Tr),u=e(Ir),f=e(Mr),l=t(n[co]||".%L"),h=t(n[Br]||":%S"),d=t(n[kr]||"%I:%M"),p=t(n[Or]||"%I %p"),g=t(n[Lr]||n[ao]||"%a %d"),m=t(n[Nr]||"%b %d"),y=t(n[Tr]||"%B"),v=t(n[Ir]||"%B"),w=t(n[Mr]||"%Y");return S=>(r(S)<S?l:i(S)<S?h:o(S)<S?d:s(S)<S?p:c(S)<S?a(S)<S?g:m:f(S)<S?u(S)<S?y:v:w)(S)}function Df(t){const e=Rr(t.format),n=Rr(t.utcFormat);return{timeFormat:r=>ie(r)?e(r):Sf(e,Ly,r),utcFormat:r=>ie(r)?n(r):Sf(n,Oy,r),timeParse:Rr(t.parse),utcParse:Rr(t.utcParse)}}let ga;zA();function zA(){return ga=Df({format:da,parse:wf,utcFormat:pa,utcParse:Ef})}function RA(t){return Df(af(t))}function UA(t){return arguments.length?ga=RA(t):ga}const jA=/^(data:|([A-Za-z]+:)?\/\/)/,GA=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,HA=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Cf="file://";function QA(t,e){return n=>({options:n||{},sanitize:_A,load:VA,fileAccess:!!e,file:YA(e),http:XA(t)})}async function VA(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function _A(t,e){e=js({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=GA.test(t.replace(HA,""));(t==null||typeof t!="string"||!a)&&te("Sanitize failure, invalid URI: "+Ki(t));const c=jA.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Cf))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Cf.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),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 YA(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):WA}async function WA(){te("No file system access.")}function XA(t){return t?async function(e,n){const r=js({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Ce(o[i])?o[i]():o.text():te(o.status+""+o.statusText)}:qA}async function qA(){te("No HTTP fetch method available.")}const ZA=t=>t!=null&&t===t,KA=t=>t==="true"||t==="false"||t===!0||t===!1,JA=t=>!Number.isNaN(Date.parse(t)),Mf=t=>!Number.isNaN(+t)&&!(t instanceof Date),$A=t=>Mf(t)&&Number.isInteger(+t),If={boolean:P1,integer:wr,number:wr,date:R1,string:U1,unknown:_i},uo=[KA,$A,Mf,JA],e2=["boolean","integer","number","date"];function Tf(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=uo.length,i=uo.map((o,s)=>s+1);for(let o=0,s=0,a,c;o<n;++o)for(c=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&ZA(c)&&!uo[a](c)&&(i[a]=0,++s,s===uo.length))return"string";return e2[i.reduce((o,s)=>o===0?s:o,0)-1]}function t2(t,e){return e.reduce((n,r)=>(n[r]=Tf(t,r),n),{})}function Nf(t){const e=function(n,r){const i={delimiter:t};return ma(n,r?js(r,i):i)};return e.responseType="text",e}function ma(t,e){return e.header&&(t=e.header.map(Ki).join(e.delimiter)+`
|
6
|
+
`+t),Ul(e.delimiter).parse(t+"")}ma.responseType="text";function n2(t){return typeof Buffer=="function"&&Ce(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function ya(t,e){const n=e&&e.property?Vi(e.property):_i;return Be(t)&&!n2(t)?r2(n(t),e):n(JSON.parse(t))}ya.responseType="json";function r2(t,e){return!Qe(t)&&B1(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const i2={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function Lf(t,e){let n,r,i,o;return t=ya(t,e),e&&e.feature?(n=X1,i=e.feature):e&&e.mesh?(n=Z1,i=e.mesh,o=i2[e.filter]):te("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):te("Invalid TopoJSON object: "+i),r&&r.features||[r]}Lf.responseType="json";const Aa={dsv:ma,csv:Nf(","),tsv:Nf(" "),json:ya,topojson:Lf};function Of(t,e){return arguments.length>1?(Aa[t]=e,this):an(Aa,t)?Aa[t]:null}function kf(t,e,n,r){e=e||{};const i=Of(e.type||"json");return i||te("Unknown data format type: "+e.type),t=i(t,e),e.parse&&o2(t,e.parse,n,r),an(t,"columns")&&delete t.columns,t}function o2(t,e,n,r){if(!t.length)return;const i=UA();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,c,u,f,l;e==="auto"&&(e=t2(t,o)),o=Object.keys(e);const h=o.map(d=>{const p=e[d];let g,m;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return g=p.split(/:(.+)?/,2),m=g[1],(m[0]==="'"&&m[m.length-1]==="'"||m[0]==='"'&&m[m.length-1]==='"')&&(m=m.slice(1,-1)),(g[0]==="utc"?r:n)(m);if(!If[p])throw Error("Illegal format pattern: "+d+":"+p);return If[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(s=t[c],u=0;u<l;++u)a=o[u],s[a]=h[u](s[a])}const lo=QA(typeof fetch!="undefined"&&fetch,null);function ba(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function fo(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=ba,r=(a,c)=>ba(t(a),c));function i(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function s(a,c,u=0,f=a.length){const l=i(a,c,u,f-1);return l>u&&e(a[l-1],c)>-e(a[l],c)?l-1:l}return{left:i,center:s,right:o}}function Bf(t){return t===null?NaN:+t}const Ff=fo(ba),s2=Ff.right;Ff.left,fo(Bf).center;var a2=s2;function c2(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 o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class ho extends Map{constructor(e,n=f2){super();if(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(Pf(this,e))}has(e){return super.has(Pf(this,e))}set(e,n){return super.set(u2(this,e),n)}delete(e){return super.delete(l2(this,e))}}function Pf({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function u2({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function l2({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function f2(t){return t!==null&&typeof t=="object"?t.valueOf():t}function po(t){return t}function go(t,...e){return xa(t,po,po,e)}function h2(t,...e){return xa(t,Array.from,po,e)}function d2(t,e,...n){return xa(t,po,e,n)}function xa(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new ho,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var va=Math.sqrt(50),wa=Math.sqrt(10),Ea=Math.sqrt(2);function p2(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=g2(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function g2(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=va?10:o>=wa?5:o>=Ea?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=va?10:o>=wa?5:o>=Ea?2:1)}function Sa(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=va?i*=10:o>=wa?i*=5:o>=Ea&&(i*=2),e<t?-i:i}function m2(t,e,n=Bf){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,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function mo(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,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function yo(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 y2(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Ao(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 A2(t){return t=Ao(Math.abs(t)),t?t[1]:NaN}function b2(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(n.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function x2(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var v2=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function bo(t){if(!(e=v2.exec(t)))throw new Error("invalid format: "+t);var e;return new Da({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]})}bo.prototype=Da.prototype;function Da(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+""}Da.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 w2(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 zf;function E2(t,e){var n=Ao(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(zf=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Ao(t,Math.max(0,e+o-1))[0]}function Rf(t,e){var n=Ao(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")}var Uf={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:y2,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)=>Rf(t*100,e),r:Rf,s:E2,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function jf(t){return t}var Gf=Array.prototype.map,Hf=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function S2(t){var e=t.grouping===void 0||t.thousands===void 0?jf:b2(Gf.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+"",o=t.numerals===void 0?jf:x2(Gf.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=bo(l);var h=l.fill,d=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,v=l.comma,w=l.precision,S=l.trim,b=l.type;b==="n"?(v=!0,b="g"):Uf[b]||(w===void 0&&(w=12),S=!0,b="g"),(m||h==="0"&&d==="=")&&(m=!0,h="0",d="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x=g==="$"?r:/[%p]/.test(b)?s:"",E=Uf[b],F=/[defgprs%]/.test(b);w=w===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function k(C){var O=A,P=x,H,Ke,Re;if(b==="c")P=E(C)+P,C="";else{C=+C;var Ue=C<0||1/C<0;if(C=isNaN(C)?c:E(Math.abs(C),w),S&&(C=w2(C)),Ue&&+C==0&&p!=="+"&&(Ue=!1),O=(Ue?p==="("?p:a:p==="-"||p==="("?"":p)+O,P=(b==="s"?Hf[8+zf/3]:"")+P+(Ue&&p==="("?")":""),F){for(H=-1,Ke=C.length;++H<Ke;)if(Re=C.charCodeAt(H),48>Re||Re>57){P=(Re===46?i+C.slice(H+1):C.slice(H))+P,C=C.slice(0,H);break}}}v&&!m&&(C=e(C,1/0));var z=O.length+C.length+P.length,ne=z<y?new Array(y-z+1).join(h):"";switch(v&&m&&(C=e(ne+C,ne.length?y-P.length:1/0),ne=""),d){case"<":C=O+C+P+ne;break;case"=":C=O+ne+C+P;break;case"^":C=ne.slice(0,z=ne.length>>1)+O+C+P+ne.slice(z);break;default:C=ne+O+C+P;break}return o(C)}return k.toString=function(){return l+""},k}function f(l,h){var d=u((l=bo(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(A2(h)/3)))*3,g=Math.pow(10,-p),m=Hf[8+p/3];return function(y){return d(g*y)+m}}return{format:u,formatPrefix:f}}var Ca,Ie;D2({thousands:",",grouping:[3],currency:["$",""]});function D2(t){return Ca=S2(t),Ie=Ca.format,Ca}const Qf=1;function Ma(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const u=f=>(f-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0],u.domain=function(f){if(arguments.length){if(t=c2(f),n=t[1]-t[0],n<Qf){n=Qf;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(a=f,u):a},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),u):s},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),h=u.numberingOffset();return p2(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(d=>d-a)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const d=Sa(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?Ie(","):Ie(".3s");return p=>d(p+a)},u.copy=()=>Ma().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),u}function C2(){const t=Ma().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(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,Sa(i[0],i[1],r)),u=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),d=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=h;p<=d;p+=c){const g=p-o;g>=i[0]&&g<i[1]&&u.push(g)}}return u},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),s=o[1]-o[0],a=t.numberingOffset(),u=Sa(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?Ie(","):Ie(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function M2(t){return t.type=="locus"}function at(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Ut(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 Ia=Symbol("implicit");function Ta(){var t=new Map,e=[],n=[],r=Ia;function i(o){var s=o+"",a=t.get(s);if(!a){if(r!==Ia)return r;t.set(s,a=e.push(o))}return n[(a-1)%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Map;for(const s of o){const a=s+"";t.has(a)||t.set(a,e.push(s))}return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return Ta(e,n).unknown(r)},at.apply(i,arguments),i}function Un(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Ur(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function jt(){}var dn=.7,jn=1/dn,Gn="\\s*([+-]?\\d+)\\s*",jr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",ct="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",I2=/^#([0-9a-f]{3,8})$/,T2=new RegExp("^rgb\\("+[Gn,Gn,Gn]+"\\)$"),N2=new RegExp("^rgb\\("+[ct,ct,ct]+"\\)$"),L2=new RegExp("^rgba\\("+[Gn,Gn,Gn,jr]+"\\)$"),O2=new RegExp("^rgba\\("+[ct,ct,ct,jr]+"\\)$"),k2=new RegExp("^hsl\\("+[jr,ct,ct]+"\\)$"),B2=new RegExp("^hsla\\("+[jr,ct,ct,jr]+"\\)$"),Vf={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};Un(jt,Gr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:_f,formatHex:_f,formatHsl:F2,formatRgb:Yf,toString:Yf});function _f(){return this.rgb().formatHex()}function F2(){return Kf(this).formatHsl()}function Yf(){return this.rgb().formatRgb()}function Gr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=I2.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Wf(e):n===3?new pe(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?xo(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?xo(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=T2.exec(t))?new pe(e[1],e[2],e[3],1):(e=N2.exec(t))?new pe(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=L2.exec(t))?xo(e[1],e[2],e[3],e[4]):(e=O2.exec(t))?xo(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=k2.exec(t))?Zf(e[1],e[2]/100,e[3]/100,1):(e=B2.exec(t))?Zf(e[1],e[2]/100,e[3]/100,e[4]):Vf.hasOwnProperty(t)?Wf(Vf[t]):t==="transparent"?new pe(NaN,NaN,NaN,0):null}function Wf(t){return new pe(t>>16&255,t>>8&255,t&255,1)}function xo(t,e,n,r){return r<=0&&(t=e=n=NaN),new pe(t,e,n,r)}function Na(t){return t instanceof jt||(t=Gr(t)),t?(t=t.rgb(),new pe(t.r,t.g,t.b,t.opacity)):new pe}function vo(t,e,n,r){return arguments.length===1?Na(t):new pe(t,e,n,r==null?1:r)}function pe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Un(pe,vo,Ur(jt,{brighter:function(t){return t=t==null?jn:Math.pow(jn,t),new pe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?dn:Math.pow(dn,t),new pe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){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:Xf,formatHex:Xf,formatRgb:qf,toString:qf}));function Xf(){return"#"+La(this.r)+La(this.g)+La(this.b)}function qf(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function La(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function Zf(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new ut(t,e,n,r)}function Kf(t){if(t instanceof ut)return new ut(t.h,t.s,t.l,t.opacity);if(t instanceof jt||(t=Gr(t)),!t)return new ut;if(t instanceof ut)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new ut(s,a,c,t.opacity)}function Oa(t,e,n,r){return arguments.length===1?Kf(t):new ut(t,e,n,r==null?1:r)}function ut(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Un(ut,Oa,Ur(jt,{brighter:function(t){return t=t==null?jn:Math.pow(jn,t),new ut(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?dn:Math.pow(dn,t),new ut(this.h,this.s,this.l*t,this.opacity)},rgb:function(){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 pe(ka(t>=240?t-240:t+120,i,r),ka(t,i,r),ka(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function ka(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 Jf=Math.PI/180,$f=180/Math.PI,wo=18,eh=.96422,th=1,nh=.82521,rh=4/29,Hn=6/29,ih=3*Hn*Hn,P2=Hn*Hn*Hn;function oh(t){if(t instanceof lt)return new lt(t.l,t.a,t.b,t.opacity);if(t instanceof St)return sh(t);t instanceof pe||(t=Na(t));var e=Ra(t.r),n=Ra(t.g),r=Ra(t.b),i=Fa((.2225045*e+.7168786*n+.0606169*r)/th),o,s;return e===n&&n===r?o=s=i:(o=Fa((.4360747*e+.3850649*n+.1430804*r)/eh),s=Fa((.0139322*e+.0971045*n+.7141733*r)/nh)),new lt(116*i-16,500*(o-i),200*(i-s),t.opacity)}function Ba(t,e,n,r){return arguments.length===1?oh(t):new lt(t,e,n,r==null?1:r)}function lt(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Un(lt,Ba,Ur(jt,{brighter:function(t){return new lt(this.l+wo*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new lt(this.l-wo*(t==null?1:t),this.a,this.b,this.opacity)},rgb:function(){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=eh*Pa(e),t=th*Pa(t),n=nh*Pa(n),new pe(za(3.1338561*e-1.6168667*t-.4906146*n),za(-.9787684*e+1.9161415*t+.033454*n),za(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function Fa(t){return t>P2?Math.pow(t,1/3):t/ih+rh}function Pa(t){return t>Hn?t*t*t:ih*(t-rh)}function za(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ra(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function z2(t){if(t instanceof St)return new St(t.h,t.c,t.l,t.opacity);if(t instanceof lt||(t=oh(t)),t.a===0&&t.b===0)return new St(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*$f;return new St(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Ua(t,e,n,r){return arguments.length===1?z2(t):new St(t,e,n,r==null?1:r)}function St(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function sh(t){if(isNaN(t.h))return new lt(t.l,0,0,t.opacity);var e=t.h*Jf;return new lt(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Un(St,Ua,Ur(jt,{brighter:function(t){return new St(this.h,this.c,this.l+wo*(t==null?1:t),this.opacity)},darker:function(t){return new St(this.h,this.c,this.l-wo*(t==null?1:t),this.opacity)},rgb:function(){return sh(this).rgb()}}));var ah=-.14861,ja=1.78277,Ga=-.29227,Eo=-.90649,Hr=1.97294,ch=Hr*Eo,uh=Hr*ja,lh=ja*Ga-Eo*ah;function R2(t){if(t instanceof pn)return new pn(t.h,t.s,t.l,t.opacity);t instanceof pe||(t=Na(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(lh*r+ch*e-uh*n)/(lh+ch-uh),o=r-i,s=(Hr*(n-i)-Ga*o)/Eo,a=Math.sqrt(s*s+o*o)/(Hr*i*(1-i)),c=a?Math.atan2(s,o)*$f-120:NaN;return new pn(c<0?c+360:c,a,i,t.opacity)}function Ha(t,e,n,r){return arguments.length===1?R2(t):new pn(t,e,n,r==null?1:r)}function pn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Un(pn,Ha,Ur(jt,{brighter:function(t){return t=t==null?jn:Math.pow(jn,t),new pn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?dn:Math.pow(dn,t),new pn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Jf,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new pe(255*(e+n*(ah*r+ja*i)),255*(e+n*(Ga*r+Eo*i)),255*(e+n*(Hr*r)),this.opacity)}}));function fh(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function hh(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],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return fh((n-r/e)*e,s,i,o,a)}}function dh(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return fh((n-r/e)*e,i,o,s,a)}}var So=t=>()=>t;function ph(t,e){return function(n){return t+n*e}}function U2(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 Do(t,e){var n=e-t;return n?ph(t,n>180||n<-180?n-360*Math.round(n/360):n):So(isNaN(t)?e:t)}function j2(t){return(t=+t)==1?fe:function(e,n){return n-e?U2(e,n,t):So(isNaN(e)?n:e)}}function fe(t,e){var n=e-t;return n?ph(t,n):So(isNaN(t)?e:t)}var Qa=function t(e){var n=j2(e);function r(i,o){var s=n((i=vo(i)).r,(o=vo(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=fe(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function gh(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=vo(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(c){return a.r=r(c),a.g=i(c),a.b=o(c),a+""}}}var G2=gh(hh),H2=gh(dh);function Va(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function mh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Q2(t,e){return(mh(e)?Va:yh)(t,e)}function yh(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=Gt(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function Ah(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function $e(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function bh(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]=Gt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var _a=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ya=new RegExp(_a.source,"g");function V2(t){return function(){return t}}function _2(t){return function(e){return t(e)+""}}function xh(t,e){var n=_a.lastIndex=Ya.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=_a.exec(t))&&(i=Ya.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:$e(r,i)})),n=Ya.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?_2(c[0].x):V2(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)a[(l=c[f]).i]=l.x(u);return a.join("")})}function Gt(t,e){var n=typeof e,r;return e==null||n==="boolean"?So(e):(n==="number"?$e:n==="string"?(r=Gr(e))?(e=r,Qa):xh:e instanceof Gr?Qa:e instanceof Date?Ah:mh(e)?Va:Array.isArray(e)?yh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?bh:$e)(t,e)}function Y2(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function W2(t,e){var n=Do(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Qr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var vh=180/Math.PI,Wa={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function wh(t,e,n,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*vh,skewX:Math.atan(c)*vh,scaleX:s,scaleY:a}}var Co;function X2(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Wa:wh(e.a,e.b,e.c,e.d,e.e,e.f)}function q2(t){return t==null||(Co||(Co=document.createElementNS("http://www.w3.org/2000/svg","g")),Co.setAttribute("transform",t),!(t=Co.transform.baseVal.consolidate()))?Wa:(t=t.matrix,wh(t.a,t.b,t.c,t.d,t.e,t.f))}function Eh(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,h,d,p){if(u!==l||f!==h){var g=d.push("translate(",null,e,null,n);p.push({i:g-4,x:$e(u,l)},{i:g-2,x:$e(f,h)})}else(l||h)&&d.push("translate("+l+e+h+n)}function s(u,f,l,h){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:$e(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(u,f,l,h){u!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:$e(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,h,d,p){if(u!==l||f!==h){var g=d.push(i(d)+"scale(",null,",",null,")");p.push({i:g-4,x:$e(u,l)},{i:g-2,x:$e(f,h)})}else(l!==1||h!==1)&&d.push(i(d)+"scale("+l+","+h+")")}return function(u,f){var l=[],h=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,h),s(u.rotate,f.rotate,l,h),a(u.skewX,f.skewX,l,h),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,h),u=f=null,function(d){for(var p=-1,g=h.length,m;++p<g;)l[(m=h[p]).i]=m.x(d);return l.join("")}}}var Z2=Eh(X2,"px, ","px)","deg)"),K2=Eh(q2,", ",")",")"),J2=1e-12;function Sh(t){return((t=Math.exp(t))+1/t)/2}function $2(t){return((t=Math.exp(t))-1/t)/2}function eb(t){return((t=Math.exp(2*t))-1)/(t+1)}var Dh=function t(e,n,r){function i(o,s){var a=o[0],c=o[1],u=o[2],f=s[0],l=s[1],h=s[2],d=f-a,p=l-c,g=d*d+p*p,m,y;if(g<J2)y=Math.log(h/u)/e,m=function(x){return[a+x*d,c+x*p,u*Math.exp(e*x*y)]};else{var v=Math.sqrt(g),w=(h*h-u*u+r*g)/(2*u*n*v),S=(h*h-u*u-r*g)/(2*h*n*v),b=Math.log(Math.sqrt(w*w+1)-w),A=Math.log(Math.sqrt(S*S+1)-S);y=(A-b)/e,m=function(x){var E=x*y,F=Sh(b),k=u/(n*v)*(F*eb(e*E+b)-$2(b));return[a+k*d,c+k*p,u*F/Sh(e*E+b)]}}return m.duration=y*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,c=a*a;return t(s,a,c)},i}(Math.SQRT2,2,4);function Ch(t){return function(e,n){var r=t((e=Oa(e)).h,(n=Oa(n)).h),i=fe(e.s,n.s),o=fe(e.l,n.l),s=fe(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var tb=Ch(Do),nb=Ch(fe);function rb(t,e){var n=fe((t=Ba(t)).l,(e=Ba(e)).l),r=fe(t.a,e.a),i=fe(t.b,e.b),o=fe(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function Mh(t){return function(e,n){var r=t((e=Ua(e)).h,(n=Ua(n)).h),i=fe(e.c,n.c),o=fe(e.l,n.l),s=fe(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var ib=Mh(Do),ob=Mh(fe);function Ih(t){return function e(n){n=+n;function r(i,o){var s=t((i=Ha(i)).h,(o=Ha(o)).h),a=fe(i.s,o.s),c=fe(i.l,o.l),u=fe(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}var sb=Ih(Do),ab=Ih(fe);function Xa(t,e){e===void 0&&(e=t,t=Gt);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function cb(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var ub=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:Gt,interpolateArray:Q2,interpolateBasis:hh,interpolateBasisClosed:dh,interpolateDate:Ah,interpolateDiscrete:Y2,interpolateHue:W2,interpolateNumber:$e,interpolateNumberArray:Va,interpolateObject:bh,interpolateRound:Qr,interpolateString:xh,interpolateTransformCss:Z2,interpolateTransformSvg:K2,interpolateZoom:Dh,interpolateRgb:Qa,interpolateRgbBasis:G2,interpolateRgbBasisClosed:H2,interpolateHsl:tb,interpolateHslLong:nb,interpolateLab:rb,interpolateHcl:ib,interpolateHclLong:ob,interpolateCubehelix:sb,interpolateCubehelixLong:ab,piecewise:Xa,quantize:cb});function lb(t){return function(){return t}}function qa(t){return+t}var Th=[0,1];function Te(t){return t}function Za(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:lb(isNaN(e)?NaN:.5)}function fb(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function hb(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=Za(i,r),o=n(s,o)):(r=Za(r,i),o=n(o,s)),function(a){return o(r(a))}}function db(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=Za(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=Sr(t,a,1,r)-1;return o[c](i[c](a))}}function Vr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Mo(){var t=Th,e=Th,n=Gt,r,i,o,s=Te,a,c,u;function f(){var h=Math.min(t.length,e.length);return s!==Te&&(s=fb(t[0],t[h-1])),a=h>2?db:hb,c=u=null,l}function l(h){return h==null||isNaN(h=+h)?o:(c||(c=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((u||(u=a(e,t.map(r),$e)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,qa),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=Qr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:Te,f()):s!==Te},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,d){return r=h,i=d,f()}}function Nh(){return Mo()(Te,Te)}function Lh(t,e,n,r){var i=$i(t,e,n),o;switch(r=Pn(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=ef(i,s))&&(r.precision=o),Ks(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=tf(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=$l(i))&&(r.precision=o-(r.type==="%")*2);break}}return zn(r)}function gn(t){var e=t.domain;return t.ticks=function(n){var r=e();return qs(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return Lh(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],c,u,f=10;for(a<s&&(u=s,s=a,a=u,u=i,i=o,o=u);f-- >0;){if(u=_l(s,a,n),u===c)return r[i]=s,r[o]=a,e(r);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;c=u}return t},t}function Oh(){var t=Nh();return t.copy=function(){return Vr(t,Oh())},at.apply(t,arguments),gn(t)}function kh(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,qa),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return kh(t).unknown(e)},t=arguments.length?Array.from(t,qa):[0,1],gn(n)}function Bh(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function Fh(t){return Math.log(t)}function Ph(t){return Math.exp(t)}function pb(t){return-Math.log(-t)}function gb(t){return-Math.exp(-t)}function mb(t){return isFinite(t)?+("1e"+t):t<0?0:t}function yb(t){return t===10?mb:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function Ab(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function zh(t){return function(e){return-t(-e)}}function Ka(t){var e=t(Fh,Ph),n=e.domain,r=10,i,o;function s(){return i=Ab(r),o=yb(r),n()[0]<0?(i=zh(i),o=zh(o),t(pb,gb)):t(Fh,Ph),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=function(a){var c=n(),u=c[0],f=c[c.length-1],l;(l=f<u)&&(h=u,u=f,f=h);var h=i(u),d=i(f),p,g,m,y=a==null?10:+a,v=[];if(!(r%1)&&d-h<y){if(h=Math.floor(h),d=Math.ceil(d),u>0){for(;h<=d;++h)for(g=1,p=o(h);g<r;++g)if(m=p*g,!(m<u)){if(m>f)break;v.push(m)}}else for(;h<=d;++h)for(g=r-1,p=o(h);g>=1;--g)if(m=p*g,!(m<u)){if(m>f)break;v.push(m)}v.length*2<y&&(v=qs(u,f,y))}else v=qs(h,d,Math.min(d-h,y)).map(o);return l?v.reverse():v},e.tickFormat=function(a,c){if(c==null&&(c=r===10?".0e":","),typeof c!="function"&&(c=zn(c)),a===1/0)return c;a==null&&(a=10);var u=Math.max(1,r*a/e.ticks().length);return function(f){var l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=function(){return n(Bh(n(),{floor:function(a){return o(Math.floor(i(a)))},ceil:function(a){return o(Math.ceil(i(a)))}}))},e}function Ja(){var t=Ka(Mo()).domain([1,10]);return t.copy=function(){return Vr(t,Ja()).base(t.base())},at.apply(t,arguments),t}function Rh(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Uh(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function $a(t){var e=1,n=t(Rh(e),Uh(e));return n.constant=function(r){return arguments.length?t(Rh(e=+r),Uh(e)):e},gn(n)}function jh(){var t=$a(Mo());return t.copy=function(){return Vr(t,jh()).constant(t.constant())},at.apply(t,arguments)}function Gh(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function bb(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function xb(t){return t<0?-t*t:t*t}function ec(t){var e=t(Te,Te),n=1;function r(){return n===1?t(Te,Te):n===.5?t(bb,xb):t(Gh(n),Gh(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},gn(e)}function tc(){var t=ec(Mo());return t.copy=function(){return Vr(t,tc()).exponent(t.exponent())},at.apply(t,arguments),t}function vb(){return tc.apply(null,arguments).exponent(.5)}function Hh(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=Yl(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[Sr(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(Bn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return Hh().domain(t).range(e).unknown(r)},at.apply(o,arguments)}function Qh(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(c){return c!=null&&c<=c?i[Sr(r,c,0,n)]:o}function a(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return s}return s.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,a()):[t,e]},s.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,a()):i.slice()},s.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},s.unknown=function(c){return arguments.length&&(o=c),s},s.thresholds=function(){return r.slice()},s.copy=function(){return Qh().domain([t,e]).range(i).unknown(o)},at.apply(gn(s),arguments)}function Vh(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Sr(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Vh().domain(t).range(e).unknown(n)},at.apply(i,arguments)}function wb(t){return new Date(t)}function Eb(t){return t instanceof Date?+t:+new Date(+t)}function nc(t,e,n,r,i,o,s,a,c,u){var f=Nh(),l=f.invert,h=f.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),v=u("%b %d"),w=u("%B"),S=u("%Y");function b(A){return(c(A)<A?d:a(A)<A?p:s(A)<A?g:o(A)<A?m:r(A)<A?i(A)<A?y:v:n(A)<A?w:S)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?h(Array.from(A,Eb)):h().map(wb)},f.ticks=function(A){var x=h();return t(x[0],x[x.length-1],A==null?10:A)},f.tickFormat=function(A,x){return x==null?b:u(x)},f.nice=function(A){var x=h();return(!A||typeof A.range!="function")&&(A=e(x[0],x[x.length-1],A==null?10:A)),A?h(Bh(x,A)):f},f.copy=function(){return Vr(f,nc(t,e,n,r,i,o,s,a,c,u))},f}function Sb(){return at.apply(nc(My,Iy,zt,io,ro,un,oa,ia,Pt,da).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Db(){return at.apply(nc(Dy,Cy,Rt,so,oo,fn,ca,aa,Pt,pa).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Io(){var t=0,e=1,n,r,i,o,s=Te,a=!1,c;function u(l){return l==null||isNaN(l=+l)?c:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(a=!!l,u):a},u.interpolator=function(l){return arguments.length?(s=l,u):s};function f(l){return function(h){var d,p;return arguments.length?([d,p]=h,s=l(d,p),u):[s(0),s(1)]}}return u.range=f(Gt),u.rangeRound=f(Qr),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function Ht(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function rc(){var t=gn(Io()(Te));return t.copy=function(){return Ht(t,rc())},Ut.apply(t,arguments)}function _h(){var t=Ka(Io()).domain([1,10]);return t.copy=function(){return Ht(t,_h()).base(t.base())},Ut.apply(t,arguments)}function Yh(){var t=$a(Io());return t.copy=function(){return Ht(t,Yh()).constant(t.constant())},Ut.apply(t,arguments)}function ic(){var t=ec(Io());return t.copy=function(){return Ht(t,ic()).exponent(t.exponent())},Ut.apply(t,arguments)}function Cb(){return ic.apply(null,arguments).exponent(.5)}function To(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=Te,f,l=!1,h;function d(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:c),u(l?Math.max(0,Math.min(1,g)):g))}d.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,d):[t,e,n]},d.clamp=function(g){return arguments.length?(l=!!g,d):l},d.interpolator=function(g){return arguments.length?(u=g,d):u};function p(g){return function(m){var y,v,w;return arguments.length?([y,v,w]=m,u=Xa(g,[y,v,w]),d):[u(0),u(.5),u(1)]}}return d.range=p(Gt),d.rangeRound=p(Qr),d.unknown=function(g){return arguments.length?(h=g,d):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,d}}function Wh(){var t=gn(To()(Te));return t.copy=function(){return Ht(t,Wh())},Ut.apply(t,arguments)}function Xh(){var t=Ka(To()).domain([.1,1,10]);return t.copy=function(){return Ht(t,Xh()).base(t.base())},Ut.apply(t,arguments)}function qh(){var t=$a(To());return t.copy=function(){return Ht(t,qh()).constant(t.constant())},Ut.apply(t,arguments)}function oc(){var t=ec(To());return t.copy=function(){return Ht(t,oc()).exponent(t.exponent())},Ut.apply(t,arguments)}function Mb(){return oc.apply(null,arguments).exponent(.5)}function sc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Ib="identity",Qn="linear",Qt="log",_r="pow",Yr="sqrt",No="symlog",Zh="time",Kh="utc",ft="sequential",Vn="diverging",ac="quantile",Jh="quantize",$h="threshold",cc="ordinal",uc="point",ed="band",lc="bin-ordinal",ce="continuous",Wr="discrete",Xr="discretizing",_e="interpolating",td="temporal";function Tb(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 Nb(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,c,u;for(i<r&&(a=r,r=i,i=a),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),s=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function fc(){const t=Ta().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],d=r[1-h],p=sc(l,a,c);let g=r[h-0];i=(d-g)/(p||1),s&&(i=Math.floor(i)),g+=(d-g-i*(l-a))*u,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=eo(l).map(y=>g+i*y);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]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),a=c,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?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.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 g=+l[0],m=+l[1],y,v,w;if(!(g!==g||m!==m)&&(m<g&&(w=g,g=m,m=w),!(m<d[0]||g>r[1-h])))return y=Math.max(0,_s(d,g)-1),v=g===m?y:_s(d,m)-1,g-d[y]>o+1e-10&&++y,h&&(w=y,y=p-v,v=p-w),y>v?void 0:e().slice(y,v+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return fc().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(c).align(u)},f()}function nd(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return nd(e())},t}function Lb(){return nd(fc().paddingInner(1))}var Ob=Array.prototype.map;function kb(t){return Ob.call(t,wr)}const Bb=Array.prototype.slice;function rd(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Sr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=kb(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Bb.call(r),n):e.slice()},n.tickFormat=function(r,i){return Lh(t[0],Je(t),r==null?10:r,i)},n.copy=function(){return rd().domain(n.domain()).range(n.range())},n}const Lo={};function Fb(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Tb(o):o.invertExtent?Nb(o):void 0),o.type=t,o};return r.metadata=Ji(Us(n)),r}function _(t,e,n){return arguments.length>1?(Lo[t]=Fb(t,e,n),this):Pb(t)?Lo[t]:void 0}_(Ib,kh),_(Qn,Oh,ce),_(Qt,Ja,[ce,Qt]),_(_r,tc,ce),_(Yr,vb,ce),_(No,jh,ce),_(Zh,Sb,[ce,td]),_(Kh,Db,[ce,td]),_(ft,rc,[ce,_e]),_("".concat(ft,"-").concat(Qn),rc,[ce,_e]),_("".concat(ft,"-").concat(Qt),_h,[ce,_e,Qt]),_("".concat(ft,"-").concat(_r),ic,[ce,_e]),_("".concat(ft,"-").concat(Yr),Cb,[ce,_e]),_("".concat(ft,"-").concat(No),Yh,[ce,_e]),_("".concat(Vn,"-").concat(Qn),Wh,[ce,_e]),_("".concat(Vn,"-").concat(Qt),Xh,[ce,_e,Qt]),_("".concat(Vn,"-").concat(_r),oc,[ce,_e]),_("".concat(Vn,"-").concat(Yr),Mb,[ce,_e]),_("".concat(Vn,"-").concat(No),qh,[ce,_e]),_(ac,Hh,[Xr,ac]),_(Jh,Qh,Xr),_($h,Vh,Xr),_(lc,rd,[Wr,Xr]),_(cc,Ta,Wr),_(ed,fc,Wr),_(uc,Lb,Wr);function Pb(t){return an(Lo,t)}function qr(t,e){const n=Lo[t];return n&&n.metadata[e]}function et(t){return qr(t,ce)}function Vt(t){return qr(t,Wr)}function _n(t){return qr(t,Xr)}function id(t){return qr(t,Qt)}function Oo(t){return qr(t,_e)}function zb(t,e){const n=e[0],r=Je(e)-n;return function(i){return t(n+i*r)}}function ko(t,e,n){return Xa(od(e||"rgb",n),t)}function Rb(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function od(t,e){const n=ub[Ub(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Ub(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const jb={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"},Gb={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 sd(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 ad(t,e){for(const n in t)hc(n,e(t[n]))}const cd={};ad(Gb,sd),ad(jb,t=>ko(sd(t)));function hc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(cd[t]=e,this):cd[t]}var VI="";function Hb(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
|
7
7
|
* @license
|
8
8
|
* Copyright 2017 Google LLC
|
9
9
|
* SPDX-License-Identifier: BSD-3-Clause
|
10
|
-
*/var dc;const Wn=globalThis.trustedTypes,cd=Wn?Wn.createPolicy("lit-html",{createHTML:t=>t}):void 0,Vt=`lit$${(Math.random()+"").slice(9)}$`,ud="?"+Vt,jb=`<${ud}>`,Xn=document,Kr=(t="")=>Xn.createComment(t),Jr=t=>t===null||typeof t!="object"&&typeof t!="function",ld=Array.isArray,Gb=t=>{var e;return ld(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},$r=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,fd=/-->/g,hd=/>/g,mn=/>|[ \n\r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n\r"'`<>=]|("|')|))|$)/g,dd=/'/g,pd=/"/g,gd=/^(?:script|style|textarea)$/i,Hb=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),I=Hb(1),ye=Symbol.for("lit-noChange"),Y=Symbol.for("lit-nothing"),md=new WeakMap,$e=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let s=o._$litPart$;if(s===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=s=new ti(e.insertBefore(Kr(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},qn=Xn.createTreeWalker(Xn,129,null,!1),Qb=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=$r;for(let c=0;c<n;c++){const u=t[c];let f,l,h=-1,d=0;for(;d<u.length&&(s.lastIndex=d,l=s.exec(u),l!==null);)d=s.lastIndex,s===$r?l[1]==="!--"?s=fd:l[1]!==void 0?s=hd:l[2]!==void 0?(gd.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=mn):l[3]!==void 0&&(s=mn):s===mn?l[0]===">"?(s=i!=null?i:$r,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?mn:l[3]==='"'?pd:dd):s===pd||s===dd?s=mn:s===fd||s===hd?s=$r:(s=mn,i=void 0);const p=s===mn&&t[c+1].startsWith("/>")?" ":"";o+=s===$r?u+jb:h>=0?(r.push(f),u.slice(0,h)+"$lit$"+u.slice(h)+Vt+p):u+Vt+(h===-2?(r.push(void 0),c):p)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");return[cd!==void 0?cd.createHTML(a):a,r]};class ei{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,c=this.parts,[u,f]=Qb(e,n);if(this.el=ei.createElement(u,r),qn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=qn.nextNode())!==null&&c.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(Vt)){const d=f[s++];if(l.push(h),d!==void 0){const p=i.getAttribute(d.toLowerCase()+"$lit$").split(Vt),g=/([.?@])?(.*)/.exec(d);c.push({type:1,index:o,name:g[2],strings:p,ctor:g[1]==="."?_b:g[1]==="?"?Wb:g[1]==="@"?Xb:Lo})}else c.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(gd.test(i.tagName)){const l=i.textContent.split(Vt),h=l.length-1;if(h>0){i.textContent=Wn?Wn.emptyScript:"";for(let d=0;d<h;d++)i.append(l[d],Kr()),qn.nextNode(),c.push({type:2,index:++o});i.append(l[h],Kr())}}}else if(i.nodeType===8)if(i.data===ud)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(Vt,l+1))!==-1;)c.push({type:7,index:o}),l+=Vt.length-1}o++}}static createElement(e,n){const r=Xn.createElement("template");return r.innerHTML=e,r}}function Zn(t,e,n=t,r){var i,o,s,a;if(e===ye)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=Jr(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Cl)!==null&&s!==void 0?s:a._$Cl=[])[r]=c:n._$Cu=c),c!==void 0&&(e=Zn(t,c._$AS(t,e.values),c,r)),e}class Vb{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:Xn).importNode(r,!0);qn.currentNode=o;let s=qn.nextNode(),a=0,c=0,u=i[0];for(;u!==void 0;){if(a===u.index){let f;u.type===2?f=new ti(s,s.nextSibling,this,e):u.type===1?f=new u.ctor(s,u.name,u.strings,this,e):u.type===6&&(f=new qb(s,this,e)),this.v.push(f),u=i[++c]}a!==(u==null?void 0:u.index)&&(s=qn.nextNode(),a++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class ti{constructor(e,n,r,i){var o;this.type=2,this._$AH=Y,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cg}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=Zn(this,e,n),Jr(e)?e===Y||e==null||e===""?(this._$AH!==Y&&this._$AR(),this._$AH=Y):e!==this._$AH&&e!==ye&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.S(e):Gb(e)?this.M(e):this.$(e)}A(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}S(e){this._$AH!==e&&(this._$AR(),this._$AH=this.A(e))}$(e){this._$AH!==Y&&Jr(this._$AH)?this._$AA.nextSibling.data=e:this.S(Xn.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=ei.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const s=new Vb(o,this),a=s.p(this.options);s.m(r),this.S(a),this._$AH=s}}_$AC(e){let n=md.get(e.strings);return n===void 0&&md.set(e.strings,n=new ei(e)),n}M(e){ld(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new ti(this.A(Kr()),this.A(Kr()),this,this.options)):r=n[i],r._$AI(o),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._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Lo{constructor(e,n,r,i,o){this.type=1,this._$AH=Y,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Y}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let s=!1;if(o===void 0)e=Zn(this,e,n,0),s=!Jr(e)||e!==this._$AH&&e!==ye,s&&(this._$AH=e);else{const a=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Zn(this,a[r+c],n,c),u===ye&&(u=this._$AH[c]),s||(s=!Jr(u)||u!==this._$AH[c]),u===Y?e=Y:e!==Y&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}s&&!i&&this.k(e)}k(e){e===Y?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class _b extends Lo{constructor(){super(...arguments),this.type=3}k(e){this.element[this.name]=e===Y?void 0:e}}const Yb=Wn?Wn.emptyScript:"";class Wb extends Lo{constructor(){super(...arguments),this.type=4}k(e){e&&e!==Y?this.element.setAttribute(this.name,Yb):this.element.removeAttribute(this.name)}}class Xb extends Lo{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Zn(this,e,n,0))!==null&&r!==void 0?r:Y)===ye)return;const i=this._$AH,o=e===Y&&i!==Y||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==Y&&(i===Y||o);o&&this.element.removeEventListener(this.name,this,i),s&&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 qb{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){Zn(this,e)}}const yd=window.litHtmlPolyfillSupport;yd==null||yd(ei,ti),((dc=globalThis.litHtmlVersions)!==null&&dc!==void 0?dc:globalThis.litHtmlVersions=[]).push("2.0.2");function pc(t,e,n,r){return n=n||(i=>i),r=r||(i=>i),t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ye(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function he(t){return t[t.length-1]}const yn="gs-suppress-tooltip";class Zb{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(){var e;return(e=he(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=Ub(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&Kb(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const e=20,[n,r]=this.mouseCoords;let i=n+e;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-e-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+e,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&($e("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}$e(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(I`${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 Kb(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const Jb="RawCode",$b="Literal",ex="Property",tx="Identifier",nx="ArrayExpression",rx="BinaryExpression",ix="CallExpression",ox="ConditionalExpression",sx="LogicalExpression",ax="MemberExpression",cx="ObjectExpression",ux="UnaryExpression";function et(t){this.type=t}et.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=lx(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function lx(t){switch(t.type){case nx:return t.elements;case rx:case sx:return[t.left,t.right];case ix:return[t.callee].concat(t.arguments);case ox:return[t.test,t.consequent,t.alternate];case ax:return[t.object,t.property];case cx:return t.properties;case ex:return[t.key,t.value];case ux:return[t.argument];case tx:case $b:case Jb:default:return[]}}var lt,N,S,Ae,W,Oo=1,ni=2,An=3,_t=4,ko=5,bn=6,Ne=7,ri=8,fx=9;lt={},lt[Oo]="Boolean",lt[ni]="<end>",lt[An]="Identifier",lt[_t]="Keyword",lt[ko]="Null",lt[bn]="Numeric",lt[Ne]="Punctuator",lt[ri]="String",lt[fx]="RegularExpression";var hx="ArrayExpression",dx="BinaryExpression",px="CallExpression",gx="ConditionalExpression",Ad="Identifier",mx="Literal",yx="LogicalExpression",Ax="MemberExpression",bx="ObjectExpression",xx="Property",vx="UnaryExpression",de="Unexpected token %0",wx="Unexpected number",Ex="Unexpected string",Sx="Unexpected identifier",Dx="Unexpected reserved word",Cx="Unexpected end of input",gc="Invalid regular expression",mc="Invalid regular expression: missing /",bd="Octal literals are not allowed in strict mode.",Mx="Duplicate data property in object literal not allowed in strict mode",ge="ILLEGAL",ii="Disabled.",Ix=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]"),Tx=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 Bo(t,e){if(!t)throw new Error("ASSERT: "+e)}function Et(t){return t>=48&&t<=57}function yc(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function oi(t){return"01234567".indexOf(t)>=0}function Nx(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 si(t){return t===10||t===13||t===8232||t===8233}function ai(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Ix.test(String.fromCharCode(t))}function Fo(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Tx.test(String.fromCharCode(t))}const Lx={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 xd(){for(;S<Ae;){const t=N.charCodeAt(S);if(Nx(t)||si(t))++S;else break}}function Ac(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<Ae&&yc(N[S])?(r=N[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):G({},de,ge);return String.fromCharCode(i)}function Ox(){var t,e,n,r;for(t=N[S],e=0,t==="}"&&G({},de,ge);S<Ae&&(t=N[S++],!!yc(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&G({},de,ge),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function vd(){var t,e;for(t=N.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(N.charCodeAt(S)!==117&&G({},de,ge),++S,t=Ac("u"),(!t||t==="\\"||!ai(t.charCodeAt(0)))&&G({},de,ge),e=t);S<Ae&&(t=N.charCodeAt(S),!!Fo(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),N.charCodeAt(S)!==117&&G({},de,ge),++S,t=Ac("u"),(!t||t==="\\"||!Fo(t.charCodeAt(0)))&&G({},de,ge),e+=t);return e}function kx(){var t,e;for(t=S++;S<Ae;){if(e=N.charCodeAt(S),e===92)return S=t,vd();if(Fo(e))++S;else break}return N.slice(t,S)}function Bx(){var t,e,n;return t=S,e=N.charCodeAt(S)===92?vd():kx(),e.length===1?n=An:Lx.hasOwnProperty(e)?n=_t:e==="null"?n=ko:e==="true"||e==="false"?n=Oo:n=An,{type:n,value:e,start:t,end:S}}function bc(){var t=S,e=N.charCodeAt(S),n,r=N[S],i,o,s;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++S,{type:Ne,value:String.fromCharCode(e),start:t,end:S};default:if(n=N.charCodeAt(S+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 S+=2,{type:Ne,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,N.charCodeAt(S)===61&&++S,{type:Ne,value:N.slice(t,S),start:t,end:S}}}if(s=N.substr(S,4),s===">>>=")return S+=4,{type:Ne,value:s,start:t,end:S};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:Ne,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:Ne,value:i,start:t,end:S};if(i==="//"&&G({},de,ge),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:Ne,value:r,start:t,end:S};G({},de,ge)}function Fx(t){let e="";for(;S<Ae&&yc(N[S]);)e+=N[S++];return e.length===0&&G({},de,ge),ai(N.charCodeAt(S))&&G({},de,ge),{type:bn,value:parseInt("0x"+e,16),start:t,end:S}}function Px(t){let e="0"+N[S++];for(;S<Ae&&oi(N[S]);)e+=N[S++];return(ai(N.charCodeAt(S))||Et(N.charCodeAt(S)))&&G({},de,ge),{type:bn,value:parseInt(e,8),octal:!0,start:t,end:S}}function wd(){var t,e,n;if(n=N[S],Bo(Et(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=N[S++],n=N[S],t==="0"){if(n==="x"||n==="X")return++S,Fx(e);if(oi(n))return Px(e);n&&Et(n.charCodeAt(0))&&G({},de,ge)}for(;Et(N.charCodeAt(S));)t+=N[S++];n=N[S]}if(n==="."){for(t+=N[S++];Et(N.charCodeAt(S));)t+=N[S++];n=N[S]}if(n==="e"||n==="E")if(t+=N[S++],n=N[S],(n==="+"||n==="-")&&(t+=N[S++]),Et(N.charCodeAt(S)))for(;Et(N.charCodeAt(S));)t+=N[S++];else G({},de,ge);return ai(N.charCodeAt(S))&&G({},de,ge),{type:bn,value:parseFloat(t),start:e,end:S}}function zx(){var t="",e,n,r,i,o=!1;for(e=N[S],Bo(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<Ae;)if(r=N[S++],r===e){e="";break}else if(r==="\\")if(r=N[S++],!r||!si(r.charCodeAt(0)))switch(r){case"u":case"x":N[S]==="{"?(++S,t+=Ox()):t+=Ac(r);break;case"n":t+=`
|
11
|
-
`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:
|
12
|
-
`&&++S;else{if(si(r.charCodeAt(0)))break;t+=r}return e!==""&&G({},de,ge),{type:ri,value:t,octal:o,start:n,end:S}}function Rx(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";G({},gc)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{G({},gc)}try{return new RegExp(t,e)}catch{return null}}function Ux(){var t,e,n,r,i;for(t=N[S],Bo(t==="/","Regular expression literal must start with a slash"),e=N[S++],n=!1,r=!1;S<Ae;)if(t=N[S++],e+=t,t==="\\")t=N[S++],si(t.charCodeAt(0))&&G({},mc),e+=t;else if(si(t.charCodeAt(0)))G({},mc);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||G({},mc),i=e.substr(1,e.length-2),{value:i,literal:e}}function jx(){var t,e,n;for(e="",n="";S<Ae&&(t=N[S],!!Fo(t.charCodeAt(0)));)++S,t==="\\"&&S<Ae?G({},de,ge):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&G({},gc,n),{value:n,literal:e}}function Gx(){var t,e,n,r;return W=null,xd(),t=S,e=Ux(),n=jx(),r=Rx(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function Hx(t){return t.type===An||t.type===_t||t.type===Oo||t.type===ko}function Ed(){if(xd(),S>=Ae)return{type:ni,start:S,end:S};const t=N.charCodeAt(S);return ai(t)?Bx():t===40||t===41||t===59?bc():t===39||t===34?zx():t===46?Et(N.charCodeAt(S+1))?wd():bc():Et(t)?wd():bc()}function Le(){const t=W;return S=t.end,W=Ed(),S=t.end,t}function Sd(){const t=S;W=Ed(),S=t}function Qx(t){const e=new et(hx);return e.elements=t,e}function Dd(t,e,n){const r=new et(t==="||"||t==="&&"?yx:dx);return r.operator=t,r.left=e,r.right=n,r}function Vx(t,e){const n=new et(px);return n.callee=t,n.arguments=e,n}function _x(t,e,n){const r=new et(gx);return r.test=t,r.consequent=e,r.alternate=n,r}function xc(t){const e=new et(Ad);return e.name=t,e}function ci(t){const e=new et(mx);return e.value=t.value,e.raw=N.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Cd(t,e,n){const r=new et(Ax);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function Yx(t){const e=new et(bx);return e.properties=t,e}function Md(t,e,n){const r=new et(xx);return r.key=e,r.value=n,r.kind=t,r}function Wx(t,e){const n=new et(vx);return n.operator=t,n.argument=e,n.prefix=!0,n}function G(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Bo(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=S,n.description=i,n}function Po(t){t.type===ni&&G(t,Cx),t.type===bn&&G(t,wx),t.type===ri&&G(t,Ex),t.type===An&&G(t,Sx),t.type===_t&&G(t,Dx),G(t,de,t.value)}function be(t){const e=Le();(e.type!==Ne||e.value!==t)&&Po(e)}function K(t){return W.type===Ne&&W.value===t}function vc(t){return W.type===_t&&W.value===t}function Xx(){const t=[];for(S=W.start,be("[");!K("]");)K(",")?(Le(),t.push(null)):(t.push(xn()),K("]")||be(","));return Le(),Qx(t)}function Id(){S=W.start;const t=Le();return t.type===ri||t.type===bn?(t.octal&&G(t,bd),ci(t)):xc(t.value)}function qx(){var t,e,n,r;if(S=W.start,t=W,t.type===An)return n=Id(),be(":"),r=xn(),Md("init",n,r);if(t.type===ni||t.type===Ne)Po(t);else return e=Id(),be(":"),r=xn(),Md("init",e,r)}function Zx(){var t=[],e,n,r,i={},o=String;for(S=W.start,be("{");!K("}");)e=qx(),e.key.type===Ad?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?G({},Mx):i[r]=!0,t.push(e),K("}")||be(",");return be("}"),Yx(t)}function Kx(){be("(");const t=wc();return be(")"),t}const Jx={if:1};function $x(){var t,e,n;if(K("("))return Kx();if(K("["))return Xx();if(K("{"))return Zx();if(t=W.type,S=W.start,t===An||Jx[W.value])n=xc(Le().value);else if(t===ri||t===bn)W.octal&&G(W,bd),n=ci(Le());else{if(t===_t)throw new Error(ii);t===Oo?(e=Le(),e.value=e.value==="true",n=ci(e)):t===ko?(e=Le(),e.value=null,n=ci(e)):K("/")||K("/=")?(n=ci(Gx()),Sd()):Po(Le())}return n}function ev(){const t=[];if(be("("),!K(")"))for(;S<Ae&&(t.push(xn()),!K(")"));)be(",");return be(")"),t}function tv(){S=W.start;const t=Le();return Hx(t)||Po(t),xc(t.value)}function nv(){return be("."),tv()}function rv(){be("[");const t=wc();return be("]"),t}function iv(){var t,e,n;for(t=$x();;)if(K("."))n=nv(),t=Cd(".",t,n);else if(K("("))e=ev(),t=Vx(t,e);else if(K("["))n=rv(),t=Cd("[",t,n);else break;return t}function Td(){const t=iv();if(W.type===Ne&&(K("++")||K("--")))throw new Error(ii);return t}function zo(){var t,e;if(W.type!==Ne&&W.type!==_t)e=Td();else{if(K("++")||K("--"))throw new Error(ii);if(K("+")||K("-")||K("~")||K("!"))t=Le(),e=zo(),e=Wx(t.value,e);else{if(vc("delete")||vc("void")||vc("typeof"))throw new Error(ii);e=Td()}}return e}function Nd(t){let e=0;if(t.type!==Ne&&t.type!==_t)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 ov(){var t,e,n,r,i,o,s,a,c,u;if(t=W,c=zo(),r=W,i=Nd(r),i===0)return c;for(r.prec=i,Le(),e=[t,W],s=zo(),o=[c,r,s];(i=Nd(W))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,c=o.pop(),e.pop(),n=Dd(a,c,s),o.push(n);r=Le(),r.prec=i,o.push(r),e.push(W),n=zo(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=Dd(o[u-1].value,o[u-2],n),u-=2;return n}function xn(){var t,e,n;return t=ov(),K("?")&&(Le(),e=xn(),be(":"),n=xn(),t=_x(t,e,n)),t}function wc(){const t=xn();if(K(","))throw new Error(ii);return t}function sv(t){N=t,S=0,Ae=N.length,W=null,Sd();const e=wc();if(W.type!==ni)throw new Error("Unexpect token after expression.");return e}var av={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 cv(t){function e(s,a,c,u){let f=t(a[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(u<0?"":u===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,c){return u=>e(s,u,a,c)}const r="new Date",i="String",o="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(s){s.length<3&&te("Missing arguments to clamp function."),s.length>3&&te("Too many arguments to clamp function.");const a=s.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:o,test:n("test",o),if:function(s){s.length<3&&te("Missing arguments to if function."),s.length>3&&te("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function uv(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function lv(t){t=t||{};const e=t.allowed?qi(t.allowed):{},n=t.forbidden?qi(t.forbidden):{},r=t.constants||av,i=(t.functions||cv)(l),o=t.globalvar,s=t.fieldvar,a=Ce(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(se(p))return p;const g=h[p.type];return g==null&&te("Unsupported type: "+p.type),g(p)}const h={Literal:p=>p.raw,Identifier:p=>{const g=p.name;return f>0?g:an(n,g)?te("Illegal identifier: "+g):an(r,g)?r[g]:an(e,g)?g:(c[g]=1,a(g))},MemberExpression:p=>{const g=!p.computed,m=l(p.object);g&&(f+=1);const y=l(p.property);return m===s&&(u[uv(y)]=1),g&&(f-=1),m+(g?"."+y:"["+y+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&te("Illegal callee type: "+p.callee.type);const g=p.callee.name,m=p.arguments,y=an(i,g)&&i[g];return y||te("Unrecognized function: "+g),Ce(y)?y(m):y+"("+m.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=>{f+=1;const g=l(p.key);return f-=1,g+":"+l(p.value)}};function d(p){const g={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},g}return d.functions=i,d.constants=r,d}function Ec(t,e={}){const n=lv({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=sv(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),s=a=>o(a,e);return s.fields=i.fields,s}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function fv(){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 hv(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(St(i)&&i.resolutionChannel||r);n[r]=dv(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function dv(t,e,n,r){let i;if(vn(t))i=o=>t.value,i.constant=!0,i.constantValue=!0,i.accessor=void 0;else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Qt(e.type)){const o=fv();o.addAll(e.domain()),i.indexer=s=>o(n(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?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const s in i)s in i&&(o[s]=i[s]);return o},i}function vn(t){return t&&"value"in t}function wn(t){return t&&"field"in t}function Ro(t){return t&&"datum"in t}function St(t){return wn(t)||Ro(t)||Sc(t)||Ld(t)}function Uo(t,e){const n=t.mark.encoding[e];if(St(n))return n;throw new Error("Not a channel def with scale!")}function Ld(t){return t&&"chrom"in t}function Sc(t){return t&&"expr"in t}const Kn=["x","y"],Dc={x:"x2",y:"y2",size:"size2",color:"color2"},Od=Object.fromEntries(Object.entries(Dc).map(t=>[t[1],t[0]]));function ui(t){return t in Od}function pv(t){const e=Dc[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function En(t){return Od[t]||t}function jo(t){return Kn.includes(En(t))}function Sn(t){return["color","fill","stroke"].includes(En(t))}function Go(t){return["shape","squeeze"].includes(t)}function kd(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function Bd(t){if(!Go(t))throw new Error("Not a discrete channel: "+t);const e=new Map(kd(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 X(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return Z(n,[t],e)}else return Hi(t)}class gv{constructor(){this.accessorCreators=[],this.register(e=>{if(wn(e))try{const n=X(e.field);return n.constant=!1,n.fields=Tl(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Sc(e)?mv(e.expr):void 0),this.register(e=>{if(Ro(e)){const n=T1(e.datum);return n.constant=!0,n.fields=[],n}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function mv(t){const e=Ec(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.21.2 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
10
|
+
*/var dc;const Yn=globalThis.trustedTypes,ud=Yn?Yn.createPolicy("lit-html",{createHTML:t=>t}):void 0,_t=`lit$${(Math.random()+"").slice(9)}$`,ld="?"+_t,Qb=`<${ld}>`,Wn=document,Zr=(t="")=>Wn.createComment(t),Kr=t=>t===null||typeof t!="object"&&typeof t!="function",fd=Array.isArray,Vb=t=>{var e;return fd(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},Jr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,hd=/-->/g,dd=/>/g,mn=/>|[ \n\r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n\r"'`<>=]|("|')|))|$)/g,pd=/'/g,gd=/"/g,md=/^(?:script|style|textarea)$/i,_b=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),I=_b(1),ye=Symbol.for("lit-noChange"),Y=Symbol.for("lit-nothing"),yd=new WeakMap,tt=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let s=o._$litPart$;if(s===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=s=new ei(e.insertBefore(Zr(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},Xn=Wn.createTreeWalker(Wn,129,null,!1),Yb=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=Jr;for(let c=0;c<n;c++){const u=t[c];let f,l,h=-1,d=0;for(;d<u.length&&(s.lastIndex=d,l=s.exec(u),l!==null);)d=s.lastIndex,s===Jr?l[1]==="!--"?s=hd:l[1]!==void 0?s=dd:l[2]!==void 0?(md.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=mn):l[3]!==void 0&&(s=mn):s===mn?l[0]===">"?(s=i!=null?i:Jr,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?mn:l[3]==='"'?gd:pd):s===gd||s===pd?s=mn:s===hd||s===dd?s=Jr:(s=mn,i=void 0);const p=s===mn&&t[c+1].startsWith("/>")?" ":"";o+=s===Jr?u+Qb:h>=0?(r.push(f),u.slice(0,h)+"$lit$"+u.slice(h)+_t+p):u+_t+(h===-2?(r.push(void 0),c):p)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");return[ud!==void 0?ud.createHTML(a):a,r]};class $r{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,c=this.parts,[u,f]=Yb(e,n);if(this.el=$r.createElement(u,r),Xn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=Xn.nextNode())!==null&&c.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(_t)){const d=f[s++];if(l.push(h),d!==void 0){const p=i.getAttribute(d.toLowerCase()+"$lit$").split(_t),g=/([.?@])?(.*)/.exec(d);c.push({type:1,index:o,name:g[2],strings:p,ctor:g[1]==="."?Xb:g[1]==="?"?Zb:g[1]==="@"?Kb:Bo})}else c.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(md.test(i.tagName)){const l=i.textContent.split(_t),h=l.length-1;if(h>0){i.textContent=Yn?Yn.emptyScript:"";for(let d=0;d<h;d++)i.append(l[d],Zr()),Xn.nextNode(),c.push({type:2,index:++o});i.append(l[h],Zr())}}}else if(i.nodeType===8)if(i.data===ld)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(_t,l+1))!==-1;)c.push({type:7,index:o}),l+=_t.length-1}o++}}static createElement(e,n){const r=Wn.createElement("template");return r.innerHTML=e,r}}function qn(t,e,n=t,r){var i,o,s,a;if(e===ye)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=Kr(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Cl)!==null&&s!==void 0?s:a._$Cl=[])[r]=c:n._$Cu=c),c!==void 0&&(e=qn(t,c._$AS(t,e.values),c,r)),e}class Wb{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:Wn).importNode(r,!0);Xn.currentNode=o;let s=Xn.nextNode(),a=0,c=0,u=i[0];for(;u!==void 0;){if(a===u.index){let f;u.type===2?f=new ei(s,s.nextSibling,this,e):u.type===1?f=new u.ctor(s,u.name,u.strings,this,e):u.type===6&&(f=new Jb(s,this,e)),this.v.push(f),u=i[++c]}a!==(u==null?void 0:u.index)&&(s=Xn.nextNode(),a++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class ei{constructor(e,n,r,i){var o;this.type=2,this._$AH=Y,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cg}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=qn(this,e,n),Kr(e)?e===Y||e==null||e===""?(this._$AH!==Y&&this._$AR(),this._$AH=Y):e!==this._$AH&&e!==ye&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.S(e):Vb(e)?this.M(e):this.$(e)}A(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}S(e){this._$AH!==e&&(this._$AR(),this._$AH=this.A(e))}$(e){this._$AH!==Y&&Kr(this._$AH)?this._$AA.nextSibling.data=e:this.S(Wn.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=$r.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const s=new Wb(o,this),a=s.p(this.options);s.m(r),this.S(a),this._$AH=s}}_$AC(e){let n=yd.get(e.strings);return n===void 0&&yd.set(e.strings,n=new $r(e)),n}M(e){fd(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new ei(this.A(Zr()),this.A(Zr()),this,this.options)):r=n[i],r._$AI(o),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._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Bo{constructor(e,n,r,i,o){this.type=1,this._$AH=Y,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Y}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let s=!1;if(o===void 0)e=qn(this,e,n,0),s=!Kr(e)||e!==this._$AH&&e!==ye,s&&(this._$AH=e);else{const a=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=qn(this,a[r+c],n,c),u===ye&&(u=this._$AH[c]),s||(s=!Kr(u)||u!==this._$AH[c]),u===Y?e=Y:e!==Y&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}s&&!i&&this.k(e)}k(e){e===Y?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Xb extends Bo{constructor(){super(...arguments),this.type=3}k(e){this.element[this.name]=e===Y?void 0:e}}const qb=Yn?Yn.emptyScript:"";class Zb extends Bo{constructor(){super(...arguments),this.type=4}k(e){e&&e!==Y?this.element.setAttribute(this.name,qb):this.element.removeAttribute(this.name)}}class Kb extends Bo{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=qn(this,e,n,0))!==null&&r!==void 0?r:Y)===ye)return;const i=this._$AH,o=e===Y&&i!==Y||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==Y&&(i===Y||o);o&&this.element.removeEventListener(this.name,this,i),s&&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 Jb{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){qn(this,e)}}const Ad=window.litHtmlPolyfillSupport;Ad==null||Ad($r,ei),((dc=globalThis.litHtmlVersions)!==null&&dc!==void 0?dc:globalThis.litHtmlVersions=[]).push("2.0.2");function bd(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function $b(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ye(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function he(t){return t[t.length-1]}const yn="gs-suppress-tooltip";class ex{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(){var e;return(e=he(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=Hb(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&tx(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const e=20,[n,r]=this.mouseCoords;let i=n+e;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-e-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+e,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(tt("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}tt(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(I`${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 tx(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const nx="RawCode",rx="Literal",ix="Property",ox="Identifier",sx="ArrayExpression",ax="BinaryExpression",cx="CallExpression",ux="ConditionalExpression",lx="LogicalExpression",fx="MemberExpression",hx="ObjectExpression",dx="UnaryExpression";function nt(t){this.type=t}nt.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=px(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function px(t){switch(t.type){case sx:return t.elements;case ax:case lx:return[t.left,t.right];case cx:return[t.callee].concat(t.arguments);case ux:return[t.test,t.consequent,t.alternate];case fx:return[t.object,t.property];case hx:return t.properties;case ix:return[t.key,t.value];case dx:return[t.argument];case ox:case rx:case nx:default:return[]}}var ht,N,D,Ae,W,Fo=1,ti=2,An=3,Yt=4,Po=5,bn=6,Ne=7,ni=8,gx=9;ht={},ht[Fo]="Boolean",ht[ti]="<end>",ht[An]="Identifier",ht[Yt]="Keyword",ht[Po]="Null",ht[bn]="Numeric",ht[Ne]="Punctuator",ht[ni]="String",ht[gx]="RegularExpression";var mx="ArrayExpression",yx="BinaryExpression",Ax="CallExpression",bx="ConditionalExpression",xd="Identifier",xx="Literal",vx="LogicalExpression",wx="MemberExpression",Ex="ObjectExpression",Sx="Property",Dx="UnaryExpression",de="Unexpected token %0",Cx="Unexpected number",Mx="Unexpected string",Ix="Unexpected identifier",Tx="Unexpected reserved word",Nx="Unexpected end of input",pc="Invalid regular expression",gc="Invalid regular expression: missing /",vd="Octal literals are not allowed in strict mode.",Lx="Duplicate data property in object literal not allowed in strict mode",ge="ILLEGAL",ri="Disabled.",Ox=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]"),kx=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 zo(t,e){if(!t)throw new Error("ASSERT: "+e)}function Dt(t){return t>=48&&t<=57}function mc(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function ii(t){return"01234567".indexOf(t)>=0}function Bx(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 oi(t){return t===10||t===13||t===8232||t===8233}function si(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Ox.test(String.fromCharCode(t))}function Ro(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&kx.test(String.fromCharCode(t))}const Fx={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 wd(){for(;D<Ae;){const t=N.charCodeAt(D);if(Bx(t)||oi(t))++D;else break}}function yc(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)D<Ae&&mc(N[D])?(r=N[D++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):G({},de,ge);return String.fromCharCode(i)}function Px(){var t,e,n,r;for(t=N[D],e=0,t==="}"&&G({},de,ge);D<Ae&&(t=N[D++],!!mc(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&G({},de,ge),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Ed(){var t,e;for(t=N.charCodeAt(D++),e=String.fromCharCode(t),t===92&&(N.charCodeAt(D)!==117&&G({},de,ge),++D,t=yc("u"),(!t||t==="\\"||!si(t.charCodeAt(0)))&&G({},de,ge),e=t);D<Ae&&(t=N.charCodeAt(D),!!Ro(t));)++D,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),N.charCodeAt(D)!==117&&G({},de,ge),++D,t=yc("u"),(!t||t==="\\"||!Ro(t.charCodeAt(0)))&&G({},de,ge),e+=t);return e}function zx(){var t,e;for(t=D++;D<Ae;){if(e=N.charCodeAt(D),e===92)return D=t,Ed();if(Ro(e))++D;else break}return N.slice(t,D)}function Rx(){var t,e,n;return t=D,e=N.charCodeAt(D)===92?Ed():zx(),e.length===1?n=An:Fx.hasOwnProperty(e)?n=Yt:e==="null"?n=Po:e==="true"||e==="false"?n=Fo:n=An,{type:n,value:e,start:t,end:D}}function Ac(){var t=D,e=N.charCodeAt(D),n,r=N[D],i,o,s;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++D,{type:Ne,value:String.fromCharCode(e),start:t,end:D};default:if(n=N.charCodeAt(D+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 D+=2,{type:Ne,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:D};case 33:case 61:return D+=2,N.charCodeAt(D)===61&&++D,{type:Ne,value:N.slice(t,D),start:t,end:D}}}if(s=N.substr(D,4),s===">>>=")return D+=4,{type:Ne,value:s,start:t,end:D};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return D+=3,{type:Ne,value:o,start:t,end:D};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return D+=2,{type:Ne,value:i,start:t,end:D};if(i==="//"&&G({},de,ge),"<>=!+-*%&|^/".indexOf(r)>=0)return++D,{type:Ne,value:r,start:t,end:D};G({},de,ge)}function Ux(t){let e="";for(;D<Ae&&mc(N[D]);)e+=N[D++];return e.length===0&&G({},de,ge),si(N.charCodeAt(D))&&G({},de,ge),{type:bn,value:parseInt("0x"+e,16),start:t,end:D}}function jx(t){let e="0"+N[D++];for(;D<Ae&&ii(N[D]);)e+=N[D++];return(si(N.charCodeAt(D))||Dt(N.charCodeAt(D)))&&G({},de,ge),{type:bn,value:parseInt(e,8),octal:!0,start:t,end:D}}function Sd(){var t,e,n;if(n=N[D],zo(Dt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=D,t="",n!=="."){if(t=N[D++],n=N[D],t==="0"){if(n==="x"||n==="X")return++D,Ux(e);if(ii(n))return jx(e);n&&Dt(n.charCodeAt(0))&&G({},de,ge)}for(;Dt(N.charCodeAt(D));)t+=N[D++];n=N[D]}if(n==="."){for(t+=N[D++];Dt(N.charCodeAt(D));)t+=N[D++];n=N[D]}if(n==="e"||n==="E")if(t+=N[D++],n=N[D],(n==="+"||n==="-")&&(t+=N[D++]),Dt(N.charCodeAt(D)))for(;Dt(N.charCodeAt(D));)t+=N[D++];else G({},de,ge);return si(N.charCodeAt(D))&&G({},de,ge),{type:bn,value:parseFloat(t),start:e,end:D}}function Gx(){var t="",e,n,r,i,o=!1;for(e=N[D],zo(e==="'"||e==='"',"String literal must starts with a quote"),n=D,++D;D<Ae;)if(r=N[D++],r===e){e="";break}else if(r==="\\")if(r=N[D++],!r||!oi(r.charCodeAt(0)))switch(r){case"u":case"x":N[D]==="{"?(++D,t+=Px()):t+=yc(r);break;case"n":t+=`
|
11
|
+
`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:ii(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),D<Ae&&ii(N[D])&&(o=!0,i=i*8+"01234567".indexOf(N[D++]),"0123".indexOf(r)>=0&&D<Ae&&ii(N[D])&&(i=i*8+"01234567".indexOf(N[D++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&N[D]===`
|
12
|
+
`&&++D;else{if(oi(r.charCodeAt(0)))break;t+=r}return e!==""&&G({},de,ge),{type:ni,value:t,octal:o,start:n,end:D}}function Hx(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";G({},pc)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{G({},pc)}try{return new RegExp(t,e)}catch{return null}}function Qx(){var t,e,n,r,i;for(t=N[D],zo(t==="/","Regular expression literal must start with a slash"),e=N[D++],n=!1,r=!1;D<Ae;)if(t=N[D++],e+=t,t==="\\")t=N[D++],oi(t.charCodeAt(0))&&G({},gc),e+=t;else if(oi(t.charCodeAt(0)))G({},gc);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||G({},gc),i=e.substr(1,e.length-2),{value:i,literal:e}}function Vx(){var t,e,n;for(e="",n="";D<Ae&&(t=N[D],!!Ro(t.charCodeAt(0)));)++D,t==="\\"&&D<Ae?G({},de,ge):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&G({},pc,n),{value:n,literal:e}}function _x(){var t,e,n,r;return W=null,wd(),t=D,e=Qx(),n=Vx(),r=Hx(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:D}}function Yx(t){return t.type===An||t.type===Yt||t.type===Fo||t.type===Po}function Dd(){if(wd(),D>=Ae)return{type:ti,start:D,end:D};const t=N.charCodeAt(D);return si(t)?Rx():t===40||t===41||t===59?Ac():t===39||t===34?Gx():t===46?Dt(N.charCodeAt(D+1))?Sd():Ac():Dt(t)?Sd():Ac()}function Le(){const t=W;return D=t.end,W=Dd(),D=t.end,t}function Cd(){const t=D;W=Dd(),D=t}function Wx(t){const e=new nt(mx);return e.elements=t,e}function Md(t,e,n){const r=new nt(t==="||"||t==="&&"?vx:yx);return r.operator=t,r.left=e,r.right=n,r}function Xx(t,e){const n=new nt(Ax);return n.callee=t,n.arguments=e,n}function qx(t,e,n){const r=new nt(bx);return r.test=t,r.consequent=e,r.alternate=n,r}function bc(t){const e=new nt(xd);return e.name=t,e}function ai(t){const e=new nt(xx);return e.value=t.value,e.raw=N.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Id(t,e,n){const r=new nt(wx);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function Zx(t){const e=new nt(Ex);return e.properties=t,e}function Td(t,e,n){const r=new nt(Sx);return r.key=e,r.value=n,r.kind=t,r}function Kx(t,e){const n=new nt(Dx);return n.operator=t,n.argument=e,n.prefix=!0,n}function G(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(zo(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=D,n.description=i,n}function Uo(t){t.type===ti&&G(t,Nx),t.type===bn&&G(t,Cx),t.type===ni&&G(t,Mx),t.type===An&&G(t,Ix),t.type===Yt&&G(t,Tx),G(t,de,t.value)}function be(t){const e=Le();(e.type!==Ne||e.value!==t)&&Uo(e)}function K(t){return W.type===Ne&&W.value===t}function xc(t){return W.type===Yt&&W.value===t}function Jx(){const t=[];for(D=W.start,be("[");!K("]");)K(",")?(Le(),t.push(null)):(t.push(xn()),K("]")||be(","));return Le(),Wx(t)}function Nd(){D=W.start;const t=Le();return t.type===ni||t.type===bn?(t.octal&&G(t,vd),ai(t)):bc(t.value)}function $x(){var t,e,n,r;if(D=W.start,t=W,t.type===An)return n=Nd(),be(":"),r=xn(),Td("init",n,r);if(t.type===ti||t.type===Ne)Uo(t);else return e=Nd(),be(":"),r=xn(),Td("init",e,r)}function ev(){var t=[],e,n,r,i={},o=String;for(D=W.start,be("{");!K("}");)e=$x(),e.key.type===xd?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?G({},Lx):i[r]=!0,t.push(e),K("}")||be(",");return be("}"),Zx(t)}function tv(){be("(");const t=vc();return be(")"),t}const nv={if:1};function rv(){var t,e,n;if(K("("))return tv();if(K("["))return Jx();if(K("{"))return ev();if(t=W.type,D=W.start,t===An||nv[W.value])n=bc(Le().value);else if(t===ni||t===bn)W.octal&&G(W,vd),n=ai(Le());else{if(t===Yt)throw new Error(ri);t===Fo?(e=Le(),e.value=e.value==="true",n=ai(e)):t===Po?(e=Le(),e.value=null,n=ai(e)):K("/")||K("/=")?(n=ai(_x()),Cd()):Uo(Le())}return n}function iv(){const t=[];if(be("("),!K(")"))for(;D<Ae&&(t.push(xn()),!K(")"));)be(",");return be(")"),t}function ov(){D=W.start;const t=Le();return Yx(t)||Uo(t),bc(t.value)}function sv(){return be("."),ov()}function av(){be("[");const t=vc();return be("]"),t}function cv(){var t,e,n;for(t=rv();;)if(K("."))n=sv(),t=Id(".",t,n);else if(K("("))e=iv(),t=Xx(t,e);else if(K("["))n=av(),t=Id("[",t,n);else break;return t}function Ld(){const t=cv();if(W.type===Ne&&(K("++")||K("--")))throw new Error(ri);return t}function jo(){var t,e;if(W.type!==Ne&&W.type!==Yt)e=Ld();else{if(K("++")||K("--"))throw new Error(ri);if(K("+")||K("-")||K("~")||K("!"))t=Le(),e=jo(),e=Kx(t.value,e);else{if(xc("delete")||xc("void")||xc("typeof"))throw new Error(ri);e=Ld()}}return e}function Od(t){let e=0;if(t.type!==Ne&&t.type!==Yt)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 uv(){var t,e,n,r,i,o,s,a,c,u;if(t=W,c=jo(),r=W,i=Od(r),i===0)return c;for(r.prec=i,Le(),e=[t,W],s=jo(),o=[c,r,s];(i=Od(W))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,c=o.pop(),e.pop(),n=Md(a,c,s),o.push(n);r=Le(),r.prec=i,o.push(r),e.push(W),n=jo(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=Md(o[u-1].value,o[u-2],n),u-=2;return n}function xn(){var t,e,n;return t=uv(),K("?")&&(Le(),e=xn(),be(":"),n=xn(),t=qx(t,e,n)),t}function vc(){const t=xn();if(K(","))throw new Error(ri);return t}function lv(t){N=t,D=0,Ae=N.length,W=null,Cd();const e=vc();if(W.type!==ti)throw new Error("Unexpect token after expression.");return e}var fv={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 hv(t){function e(s,a,c,u){let f=t(a[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(u<0?"":u===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,c){return u=>e(s,u,a,c)}const r="new Date",i="String",o="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(s){s.length<3&&te("Missing arguments to clamp function."),s.length>3&&te("Too many arguments to clamp function.");const a=s.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:o,test:n("test",o),if:function(s){s.length<3&&te("Missing arguments to if function."),s.length>3&&te("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function dv(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function pv(t){t=t||{};const e=t.allowed?Ji(t.allowed):{},n=t.forbidden?Ji(t.forbidden):{},r=t.constants||fv,i=(t.functions||hv)(l),o=t.globalvar,s=t.fieldvar,a=Ce(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(ie(p))return p;const g=h[p.type];return g==null&&te("Unsupported type: "+p.type),g(p)}const h={Literal:p=>p.raw,Identifier:p=>{const g=p.name;return f>0?g:an(n,g)?te("Illegal identifier: "+g):an(r,g)?r[g]:an(e,g)?g:(c[g]=1,a(g))},MemberExpression:p=>{const g=!p.computed,m=l(p.object);g&&(f+=1);const y=l(p.property);return m===s&&(u[dv(y)]=1),g&&(f-=1),m+(g?"."+y:"["+y+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&te("Illegal callee type: "+p.callee.type);const g=p.callee.name,m=p.arguments,y=an(i,g)&&i[g];return y||te("Unrecognized function: "+g),Ce(y)?y(m):y+"("+m.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=>{f+=1;const g=l(p.key);return f-=1,g+":"+l(p.value)}};function d(p){const g={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},g}return d.functions=i,d.constants=r,d}function wc(t,e={}){const n=pv({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=lv(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),s=a=>o(a,e);return s.fields=i.fields,s}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function gv(){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 mv(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Xe(i)&&i.resolutionChannel||r);n[r]=yv(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function yv(t,e,n,r){let i;if(We(t)){const o=t.value;i=s=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Vt(e.type)){const o=gv();o.addAll(e.domain()),i.indexer=o}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?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const s in i)s in i&&(o[s]=i[s]);return o},i}function We(t){return t&&"value"in t}function vn(t){return t&&"field"in t}function ci(t){return t&&"datum"in t}function Xe(t){return vn(t)||ci(t)||Sc(t)||kd(t)}function Ec(t,e){const n=t.mark.encoding[e];if(Xe(n))return n;throw new Error("Not a channel def with scale!")}function kd(t){return t&&"chrom"in t}function Sc(t){return t&&"expr"in t}const ui=["x","y"],Av=["x2","y2"],bv=[...ui,...Av];function Bd(t){return ui.includes(t)}function li(t){return bv.includes(t)}const Dc={x:"x2",y:"y2"},Fd=Object.fromEntries(Object.entries(Dc).map(t=>[t[1],t[0]]));function fi(t){return t in Fd}function xv(t){const e=Dc[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Zn(t){var e;return(e=Fd[t])!=null?e:t}function wn(t){return["color","fill","stroke"].includes(Zn(t))}function Go(t){return["shape","squeeze"].includes(t)}function Pd(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function zd(t){if(!Go(t))throw new Error("Not a discrete channel: "+t);const e=new Map(Pd(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 X(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return Z(n,[t],e)}else return Vi(t)}class vv{constructor(){this.accessorCreators=[],this.register(e=>{if(vn(e))try{const n=X(e.field);return n.constant=!1,n.fields=Nl(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Sc(e)?wv(e.expr):void 0),this.register(e=>{if(ci(e)){const r=L1(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 wv(t){const e=wc(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.21.2 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
13
13
|
Available via the MIT license.
|
14
|
-
see: http://github.com/greggman/twgl.js for details */const Cc=5120,li=5121,Mc=5122,Ic=5123,Tc=5124,Nc=5125,Lc=5126,yv=32819,Av=32820,bv=33635,xv=5131,vv=33640,wv=35899,Ev=35902,Sv=36269,Dv=34042,Fd={};{const t=Fd;t[Cc]=Int8Array,t[li]=Uint8Array,t[Mc]=Int16Array,t[Ic]=Uint16Array,t[Tc]=Int32Array,t[Nc]=Uint32Array,t[Lc]=Float32Array,t[yv]=Uint16Array,t[Av]=Uint16Array,t[bv]=Uint16Array,t[xv]=Uint16Array,t[vv]=Uint32Array,t[wv]=Uint32Array,t[Ev]=Uint32Array,t[Sv]=Uint32Array,t[Dv]=Uint32Array}function Oc(t){if(t instanceof Int8Array)return Cc;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return li;if(t instanceof Int16Array)return Mc;if(t instanceof Uint16Array)return Ic;if(t instanceof Int32Array)return Tc;if(t instanceof Uint32Array)return Nc;if(t instanceof Float32Array)return Lc;throw new Error("unsupported typed array type")}function Cv(t){if(t===Int8Array)return Cc;if(t===Uint8Array||t===Uint8ClampedArray)return li;if(t===Int16Array)return Mc;if(t===Uint16Array)return Ic;if(t===Int32Array)return Tc;if(t===Uint32Array)return Nc;if(t===Float32Array)return Lc;throw new Error("unsupported typed array type")}function Mv(t){const e=Fd[t];if(!e)throw new Error("unknown gl type");return e}const Ho=typeof SharedArrayBuffer!="undefined"?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 Iv(...t){console.error(...t)}function Pd(...t){console.warn(...t)}function Tv(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function zd(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function Qo(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function Nv(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const Rd=35044,ft=34962,Lv=34963,Ov=34660,kv=5120,Bv=5121,Fv=5122,Pv=5123,zv=5124,Rv=5125,Uv=5126,Ud={attribPrefix:""};function jd(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Rd)}function Gd(t,e,n,r){if(Tv(t,e))return e;n=n||ft;const i=t.createBuffer();return jd(t,n,i,e,r),i}function Hd(t){return t==="indices"}function jv(t){return t instanceof Int8Array||t instanceof Uint8Array}function Gv(t){return t===Int8Array||t===Uint8Array}function Hv(t){return t.length?t:t.data}const Qv=/coord|texture/i,Vv=/color|colour/i;function Qd(t,e){let n;if(Qv.test(t)?n=2:Vv.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 _v(t,e){return t.numComponents||t.size||Qd(e,Hv(t).length)}function kc(t,e){if(Ho(t))return t;if(Ho(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(Hd(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function Yv(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Hd(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Ud.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ho(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,u=i.numComponents||i.size,a=i.type,c=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=Cv(l),c=i.normalize!==void 0?i.normalize:Gv(l),u=i.numComponents||i.size||Qd(r,f),s=t.createBuffer(),t.bindBuffer(ft,s),t.bufferData(ft,h,i.drawType||Rd)}else{const f=kc(i,r);s=Gd(t,f,void 0,i.drawType),a=Oc(f),c=i.normalize!==void 0?i.normalize:jv(f),u=_v(i,r)}n[o]={buffer:s,numComponents:u,type:a,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(ft,null),n}function Wv(t,e,n,r){n=kc(n),r!==void 0?(t.bindBuffer(ft,e.buffer),t.bufferSubData(ft,r,n)):jd(t,ft,e.buffer,n,e.drawType)}function Xv(t,e){return e===kv||e===Bv?1:e===Fv||e===Pv?2:e===zv||e===Rv||e===Uv?4:0}const Bc=["position","positions","a_position"];function qv(t,e){let n,r;for(r=0;r<Bc.length&&(n=Bc[r],!(n in e||(n=Ud.attribPrefix+n,n in e)));++r);r===Bc.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(ft,i.buffer);const o=t.getBufferParameter(ft,Ov);t.bindBuffer(ft,null);const s=Xv(t,i.type),a=o/s,c=i.numComponents||i.size,u=a/c;if(u%1!=0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function Zv(t,e,n){const r=Yv(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=kc(o,"indices");i.indices=Gd(t,s,Lv),i.numElements=s.length,i.elementType=Oc(s)}else i.numElements||(i.numElements=qv(t,i.attribs));return i}function Jn(t){return!!t.texStorage2D}const Fc=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),Yt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},$n=Ho,Vd=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),_d=6406,ht=6407,J=6408,Yd=6409,Wd=6410,fi=6402,Xd=34041,Vo=33071,Kv=9728,Jv=9729,Dt=3553,Ct=34067,Wt=32879,Xt=35866,_o=34069,$v=34070,ew=34071,tw=34072,nw=34073,rw=34074,Pc=10241,zc=10240,Yo=10242,Wo=10243,qd=32882,iw=33082,ow=33083,sw=33084,aw=33085,Rc=3317,Zd=3314,Kd=32878,Jd=3316,$d=3315,e0=32877,cw=37443,uw=37441,lw=37440,fw=33321,hw=36756,dw=33325,pw=33326,gw=33330,mw=33329,yw=33338,Aw=33337,bw=33340,xw=33339,vw=33323,ww=36757,Ew=33327,Sw=33328,Dw=33336,Cw=33335,Mw=33332,Iw=33331,Tw=33334,Nw=33333,Lw=32849,Ow=35905,kw=36194,Bw=36758,Fw=35898,Pw=35901,zw=34843,Rw=34837,Uw=36221,jw=36239,Gw=36215,Hw=36233,Qw=36209,Vw=36227,_w=32856,Yw=35907,Ww=36759,Xw=32855,qw=32854,Zw=32857,Kw=34842,Jw=34836,$w=36220,e4=36238,t4=36975,n4=36214,r4=36232,i4=36226,o4=36208,s4=33189,a4=33190,c4=36012,u4=36013,l4=35056,qt=5120,$=5121,Xo=5122,er=5123,qo=5124,Dn=5125,xe=5126,t0=32819,n0=32820,r0=33635,tt=5131,hi=36193,Uc=33640,f4=35899,h4=35902,d4=36269,p4=34042,Zo=33319,tr=33320,Ko=6403,nr=36244,rr=36248,Cn=36249;let jc;function Jo(t){if(!jc){const e={};e[_d]={textureFormat:_d,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[$,tt,hi,xe]},e[Yd]={textureFormat:Yd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[$,tt,hi,xe]},e[Wd]={textureFormat:Wd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[$,tt,hi,xe]},e[ht]={textureFormat:ht,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[$,tt,hi,xe,r0]},e[J]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[$,tt,hi,xe,t0,n0]},e[fi]={textureFormat:fi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Dn,er]},e[fw]={textureFormat:Ko,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[$]},e[hw]={textureFormat:Ko,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[qt]},e[dw]={textureFormat:Ko,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[xe,tt]},e[pw]={textureFormat:Ko,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[xe]},e[gw]={textureFormat:nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[$]},e[mw]={textureFormat:nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[qt]},e[Mw]={textureFormat:nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[er]},e[Iw]={textureFormat:nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Xo]},e[Tw]={textureFormat:nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Dn]},e[Nw]={textureFormat:nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qo]},e[vw]={textureFormat:Zo,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[$]},e[ww]={textureFormat:Zo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[qt]},e[Ew]={textureFormat:Zo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[xe,tt]},e[Sw]={textureFormat:Zo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[xe]},e[Dw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[$]},e[Cw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[qt]},e[yw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[er]},e[Aw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Xo]},e[bw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Dn]},e[xw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[qo]},e[Lw]={textureFormat:ht,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[$]},e[Ow]={textureFormat:ht,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[$]},e[kw]={textureFormat:ht,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[$,r0]},e[Bw]={textureFormat:ht,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[qt]},e[Fw]={textureFormat:ht,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[xe,tt,f4]},e[Pw]={textureFormat:ht,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[xe,tt,h4]},e[zw]={textureFormat:ht,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[xe,tt]},e[Rw]={textureFormat:ht,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[xe]},e[Uw]={textureFormat:rr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[$]},e[jw]={textureFormat:rr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[qt]},e[Gw]={textureFormat:rr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[er]},e[Hw]={textureFormat:rr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Xo]},e[Qw]={textureFormat:rr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Dn]},e[Vw]={textureFormat:rr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[qo]},e[_w]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[$]},e[Yw]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[$]},e[Ww]={textureFormat:J,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[qt]},e[Xw]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[$,n0,Uc]},e[qw]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[$,t0]},e[Zw]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Uc]},e[Kw]={textureFormat:J,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[xe,tt]},e[Jw]={textureFormat:J,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[xe]},e[$w]={textureFormat:Cn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$]},e[e4]={textureFormat:Cn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qt]},e[t4]={textureFormat:Cn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Uc]},e[n4]={textureFormat:Cn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[er]},e[r4]={textureFormat:Cn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Xo]},e[i4]={textureFormat:Cn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[qo]},e[o4]={textureFormat:Cn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Dn]},e[s4]={textureFormat:fi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[er,Dn]},e[a4]={textureFormat:fi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Dn]},e[c4]={textureFormat:fi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[xe]},e[l4]={textureFormat:Xd,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[p4]},e[u4]={textureFormat:Xd,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[d4]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const s=r.type[o];r.bytesPerElementMap[s]=i})}),jc=e}return jc[t]}function g4(t,e){const n=Jo(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function ir(t){const e=Jo(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function i0(t){return(t&t-1)==0}function m4(t,e,n,r){if(!Jn(t))return i0(e)&&i0(n);const i=Jo(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function y4(t){const e=Jo(t);if(!e)throw"unknown internal format";return e.textureFilterable}function o0(t,e,n){return $n(e)?Oc(e):n||$}function $o(t,e,n,r,i){if(i%1!=0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Ct?6:1));o%1==0?(n=o,r=o):(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 or(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(cw,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(uw,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(lw,e.flipY)}function s0(t){t.pixelStorei(Rc,4),Jn(t)&&(t.pixelStorei(Zd,0),t.pixelStorei(Kd,0),t.pixelStorei(Jd,0),t.pixelStorei($d,0),t.pixelStorei(e0,0))}function A4(t,e,n,r){r.minMag&&(n.call(t,e,Pc,r.minMag),n.call(t,e,zc,r.minMag)),r.min&&n.call(t,e,Pc,r.min),r.mag&&n.call(t,e,zc,r.mag),r.wrap&&(n.call(t,e,Yo,r.wrap),n.call(t,e,Wo,r.wrap),(e===Wt||Nv(t,e))&&n.call(t,e,qd,r.wrap)),r.wrapR&&n.call(t,e,qd,r.wrapR),r.wrapS&&n.call(t,e,Yo,r.wrapS),r.wrapT&&n.call(t,e,Wo,r.wrapT),r.minLod&&n.call(t,e,iw,r.minLod),r.maxLod&&n.call(t,e,ow,r.maxLod),r.baseLevel&&n.call(t,e,sw,r.baseLevel),r.maxLevel&&n.call(t,e,aw,r.maxLevel)}function a0(t,e,n){const r=n.target||Dt;t.bindTexture(r,e),A4(t,r,t.texParameteri,n)}function b4(t){return t=t||Yt.textureColor,$n(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Gc(t,e,n,r,i,o){n=n||Yt.textureOptions,o=o||J;const s=n.target||Dt;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),m4(t,r,i,o))t.generateMipmap(s);else{const a=y4(o)?Jv:Kv;t.texParameteri(s,Pc,a),t.texParameteri(s,zc,a),t.texParameteri(s,Yo,Vo),t.texParameteri(s,Wo,Vo)}}function di(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Hc(t,e){return e=e||{},e.cubeFaceOrder||[_o,$v,ew,tw,nw,rw]}function Qc(t,e){const r=Hc(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function c0(t,e,n,r){r=r||Yt.textureOptions;const i=r.target||Dt,o=r.level||0;let s=n.width,a=n.height;const c=r.internalFormat||r.format||J,u=ir(c),f=r.format||u.format,l=r.type||u.type;if(or(t,r),t.bindTexture(i,e),i===Ct){const h=n.width,d=n.height;let p,g;if(h/6===d)p=d,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(d/6===h)p=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3==d/2)p=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2==d/3)p=h/2,g=[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=Vd();m?(m.canvas.width=p,m.canvas.height=p,s=p,a=p,Qc(t,r).forEach(function(y){const w=g[y.ndx*2+0]*p,x=g[y.ndx*2+1]*p;m.drawImage(n,w,x,p,p,0,0,p,p),t.texImage2D(y.face,o,c,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap!="undefined"&&(s=p,a=p,Qc(t,r).forEach(function(y){const w=g[y.ndx*2+0]*p,x=g[y.ndx*2+1]*p;t.texImage2D(y.face,o,c,p,p,0,f,l,null),createImageBitmap(n,w,x,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(E){or(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,E),di(r)&&Gc(t,e,r,s,a,c)})}))}else if(i===Wt||i===Xt){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 g=n.width===d?1:0,m=n.height===d?1:0;t.pixelStorei(Rc,1),t.pixelStorei(Zd,n.width),t.pixelStorei(Kd,0),t.pixelStorei(e0,0),t.texImage3D(i,o,c,h,h,h,0,f,l,null);for(let y=0;y<p;++y){const w=y*h*g,x=y*h*m;t.pixelStorei(Jd,w),t.pixelStorei($d,x),t.texSubImage3D(i,o,0,0,y,h,h,1,f,l,n)}s0(t)}else t.texImage2D(i,o,c,f,l,n);di(r)&&Gc(t,e,r,s,a,c),a0(t,e,r)}function pi(){}function x4(t){if(typeof document!="undefined"){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 v4(t,e){return e===void 0&&!x4(t)?"anonymous":e}function w4(t,e,n){n=n||pi;let r;if(e=e!==void 0?e:Yt.crossOrigin,e=v4(t,e),typeof Image!="undefined"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",s),r=null},o=function(){const c="couldn't load image: "+t;Iv(c),n(c,r),i()},s=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",s),r.src=t,r}else if(typeof ImageBitmap!="undefined"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(s)}).catch(function(c){i=c,setTimeout(s)}),r=null}return r}function u0(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function Vc(t,e,n){return u0(t)?(setTimeout(function(){n(null,t)}),t):w4(t,e,n)}function _c(t,e,n){n=n||Yt.textureOptions;const r=n.target||Dt;if(t.bindTexture(r,e),n.color===!1)return;const i=b4(n.color);if(r===Ct)for(let o=0;o<6;++o)t.texImage2D(_o+o,0,J,1,1,0,J,$,i);else r===Wt||r===Xt?t.texImage3D(r,0,J,1,1,1,0,J,$,i):t.texImage2D(r,0,J,1,1,0,J,$,i)}function E4(t,e,n,r){return r=r||pi,n=n||Yt.textureOptions,_c(t,e,n),n=Object.assign({},n),Vc(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(c0(t,e,s,n),r(null,e,s))})}function S4(t,e,n,r){r=r||pi;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||J,a=ir(s),c=n.format||a.format,u=n.type||$,f=n.target||Dt;if(f!==Ct)throw"target must be TEXTURE_CUBE_MAP";_c(t,e,n),n=Object.assign({},n);let l=6;const h=[],d=Hc(t,n);let p;function g(m){return function(y,w){--l,y?h.push(y):w.width!==w.height?h.push("cubemap face img is not a square: "+w.src):(or(t,n),t.bindTexture(f,e),l===5?Hc().forEach(function(x){t.texImage2D(x,o,s,c,u,w)}):t.texImage2D(m,o,s,c,u,w),di(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,p)}}p=i.map(function(m,y){return Vc(m,n.crossOrigin,g(d[y]))})}function D4(t,e,n,r){r=r||pi;const i=n.src,o=n.internalFormat||n.format||J,s=ir(o),a=n.format||s.format,c=n.type||$,u=n.target||Xt;if(u!==Wt&&u!==Xt)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";_c(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const d=n.level||0;let p=n.width,g=n.height;const m=i.length;let y=!0;function w(x){return function(E,b){if(--f,E)l.push(E);else{if(or(t,n),t.bindTexture(u,e),y){y=!1,p=n.width||b.width,g=n.height||b.height,t.texImage3D(u,d,o,p,g,m,0,a,c,null);for(let A=0;A<m;++A)t.texSubImage3D(u,d,0,0,A,p,g,1,a,c,b)}else{let A=b,v;(b.width!==p||b.height!==g)&&(v=Vd(),A=v.canvas,v.canvas.width=p,v.canvas.height=g,v.drawImage(b,0,0,p,g)),t.texSubImage3D(u,d,0,0,x,p,g,1,a,c,A),v&&A===v.canvas&&(v.canvas.width=0,v.canvas.height=0)}di(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(x,E){return Vc(x,n.crossOrigin,w(E))})}function l0(t,e,n,r){r=r||Yt.textureOptions;const i=r.target||Dt;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const c=r.level||0,u=r.internalFormat||r.format||J,f=ir(u),l=r.format||f.format,h=r.type||o0(t,n,f.type);if($n(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=Mv(h);n=new m(n)}const d=g4(u,h),p=n.byteLength/d;if(p%1)throw"length wrong size for format: "+Fc(t,l);let g;if(i===Wt||i===Xt)if(!o&&!s&&!a){const m=Math.cbrt(p);if(m%1!=0)throw"can't guess cube size of array of numElements: "+p;o=m,s=m,a=m}else o&&(!s||!a)?(g=$o(t,i,s,a,p/o),s=g.width,a=g.height):s&&(!o||!a)?(g=$o(t,i,o,a,p/s),o=g.width,a=g.height):(g=$o(t,i,o,s,p/a),o=g.width,s=g.height);else g=$o(t,i,o,s,p),o=g.width,s=g.height;if(s0(t),t.pixelStorei(Rc,r.unpackAlignment||1),or(t,r),i===Ct){const m=d/n.BYTES_PER_ELEMENT,y=p/6*m;Qc(t,r).forEach(w=>{const x=y*w.ndx,E=n.subarray(x,x+y);t.texImage2D(w.face,c,u,o,s,0,l,h,E)})}else i===Wt||i===Xt?t.texImage3D(i,c,u,o,s,a,0,l,h,n):t.texImage2D(i,c,u,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function C4(t,e,n){const r=n.target||Dt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||J,s=ir(o),a=n.format||s.format,c=n.type||s.type;if(or(t,n),r===Ct)for(let u=0;u<6;++u)t.texImage2D(_o+u,i,o,n.width,n.height,0,a,c,null);else r===Wt||r===Xt?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,c,null):t.texImage2D(r,i,o,n.width,n.height,0,a,c,null)}function gi(t,e,n){n=n||pi,e=e||Yt.textureOptions;const r=t.createTexture(),i=e.target||Dt;let o=e.width||1,s=e.height||1;const a=e.internalFormat||J;t.bindTexture(i,r),i===Ct&&(t.texParameteri(i,Yo,Vo),t.texParameteri(i,Wo,Vo));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")E4(t,r,e,n);else if($n(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||$n(c[0]))){const u=l0(t,r,c,e);o=u.width,s=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||u0(c[0]))?i===Ct?S4(t,r,e,n):D4(t,r,e,n):(c0(t,r,c,e),o=c.width,s=c.height);else C4(t,r,e);return di(e)&&Gc(t,r,e,o,s,a),a0(t,r,e),r}function M4(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||Dt;t.bindTexture(s,e);const a=n.level||0,c=n.internalFormat||n.format||J,u=ir(c),f=n.format||u.format;let l;const h=n.src;if(h&&($n(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||o0(t,h,u.type):l=n.type||u.type,s===Ct)for(let d=0;d<6;++d)t.texImage2D(_o+d,a,c,r,i,0,f,l,null);else s===Wt||s===Xt?t.texImage3D(s,a,c,r,i,o,0,f,l,null):t.texImage2D(s,a,c,r,i,0,f,l,null)}const I4=Pd,es=33984,T4=35048,ts=34962,N4=34963,Yc=35345,f0=35718,L4=35721,O4=35971,k4=35382,B4=35396,F4=35398,P4=35392,z4=35395,ns=5126,h0=35664,d0=35665,p0=35666,Wc=5124,g0=35667,m0=35668,y0=35669,A0=35670,b0=35671,x0=35672,v0=35673,w0=35674,E0=35675,S0=35676,R4=35678,U4=35680,j4=35679,G4=35682,H4=35685,Q4=35686,V4=35687,_4=35688,Y4=35689,W4=35690,X4=36289,q4=36292,Z4=36293,Xc=5125,D0=36294,C0=36295,M0=36296,K4=36298,J4=36299,$4=36300,e3=36303,t3=36306,n3=36307,r3=36308,i3=36311,rs=3553,is=34067,qc=32879,os=35866,F={};function I0(t,e){return F[e].bindPoint}function o3(t,e){return function(n){t.uniform1f(e,n)}}function s3(t,e){return function(n){t.uniform1fv(e,n)}}function a3(t,e){return function(n){t.uniform2fv(e,n)}}function c3(t,e){return function(n){t.uniform3fv(e,n)}}function u3(t,e){return function(n){t.uniform4fv(e,n)}}function T0(t,e){return function(n){t.uniform1i(e,n)}}function N0(t,e){return function(n){t.uniform1iv(e,n)}}function L0(t,e){return function(n){t.uniform2iv(e,n)}}function O0(t,e){return function(n){t.uniform3iv(e,n)}}function k0(t,e){return function(n){t.uniform4iv(e,n)}}function l3(t,e){return function(n){t.uniform1ui(e,n)}}function f3(t,e){return function(n){t.uniform1uiv(e,n)}}function h3(t,e){return function(n){t.uniform2uiv(e,n)}}function d3(t,e){return function(n){t.uniform3uiv(e,n)}}function p3(t,e){return function(n){t.uniform4uiv(e,n)}}function g3(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function m3(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function y3(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function A3(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function b3(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function x3(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function v3(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function w3(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function E3(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function we(t,e,n,r){const i=I0(t,e);return Jn(t)?function(o){let s,a;Qo(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(es+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(es+n),t.bindTexture(i,o)}}function Ee(t,e,n,r,i){const o=I0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return Jn(t)?function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(es+s[u]);let f,l;Qo(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(es+s[u]),t.bindTexture(o,c)})}}F[ns]={Type:Float32Array,size:4,setter:o3,arraySetter:s3},F[h0]={Type:Float32Array,size:8,setter:a3,cols:2},F[d0]={Type:Float32Array,size:12,setter:c3,cols:3},F[p0]={Type:Float32Array,size:16,setter:u3,cols:4},F[Wc]={Type:Int32Array,size:4,setter:T0,arraySetter:N0},F[g0]={Type:Int32Array,size:8,setter:L0,cols:2},F[m0]={Type:Int32Array,size:12,setter:O0,cols:3},F[y0]={Type:Int32Array,size:16,setter:k0,cols:4},F[Xc]={Type:Uint32Array,size:4,setter:l3,arraySetter:f3},F[D0]={Type:Uint32Array,size:8,setter:h3,cols:2},F[C0]={Type:Uint32Array,size:12,setter:d3,cols:3},F[M0]={Type:Uint32Array,size:16,setter:p3,cols:4},F[A0]={Type:Uint32Array,size:4,setter:T0,arraySetter:N0},F[b0]={Type:Uint32Array,size:8,setter:L0,cols:2},F[x0]={Type:Uint32Array,size:12,setter:O0,cols:3},F[v0]={Type:Uint32Array,size:16,setter:k0,cols:4},F[w0]={Type:Float32Array,size:32,setter:g3,rows:2,cols:2},F[E0]={Type:Float32Array,size:48,setter:m3,rows:3,cols:3},F[S0]={Type:Float32Array,size:64,setter:y3,rows:4,cols:4},F[H4]={Type:Float32Array,size:32,setter:A3,rows:2,cols:3},F[Q4]={Type:Float32Array,size:32,setter:x3,rows:2,cols:4},F[V4]={Type:Float32Array,size:48,setter:b3,rows:3,cols:2},F[_4]={Type:Float32Array,size:48,setter:w3,rows:3,cols:4},F[Y4]={Type:Float32Array,size:64,setter:v3,rows:4,cols:2},F[W4]={Type:Float32Array,size:64,setter:E3,rows:4,cols:3},F[R4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:rs},F[U4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:is},F[j4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:qc},F[G4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:rs},F[X4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:os},F[q4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:os},F[Z4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:is},F[K4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:rs},F[J4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:qc},F[$4]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:is},F[e3]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:os},F[t3]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:rs},F[n3]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:qc},F[r3]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:is},F[i3]={Type:null,size:0,setter:we,arraySetter:Ee,bindPoint:os};function ss(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(ts,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ns,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Zt(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(ts,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Wc,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(ts,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Xc,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Zc(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(ts,o.buffer);const s=o.size||o.numComponents||r,a=s/i,c=o.type||ns,f=F[c].size*s,l=o.normalize||!1,h=o.offset||0,d=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,a,c,l,f,h+d*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const ae={};ae[ns]={size:4,setter:ss},ae[h0]={size:8,setter:ss},ae[d0]={size:12,setter:ss},ae[p0]={size:16,setter:ss},ae[Wc]={size:4,setter:Zt},ae[g0]={size:8,setter:Zt},ae[m0]={size:12,setter:Zt},ae[y0]={size:16,setter:Zt},ae[Xc]={size:4,setter:as},ae[D0]={size:8,setter:as},ae[C0]={size:12,setter:as},ae[M0]={size:16,setter:as},ae[A0]={size:4,setter:Zt},ae[b0]={size:8,setter:Zt},ae[x0]={size:12,setter:Zt},ae[v0]={size:16,setter:Zt},ae[w0]={size:4,setter:Zc,count:2},ae[E0]={size:9,setter:Zc,count:3},ae[S0]={size:16,setter:Zc,count:4};function B0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const S3=/(\.|\[|]|\w+)/g,D3=t=>t>="0"&&t<="9";function F0(t,e,n,r){const i=t.split(S3).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const c=D3(a[0]),u=c?parseInt(a):a;if(c&&(s+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],h=l==="[",d=n[u]||(h?[]:{});n[u]=d,n=d,r[s]=r[s]||function(p){return function(g){z0(p,g)}}(d),s+=l}}}function C3(t,e){let n=0;function r(a,c,u){const f=c.name.endsWith("[0]"),l=c.type,h=F[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let d;if(h.bindPoint){const p=n;n+=c.size,f?d=h.arraySetter(t,l,p,u,c.size):d=h.setter(t,l,p,u,c.size)}else h.arraySetter&&f?d=h.arraySetter(t,u):d=h.setter(t,u);return d.location=u,d}const i={},o={},s=t.getProgramParameter(e,f0);for(let a=0;a<s;++a){const c=t.getActiveUniform(e,a);if(B0(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,F0(u,l,o,i)}}return i}function M3(t,e){const n={},r=t.getProgramParameter(e,O4);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function I3(t,e){const n=t.getProgramParameter(e,f0),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const c=t.getActiveUniform(e,a);r[a].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const c=a[0],u=a[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},s=t.getProgramParameter(e,k4);for(let a=0;a<s;++a){const c=t.getActiveUniformBlockName(e,a),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,B4),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,F4),size:t.getActiveUniformBlockParameter(e,a,P4),uniformIndices:t.getActiveUniformBlockParameter(e,a,z4)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const P0=/\[\d+\]\.$/,T3=(t,e)=>((t+(e-1))/e|0)*e;function N3(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[a++]=s[c++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function L3(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return I4("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),c=t.createBuffer(),u=s.index;t.bindBuffer(Yc,c),t.uniformBlockBinding(e,s.index,u);let f=r+".";P0.test(f)&&(f=f.replace(P0,"."));const l={},h={},d={};return s.uniformIndices.forEach(function(p){const g=o[p];let m=g.name;m.startsWith(f)&&(m=m.substr(f.length));const y=m.endsWith("[0]");y&&(m=m.substr(0,m.length-3));const w=F[g.type],x=w.Type,E=y?T3(w.size,16)*g.size:w.size*g.size,b=new x(a,g.offset,E/x.BYTES_PER_ELEMENT);l[m]=b;const A=N3(b,y,w.rows,w.cols);h[m]=A,F0(m,A,d,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:c,uniforms:l,setters:h}}function O3(t,e,n){return L3(t,e.program,e.uniformBlockSpec,n)}function k3(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Yc,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function B3(t,e,n){k3(t,e,n)&&t.bufferData(Yc,n.array,T4)}function z0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):z0(t[n],e[n])}}function Se(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const s=o.length;for(let a=0;a<s;++a)Se(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function F3(t,e){const n={},r=t.getProgramParameter(e,L4);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(B0(o))continue;const s=t.getAttribLocation(e,o.name),a=ae[o.type],c=a.setter(t,s,a);c.location=s,n[o.name]=c}return n}function P3(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function sr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(P3(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(N4,n.indices))}function z3(t,e){const n=C3(t,e),r=F3(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Jn(t)&&(i.uniformBlockSpec=I3(t,e),i.transformFeedbackInfo=M3(t,e)),i}const R3=4,R0=5123;function mi(t,e,n,r,i,o){n=n===void 0?R3:n;const s=e.indices,a=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,c,a===void 0?R0:e.elementType,i,o):t.drawElements(n,c,a===void 0?R0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const U3=36160,yi=36161,j3=3553,G3=5121,H3=6402,Q3=6408,V3=33190,_3=36012,Y3=35056,W3=36013,X3=32854,q3=32855,Z3=36194,U0=33189,j0=6401,G0=36168,Kc=34041,K3=36064,cs=36096,H0=36128,Jc=33306,$c=33071,eu=9729,Q0=[{format:Q3,type:G3,min:eu,wrap:$c},{format:Kc}],nt={};nt[Kc]=Jc,nt[j0]=H0,nt[G0]=H0,nt[H3]=cs,nt[U0]=cs,nt[V3]=cs,nt[_3]=cs,nt[Y3]=Jc,nt[W3]=Jc;function J3(t,e){return nt[t]||nt[e]}const Kt={};Kt[X3]=!0,Kt[q3]=!0,Kt[Z3]=!0,Kt[Kc]=!0,Kt[U0]=!0,Kt[j0]=!0,Kt[G0]=!0;function $3(t){return Kt[t]}function eE(t,e,n,r){const i=U3,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||Q0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.format;let l=c.attachmentPoint||J3(f,c.internalFormat);if(l||(l=K3+s++),!u)if($3(f))u=t.createRenderbuffer(),t.bindRenderbuffer(yi,u),t.renderbufferStorage(yi,f,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||eu,h.mag=h.mag||h.minMag||eu,h.wrapS=h.wrapS||h.wrap||$c,h.wrapT=h.wrapT||h.wrap||$c),u=gi(t,h)}if(zd(t,u))t.framebufferRenderbuffer(i,l,yi,u);else if(Qo(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,l,u,c.level||0,c.layer):t.framebufferTexture2D(i,l,c.target||j3,u,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),a}function tE(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||Q0,n.forEach(function(o,s){const a=e.attachments[s],c=o.format;if(zd(t,a))t.bindRenderbuffer(yi,a),t.renderbufferStorage(yi,c,r,i);else if(Qo(t,a))M4(t,a,o,r,i);else throw new Error("unknown attachment type")})}function nE(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){sr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const rE=/^(.*?)_/;function iE(t,e){Fc(t,0);const n=t.getExtension(e);if(n){const r={},i=rE.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],c=typeof a=="function",u=c?i:o;let f=s;s.endsWith(u)&&(f=s.substring(0,s.length-u.length)),t[f]!==void 0?!c&&t[f]!==a&&Pd(f,t[f],a,s):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},Fc(r,0)}return n}const V0=["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 _0(t){for(let e=0;e<V0.length;++e)iE(t,V0[e])}function oE(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){_0(r);break}return r}function sE(t,e){return oE(t,e)}var aE=`/**
|
14
|
+
see: http://github.com/greggman/twgl.js for details */const Cc=5120,hi=5121,Mc=5122,Ic=5123,Tc=5124,Nc=5125,Lc=5126,Ev=32819,Sv=32820,Dv=33635,Cv=5131,Mv=33640,Iv=35899,Tv=35902,Nv=36269,Lv=34042,Rd={};{const t=Rd;t[Cc]=Int8Array,t[hi]=Uint8Array,t[Mc]=Int16Array,t[Ic]=Uint16Array,t[Tc]=Int32Array,t[Nc]=Uint32Array,t[Lc]=Float32Array,t[Ev]=Uint16Array,t[Sv]=Uint16Array,t[Dv]=Uint16Array,t[Cv]=Uint16Array,t[Mv]=Uint32Array,t[Iv]=Uint32Array,t[Tv]=Uint32Array,t[Nv]=Uint32Array,t[Lv]=Uint32Array}function Oc(t){if(t instanceof Int8Array)return Cc;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return hi;if(t instanceof Int16Array)return Mc;if(t instanceof Uint16Array)return Ic;if(t instanceof Int32Array)return Tc;if(t instanceof Uint32Array)return Nc;if(t instanceof Float32Array)return Lc;throw new Error("unsupported typed array type")}function Ov(t){if(t===Int8Array)return Cc;if(t===Uint8Array||t===Uint8ClampedArray)return hi;if(t===Int16Array)return Mc;if(t===Uint16Array)return Ic;if(t===Int32Array)return Tc;if(t===Uint32Array)return Nc;if(t===Float32Array)return Lc;throw new Error("unsupported typed array type")}function kv(t){const e=Rd[t];if(!e)throw new Error("unknown gl type");return e}const Ho=typeof SharedArrayBuffer!="undefined"?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 Bv(...t){console.error(...t)}function Ud(...t){console.warn(...t)}function Fv(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function jd(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function Qo(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function Pv(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const Gd=35044,dt=34962,zv=34963,Rv=34660,Uv=5120,jv=5121,Gv=5122,Hv=5123,Qv=5124,Vv=5125,_v=5126,Hd={attribPrefix:""};function Qd(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Gd)}function Vd(t,e,n,r){if(Fv(t,e))return e;n=n||dt;const i=t.createBuffer();return Qd(t,n,i,e,r),i}function _d(t){return t==="indices"}function Yv(t){return t instanceof Int8Array||t instanceof Uint8Array}function Wv(t){return t===Int8Array||t===Uint8Array}function Xv(t){return t.length?t:t.data}const qv=/coord|texture/i,Zv=/color|colour/i;function Yd(t,e){let n;if(qv.test(t)?n=2:Zv.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 Kv(t,e){return t.numComponents||t.size||Yd(e,Xv(t).length)}function kc(t,e){if(Ho(t))return t;if(Ho(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(_d(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function Jv(t,e){const n={};return Object.keys(e).forEach(function(r){if(!_d(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Hd.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ho(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,u=i.numComponents||i.size,a=i.type,c=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=Ov(l),c=i.normalize!==void 0?i.normalize:Wv(l),u=i.numComponents||i.size||Yd(r,f),s=t.createBuffer(),t.bindBuffer(dt,s),t.bufferData(dt,h,i.drawType||Gd)}else{const f=kc(i,r);s=Vd(t,f,void 0,i.drawType),a=Oc(f),c=i.normalize!==void 0?i.normalize:Yv(f),u=Kv(i,r)}n[o]={buffer:s,numComponents:u,type:a,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(dt,null),n}function $v(t,e,n,r){n=kc(n),r!==void 0?(t.bindBuffer(dt,e.buffer),t.bufferSubData(dt,r,n)):Qd(t,dt,e.buffer,n,e.drawType)}function ew(t,e){return e===Uv||e===jv?1:e===Gv||e===Hv?2:e===Qv||e===Vv||e===_v?4:0}const Bc=["position","positions","a_position"];function tw(t,e){let n,r;for(r=0;r<Bc.length&&(n=Bc[r],!(n in e||(n=Hd.attribPrefix+n,n in e)));++r);r===Bc.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(dt,i.buffer);const o=t.getBufferParameter(dt,Rv);t.bindBuffer(dt,null);const s=ew(t,i.type),a=o/s,c=i.numComponents||i.size,u=a/c;if(u%1!=0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function nw(t,e,n){const r=Jv(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=kc(o,"indices");i.indices=Vd(t,s,zv),i.numElements=s.length,i.elementType=Oc(s)}else i.numElements||(i.numElements=tw(t,i.attribs));return i}function Kn(t){return!!t.texStorage2D}const Fc=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),Wt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Jn=Ho,Wd=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Xd=6406,pt=6407,J=6408,qd=6409,Zd=6410,di=6402,Kd=34041,Vo=33071,rw=9728,iw=9729,Ct=3553,Mt=34067,Xt=32879,qt=35866,_o=34069,ow=34070,sw=34071,aw=34072,cw=34073,uw=34074,Pc=10241,zc=10240,Yo=10242,Wo=10243,Jd=32882,lw=33082,fw=33083,hw=33084,dw=33085,Rc=3317,$d=3314,e0=32878,t0=3316,n0=3315,r0=32877,pw=37443,gw=37441,mw=37440,yw=33321,Aw=36756,bw=33325,xw=33326,vw=33330,ww=33329,Ew=33338,Sw=33337,Dw=33340,Cw=33339,Mw=33323,Iw=36757,Tw=33327,Nw=33328,Lw=33336,Ow=33335,kw=33332,Bw=33331,Fw=33334,Pw=33333,zw=32849,Rw=35905,Uw=36194,jw=36758,Gw=35898,Hw=35901,Qw=34843,Vw=34837,_w=36221,Yw=36239,Ww=36215,Xw=36233,qw=36209,Zw=36227,Kw=32856,Jw=35907,$w=36759,e4=32855,t4=32854,n4=32857,r4=34842,i4=34836,o4=36220,s4=36238,a4=36975,c4=36214,u4=36232,l4=36226,f4=36208,h4=33189,d4=33190,p4=36012,g4=36013,m4=35056,Zt=5120,$=5121,Xo=5122,$n=5123,qo=5124,En=5125,xe=5126,i0=32819,o0=32820,s0=33635,rt=5131,pi=36193,Uc=33640,y4=35899,A4=35902,b4=36269,x4=34042,Zo=33319,er=33320,Ko=6403,tr=36244,nr=36248,Sn=36249;let jc;function Jo(t){if(!jc){const e={};e[Xd]={textureFormat:Xd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[$,rt,pi,xe]},e[qd]={textureFormat:qd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[$,rt,pi,xe]},e[Zd]={textureFormat:Zd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[$,rt,pi,xe]},e[pt]={textureFormat:pt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[$,rt,pi,xe,s0]},e[J]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[$,rt,pi,xe,i0,o0]},e[di]={textureFormat:di,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[En,$n]},e[yw]={textureFormat:Ko,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[$]},e[Aw]={textureFormat:Ko,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Zt]},e[bw]={textureFormat:Ko,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[xe,rt]},e[xw]={textureFormat:Ko,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[xe]},e[vw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[$]},e[ww]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Zt]},e[kw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[$n]},e[Bw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Xo]},e[Fw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[En]},e[Pw]={textureFormat:tr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qo]},e[Mw]={textureFormat:Zo,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[$]},e[Iw]={textureFormat:Zo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Zt]},e[Tw]={textureFormat:Zo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[xe,rt]},e[Nw]={textureFormat:Zo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[xe]},e[Lw]={textureFormat:er,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[$]},e[Ow]={textureFormat:er,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Zt]},e[Ew]={textureFormat:er,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$n]},e[Sw]={textureFormat:er,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Xo]},e[Dw]={textureFormat:er,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[En]},e[Cw]={textureFormat:er,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[qo]},e[zw]={textureFormat:pt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[$]},e[Rw]={textureFormat:pt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[$]},e[Uw]={textureFormat:pt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[$,s0]},e[jw]={textureFormat:pt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Zt]},e[Gw]={textureFormat:pt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[xe,rt,y4]},e[Hw]={textureFormat:pt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[xe,rt,A4]},e[Qw]={textureFormat:pt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[xe,rt]},e[Vw]={textureFormat:pt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[xe]},e[_w]={textureFormat:nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[$]},e[Yw]={textureFormat:nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Zt]},e[Ww]={textureFormat:nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[$n]},e[Xw]={textureFormat:nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Xo]},e[qw]={textureFormat:nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[En]},e[Zw]={textureFormat:nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[qo]},e[Kw]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[$]},e[Jw]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[$]},e[$w]={textureFormat:J,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Zt]},e[e4]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[$,o0,Uc]},e[t4]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[$,i0]},e[n4]={textureFormat:J,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Uc]},e[r4]={textureFormat:J,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[xe,rt]},e[i4]={textureFormat:J,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[xe]},e[o4]={textureFormat:Sn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$]},e[s4]={textureFormat:Sn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Zt]},e[a4]={textureFormat:Sn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Uc]},e[c4]={textureFormat:Sn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[$n]},e[u4]={textureFormat:Sn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Xo]},e[l4]={textureFormat:Sn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[qo]},e[f4]={textureFormat:Sn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[En]},e[h4]={textureFormat:di,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[$n,En]},e[d4]={textureFormat:di,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[En]},e[p4]={textureFormat:di,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[xe]},e[m4]={textureFormat:Kd,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[x4]},e[g4]={textureFormat:Kd,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[b4]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const s=r.type[o];r.bytesPerElementMap[s]=i})}),jc=e}return jc[t]}function v4(t,e){const n=Jo(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function rr(t){const e=Jo(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function a0(t){return(t&t-1)==0}function w4(t,e,n,r){if(!Kn(t))return a0(e)&&a0(n);const i=Jo(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function E4(t){const e=Jo(t);if(!e)throw"unknown internal format";return e.textureFilterable}function c0(t,e,n){return Jn(e)?Oc(e):n||$}function $o(t,e,n,r,i){if(i%1!=0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Mt?6:1));o%1==0?(n=o,r=o):(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 ir(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(pw,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(gw,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(mw,e.flipY)}function u0(t){t.pixelStorei(Rc,4),Kn(t)&&(t.pixelStorei($d,0),t.pixelStorei(e0,0),t.pixelStorei(t0,0),t.pixelStorei(n0,0),t.pixelStorei(r0,0))}function S4(t,e,n,r){r.minMag&&(n.call(t,e,Pc,r.minMag),n.call(t,e,zc,r.minMag)),r.min&&n.call(t,e,Pc,r.min),r.mag&&n.call(t,e,zc,r.mag),r.wrap&&(n.call(t,e,Yo,r.wrap),n.call(t,e,Wo,r.wrap),(e===Xt||Pv(t,e))&&n.call(t,e,Jd,r.wrap)),r.wrapR&&n.call(t,e,Jd,r.wrapR),r.wrapS&&n.call(t,e,Yo,r.wrapS),r.wrapT&&n.call(t,e,Wo,r.wrapT),r.minLod&&n.call(t,e,lw,r.minLod),r.maxLod&&n.call(t,e,fw,r.maxLod),r.baseLevel&&n.call(t,e,hw,r.baseLevel),r.maxLevel&&n.call(t,e,dw,r.maxLevel)}function l0(t,e,n){const r=n.target||Ct;t.bindTexture(r,e),S4(t,r,t.texParameteri,n)}function D4(t){return t=t||Wt.textureColor,Jn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Gc(t,e,n,r,i,o){n=n||Wt.textureOptions,o=o||J;const s=n.target||Ct;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),w4(t,r,i,o))t.generateMipmap(s);else{const a=E4(o)?iw:rw;t.texParameteri(s,Pc,a),t.texParameteri(s,zc,a),t.texParameteri(s,Yo,Vo),t.texParameteri(s,Wo,Vo)}}function gi(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Hc(t,e){return e=e||{},e.cubeFaceOrder||[_o,ow,sw,aw,cw,uw]}function Qc(t,e){const r=Hc(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function f0(t,e,n,r){r=r||Wt.textureOptions;const i=r.target||Ct,o=r.level||0;let s=n.width,a=n.height;const c=r.internalFormat||r.format||J,u=rr(c),f=r.format||u.format,l=r.type||u.type;if(ir(t,r),t.bindTexture(i,e),i===Mt){const h=n.width,d=n.height;let p,g;if(h/6===d)p=d,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(d/6===h)p=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3==d/2)p=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2==d/3)p=h/2,g=[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=Wd();m?(m.canvas.width=p,m.canvas.height=p,s=p,a=p,Qc(t,r).forEach(function(y){const v=g[y.ndx*2+0]*p,w=g[y.ndx*2+1]*p;m.drawImage(n,v,w,p,p,0,0,p,p),t.texImage2D(y.face,o,c,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap!="undefined"&&(s=p,a=p,Qc(t,r).forEach(function(y){const v=g[y.ndx*2+0]*p,w=g[y.ndx*2+1]*p;t.texImage2D(y.face,o,c,p,p,0,f,l,null),createImageBitmap(n,v,w,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(S){ir(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,S),gi(r)&&Gc(t,e,r,s,a,c)})}))}else if(i===Xt||i===qt){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 g=n.width===d?1:0,m=n.height===d?1:0;t.pixelStorei(Rc,1),t.pixelStorei($d,n.width),t.pixelStorei(e0,0),t.pixelStorei(r0,0),t.texImage3D(i,o,c,h,h,h,0,f,l,null);for(let y=0;y<p;++y){const v=y*h*g,w=y*h*m;t.pixelStorei(t0,v),t.pixelStorei(n0,w),t.texSubImage3D(i,o,0,0,y,h,h,1,f,l,n)}u0(t)}else t.texImage2D(i,o,c,f,l,n);gi(r)&&Gc(t,e,r,s,a,c),l0(t,e,r)}function mi(){}function C4(t){if(typeof document!="undefined"){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 M4(t,e){return e===void 0&&!C4(t)?"anonymous":e}function I4(t,e,n){n=n||mi;let r;if(e=e!==void 0?e:Wt.crossOrigin,e=M4(t,e),typeof Image!="undefined"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",s),r=null},o=function(){const c="couldn't load image: "+t;Bv(c),n(c,r),i()},s=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",s),r.src=t,r}else if(typeof ImageBitmap!="undefined"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(s)}).catch(function(c){i=c,setTimeout(s)}),r=null}return r}function h0(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function Vc(t,e,n){return h0(t)?(setTimeout(function(){n(null,t)}),t):I4(t,e,n)}function _c(t,e,n){n=n||Wt.textureOptions;const r=n.target||Ct;if(t.bindTexture(r,e),n.color===!1)return;const i=D4(n.color);if(r===Mt)for(let o=0;o<6;++o)t.texImage2D(_o+o,0,J,1,1,0,J,$,i);else r===Xt||r===qt?t.texImage3D(r,0,J,1,1,1,0,J,$,i):t.texImage2D(r,0,J,1,1,0,J,$,i)}function T4(t,e,n,r){return r=r||mi,n=n||Wt.textureOptions,_c(t,e,n),n=Object.assign({},n),Vc(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(f0(t,e,s,n),r(null,e,s))})}function N4(t,e,n,r){r=r||mi;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||J,a=rr(s),c=n.format||a.format,u=n.type||$,f=n.target||Ct;if(f!==Mt)throw"target must be TEXTURE_CUBE_MAP";_c(t,e,n),n=Object.assign({},n);let l=6;const h=[],d=Hc(t,n);let p;function g(m){return function(y,v){--l,y?h.push(y):v.width!==v.height?h.push("cubemap face img is not a square: "+v.src):(ir(t,n),t.bindTexture(f,e),l===5?Hc().forEach(function(w){t.texImage2D(w,o,s,c,u,v)}):t.texImage2D(m,o,s,c,u,v),gi(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,p)}}p=i.map(function(m,y){return Vc(m,n.crossOrigin,g(d[y]))})}function L4(t,e,n,r){r=r||mi;const i=n.src,o=n.internalFormat||n.format||J,s=rr(o),a=n.format||s.format,c=n.type||$,u=n.target||qt;if(u!==Xt&&u!==qt)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";_c(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const d=n.level||0;let p=n.width,g=n.height;const m=i.length;let y=!0;function v(w){return function(S,b){if(--f,S)l.push(S);else{if(ir(t,n),t.bindTexture(u,e),y){y=!1,p=n.width||b.width,g=n.height||b.height,t.texImage3D(u,d,o,p,g,m,0,a,c,null);for(let A=0;A<m;++A)t.texSubImage3D(u,d,0,0,A,p,g,1,a,c,b)}else{let A=b,x;(b.width!==p||b.height!==g)&&(x=Wd(),A=x.canvas,x.canvas.width=p,x.canvas.height=g,x.drawImage(b,0,0,p,g)),t.texSubImage3D(u,d,0,0,w,p,g,1,a,c,A),x&&A===x.canvas&&(x.canvas.width=0,x.canvas.height=0)}gi(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(w,S){return Vc(w,n.crossOrigin,v(S))})}function d0(t,e,n,r){r=r||Wt.textureOptions;const i=r.target||Ct;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const c=r.level||0,u=r.internalFormat||r.format||J,f=rr(u),l=r.format||f.format,h=r.type||c0(t,n,f.type);if(Jn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=kv(h);n=new m(n)}const d=v4(u,h),p=n.byteLength/d;if(p%1)throw"length wrong size for format: "+Fc(t,l);let g;if(i===Xt||i===qt)if(!o&&!s&&!a){const m=Math.cbrt(p);if(m%1!=0)throw"can't guess cube size of array of numElements: "+p;o=m,s=m,a=m}else o&&(!s||!a)?(g=$o(t,i,s,a,p/o),s=g.width,a=g.height):s&&(!o||!a)?(g=$o(t,i,o,a,p/s),o=g.width,a=g.height):(g=$o(t,i,o,s,p/a),o=g.width,s=g.height);else g=$o(t,i,o,s,p),o=g.width,s=g.height;if(u0(t),t.pixelStorei(Rc,r.unpackAlignment||1),ir(t,r),i===Mt){const m=d/n.BYTES_PER_ELEMENT,y=p/6*m;Qc(t,r).forEach(v=>{const w=y*v.ndx,S=n.subarray(w,w+y);t.texImage2D(v.face,c,u,o,s,0,l,h,S)})}else i===Xt||i===qt?t.texImage3D(i,c,u,o,s,a,0,l,h,n):t.texImage2D(i,c,u,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function O4(t,e,n){const r=n.target||Ct;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||J,s=rr(o),a=n.format||s.format,c=n.type||s.type;if(ir(t,n),r===Mt)for(let u=0;u<6;++u)t.texImage2D(_o+u,i,o,n.width,n.height,0,a,c,null);else r===Xt||r===qt?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,c,null):t.texImage2D(r,i,o,n.width,n.height,0,a,c,null)}function yi(t,e,n){n=n||mi,e=e||Wt.textureOptions;const r=t.createTexture(),i=e.target||Ct;let o=e.width||1,s=e.height||1;const a=e.internalFormat||J;t.bindTexture(i,r),i===Mt&&(t.texParameteri(i,Yo,Vo),t.texParameteri(i,Wo,Vo));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")T4(t,r,e,n);else if(Jn(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||Jn(c[0]))){const u=d0(t,r,c,e);o=u.width,s=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||h0(c[0]))?i===Mt?N4(t,r,e,n):L4(t,r,e,n):(f0(t,r,c,e),o=c.width,s=c.height);else O4(t,r,e);return gi(e)&&Gc(t,r,e,o,s,a),l0(t,r,e),r}function k4(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||Ct;t.bindTexture(s,e);const a=n.level||0,c=n.internalFormat||n.format||J,u=rr(c),f=n.format||u.format;let l;const h=n.src;if(h&&(Jn(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||c0(t,h,u.type):l=n.type||u.type,s===Mt)for(let d=0;d<6;++d)t.texImage2D(_o+d,a,c,r,i,0,f,l,null);else s===Xt||s===qt?t.texImage3D(s,a,c,r,i,o,0,f,l,null):t.texImage2D(s,a,c,r,i,0,f,l,null)}const B4=Ud,es=33984,F4=35048,ts=34962,P4=34963,Yc=35345,p0=35718,z4=35721,R4=35971,U4=35382,j4=35396,G4=35398,H4=35392,Q4=35395,ns=5126,g0=35664,m0=35665,y0=35666,Wc=5124,A0=35667,b0=35668,x0=35669,v0=35670,w0=35671,E0=35672,S0=35673,D0=35674,C0=35675,M0=35676,V4=35678,_4=35680,Y4=35679,W4=35682,X4=35685,q4=35686,Z4=35687,K4=35688,J4=35689,$4=35690,e3=36289,t3=36292,n3=36293,Xc=5125,I0=36294,T0=36295,N0=36296,r3=36298,i3=36299,o3=36300,s3=36303,a3=36306,c3=36307,u3=36308,l3=36311,rs=3553,is=34067,qc=32879,os=35866,B={};function L0(t,e){return B[e].bindPoint}function f3(t,e){return function(n){t.uniform1f(e,n)}}function h3(t,e){return function(n){t.uniform1fv(e,n)}}function d3(t,e){return function(n){t.uniform2fv(e,n)}}function p3(t,e){return function(n){t.uniform3fv(e,n)}}function g3(t,e){return function(n){t.uniform4fv(e,n)}}function O0(t,e){return function(n){t.uniform1i(e,n)}}function k0(t,e){return function(n){t.uniform1iv(e,n)}}function B0(t,e){return function(n){t.uniform2iv(e,n)}}function F0(t,e){return function(n){t.uniform3iv(e,n)}}function P0(t,e){return function(n){t.uniform4iv(e,n)}}function m3(t,e){return function(n){t.uniform1ui(e,n)}}function y3(t,e){return function(n){t.uniform1uiv(e,n)}}function A3(t,e){return function(n){t.uniform2uiv(e,n)}}function b3(t,e){return function(n){t.uniform3uiv(e,n)}}function x3(t,e){return function(n){t.uniform4uiv(e,n)}}function v3(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function w3(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function E3(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function S3(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function D3(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function C3(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function M3(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function I3(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function T3(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Ee(t,e,n,r){const i=L0(t,e);return Kn(t)?function(o){let s,a;Qo(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(es+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(es+n),t.bindTexture(i,o)}}function Se(t,e,n,r,i){const o=L0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return Kn(t)?function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(es+s[u]);let f,l;Qo(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(es+s[u]),t.bindTexture(o,c)})}}B[ns]={Type:Float32Array,size:4,setter:f3,arraySetter:h3},B[g0]={Type:Float32Array,size:8,setter:d3,cols:2},B[m0]={Type:Float32Array,size:12,setter:p3,cols:3},B[y0]={Type:Float32Array,size:16,setter:g3,cols:4},B[Wc]={Type:Int32Array,size:4,setter:O0,arraySetter:k0},B[A0]={Type:Int32Array,size:8,setter:B0,cols:2},B[b0]={Type:Int32Array,size:12,setter:F0,cols:3},B[x0]={Type:Int32Array,size:16,setter:P0,cols:4},B[Xc]={Type:Uint32Array,size:4,setter:m3,arraySetter:y3},B[I0]={Type:Uint32Array,size:8,setter:A3,cols:2},B[T0]={Type:Uint32Array,size:12,setter:b3,cols:3},B[N0]={Type:Uint32Array,size:16,setter:x3,cols:4},B[v0]={Type:Uint32Array,size:4,setter:O0,arraySetter:k0},B[w0]={Type:Uint32Array,size:8,setter:B0,cols:2},B[E0]={Type:Uint32Array,size:12,setter:F0,cols:3},B[S0]={Type:Uint32Array,size:16,setter:P0,cols:4},B[D0]={Type:Float32Array,size:32,setter:v3,rows:2,cols:2},B[C0]={Type:Float32Array,size:48,setter:w3,rows:3,cols:3},B[M0]={Type:Float32Array,size:64,setter:E3,rows:4,cols:4},B[X4]={Type:Float32Array,size:32,setter:S3,rows:2,cols:3},B[q4]={Type:Float32Array,size:32,setter:C3,rows:2,cols:4},B[Z4]={Type:Float32Array,size:48,setter:D3,rows:3,cols:2},B[K4]={Type:Float32Array,size:48,setter:I3,rows:3,cols:4},B[J4]={Type:Float32Array,size:64,setter:M3,rows:4,cols:2},B[$4]={Type:Float32Array,size:64,setter:T3,rows:4,cols:3},B[V4]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:rs},B[_4]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:is},B[Y4]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:qc},B[W4]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:rs},B[e3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:os},B[t3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:os},B[n3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:is},B[r3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:rs},B[i3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:qc},B[o3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:is},B[s3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:os},B[a3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:rs},B[c3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:qc},B[u3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:is},B[l3]={Type:null,size:0,setter:Ee,arraySetter:Se,bindPoint:os};function ss(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(ts,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ns,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Kt(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(ts,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Wc,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(ts,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Xc,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Zc(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(ts,o.buffer);const s=o.size||o.numComponents||r,a=s/i,c=o.type||ns,f=B[c].size*s,l=o.normalize||!1,h=o.offset||0,d=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,a,c,l,f,h+d*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const ae={};ae[ns]={size:4,setter:ss},ae[g0]={size:8,setter:ss},ae[m0]={size:12,setter:ss},ae[y0]={size:16,setter:ss},ae[Wc]={size:4,setter:Kt},ae[A0]={size:8,setter:Kt},ae[b0]={size:12,setter:Kt},ae[x0]={size:16,setter:Kt},ae[Xc]={size:4,setter:as},ae[I0]={size:8,setter:as},ae[T0]={size:12,setter:as},ae[N0]={size:16,setter:as},ae[v0]={size:4,setter:Kt},ae[w0]={size:8,setter:Kt},ae[E0]={size:12,setter:Kt},ae[S0]={size:16,setter:Kt},ae[D0]={size:4,setter:Zc,count:2},ae[C0]={size:9,setter:Zc,count:3},ae[M0]={size:16,setter:Zc,count:4};function z0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const N3=/(\.|\[|]|\w+)/g,L3=t=>t>="0"&&t<="9";function R0(t,e,n,r){const i=t.split(N3).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const c=L3(a[0]),u=c?parseInt(a):a;if(c&&(s+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],h=l==="[",d=n[u]||(h?[]:{});n[u]=d,n=d,r[s]=r[s]||function(p){return function(g){j0(p,g)}}(d),s+=l}}}function O3(t,e){let n=0;function r(a,c,u){const f=c.name.endsWith("[0]"),l=c.type,h=B[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let d;if(h.bindPoint){const p=n;n+=c.size,f?d=h.arraySetter(t,l,p,u,c.size):d=h.setter(t,l,p,u,c.size)}else h.arraySetter&&f?d=h.arraySetter(t,u):d=h.setter(t,u);return d.location=u,d}const i={},o={},s=t.getProgramParameter(e,p0);for(let a=0;a<s;++a){const c=t.getActiveUniform(e,a);if(z0(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,R0(u,l,o,i)}}return i}function k3(t,e){const n={},r=t.getProgramParameter(e,R4);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function B3(t,e){const n=t.getProgramParameter(e,p0),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const c=t.getActiveUniform(e,a);r[a].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const c=a[0],u=a[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},s=t.getProgramParameter(e,U4);for(let a=0;a<s;++a){const c=t.getActiveUniformBlockName(e,a),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,j4),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,G4),size:t.getActiveUniformBlockParameter(e,a,H4),uniformIndices:t.getActiveUniformBlockParameter(e,a,Q4)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const U0=/\[\d+\]\.$/,F3=(t,e)=>((t+(e-1))/e|0)*e;function P3(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[a++]=s[c++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function z3(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return B4("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),c=t.createBuffer(),u=s.index;t.bindBuffer(Yc,c),t.uniformBlockBinding(e,s.index,u);let f=r+".";U0.test(f)&&(f=f.replace(U0,"."));const l={},h={},d={};return s.uniformIndices.forEach(function(p){const g=o[p];let m=g.name;m.startsWith(f)&&(m=m.substr(f.length));const y=m.endsWith("[0]");y&&(m=m.substr(0,m.length-3));const v=B[g.type],w=v.Type,S=y?F3(v.size,16)*g.size:v.size*g.size,b=new w(a,g.offset,S/w.BYTES_PER_ELEMENT);l[m]=b;const A=P3(b,y,v.rows,v.cols);h[m]=A,R0(m,A,d,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:c,uniforms:l,setters:h}}function R3(t,e,n){return z3(t,e.program,e.uniformBlockSpec,n)}function U3(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Yc,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function j3(t,e,n){U3(t,e,n)&&t.bufferData(Yc,n.array,F4)}function j0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):j0(t[n],e[n])}}function ve(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const s=o.length;for(let a=0;a<s;++a)ve(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function G3(t,e){const n={},r=t.getProgramParameter(e,z4);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(z0(o))continue;const s=t.getAttribLocation(e,o.name),a=ae[o.type],c=a.setter(t,s,a);c.location=s,n[o.name]=c}return n}function H3(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function or(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(H3(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(P4,n.indices))}function Q3(t,e){const n=O3(t,e),r=G3(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Kn(t)&&(i.uniformBlockSpec=B3(t,e),i.transformFeedbackInfo=k3(t,e)),i}const V3=4,G0=5123;function Ai(t,e,n,r,i,o){n=n===void 0?V3:n;const s=e.indices,a=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,c,a===void 0?G0:e.elementType,i,o):t.drawElements(n,c,a===void 0?G0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const _3=36160,bi=36161,Y3=3553,W3=5121,X3=6402,q3=6408,Z3=33190,K3=36012,J3=35056,$3=36013,eE=32854,tE=32855,nE=36194,H0=33189,Q0=6401,V0=36168,Kc=34041,rE=36064,cs=36096,_0=36128,Jc=33306,$c=33071,eu=9729,Y0=[{format:q3,type:W3,min:eu,wrap:$c},{format:Kc}],it={};it[Kc]=Jc,it[Q0]=_0,it[V0]=_0,it[X3]=cs,it[H0]=cs,it[Z3]=cs,it[K3]=cs,it[J3]=Jc,it[$3]=Jc;function iE(t,e){return it[t]||it[e]}const Jt={};Jt[eE]=!0,Jt[tE]=!0,Jt[nE]=!0,Jt[Kc]=!0,Jt[H0]=!0,Jt[Q0]=!0,Jt[V0]=!0;function oE(t){return Jt[t]}function sE(t,e,n,r){const i=_3,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||Y0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.format;let l=c.attachmentPoint||iE(f,c.internalFormat);if(l||(l=rE+s++),!u)if(oE(f))u=t.createRenderbuffer(),t.bindRenderbuffer(bi,u),t.renderbufferStorage(bi,f,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||eu,h.mag=h.mag||h.minMag||eu,h.wrapS=h.wrapS||h.wrap||$c,h.wrapT=h.wrapT||h.wrap||$c),u=yi(t,h)}if(jd(t,u))t.framebufferRenderbuffer(i,l,bi,u);else if(Qo(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,l,u,c.level||0,c.layer):t.framebufferTexture2D(i,l,c.target||Y3,u,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),a}function aE(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||Y0,n.forEach(function(o,s){const a=e.attachments[s],c=o.format;if(jd(t,a))t.bindRenderbuffer(bi,a),t.renderbufferStorage(bi,c,r,i);else if(Qo(t,a))k4(t,a,o,r,i);else throw new Error("unknown attachment type")})}function cE(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){or(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const uE=/^(.*?)_/;function lE(t,e){Fc(t,0);const n=t.getExtension(e);if(n){const r={},i=uE.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],c=typeof a=="function",u=c?i:o;let f=s;s.endsWith(u)&&(f=s.substring(0,s.length-u.length)),t[f]!==void 0?!c&&t[f]!==a&&Ud(f,t[f],a,s):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},Fc(r,0)}return n}const W0=["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 X0(t){for(let e=0;e<W0.length;++e)lE(t,W0[e])}function fE(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){X0(r);break}return r}function hE(t,e){return fE(t,e)}var dE=`/**
|
15
15
|
* The vertex position wrt the rectangle specified by (x, x2, y, y2).
|
16
16
|
* [0, 0] = [x, y], [1, 1] = [x2, y2].
|
17
17
|
* The x or y component may contain fractional values if the rectangle
|
@@ -125,7 +125,7 @@ void main(void) {
|
|
125
125
|
|
126
126
|
setupPicking();
|
127
127
|
}
|
128
|
-
`,
|
128
|
+
`,pE=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
|
129
129
|
in vec2 vPosInPixels;
|
130
130
|
#endif
|
131
131
|
|
@@ -176,7 +176,7 @@ void main(void) {
|
|
176
176
|
fragColor = vPickingColor;
|
177
177
|
}
|
178
178
|
}
|
179
|
-
`;function tu(t,e=[],n=0){const r=Math.fround(t);return e[n]=r,e[n+1]=isFinite(r)?t-r:0,e}function
|
179
|
+
`;function tu(t,e=[],n=0){const r=Math.fround(t);return e[n]=r,e[n+1]=isFinite(r)?t-r:0,e}function gE(t){switch(xE(t).gpuVendor.toLowerCase()){case"nvidia":return` #define NVIDIA_GPU
|
180
180
|
// Nvidia optimizes away the calculation necessary for emulated fp64
|
181
181
|
#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
|
182
182
|
`;case"intel":return` #define INTEL_GPU
|
@@ -194,20 +194,20 @@ void main(void) {
|
|
194
194
|
#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
|
195
195
|
// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
|
196
196
|
#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
|
197
|
-
`}}const
|
197
|
+
`}}const mE=7936,yE=7937,AE=7938,bE=35724;function xE(t){const e=t.getExtension("WEBGL_debug_renderer_info"),n=t.getParameter(e&&e.UNMASKED_VENDOR_WEBGL||mE),r=t.getParameter(e&&e.UNMASKED_RENDERER_WEBGL||yE);return{gpuVendor:vE(n,r),vendor:n,renderer:r,version:t.getParameter(AE),shadingLanguageVersion:t.getParameter(bE)}}function vE(t,e){return t.match(/NVIDIA/i)||e.match(/NVIDIA/i)?"NVIDIA":t.match(/INTEL/i)||e.match(/INTEL/i)?"INTEL":t.match(/AMD/i)||e.match(/AMD/i)||t.match(/ATI/i)||e.match(/ATI/i)?"AMD":"UNKNOWN GPU"}function nu(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function q0(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function xi(){}var vi=.7,us=1/vi,sr="\\s*([+-]?\\d+)\\s*",wi="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",gt="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",wE=/^#([0-9a-f]{3,8})$/,EE=new RegExp("^rgb\\("+[sr,sr,sr]+"\\)$"),SE=new RegExp("^rgb\\("+[gt,gt,gt]+"\\)$"),DE=new RegExp("^rgba\\("+[sr,sr,sr,wi]+"\\)$"),CE=new RegExp("^rgba\\("+[gt,gt,gt,wi]+"\\)$"),ME=new RegExp("^hsl\\("+[wi,gt,gt]+"\\)$"),IE=new RegExp("^hsla\\("+[wi,gt,gt,wi]+"\\)$"),Z0={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};nu(xi,Ei,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:K0,formatHex:K0,formatHsl:TE,formatRgb:J0,toString:J0});function K0(){return this.rgb().formatHex()}function TE(){return rp(this).formatHsl()}function J0(){return this.rgb().formatRgb()}function Ei(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=wE.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?$0(e):n===3?new Fe(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ls(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ls(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=EE.exec(t))?new Fe(e[1],e[2],e[3],1):(e=SE.exec(t))?new Fe(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=DE.exec(t))?ls(e[1],e[2],e[3],e[4]):(e=CE.exec(t))?ls(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=ME.exec(t))?np(e[1],e[2]/100,e[3]/100,1):(e=IE.exec(t))?np(e[1],e[2]/100,e[3]/100,e[4]):Z0.hasOwnProperty(t)?$0(Z0[t]):t==="transparent"?new Fe(NaN,NaN,NaN,0):null}function $0(t){return new Fe(t>>16&255,t>>8&255,t&255,1)}function ls(t,e,n,r){return r<=0&&(t=e=n=NaN),new Fe(t,e,n,r)}function NE(t){return t instanceof xi||(t=Ei(t)),t?(t=t.rgb(),new Fe(t.r,t.g,t.b,t.opacity)):new Fe}function LE(t,e,n,r){return arguments.length===1?NE(t):new Fe(t,e,n,r==null?1:r)}function Fe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}nu(Fe,LE,q0(xi,{brighter:function(t){return t=t==null?us:Math.pow(us,t),new Fe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?vi:Math.pow(vi,t),new Fe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){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:ep,formatHex:ep,formatRgb:tp,toString:tp}));function ep(){return"#"+ru(this.r)+ru(this.g)+ru(this.b)}function tp(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function ru(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function np(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new mt(t,e,n,r)}function rp(t){if(t instanceof mt)return new mt(t.h,t.s,t.l,t.opacity);if(t instanceof xi||(t=Ei(t)),!t)return new mt;if(t instanceof mt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new mt(s,a,c,t.opacity)}function OE(t,e,n,r){return arguments.length===1?rp(t):new mt(t,e,n,r==null?1:r)}function mt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}nu(mt,OE,q0(xi,{brighter:function(t){return t=t==null?us:Math.pow(us,t),new mt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?vi:Math.pow(vi,t),new mt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){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 Fe(iu(t>=240?t-240:t+120,i,r),iu(t,i,r),iu(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function iu(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 ou="attr_",ip="uDomain_",kE="range_",op="scale_",sp="getScaled_",su="uRangeTexture_",ap=3402823466e29;function BE(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function FE(t,e){let n;if(Go(t))n=Dn(zd(t)(e));else if(ie(e))if(wn(t))n=zE(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(qi(e))n=Dn(e?1:0);else if(e===null)if(wn(t))n=Dn([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Dn(e);return`
|
198
198
|
#define ${t}_DEFINED
|
199
|
-
${n.type} ${
|
199
|
+
${n.type} ${sp}${t}() {
|
200
200
|
// Constant value
|
201
201
|
return ${n};
|
202
|
-
}`}function
|
203
|
-
${
|
204
|
-
${
|
202
|
+
}`}function PE(t,e,n){var x;if(We(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Zn(t),i=ou+t,o=ip+r,s=kE+r,a=!!e.fp64,c=a?"vec2":"float",u=e.domain?e.domain().length:void 0;let f;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${t}`),l.push(""),l.push(`#define ${t}_DEFINED`),a&&l.push(`#define ${t}_FP64`);const{transform:h}=BE(e.type),d=(E,...F)=>RE.apply(null,[E+(a?"Fp64":""),"value",...F]);let p;switch(h){case"linear":p=d("scaleLinear","domain",s);break;case"log":p=d("scaleLog","domain",s,e.base());break;case"symlog":p=d("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":p=d("scalePow","domain",s,e.exponent());break;case"index":case"locus":case"point":case"band":p=d("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(x=n.band)!=null?x:.5);break;case"ordinal":case"null":case"identity":p=d("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=Oo(e.type)||et(e.type)&&wn(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(se)){const E=cp(g);l.push(`const ${E.type} ${s} = ${E};`)}const m=wn(t)?"vec3":"float";let y;if(wn(t)){const E=su+r;if(t==r&&l.push(`uniform sampler2D ${E};`),et(e.type))y=`getInterpolatedColor(${E}, transformed)`;else if(Vt(e.type)||_n(e.type))y=`getDiscreteColor(${E}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||_n(e.type)){const E=su+r;t==r&&l.push(`uniform sampler2D ${E};`),y=`getDiscreteColor(${E}, int(transformed)).r`}ci(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const v=[],w=et(e.type)&&u>2,S=_n(e.type)||w;if(v.push("int slot = 0;"),S){const E=o;v.push(w?`while (slot < ${E}.length() - 2 && value >= ${E}[slot + 1]) { slot++; }`:`while (slot < ${E}.length() && value >= ${E}[slot]) { slot++; }`)}const b=et(e.type)||_n(e.type)||["band","point"].includes(e.type);if(p){const E=o;if(b){const F=a?"vec4":"vec2";v.push(`${F} domain = ${F}(${E}[slot], ${E}[slot + 1]);`)}v.push(`float transformed = ${p};`),w&&v.push(`transformed = (float(slot) + transformed) / (float(${E}.length()) - 1.0);`)}else v.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&v.push(`transformed = clampToRange(transformed, ${cp(g)});`),v.push(`return ${y!=null?y:"transformed"};`),l.push(`
|
203
|
+
${m} ${op}${t}(${c} value) {
|
204
|
+
${v.map(E=>` ${E}
|
205
205
|
`).join("")}
|
206
206
|
}`),l.push(`
|
207
|
-
${
|
208
|
-
return ${
|
209
|
-
}`);const
|
210
|
-
`);if(
|
207
|
+
${m} ${sp}${t}() {
|
208
|
+
return ${op}${t}(${i});
|
209
|
+
}`);const A=l.join(`
|
210
|
+
`);if(b&&t==r){const E=et(e.type)||_n(e.type)?u:2;f=`${a?"vec2":"float"} ${o}[${E}];`}return{glsl:A,domainUniform:f}}function au(t){if(!se(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+ap;if(t==-1/0)return""+-ap;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Dn(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(au).join(", ")})`):(n="float",r=au(t[0])),Object.assign(r,{type:n,numComponents:e})}function zE(t){const e=Ei(t).rgb();return Dn([e.r,e.g,e.b].map(n=>n/255))}function cp(t){return Dn([t[0],he(t)])}function RE(t,...e){const n=[];for(const r of e)se(r)?n.push(au(r)):Qe(r)?n.push(Dn(r)):n.push(r);return`${t}(${n.join(", ")})`}class UE{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(ou+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(e,n,r){if(!se(this.size))throw new Error("The number of vertices must be defined!");let i,o,s=0;const a=new Float32Array(this.size*n);if(this.arrays[e]={data:a,numComponents:n},n==1){let c=0;const u=f=>{c=+f};i=()=>{a[s++]=c},o=u}else{let c=r!=null?r:[0];const u=r?f=>{}:f=>{c=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=c[0],a[s++]=c[1]},o=u;break;case 3:i=()=>{a[s++]=c[0],a[s++]=c[1],a[s++]=c[2]},o=u;break;case 4:i=()=>{a[s++]=c[0],a[s++]=c[1],a[s++]=c[2],a[s++]=c[3]},o=u;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
|
211
211
|
`,n+=`p${i}();
|
212
212
|
`;const r=new Function("that",`${e}
|
213
213
|
|
@@ -215,7 +215,7 @@ ${y} ${ip}${t}() {
|
|
215
215
|
${n}
|
216
216
|
that.vertexCount++;
|
217
217
|
};
|
218
|
-
`);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(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const
|
218
|
+
`);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(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const ar=5,cu=127;function uu(t){const e=[];for(let p=0;p<=cu;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=cu?e[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(p){return(p<=cu?e[p]:n.get(p))||e[63]}function o(p){return i(p.charCodeAt(0))}const s=t.common.base,a=o("x"),c=o("X"),u=o("q"),f=a.height-ar*2,l=c.height-ar*2,h=u.height-a.height+u.yoffset-a.yoffset;function d(p,g=1){let m=0;for(let y=0;y<p.length;y++)m+=i(p.charCodeAt(y)).xadvance;return m/s*g}return{measureWidth:d,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function lu(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const jE=2**31-1;function GE(t,e){const n=new Int32Array(t);n.fill(jE);const r=new Int32Array(t),i=e[0],s=(e[1]-e[0])/t,a=l=>lu(Math.floor((l-i)/s),0,t-1),c=(l,h,d,p)=>{const g=a(l),m=a(h);for(let y=g;y<=m;y++)n[y]>d&&(n[y]=d),r[y]<p&&(r[y]=p)},u=(l,h)=>[n[a(l)],r[a(h)]],f=()=>{for(let l=1;l<r.length;l++)r[l]<r[l-1]&&(r[l]=r[l-1]);for(let l=r.length-1;l>0;l--)r[l-1]>r[l]&&(r[l-1]=r[l]);return u};return c.getIndex=f,c}class Si{constructor({encoders:e,numVertices:n=void 0,attributes:r=[],buildXIndex:i=!1}){this.encoders=e,this._buildXIndex=i,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([o,s])=>r.includes(o)&&s&&s.scale&&!s.constant)),this.allocatedVertices=n,this.variableBuilder=new UE(n);for(const[o,s]of Object.entries(this.variableEncoders)){const a=s.accessor,c=[0,0],u=s.scale.fp64,f=s.indexer,l=f?h=>f(a(h)):u?h=>tu(a(h),c):a;this.variableBuilder.addConverter(o,{f:l,numComponents:u?2:1,arrayReference:u?c:void 0})}this.lastOffset=0,this.rangeMap=new ho([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){for(let o=r;o<i;o++)this.variableBuilder.pushFromDatum(n[o]);this.registerBatch(e)}prepareXIndexer(e){if(!this._buildXIndex)return;const n=this.variableEncoders.x,r=this.variableEncoders.x2;if(n&&r){const i=n.accessor,o=r.accessor;this.xIndexer=GE(50,[i(e[0]),o(he(e))]);let s=this.variableBuilder.vertexCount;this.addToXIndex=a=>{let c=this.variableBuilder.vertexCount;this.xIndexer(i(a),o(a),s,c),s=c}}else this.xIndexer=void 0,this.addToXIndex=i=>{}}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class HE extends Si{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o,buildXIndex:s=!1}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0,buildXIndex:s});this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[s,a]=this.visibleRange,c=h=>h.accessor||(d=>0),u=c(o.x),f=c(o.x2);this.prepareXIndexer(n);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const d=n[h];let p=u(d),g=f(d);if(p>g&&([p,g]=[g,p]),g<s||p>a)continue;p<s&&(p=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(d),l[0]=0,l[1]=0;const m=1;this.variableBuilder.pushAll();for(let y=0;y<=m;y++)l[0]=y/m,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(d)}this.registerBatch(e)}}class QE extends Si{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o,buildXIndex:s}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0,buildXIndex:s});this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.updateFromDatum(s),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let c=0;c<=a;c++)this.updatePos(c/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class VE extends Si{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class _E extends Si{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class YE extends Si{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0,buildXIndex:s=!1}){super({encoders:e,attributes:n,numVertices:o*6,buildXIndex:s});this.metadata=r,this.metrics=r,this.properties=i;const c=e.text.channelDef;this.numberFormat=!We(c)&&c.format?Ie(c.format):u=>u,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){var d;const o=this.properties.align||"left",s=(d=this.properties.logoLetters)!=null?d:!1,a=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-ar;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 f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n);for(let p=r;p<i;p++){const g=n[p],m=this.numberFormat(f(g)),y=ie(m)?m:m===null?"":""+m;if(y.length==0)continue;this.variableBuilder.updateFromDatum(g);const v=s?y.length:this.metrics.measureWidth(y);this.updateWidth(v);let w=o=="right"?-v:o=="center"?-v/2:0;if(!s){const x=this.metrics.getCharByCode(y.charCodeAt(0));w-=(x.width-x.xadvance)/a/2}let S=-.5,b=1,A=1;for(let x=0;x<y.length;x++){const E=this.metrics.getCharByCode(y.charCodeAt(x)),F=s?1:E.xadvance/a;if(E.id==32){w+=F;continue}s?(A=(E.width+ar*2)/E.width,w=-A/2,b=(E.height+ar*2)/E.height,S=-.5-ar/E.height):(b=E.height/a,S=-(E.height+E.yoffset+u)/a,A=E.width/a);const k=E.x,C=E.y;l[0]=w,l[1]=S+b,h[0]=k/c,h[1]=C/c,this.variableBuilder.pushAll(),l[0]=w+A,l[1]=S+b,h[0]=(k+E.width)/c,h[1]=C/c,this.variableBuilder.pushAll(),l[0]=w,l[1]=S,h[0]=k/c,h[1]=(C+E.height)/c,this.variableBuilder.pushAll(),l[0]=w+A,l[1]=S+b,h[0]=(k+E.width)/c,h[1]=C/c,this.variableBuilder.pushAll(),l[0]=w,l[1]=S,h[0]=k/c,h[1]=(C+E.height)/c,this.variableBuilder.pushAll(),l[0]=w+A,l[1]=S,h[0]=(k+E.width)/c,h[1]=(C+E.height)/c,this.variableBuilder.pushAll(),w+=F}this.addToXIndex(n)}this.registerBatch(e)}}var WE=`// Adapted from luma.gl - https://github.com/uber/luma.gl
|
219
219
|
|
220
220
|
// Copyright (c) 2015 - 2017 Uber Technologies, Inc.
|
221
221
|
//
|
@@ -401,7 +401,7 @@ vec2 sqrt_fp64(vec2 a) {
|
|
401
401
|
#else
|
402
402
|
return sum_fp64(vec2(yn, 0.0), prod);
|
403
403
|
#endif
|
404
|
-
}`,
|
404
|
+
}`,up=`#define PI 3.141593
|
405
405
|
|
406
406
|
/** Offset in "unit" units */
|
407
407
|
uniform vec2 uViewOffset;
|
@@ -464,7 +464,7 @@ vec4 distanceToColor(float d, vec4 fill, vec4 stroke, float halfStrokeWidth) {
|
|
464
464
|
return fill * distanceToRatio(-d);
|
465
465
|
}
|
466
466
|
}
|
467
|
-
`,
|
467
|
+
`,XE=`// Utils ------------
|
468
468
|
|
469
469
|
vec3 getDiscreteColor(sampler2D s, int index) {
|
470
470
|
return texelFetch(s, ivec2(index % textureSize(s, 0).x, 0), 0).rgb;
|
@@ -536,6 +536,8 @@ float scaleBand(float value, vec2 domainExtent, vec2 range,
|
|
536
536
|
|
537
537
|
float n = domainExtent[1] - domainExtent[0];
|
538
538
|
|
539
|
+
paddingInner = int(n) > 1 ? paddingInner : 0.0;
|
540
|
+
|
539
541
|
// Adapted from: https://github.com/d3/d3-scale/blob/master/src/band.js
|
540
542
|
float step = (stop - start) / max(1.0, n - paddingInner + paddingOuter * 2.0);
|
541
543
|
start += (stop - start - step * (n - paddingInner)) * align;
|
@@ -543,7 +545,7 @@ float scaleBand(float value, vec2 domainExtent, vec2 range,
|
|
543
545
|
|
544
546
|
return start + (value - domainExtent[0]) * step + bandwidth * band;
|
545
547
|
}
|
546
|
-
`,
|
548
|
+
`,qE=`float scaleIdentityFp64(vec2 value) {
|
547
549
|
return value[0];
|
548
550
|
}
|
549
551
|
|
@@ -573,7 +575,7 @@ float scaleBandFp64(vec2 value, vec4 domainExtent, vec2 range,
|
|
573
575
|
|
574
576
|
return start + sub_fp64(value, domainExtent.xy).x * step + bandwidth * band;
|
575
577
|
}
|
576
|
-
`,
|
578
|
+
`,ZE=`
|
577
579
|
/**
|
578
580
|
* Describes where a sample facet should be shown. Interpolating between the
|
579
581
|
* current and target positions/heights allows for transitioning between facet
|
@@ -680,7 +682,7 @@ float getSampleFacetHeight(vec2 pos) {
|
|
680
682
|
return facetPos.height;
|
681
683
|
}
|
682
684
|
}
|
683
|
-
`,
|
685
|
+
`,KE=`/*
|
684
686
|
* Based on concepts presented at:
|
685
687
|
* https://webglfundamentals.org/webgl/lessons/webgl-picking.html
|
686
688
|
* https://deck.gl/docs/developer-guide/custom-layers/picking
|
@@ -709,23 +711,23 @@ bool setupPicking() {
|
|
709
711
|
}
|
710
712
|
return false;
|
711
713
|
}
|
712
|
-
`,
|
714
|
+
`,JE=`uniform bool uPickingEnabled;
|
713
715
|
|
714
716
|
flat in highp vec4 vPickingColor;
|
715
|
-
`;const fs=Symbol("cacheMap");function
|
717
|
+
`;const fs=Symbol("cacheMap");function cr(t,e,n){let r=Ci(t).get(e);return r===void 0&&(r=n(e),Ci(t).set(e,r)),r}function lp(t,e){Ci(t).delete(e)}function Di(t,e){const n=Ci(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Ci(t).delete(e)}function fp(t){t[fs]=new Map}function Ci(t){return t[fs]||fp(t),t[fs]}function $E(t,e,n,r){const i=ie(t)?t:t.name,o=!ie(t)&&t.extent||[0,1];if(n===void 0&&!ie(t)&&(n=t.count),i){const s=hc(i);if(Ce(s)){const a=dp(s,{extent:o,count:n});return Mi(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Qe(s))return hp(s,e);throw new Error("Unknown scheme: "+i)}}}function eS(t,e="rgb",n,r){const i=ko(t,ie(e)?e:e.type,ie(e)?void 0:e.gamma),o=dp(i);return Mi(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function tS(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let s=0;s<i;s++)o[s]=t[s%t.length];return Mi(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function hp(t,e,n,r){const i=pp(t,n);return Mi(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function dp(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=he(e)-i,s=mo(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),pp(s)}function pp(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ei(t[i%t.length]).rgb();r[i*3+0]=o.r,r[i*3+1]=o.g,r[i*3+2]=o.b}return r}class nS{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=hE(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(!Kn(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");X0(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this._shaderDefines=gE(i),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=sE(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(o=>{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(e,n){const r="#version 300 es",i="precision mediump float;";Qe(n)&&(n=n.join(`
|
716
718
|
|
717
719
|
`));const o=this.gl,s=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(s);if(!a){const c=[r,i,n].join(`
|
718
720
|
|
719
|
-
`);a=o.createShader(e),o.shaderSource(a,c),o.compileShader(a),this._shaderCache.set(s,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,
|
721
|
+
`);a=o.createShader(e),o.shaderSource(a,c),o.compileShader(a),this._shaderCache.set(s,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,aE(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var o,s,a,c;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(s=(o=this._sizeSource)==null?void 0:o.call(this))!=null?s:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(a=e.width)!=null?a:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(c=e.height)!=null?c:this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(s,a){return Vt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s!=null?s:4:s}const o=e.channel;if(wn(o)){const s=e.getScaleProps(),a=e.getScale();let c;if(s.scheme){let u=ie(s.scheme)?void 0:s.scheme.count;u=i(u,a),c=$E(s.scheme,this.gl,u,r)}else{const u=a.range();Oo(a.type)?c=eS(u,s.interpolate,this.gl,r):c=hp(u,this.gl,a.domain().length,r)}this.rangeTextures.set(e,c)}else{const s=e.getScale();if(s.type==="ordinal"||_n(s.type)){const a=Go(o)?zd(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,tS(c.map(a),this.gl,s.domain().length,r))}}}}function rS(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const c=parseInt(s[1]),u=i[a+1],f=u?u.index:e.length,l=e.substring(s.index,f);return[c-1,l]}));return t.split(`
|
720
722
|
`).map((s,a)=>{const c=o.get(a);return`${a+1+n}: ${s}${c?`
|
721
723
|
|
722
724
|
^^^ ${c}`:""}`}).join(`
|
723
|
-
`)}function
|
724
|
-
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function
|
725
|
+
`)}function iS(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,s;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const c of[e,n])t.getShaderParameter(c,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(c),s=rS(t.getShaderSource(c),o,0)+`
|
726
|
+
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function Mi(t,e,n,r){return r?d0(t,r,n,e):r=yi(t,U(T({},e),{src:n})),r}function oS(...t){const e={get(n,r,i){for(const o of t){const a=o()[r];if(a!==void 0)return a}},has(n,r,i){for(const o of t){const s=o();if(r in s)return!0}return!1}};return new Proxy({},e)}function sS(t){return ie(t)||se(t)||qi(t)}const aS="SAMPLE_FACET_UNIFORM",gp="SAMPLE_FACET_TEXTURE";class Ii{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=oS(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 e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return cr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return sS(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding(T(T(T({},e),i),n));for(const s of Object.keys(o))this.getSupportedChannels().includes(s)||delete o[s];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=mv(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return gp;if(this.unitView.getFacetAccessor())return aS}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const s=this.getSampleFacetMode();s&&r.push(`#define ${s}`);for(const l of i){let h;if(l in this.encoding)h=l;else continue;const d=this.encoding[h];if(!!d)if(We(d))o.push(FE(h,d.value));else{const p=Xe(d)&&d.resolutionChannel||h,g=this.unitView.getScaleResolution(p).getScale(),m=PE(h,g,d);o.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
|
725
727
|
`+this.domainUniforms.map(l=>` ${l}
|
726
728
|
`).join("")+`};
|
727
729
|
|
728
|
-
`:"",c=[...r,
|
730
|
+
`:"",c=[...r,up,XE,a,...o,ZE,KE,e];c.some(l=>/[Ff]p64/.test(l))&&(c.unshift(qE),c.unshift(WE));const u=[...r,up,JE,n],f=this.gl;this.programStatus=iS(f,this.glHelper.compileShader(f.VERTEX_SHADER,c),this.glHelper.compileShader(f.FRAGMENT_SHADER,u))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=Q3(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=R3(this.gl,this.programInfo,"Domains")),this.gl.useProgram(this.programInfo.program),this._setDatums()}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(ci(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):r.scale.fp64?tu(+n.datum):+n.datum;ve(this.programInfo,{[ou+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.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(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&$v(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=nw(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.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 e of this.unitView.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){var i;const n=this.glHelper,r=this.gl;if(this.vertexArrayInfo||(this.vertexArrayInfo=cE(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program),this.domainUniformInfo){for(const[o,s]of Object.entries(this.domainUniformInfo.setters)){const a=o.substring(ip.length),c=this.encoding[a],u=Xe(c)&&c.resolutionChannel||a,f=this.unitView.getScaleResolution(u);if(f){const l=f.getScale(),h=Vt(l.type)?[0,l.domain().length]:l.domain();s(l.fp64?h.map(d=>tu(d)).flat():h)}}j3(r,this.programInfo,this.domainUniformInfo)}for(const[o,s]of Object.entries(this.encoding))if(Xe(s)){const a=Xe(s)&&s.resolutionChannel||o,c=this.unitView.getScaleResolution(a),u=n.rangeTextures.get(c);u&&ve(this.programInfo,{[su+o]:u})}if(this.getSampleFacetMode()==gp){let o;for(const s of this.unitView.getAncestors())if(o=s.getSampleFacetTexture(),o)break;ve(this.programInfo,{uSampleFacetTexture:o})}ve(this.programInfo,{ONE:1,uDevicePixelRatio:this.glHelper.dpr,uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:((i=e.picking)!=null?i:!1)&&this.isPickingParticipant()}),ve(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0}),this.opaque||e.picking?r.disable(r.BLEND):r.enable(r.BLEND)}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const s=n.targetLocSize?n.targetLocSize.location:i,a=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,s,a)}return!0}render(e){}createRenderCallback(e,n,r){var s;const i=this;let o;if(this.properties.buildIndex){const a=(s=this.unitView.getScaleResolution("x"))==null?void 0:s.getScale();o=c=>{if(a&&c.xIndex){const u=a.domain(),f=c.xIndex(u[0],u[1]),l=f[0],h=f[1]-l;h>0&&e(l,h)}else e(c.offset,c.count)}}else o=a=>e(a.offset,a.count);if(this.properties.dynamicData)return function(){const c=r().get(n.facetId);c&&c.count&&i.prepareSampleFacetRendering(n)&&o(c)};{const a=r().get(n.facetId);if(a&&a.count)return function(){i.prepareSampleFacetRendering(n)&&o(a)}}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,c=(o.xOffset||0)+a,u=(o.yOffset||0)+a;let f,l=e;if(o.clip||n){let h=0,d=0,p;n?(l=o.clip?e.intersect(n):n,p=[e.width/l.width,e.height/l.height],d=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):p=[1,1];const g=[e.x,s.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(w=>w*r),m=g.map(w=>Math.floor(w)),[y,v]=g.map((w,S)=>w-m[S]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+h+y)/l.width,-(u+d-v)/l.height],uViewScale:p}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+c)/s.width,(s.height-e.y-u-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return ve(this.programInfo,f),ve(this.programInfo,{uViewportSize:[e.width,e.height]}),l.height>0&&l.width>0}findDatumAt(e,n){}}function fu(t,e){var o;const n=xv(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(We(r)||We(i))){if(r){if(!Xe(t[e]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0};else{i=T({},r);const s=(1-((o=r.band)!=null?o:1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function mp(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),We(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function yp(t,e){We(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill=T({resolutionChannel:"color"},t.color),!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity=T({resolutionChannel:"opacity"},t.opacity):t.fillOpacity={value:0})}class cS extends Ii{constructor(e){super(e);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 cr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&We(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return fu(e,"x"),fu(e,"y"),mp(e,this.properties.filled),yp(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(We(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(dE,pE,e.map(n=>"#define "+n))}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new HE({encoders:this.encoders,attributes:this.getAttributes(),numItems:n,buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){var r,i,o,s;super.prepareRender(e);const n=this.properties;ve(this.programInfo,{uMinSize:[n.minWidth,n.minHeight],uMinOpacity:n.minOpacity,uCornerRadii:[(r=n.cornerRadiusTopRight)!=null?r:n.cornerRadius,(i=n.cornerRadiusBottomRight)!=null?i:n.cornerRadius,(o=n.cornerRadiusTopLeft)!=null?o:n.cornerRadius,(s=n.cornerRadiusBottomLeft)!=null?s:n.cornerRadius]}),or(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Ai(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e,()=>this.rangeMap)}findDatumAt(e,n){e=Ye(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,s=r.x2.accessor;if(i)return i.find(a=>n>=o(a)&&n<s(a))}}var uS=`precision mediump float;
|
729
731
|
|
730
732
|
/**
|
731
733
|
* The stroke should only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
|
@@ -853,7 +855,7 @@ void main(void) {
|
|
853
855
|
|
854
856
|
setupPicking();
|
855
857
|
}
|
856
|
-
`,
|
858
|
+
`,lS=`const lowp vec4 white = vec4(1.0);
|
857
859
|
const lowp vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
|
858
860
|
|
859
861
|
uniform bool uInwardStroke;
|
@@ -976,10 +978,10 @@ void main() {
|
|
976
978
|
}
|
977
979
|
}
|
978
980
|
|
979
|
-
`;const
|
980
|
-
`)+`return function propagate(datum) {${
|
981
|
+
`;const It=1<<0,$t=1<<1,fS={};class oe{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",mo(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
982
|
+
`)+`return function propagate(datum) {${mo(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
|
981
983
|
`)}}`)(this.children)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(e),e.setParent(this),this._updatePropagator(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(const n of e.children)this.adopt(n)}insertAsParent(e){if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");e.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.parent=void 0,e.addChild(this)}removeChild(e){const n=this.children.indexOf(e);if(n>-1)this.children.splice(n,1),e.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 e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,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(e){e(this);for(const n of this.children)n.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){var r;const n=this.children.map(i=>i.subtreeToString(e+1)).join("");return" ".repeat(e*2)+"* "+((r=/^class ([A-Za-z0-9_]+)/.exec(""+this.constructor))==null?void 0:r[1])+`
|
982
|
-
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():
|
984
|
+
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():fS}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 Ap(t){return t.type=="file"}function hS(t){return t.type=="facet"}class bp extends oe{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 xp(t,e,n){const r=new bp({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const dS={};class pS extends Ii{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 T(T({},super.getDefaultEncoding()),dS)}fixEncoding(e){return mp(e,this.properties.filled),yp(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(xp(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(uS,lS)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;ve(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new VE({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=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 m2(n,e)}}else return-1}prepareRender(e){super.prepareRender(e),ve(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()}),or(this.gl,this.programInfo,this.vertexArrayInfo);const n=this.encoders.x;if(n&&!n.constant){const r=fo(n.accessor).left,i=this.unitView.getScaleResolution("x").getScale().domain(),o=Xi(i,null,1.01);this._findIndices=s=>{const a=this.unitView.getCollector().facetBatches.get(s);return[r(a,o[0]),r(a,o[o.length-1])]}}}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{const[o,s]=this._findIndices?this._findIndices(e.facetId):[0,i],a=s-o;a&&Ai(n,this.vertexArrayInfo,n.POINTS,a,r+o)},e,()=>this.rangeMap)}}var gS=`// Line caps
|
983
985
|
const int BUTT = 0;
|
984
986
|
const int SQUARE = 1;
|
985
987
|
const int ROUND = 2;
|
@@ -1068,7 +1070,7 @@ void main(void) {
|
|
1068
1070
|
|
1069
1071
|
setupPicking();
|
1070
1072
|
}
|
1071
|
-
`,
|
1073
|
+
`,mS=`// Line ending
|
1072
1074
|
const int BUTT = 0;
|
1073
1075
|
const int SQUARE = 1;
|
1074
1076
|
const int ROUND = 2;
|
@@ -1120,7 +1122,7 @@ void main(void) {
|
|
1120
1122
|
fragColor = vPickingColor;
|
1121
1123
|
}
|
1122
1124
|
}
|
1123
|
-
`;class
|
1125
|
+
`;class yS extends Ii{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&&Xe(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Xe(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=AS(this.properties.strokeDash);this.dashTexture=yi(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(gS,mS)}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new QE({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){super.prepareRender(e),ve(this.programInfo,{uMinLength:this.properties.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(this.properties.strokeCap)}),this.dashTexture&&ve(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset}),or(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ai(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e,()=>this.rangeMap)}}function AS(t){if(t.length==0||t.length%2||t.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((o,s)=>o+s),n=new Uint8Array(e);let r=!0,i=0;for(let o of t){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}var bS=`uniform float uSagittaScaleFactor;
|
1124
1126
|
|
1125
1127
|
/** Make very small arcs visible */
|
1126
1128
|
uniform float uMinSagittaLength;
|
@@ -1231,7 +1233,7 @@ void main(void) {
|
|
1231
1233
|
|
1232
1234
|
setupPicking();
|
1233
1235
|
}
|
1234
|
-
`,
|
1236
|
+
`,xS=`in lowp vec4 vColor;
|
1235
1237
|
in float vSize;
|
1236
1238
|
in float vNormalLengthInPixels;
|
1237
1239
|
|
@@ -1249,7 +1251,7 @@ void main(void) {
|
|
1249
1251
|
fragColor = vPickingColor;
|
1250
1252
|
}
|
1251
1253
|
}
|
1252
|
-
`;class
|
1254
|
+
`;class vS extends Ii{constructor(e){super(e);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(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(bS,xS)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;ve(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new _E({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:wS(this.properties.segments),numComponents:2},this.rangeMap=i.rangeMap,this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,U(T({},s),{data:void 0})])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[s,a]=o;a.buffer&&this.arrays[s].numComponents&&(a.offset=r*this.arrays[s].numComponents*4)}or(n,this.programInfo,this.bufferInfo),Ai(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e,()=>this.rangeMap)}}function wS(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var ES=`uniform float uSdfNumerator;
|
1253
1255
|
|
1254
1256
|
uniform vec2 uD; // dx & dy
|
1255
1257
|
|
@@ -1495,7 +1497,7 @@ void main(void) {
|
|
1495
1497
|
|
1496
1498
|
setupPicking();
|
1497
1499
|
}
|
1498
|
-
`,
|
1500
|
+
`,SS=`uniform sampler2D uTexture;
|
1499
1501
|
|
1500
1502
|
in vec2 vTexCoord;
|
1501
1503
|
in float vEdgeFadeOpacity;
|
@@ -1526,7 +1528,7 @@ void main() {
|
|
1526
1528
|
fragColor = vPickingColor;
|
1527
1529
|
}
|
1528
1530
|
}
|
1529
|
-
`;const AS={left:-1,center:0,right:1},bS={top:-1,middle:0,bottom:1,alphabetic:1};class xS extends Ci{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 Kn)this.properties.fitToBand&&lu(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(mS,yS)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[AS[e.align],bS[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 o=0;const s=r.text.format?Ie(r.text.format):u=>u;for(const u of n){const f=s(i(u)),l=se(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new jE({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});a.addBatches(e.facetBatches);const c=a.toArrays();this.rangeMap=c.rangeMap,this.updateBufferInfo(c)}prepareRender(e){super.prepareRender(e);let n=.35;this.properties.logoLetters&&(n/=2),Se(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),sr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>mi(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function hs(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const p of t)s+=Mi(p.px)+(ds(p)?0:n),a+=Mi(p.grow);s-=n;const c=Math.max(0,e-s),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],h=p=>{const g=f.length;if(!g)return;const m=(p?n:0)*(o?-1:1);d-=m;for(let y=0;y<g;y++)l.push({location:d+(y+1)/(g+1)*m,size:0});d+=m,f.length=0};let d=o?Math.max(e,s):0+i;if(t.length==1&&ds(t[0]))return[{location:d,size:0}];for(let p=0;p<t.length;p++){const g=t[p];if(ds(g))f.push(g);else{h(l.length>0);const m=Mi(g.px)+(a?Mi(g.grow)/a*c:0);o&&(d-=m),l.push({location:u(d),size:u(m)}),o?d-=n:d+=m+n}}return d+=o?n:-n,h(!1),l}function vS(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=Mi(r.px)+(ds(r)?0:e);return Math.max(0,n-e)}class en{constructor(e,n){this.width=e,this.height=n}addPadding(e){return new en({px:(this.width.px||0)+e.width,grow:this.width.grow},{px:(this.height.px||0)+e.height,grow:this.height.grow})}}const bp=Object.freeze({px:0,grow:0}),xp=new en(bp,bp);function ds(t){return!t.px&&!t.grow}function Mi(t){return t||0}function wS(t){return t&&(oe(t.px)||oe(t.grow))}function fu(t){if(Sp(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(wS(t))return t;if(oe(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}`)}function ES(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function SS(t,e){const n=oe(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function DS(t,e){const n=oe(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function vp(t,e){return e>=t.location&&e<t.location+t.size}class We{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 We(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new We(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):hu}static createFromRecord(e){return new We(e.top,e.right,e.bottom,e.left)}static zero(){return hu}static createUniformPadding(e){return new We(e,e,e,e)}}const hu=We.createUniformPadding(0);Object.freeze(hu);const CS=/^([A-Za-z]+:)?\/\//;function MS(t,e){if(e&&CS.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const lr="VISIT_SKIP",Mn="VISIT_STOP",wp=t=>t;class Ep{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={},up(this),this.opacityFunction=wp}getPadding(){return this._cache("size/padding",()=>We.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):xp)}getSizeFromSpec(){const e=n=>{var o;let r,i=this.spec[n];if(Sp(i)){const s=i.step,a=(o=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:o.getScale();if(a){let c=0;if(Qt(a.type))c=a.domain().length;else if(["locus","index"].includes(a.type)){const u=a.domain();c=he(u)-u[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);c=sc(c,a.paddingInner(),a.paddingOuter()),r={px:c*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else r=i&&fu(i)||{px:0,grow:1};return r};return this._cache("size/sizeFromSpec",()=>new en(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n: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 o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Mn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===wp)&&(this.opacityFunction=TS(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(e){const n=this.parent?this.parent.getEncoding(this):{},r=this.spec.encoding||{},i=T(T({},n),r);for(const[o,s]of Object.entries(i))s===null&&delete i[o];return i}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return wn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=En(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 MS(()=>{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}_cache(e,n){return ur(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":Ei(this,e);break;case"ancestors":for(const r of this.getAncestors())Ei(r,e);break;case"progeny":this.visit(r=>Ei(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}}function IS(t){return"unitsPerPixel"in t}function TS(t){const e=t.spec.opacity;if(e!==void 0){if(oe(e))return n=>n*e;if(IS(e)){const n=o=>{var a;const s=(a=t.getScaleResolution(o))==null?void 0:a.getScale();if(["linear","index","locus"].includes(s==null?void 0:s.type))return s},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=Ja().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=1e3,a=Wi(r.domain())/s;return i(a)*o}}}return n=>n}const Sp=t=>!!(t==null?void 0:t.step);class gt extends Ep{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===Mn)return n;if(n!==lr){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Mn)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 gt)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return 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){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function ps(t,e,n){if(n=n||[],t.some(s=>s===null)){if(t.every(s=>s===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(s,a)=>s===a||fr(s)&&fr(a)||fr(s)&&a===!0||s===!0&&Be(a),o=s=>{for(let a in s){const c=s[a];if(!n.includes(a)&&c!==void 0)if(r[a]!==void 0&&!i(r[a],c))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const u=r[a];if(fr(u))fr(c)&&(r[a]=ps([u,c],a));else if(fr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[a]=ps([{},c],a)}else r[a]=c}}};for(const s of t)o(s);return r}function fr(t){return Be(t)&&!Array.isArray(t)}/*!
|
1531
|
+
`;const DS={left:-1,center:0,right:1},CS={top:-1,middle:0,bottom:1,alphabetic:1};class MS extends Ii{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 ui)this.properties.fitToBand&&fu(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(ES,SS)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;ve(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[DS[e.align],CS[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 o=0;const s=r.text.format?Ie(r.text.format):u=>u;for(const u of n){const f=s(i(u)),l=ie(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new YE({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});a.addBatches(e.facetBatches);const c=a.toArrays();this.rangeMap=c.rangeMap,this.updateBufferInfo(c)}prepareRender(e){super.prepareRender(e);let n=.35;this.properties.logoLetters&&(n/=2),ve(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),or(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ai(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function hs(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const p of t)s+=Ti(p.px)+(ds(p)?0:n),a+=Ti(p.grow);s-=n;const c=Math.max(0,e-s),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],h=p=>{const g=f.length;if(!g)return;const m=(p?n:0)*(o?-1:1);d-=m;for(let y=0;y<g;y++)l.push({location:d+(y+1)/(g+1)*m,size:0});d+=m,f.length=0};let d=o?Math.max(e,s):0+i;if(t.length==1&&ds(t[0]))return[{location:d,size:0}];for(let p=0;p<t.length;p++){const g=t[p];if(ds(g))f.push(g);else{h(l.length>0);const m=Ti(g.px)+(a?Ti(g.grow)/a*c:0);o&&(d-=m),l.push({location:u(d),size:u(m)}),o?d-=n:d+=m+n}}return d+=o?n:-n,h(!1),l}function IS(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=Ti(r.px)+(ds(r)?0:e);return Math.max(0,n-e)}class en{constructor(e,n){this.width=e,this.height=n}addPadding(e){return new en({px:(this.width.px||0)+e.width,grow:this.width.grow},{px:(this.height.px||0)+e.height,grow:this.height.grow})}}const vp=Object.freeze({px:0,grow:0}),wp=new en(vp,vp);function ds(t){return!t.px&&!t.grow}function Ti(t){return t||0}function TS(t){return t&&(se(t.px)||se(t.grow))}function hu(t){if(Cp(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(TS(t))return t;if(se(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}`)}function NS(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function LS(t,e){const n=se(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function OS(t,e){const n=se(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Ep(t,e){return e>=t.location&&e<t.location+t.size}class qe{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 qe(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new qe(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):du}static createFromRecord(e){return new qe(e.top,e.right,e.bottom,e.left)}static zero(){return du}static createUniformPadding(e){return new qe(e,e,e,e)}}const du=qe.createUniformPadding(0);Object.freeze(du);const kS=/^([A-Za-z]+:)?\/\//;function BS(t,e){if(e&&kS.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const ur="VISIT_SKIP",Cn="VISIT_STOP",Sp=t=>t;class Dp{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={},fp(this),this.opacityFunction=Sp}getPadding(){return this._cache("size/padding",()=>qe.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):wp)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Cp(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let c=0;if(Vt(a.type))c=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();c=he(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const u=a;return c=sc(c,u.paddingInner(),u.paddingOuter()),{px:c*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&hu(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new en(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n: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 o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Cn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Sp)&&(this.opacityFunction=PS(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(e){const n=this.parent?this.parent.getEncoding(this):{},r=this.spec.encoding||{},i=T(T({},n),r);for(const[o,s]of Object.entries(i))s===null&&delete i[o];return i}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return vn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Zn(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 BS(()=>{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}_cache(e,n){return cr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":Di(this,e);break;case"ancestors":for(const r of this.getAncestors())Di(r,e);break;case"progeny":this.visit(r=>Di(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}}function FS(t){return"unitsPerPixel"in t}function PS(t){const e=t.spec.opacity;if(e!==void 0){if(se(e))return n=>n*e;if(FS(e)){const n=o=>{var a;const s=(a=t.getScaleResolution(o))==null?void 0:a.getScale();if(["linear","index","locus"].includes(s==null?void 0:s.type))return s},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=Ja().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=1e3,a=Zi(r.domain())/s;return i(a)*o}}}return n=>n}const Cp=t=>!!(t==null?void 0:t.step);class yt extends Dp{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===Cn)return n;if(n!==ur){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Cn)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 yt)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return 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){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function ps(t,e,n){if(n=n||[],t.some(s=>s===null)){if(t.every(s=>s===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(s,a)=>s===a||lr(s)&&lr(a)||lr(s)&&a===!0||s===!0&&Be(a),o=s=>{for(let a in s){const c=s[a];if(!n.includes(a)&&c!==void 0)if(r[a]!==void 0&&!i(r[a],c))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const u=r[a];if(lr(u))lr(c)&&(r[a]=ps([u,c],a));else if(lr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[a]=ps([{},c],a)}else r[a]=c}}};for(const s of t)o(s);return r}function lr(t){return Be(t)&&!Array.isArray(t)}/*!
|
1530
1532
|
* Adapted from vega-encode:
|
1531
1533
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
|
1532
1534
|
*
|
@@ -1534,7 +1536,7 @@ void main() {
|
|
1534
1536
|
* All rights reserved.
|
1535
1537
|
*
|
1536
1538
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1537
|
-
*/function
|
1539
|
+
*/function Mp(t,e,n){return se(e)&&n!=null&&(e=Math.min(e,~~(Zi(t.domain())/n)||1)),Be(e)&&(e=e.interval),e}function Ip(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(Je(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(a){return a=t(a),i<=a&&a<=o}),n>0&&e.length>1){for(var s=[e[0],Je(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,c){return!(c%2)});e.length<3&&(e=s)}return e}function zS(t,e){return t.bins?Ip(t,RS(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function RS(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function US(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?Ie(n):String;if(id(t.type)){var i=GS(n);r=t.bins?i:jS(r,i)}return r}function jS(t,e){return function(n){return t(n)?e(n):""}}function GS(t){var e=bo(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return HS(Ie(e),Ie(".1f")(1)[1])}else return Ie(e)}function HS(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=QS(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function QS(t,e){var 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}/*!
|
1538
1540
|
* Adapted from vega-encode:
|
1539
1541
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
|
1540
1542
|
*
|
@@ -1542,41 +1544,41 @@ void main() {
|
|
1542
1544
|
* All rights reserved.
|
1543
1545
|
*
|
1544
1546
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1545
|
-
*/const zS="locus",RS="index";var US=5;function jS(t){const e=t.type;return!t.bins&&(e===Vn||e===Yr||e===Wr)}function Mp(t){return Je(t)&&![ut,RS,zS].includes(t)}function Ip(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var GS=qi(["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 Tp(t,e,n){n=Ip(n);for(const r in t)if(!GS[r]){if(r==="padding"&&Mp(e.type))continue;Ce(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}qS(e,t,XS(e,t,_S(e,t,n)))}function HS(t,e){const n=QS(t),r=_(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return Tp(t,i,e),i}function QS(t){var e=t.type,n="",r;return e===ut?ut+"-"+Vn:(VS(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?ut+"-":r===3?_n+"-":""),(n+e||Vn).toLowerCase())}function VS(t){const e=t.type;return Je(e)&&e!==qh&&e!==Zh&&(t.scheme||t.range&&t.range.length&&t.range.every(se))}function _S(t,e,n){if(!t.domain)return 0;n=Ip(n);var r=YS(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&jS(t),a,c;return i?(Mp(o)&&e.padding&&i[0]!==Ze(i)&&(i=WS(o,i,e.range,e.padding,e.exponent,e.constant)),(s||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,s&&(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&&(c=e.domainMid,(c<i[0]||c>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(a,0,c))),t.domain(Np(o,i,n)),o===cc&&t.unknown(e.domainImplicit?Ia:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Dp(t,e.nice)||null),i.length):0}function YS(t,e,n){return e?(t.domain(Np(t.type,e,n)),e.length):-1}function WS(t,e,n,r,i,o){var s=Math.abs(Ze(n)-n[0]),a=s/(s-2*r),c=t===Ht?Ol(e,null,a):t===Wr?zs(e,null,a,.5):t===Yr?zs(e,null,a,i||1):t===Mo?E1(e,null,a,o||1):Yi(e,null,a);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Np(t,e,n){if(rd(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+Xi(e))}return e}function XS(t,e,n){let r=e.bins;if(r&&!Qe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?Ze(i):r.stop,a=r.step;a||te("Scale bins parameter missing step property."),r=ho(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===lc&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function qS(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=ZS(r,e,n);else if(e.scheme&&(o=KS(r,e,n),Ce(o))){if(t.interpolator)return t.interpolator(o);te(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&To(r))return t.interpolator(No(du(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(id(e.interpolate,e.interpolateGamma)):Ce(t.round)?t.round(i):Ce(t.rangeRound)&&t.interpolate(i?Vr:jt),o&&t.range(du(o,e.reverse))}function ZS(t,e,n){t!==$h&&t!==uc&&te("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===uc?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*sc(n,i,r)]}function KS(t,e,n){var r=e.schemeExtent,i,o;return Qe(e.scheme)?o=No(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=hc(i),o||te(`Unrecognized scheme name: ${e.scheme}`)),n=t===Jh?n+1:t===lc?n-1:t===ac||t===Kh?+e.schemeCount||US:n,To(t)?Lp(o,r,e.reverse):Ce(o)?Fb(Lp(o,r),n):t===cc?o:o.slice(0,n)}function Lp(t,e,n){return Ce(t)&&(e||n)?Bb(t,du(e||[0,1],n)):t}function du(t,e){return e?t.slice().reverse():t}const pu=Ie(",d");function JS(t){return t.chrom+":"+pu(Math.floor(t.pos+1))}function $S(t,e){return t.chrom+":"+pu(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+pu(Math.ceil(e.pos))}const eD="https://genomespy.app/data/genomes/";class tD{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=eD;try{this.setChromSizes(nD(await ao({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,o=U(T({},e[r]),{continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)});this.chromosomes.push(o);const s=o.name.replace(/^chr/i,"");for(const a of["chr"+s,"CHR"+s,"Chr"+s,o.number,""+o.number,s,o.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,o);n+=o.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=o2(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 $S(...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,o,s;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(s=r.pos)!=null?s:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.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],i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=parseInt(n[4].replace(/,/g,""));return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function nD(t){return H1(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Op(t){return Be(t)&&"chrom"in t}function rD(t){return t.every(Op)}class Ii extends Array{constructor(){super();this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Ii&&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 gu extends Ii{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 kp extends Ii{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 Bp extends kp{constructor(){super();this.type="nominal"}}class iD extends Ii{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 Fp={quantitative:gu,index:gu,locus:gu,nominal:Bp,ordinal:kp};function Pp(t,e){if(t=="quantitative"&&oD(e)){const n=new iD(e);return n.type=t,n}else if(Fp[t]){const n=new Fp[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function oD(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function zp(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function sD(t){return--t*t*t+1}function aD(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function cD(t){return 1-aD(t)}const Rp="quantitative",mu="ordinal",yu="nominal",Au="locus",uD="index";class lD{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 s;const r=Uo(e,n),i=r.type,o=(s=r==null?void 0:r.scale)==null?void 0:s.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!ui(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 ur(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Uo(n.view,n.channel).scale).filter(n=>n!==void 0);return ps(e,"scale",["domain"])})}getScaleProps(){return ur(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=T(T({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=fD(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Qt(n.type)&&(n.domain=new Bp),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),n.type==Au&&!("fp64"in n)&&(n.fp64=!0),this.channel=="y"&&Qt(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),hD(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Au?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>ui(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>ui(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){cp(this,"scaleProps");const e=this.getScaleProps();Tp(e,this._scale),Je(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=HS(e);return this._scale=n,n.type=="locus"&&n.genome(this.getGenome()),n.fp64=!!e.fp64,Je(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&pc(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Kn.includes(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(),o=i.domain();let s=[...o];const a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),i.type){case"linear":case"index":case"locus":s=x1(s,r||0),s=Yi(s,a,e);break;case"log":s=v1(s,r||0),s=Ol(s,a,e);break;case"pow":case"sqrt":s=w1(s,r||0,i.exponent()),s=zs(s,a,e,i.exponent());break;default:throw new Error("Unsupported scale type: "+i.type)}return this._zoomExtent&&(s=S1(s,...this._zoomExtent)),[0,1].some(c=>s[c]!=o[c])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(js(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,o=this.getScale(),s=o.domain();if(n>0&&s.length==2){const c=s[1]-s[0],u=s[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,h=Sh.rho(.7)([u,0,c],[l,0,f]);await i.transition({duration:n/1e3*h.duration,easingFunction:zp,onUpdate:d=>{const[p,,g]=h(d);o.domain([p-g/2,p+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?Wi(this._zoomExtent)/Wi(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(dD(n)&&Qe(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),jo(n)?r.nice=!this.isExplicitDomain():Sn(n)?r.scheme=e==yu?"tableau10":e==mu?"blues":"viridis":Go(n)?r.range=kd(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 Op(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&rD(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 fD(t,e){if([uD,Au].includes(e)){if(Kn.includes(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={uniqueId:["null",void 0,void 0],facetIndex:["null",void 0,void 0],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],sample:["null","null",void 0],semanticScore:[void 0,void 0,"null"],search:["null",void 0,void 0],text:["null","null","null"],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},r=n[t]?n[t][[yu,mu,Rp].indexOf(e)]:e==Rp?"linear":"ordinal";if(r===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return r}function hD(t,e){jo(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Je(t.type)&&(t.clamp=!0)}function dD(t){return Be(t)}function bu(...t){for(const e of t)if(e!==void 0)return e}class pD{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=he(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 ur(this,"axisProps",()=>{const e=this.members.map(n=>Uo(n.view,n.channel).axis);return e.length>0&&e.some(n=>n===null)?null:ps(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=Uo(o.view,o.channel);return{member:o,explicitTitle:bu((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:bu(wn(s)?s.field:void 0,Sc(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(ui(o.member.channel)&&!o.explicitTitle){const a=En(o.member.channel);return((s=n.find(c=>c.member.view==o.member.view&&c.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>bu(o.explicitTitle,o.implicitTitle)).filter(se));return i.size?[...i].join(", "):null}}class Up extends Ep{constructor(e,n,r,i){super(e,n,r,i);this.spec=e}}class Ti extends gt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(vu(o)||xu(o))return n.createView(o,this,"layer"+s);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()){n=n.shrink(this.getPadding()),e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}}function It(t){return()=>t}class mt{static create(e,n,r,i){return new mt(It(e),It(n),It(r),It(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"?It(i):typeof i=="function"?i:this._passThrough(r)};return new mt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new mt(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 mt(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 mt(()=>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 mt(It(this.x),It(this.y),It(this.width),It(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}}}class hr extends gt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=wu(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const o=wu(e)?e.hconcat:Hp(e)?e.vconcat:e.concat;this.children=o.map((s,a)=>n.createView(s,this,"concat"+a))}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.children.filter(o=>o.isVisible());if(!e.length)return this.getPadding();const n=e.map(o=>o.getEffectivePadding()).map(o=>this.mainDimension=="height"?[o.left,o.right]:[o.top,o.bottom]),r=jp(n),i=this.mainDimension=="height"?new We(e[0].getEffectivePadding().top,r[1],he(e).getEffectivePadding().bottom,r[0]):new We(r[0],e[0].getEffectivePadding().left,r[1],he(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=fu(this.spec[this.mainDimension]);else{const r=this.children.filter(i=>i.isVisible()).map(i=>i.getSize()[this.mainDimension]);e={grow:r.map(i=>+i.grow).reduce((i,o)=>i+o,0),px:vS(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&fu(this.spec[this.secondaryDimension])||{grow:1};return(this.mainDimension=="height"?new en(n,e):new en(e,n)).addPadding(this.getPadding())})}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this.children.filter(u=>u.isVisible()),o=i.map(u=>u.getSize()[this.mainDimension]),s=hs(o,n[this.mainDimension],{spacing:this.spec.spacing,devicePixelRatio:this.context.glHelper.dpr}),a=i.map(u=>u.getEffectivePadding()).map(u=>this.mainDimension=="height"?[u.left,u.right]:[u.top,u.bottom]),c=jp(a);for(let u=0;u<i.length;u++){const f=i[u],l=s[u],h=c[0]-a[u][0],d=c[1]-a[u][1],p=n[this.secondaryDimension]-h-d,g=this.mainDimension=="height"?new mt(()=>n.x+h,()=>n.y+l.location,()=>p,()=>l.size):new mt(()=>n.x+l.location,()=>n.y+h,()=>l.size,()=>p);f.render(e,g,r)}e.popView(this)}*[Symbol.iterator](){for(const e of this.children)yield e}replaceChild(e,n){const r=this.children.indexOf(e);if(r>=0)this.children[r]=n;else throw new Error("Not my child view!")}addChildBySpec(e){const n=this.children.length,r=this.context.createView(e,this,"concat"+n);return this.children.push(r),r}addChild(e){const n=this.children.length;return e.name||(e.name="concat"+n),e.parent=this,this.children.push(e),e}getDefaultResolution(e,n){return"independent"}}function jp(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class gD{constructor(){this.types=[];const e=n=>(r,i,o,s)=>{var a;return new n(r,i,o,(a=r.name)!=null?a:s)};this.addViewType(mD,e(Up)),this.addViewType(vu,e(Ti)),this.addViewType(xu,e(Oe)),this.addViewType(Hp,e(hr)),this.addViewType(wu,e(hr)),this.addViewType(yD,e(hr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(s=>s.specGuard(e));if(o)return o.factory(e,n,r,i!=null?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 xu(t){return"mark"in t&&(se(t.mark)||Be(t.mark))}function vu(t){return"layer"in t&&Be(t.layer)}function Gp(t){return t&&(xu(t)||vu(t))&&"aggregateSamples"in t}function mD(t){return"import"in t}function Hp(t){return"vconcat"in t&&Qe(t.vconcat)}function wu(t){return"hconcat"in t&&Qe(t.hconcat)}function yD(t){return"concat"in t&&Qe(t.concat)}const AD={point:aS,rect:tS,rule:lS,link:pS,text:xS};class Oe extends gt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e;const o=AD[this.getMarkType()];if(o)this.mark=new o(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()||(n=n.shrink(this.getPadding()),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){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!St(o))continue;let s=En((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!jo(s))continue;let a=this;for(;a.parent instanceof gt&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(s,e))&&a.getConfiguredOrDefaultResolution(s,e)!="excluded";)a=a.parent;a.resolutions[e][s]||(a.resolutions[e][s]=e=="scale"?new lD(s):new pD(s)),a.resolutions[e][s].pushUnitView(this,i)}}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(ui(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!St(n))throw new Error("The channel has no scale, cannot get domain!");if(!n.type)throw new Error(`No data type for channel "${e}"!`);return n}getConfiguredDomain(e){var i;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const o=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return Pp(n.type,o.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type,i=a=>{let c;const u=this.mark.encoding[a];if(u){const f=this.context.accessorFactory.createAccessor(u);if(f)if(c=Pp(r),f.constant)c.extend(f({}));else{const l=this.getCollector();(l==null?void 0:l.completed)&&l.visitData(h=>c.extend(f(h)))}}return c};let o=i(e);const s=Dc[e];if(s){const a=i(s);a&&o.extendAll(a)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return Kn.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Gp(this.spec))for(const r of this.spec.aggregateSamples){r.transform=[...(e=r.transform)!=null?e:[],{type:"mergeFacets"}],r.encoding=U(T({},(n=r.encoding)!=null?n:{}),{sample:null});const i=this.context.createView(r,this,"summaryView");i.getFacetFields=o=>{},this.sampleAggregateViews.push(i)}}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function Qp(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class In extends ie{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function bD(t){return"dynamicCallbackSource"in t}class Vp extends In{constructor(e){super();this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=typeof r!="object"?i=>({data:i}):i=>i),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const _p="chromosome_ticks_and_labels",Yp={x:"width",y:"height"};function Eu(t){return t=="x"?"y":"x"}const Wp=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function Tn(t){return Wp[t]}class Su extends Ti{constructor(e,n,r,i){const o=n=="locus",s=T(T(T({},o?wD:Xp),vD(n,e)),e);super(o?ED(s):qp(s),r,i,`axis_${e.orient}`);if(this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Vp(()=>this.ticks),o){const a=Tn(this.axisProps.orient),c=this.getScaleResolution(a).getGenome();this.findChildByName(_p).getDynamicDataSource=()=>new Vp(()=>c.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Wp[this.axisProps.orient]=="x"?new en(n,e):new en(e,n)}getPerpendicularSize(){return Du(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=Tn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(pc(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=xD(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[Yp[Tn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Du(t){const e=Tn(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}function xD(t,e,n,r=[]){const i=a=>25+60*Qp(100,700,a);let o=oe(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Dp(e,o,t.tickMinStep);const s=t.values?Cp(e,t.values,o):NS(e,o);if(pc(s,r,a=>a,a=>a.value))return r;{const a=OS(e,o,t.format);return s.map(c=>({value:c,label:a(c)}))}}const Xp={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 vD(t,e){var a;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=(a=e.labelAngle)!=null?a:(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(s)>30?(i=s>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:s,labelBaseline:o}}function qp(t){const e=U(T({},t),{extent:Du(t)}),n=Tn(e.orient),r=Eu(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),a=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500,dynamicData:!0},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label",type:"quantitative"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300,dynamicData:!0},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const h={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&h.layer.push(c()),e.labels&&h.layer.push(a()),h},l={[Yp[Eu(Tn(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const wD=U(T({},Xp),{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 ED(t){const e=U(T({},t),{extent:Du(t)}),n=Tn(e.orient),r=Eu(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth,dynamicData:!0}}),s=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:T({type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,dynamicData:!0},u),encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name",type:"ordinal"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const c=qp(T(T({},t),a));if(t.chromTicks||t.chromLabels){const u={name:_p,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(s());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(h=>h.name=="labels").forEach(h=>{f=h.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const SD={x:["bottom","top"],y:["left","right"]};class Cu extends gt{constructor(e,n){super({},e,n,"decorator");this.child=void 0,this.backgroundView=void 0,this.axisViews={top:void 0,right:void 0,bottom:void 0,left:void 0},["mousedown","wheel"].forEach(r=>this.addInteractionEventListener(r,this.handleMouseEvent.bind(this)))}initialize(){var n;Object.entries(SD).forEach(([r,i])=>this._initializeAxes(r,i)),this._invalidateCacheByPrefix("size/","ancestors");const e=(n=this.child.spec)==null?void 0:n.view;((e==null?void 0:e.fill)||(e==null?void 0:e.stroke))&&(this.backgroundView=new Oe(DD(e),this.context,this,"background"))}getEncoding(e){return Object.values(this.axisViews).find(n=>e===n)||e==this.backgroundView?{}:super.getEncoding()}getFacetAccessor(e){if(e==this.child&&this.parent)return this.parent.getFacetAccessor(this)}*[Symbol.iterator](){yield this.child,this.backgroundView&&(yield this.backgroundView);for(const e of Object.values(this.axisViews))e&&(yield e)}_getAxisExtents(){return this._cache("size/axisExtents",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.getPerpendicularSize());return We.createFromRecord(e)})}_getAxisOffsets(){return this._cache("size/axisOffsets",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.axisProps.offset);return We.createFromRecord(e)})}getEffectivePadding(){return this._cache("size/effectivePadding",()=>this.getPadding().add(this._getAxisExtents()))}getSize(){return this._cache("size/size",()=>this.child.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()).addPadding(this.getAxisSizes()):xp)}getAxisSizes(){return this._cache("size/axisSizes",()=>this._getAxisExtents().add(this._getAxisOffsets()))}render(e,n,r={}){if(!this.isVisible()||!this.child.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this._getAxisExtents(),o=n.shrink(i.add(this._getAxisOffsets()));this._childCoords=o,this.backgroundView&&this.backgroundView.render(e,o,r),this.child.render(e,o,r);const s=this._cache("axisViewEntries",()=>Object.entries(this.axisViews).filter(a=>!!a[1]));for(const[a,c]of s){const u=c.axisProps;let f;a=="bottom"?f=o.translate(0,o.height+u.offset).modify({height:i.bottom}):a=="top"?f=o.translate(0,-i.top-u.offset).modify({height:i.top}):a=="left"?f=o.translate(-i.left-u.offset,0).modify({width:i.left}):a=="right"&&(f=o.translate(o.width+u.offset,0).modify({width:i.right})),c.render(e,f)}e.popView(this)}_getResolutionParticipants(){return[...this.getAncestors(),...hC(this.child)]}_initializeAxes(e,n){const r=this._getResolutionParticipants().map(i=>i.resolutions.axis[e]).filter(i=>i);for(const i of r){const o=i.getAxisProps();if(o&&o.orient){if(!n.includes(o.orient))throw new Error(`Invalid axis orientation for '${e}' channel: ${o.orient}`);if(this.axisViews[o.orient])throw new Error(`The slot for ${o.orient} axis is already reserved!`);this.axisViews[o.orient]=new Su(U(T({},o),{title:i.getTitle()}),i.scaleResolution.type,this.context,this)}}e:for(const i of r){const o=i.getAxisProps();if(o&&!o.orient){for(const s of n)if(!this.axisViews[s]){o.orient=s,this.axisViews[s]=new Su(U(T({},o),{title:i.getTitle()}),i.scaleResolution.type,this.context,this);continue e}throw new Error("No room for axes. All slots are already reserved.")}}}handleMouseEvent(e,n){if(!!this.isZoomable()){if(n.type=="wheel"){n.uiEvent.preventDefault();const r=n.uiEvent,i=r.deltaMode?120:1;let{x:o,y:s}=n.point;const a=this.context.getCurrentHover();if(a){const c=e.shrink(this.getEffectivePadding()),u=a.mark.encoders;u.x&&!u.x2&&(o=+u.x(a.datum)*c.width+c.x),u.y&&!u.y2&&(s=(1-+u.y(a.datum))*c.height+c.y)}Math.abs(r.deltaX)<Math.abs(r.deltaY)?this._handleZoom(e,{x:o,y:s,xDelta:0,yDelta:0,zDelta:r.deltaY*i/300}):this._handleZoom(e,{x:o,y:s,xDelta:-r.deltaX*i,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.uiEvent.button===0){const r=n.uiEvent;r.preventDefault();let i=r;const o=a=>{this._handleZoom(e,{x:i.clientX,y:i.clientY,xDelta:a.clientX-i.clientX,yDelta:a.clientY-i.clientY,zDelta:0}),i=a},s=a=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",o,!1)}}}isZoomable(){return this._cache("zoomable",()=>Object.values(this._getZoomableResolutions()).some(e=>e.size))}_getZoomableResolutions(){return this._cache("zoomableResolutions",()=>{const e={x:new Set,y:new Set};return this.child.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e})}_handleZoom(e,n){for(const[r,i]of Object.entries(this._getZoomableResolutions())){if(i.size<=0)continue;const o=this._getAxisExtents(),s=e.shrink(o.add(this._getAxisOffsets())),a=s.normalizePoint(n.x,n.y),c=s.normalizePoint(n.x+n.xDelta,n.y+n.yDelta),u={x:c.x-a.x,y:c.y-a.y};for(const f of i)f.zoom(2**n.zDelta,r=="y"?1-a[r]:a[r],r=="x"?u.x:-u.y)}this.context.animator.requestRender()}}function DD(t){return{configurableVisibility:!1,data:{values:[{}]},mark:U(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*Mu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Mu(r,[...e,n]))yield i;else yield[[...e,n],r]}class Ni extends ie{constructor(e){super();this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new uo([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){oS(e)&&(this._data=[],this.facetBatches.set(Ye(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?kl(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)==null?void 0:o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(c=>X(c)),a=fo(this._data,...s);this.facetBatches.clear();for(const[c,u]of Mu(a))this.facetBatches.set(c,u)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const s of this.facetBatches.values())for(const a of s)this._propagate(a);super.complete();for(const s of this.observers)s(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 Li{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(this.ids[r]=e,this.values[r]=n;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,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 o=0;for(;o<i;){let s=(o<<1)+1;const a=s+1;let c=this.ids[s],u=this.values[s];const f=this.values[a];if(a<this.length&&f<u&&(s=a,c=this.ids[a],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,o=s}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}}class CD extends ie{get behavior(){return Mt}constructor(e){super();this.params=e,this.startAccessor=X(e.start),this.endAccessor=X(e.end),this.chromAccessor=e.chrom?X(e.chrom):n=>{},this.weightAccessor=e.weight?X(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 Li}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,s=this.chromAccessor,a=this.weightAccessor;let c,u,f,l=0,h;const d=this.ends;d.clear();const p=(m,y,w)=>{if(m==y)return;let x=!1;c&&(c[e]===w?(c[n]=y,x=!0):c[e]!=0&&this._propagate(c)),x||(c=this.createSegment(m,y,w,f))},g=()=>{let m;for(;(m=d.peekValue())!==void 0;)p(h,m,l),h=m,l-=d.pop();h=void 0,c&&(this._propagate(c),c=void 0)};this.handle=m=>{const y=i(m);let w;for(;(w=d.peekValue())!==void 0&&w<y;)p(h,w,l),h=w,l-=d.pop();if(r){let E=s(m);E!==u&&(g(),f=E,u=f)}h!==void 0&&p(h,y,l),h=y;const x=a(m);l+=x,d.push(x,o(m))},this.complete=()=>{g(),super.complete()}}}function MD(t,e,n=0,r=t.length){const i=new Li,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const u=t[n+s];u>=i.peekValue()&&(i.push(s,u),i.pop())}const a=[];let c;for(;(c=i.pop())!==void 0;)a.push(n+c);return a.reverse()}class ID{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 o=this._findSlot(e,n,i);return o>=0?o: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++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class TD extends ie{constructor(e,n){super();var i,o;if(this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=X(this.params.pos),this.posBisector=co(this.posAccessor),this.scoreAccessor=X(this.params.score),this.widthAccessor=X(this.params.width),this.laneAccessor=this.params.lane?X(this.params.lane):s=>0,this.padding=(o=this.params.padding)!=null?o: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",s=>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 ID(200));this.schedule(),super.complete()}_filterAndPropagate(){var s;super.reset();const e=this.resolution.getScale(),n=(s=this.resolution.members[0].view.coords)==null?void 0:s[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,o=MD(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const c=this._data[a],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class ND extends ie{constructor(e){super();this.params=e,this.predicate=void 0}initialize(){this.predicate=Ec(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const LD="0".charCodeAt(0);function*OD(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-LD}yield r}class kD extends ie{get behavior(){return Mt}constructor(e){super();var s,a;const n=X((s=e.exons)!=null?s:"exons"),r=X((a=e.start)!=null?a:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const h=n(c);for(const d of OD(h)){if(l)f=u+d;else{u=f+d;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class BD extends ie{get behavior(){return Mt}constructor(e){super();const n=Ye(e.field).map(o=>X(o)),r=Ye(e.separator),i=Ye(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=o=>{if(n.some(c=>!c(o)))return;const s=n.map((c,u)=>c(o).split(r[u]));FD(s,o);const a=s[0].length;for(let c=0;c<a;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=s[f][c];this._propagate(u)}}}}function FD(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 PD extends ie{get behavior(){return $t}constructor(e){super();this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Ec(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Zp extends ie{get behavior(){return $t}constructor(e,n){super();var p;const r=(p=e.channel)!=null?p:"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 o=X(e.chrom),s=Ye(e.pos).map(g=>X(g)),a=Ye(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Ye(e.offset);let u;if(c.length==0)u=new Array(s.length).fill(0);else if(c.length==1)u=new Array(s.length).fill(c[0]);else if(c.length==s.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((g,m)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${m}](datum) - ${u[m]};`).join(`
|
1546
|
-
`));let l,h=0;const d=g=>{if(g!==l){if(h=i.cumulativeChromPositions.get(g),h===void 0)throw new Error("Unknown chromosome/contig: "+g);l=g}return h};this.handle=g=>{f(g,d(o(g)),s),this._propagate(g)}}}var Kp={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 zD extends ie{get behavior(){return $t}constructor(e){super();const n=cu(Kp),r=X(e.field),i=e.as,o=e.fontSize;this.handle=s=>{const a=r(s);a!==void 0?s[i]=n.measureWidth(a,o):s[i]=0,this._propagate(s)}}}const RD=65536;class UD extends ie{get behavior(){return $t}constructor(e){super();this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=oe(e.spacing)?e.spacing:1,i=X(e.start),o=X(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(RD),a=X(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&s.fill(-1/0),u=l;const h=c.indexOf(a(f));let d=-1;if(h>=0&&s[h]<l)d=h;else{const p=i(f);for(d=0;d<s.length&&!(s[d]<p);d++);if(d>=s.length)throw new Error("Out of lanes!")}s[d]=o(f)+r,f[n]=d,this._propagate(f)}}else{const s=new Li,a=new Li;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<c);){const d=s.pop();a.push(d,d)}c=l;let h=a.pop();h===void 0&&(h=u++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class jD extends ie{get behavior(){return Mt}constructor(e){super();if(e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>X(i)),r=e.as?e.as:n.map(He);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class GD extends ie{get behavior(){return $t}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=X(e.field);this.handle=o=>{const s=i(o);if(se(s)){const a=s.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 c=0;c<r.length;c++)o[r[c]]=a[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${s}" 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 s}, field content: "${s}".`);this._propagate(o)}}}class HD extends ie{get behavior(){return Mt}constructor(e){super();const n=Ye(e.columnRegex).map(h=>new RegExp(h)),r=Ye(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,o=e.asKey||"sample";let s,a,c;const u=h=>{var m;const d=Object.keys(h),p=new Map;for(const[y,w]of n.entries())for(const x of d){const E=(m=w.exec(x))==null?void 0:m[1];if(E!==void 0){let b=p.get(E);b||(b=[],p.set(E,b)),b[y]=x}}s=[...p.entries()],a=d.filter(y=>!n.some(w=>w.test(y))&&!(i&&i.test(y)));const g=[...a.map(y=>JSON.stringify(y)+": datum["+JSON.stringify(y)+"]"),JSON.stringify(o)+": sampleId",...r.map(y=>JSON.stringify(y)+": null")];c=new Function("datum","sampleId",`return {
|
1547
|
+
*/const VS="locus",_S="index";var YS=5;function WS(t){const e=t.type;return!t.bins&&(e===Qn||e===_r||e===Yr)}function Tp(t){return et(t)&&![ft,_S,VS].includes(t)}function Np(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var XS=Ji(["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 Lp(t,e,n){n=Np(n);for(const r in t)if(!XS[r]){if(r==="padding"&&Tp(e.type))continue;Ce(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}nD(e,t,tD(e,t,JS(e,t,n)))}function qS(t,e){const n=ZS(t),r=_(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return Lp(t,i,e),i}function ZS(t){var e=t.type,n="",r;return e===ft?ft+"-"+Qn:(KS(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?ft+"-":r===3?Vn+"-":""),(n+e||Qn).toLowerCase())}function KS(t){const e=t.type;return et(e)&&e!==Zh&&e!==Kh&&(t.scheme||t.range&&t.range.length&&t.range.every(ie))}function JS(t,e,n){if(!t.domain)return 0;n=Np(n);var r=$S(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&WS(t),a,c;return i?(Tp(o)&&e.padding&&i[0]!==Je(i)&&(i=eD(o,i,e.range,e.padding,e.exponent,e.constant)),(s||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,s&&(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&&(c=e.domainMid,(c<i[0]||c>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(a,0,c))),t.domain(Op(o,i,n)),o===cc&&t.unknown(e.domainImplicit?Ia:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Mp(t,e.nice)||null),i.length):0}function $S(t,e,n){return e?(t.domain(Op(t.type,e,n)),e.length):-1}function eD(t,e,n,r,i,o){var s=Math.abs(Je(n)-n[0]),a=s/(s-2*r),c=t===Qt?kl(e,null,a):t===Yr?Rs(e,null,a,.5):t===_r?Rs(e,null,a,i||1):t===No?D1(e,null,a,o||1):Xi(e,null,a);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Op(t,e,n){if(id(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+Ki(e))}return e}function tD(t,e,n){let r=e.bins;if(r&&!Qe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?Je(i):r.stop,a=r.step;a||te("Scale bins parameter missing step property."),r=mo(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===lc&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function nD(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=rD(r,e,n);else if(e.scheme&&(o=iD(r,e,n),Ce(o))){if(t.interpolator)return t.interpolator(o);te(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Oo(r))return t.interpolator(ko(pu(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(od(e.interpolate,e.interpolateGamma)):Ce(t.round)?t.round(i):Ce(t.rangeRound)&&t.interpolate(i?Qr:Gt),o&&t.range(pu(o,e.reverse))}function rD(t,e,n){t!==ed&&t!==uc&&te("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===uc?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*sc(n,i,r)]}function iD(t,e,n){var r=e.schemeExtent,i,o;return Qe(e.scheme)?o=ko(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=hc(i),o||te(`Unrecognized scheme name: ${e.scheme}`)),n=t===$h?n+1:t===lc?n-1:t===ac||t===Jh?+e.schemeCount||YS:n,Oo(t)?kp(o,r,e.reverse):Ce(o)?Rb(kp(o,r),n):t===cc?o:o.slice(0,n)}function kp(t,e,n){return Ce(t)&&(e||n)?zb(t,pu(e||[0,1],n)):t}function pu(t,e){return e?t.slice().reverse():t}const gu=Ie(",d");function oD(t){return t.chrom+":"+gu(Math.floor(t.pos+1))}function sD(t,e){return t.chrom+":"+gu(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+gu(Math.ceil(e.pos))}const aD="https://genomespy.app/data/genomes/";class cD{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=aD;try{this.setChromSizes(uD(await lo({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,o=U(T({},e[r]),{continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)});this.chromosomes.push(o);const s=o.name.replace(/^chr/i,"");for(const a of["chr"+s,"CHR"+s,"Chr"+s,o.number,""+o.number,s,o.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,o);n+=o.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=a2(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 sD(...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,o,s;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(s=r.pos)!=null?s:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.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],i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=parseInt(n[4].replace(/,/g,""));return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function uD(t){return V1(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Bp(t){return Be(t)&&"chrom"in t}function lD(t){return t.every(Bp)}class Ni extends Array{constructor(){super();this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Ni&&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 mu extends Ni{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 Fp extends Ni{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 Pp extends Fp{constructor(){super();this.type="nominal"}}class fD extends Ni{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 zp={quantitative:mu,index:mu,locus:mu,nominal:Pp,ordinal:Fp};function Rp(t,e){if(t=="quantitative"&&hD(e)){const n=new fD(e);return n.type=t,n}else if(zp[t]){const n=new zp[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function hD(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Up(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function dD(t){return--t*t*t+1}function pD(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function gD(t){return 1-pD(t)}const jp="quantitative",yu="ordinal",Au="nominal",bu="locus",mD="index";class yD{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 s;const r=Ec(e,n),i=r.type,o=(s=r==null?void 0:r.scale)==null?void 0:s.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!fi(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 cr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Ec(n.view,n.channel).scale).filter(n=>n!==void 0);return ps(e,"scale",["domain"])})}getScaleProps(){return cr(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=T(T({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=AD(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Vt(n.type)&&(n.domain=new Pp),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),n.type==bu&&!("fp64"in n)&&(n.fp64=!0),this.channel=="y"&&Vt(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),bD(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==bu?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>fi(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>fi(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){lp(this,"scaleProps");const e=this.getScaleProps();Lp(e,this._scale),et(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=qS(e);return this._scale=n,M2(n)&&n.genome(this.getGenome()),n.fp64=!!e.fp64,et(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&bd(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Bd(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(),o=i.domain();let s=[...o];const a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),i.type){case"linear":case"index":case"locus":s=w1(s,r||0),s=Xi(s,a,e);break;case"log":s=E1(s,r||0),s=kl(s,a,e);break;case"pow":case"sqrt":{const c=i;s=S1(s,r||0,c.exponent()),s=Rs(s,a,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=C1(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>s[c]!=o[c])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(qi(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,o=this.getScale(),s=o.domain();if(n>0&&s.length==2){const c=s[1]-s[0],u=s[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,h=Dh([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:Up,onUpdate:d=>{const[p,,g]=h(d);o.domain([p-g/2,p+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?Zi(this._zoomExtent)/Zi(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(xD(n)&&Qe(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),li(n)?r.nice=!this.isExplicitDomain():wn(n)?r.scheme=e==Au?"tableau10":e==yu?"blues":"viridis":Go(n)?r.range=Pd(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 Bp(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&lD(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 AD(t,e){if(e==mD||e==bu){if(Bd(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][[Au,yu,jp].indexOf(e)]:e==jp?"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 bD(t,e){li(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&et(t.type)&&(t.clamp=!0)}function xD(t){return Be(t)}function xu(...t){for(const e of t)if(e!==void 0)return e}class vD{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=he(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 cr(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:ps(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=Ec(o.view,o.channel);if(!We(s))return{member:o,explicitTitle:xu((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:xu(vn(s)?s.field:void 0,Sc(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(fi(o.member.channel)&&!o.explicitTitle){const a=Zn(o.member.channel);return((s=n.find(c=>c.member.view==o.member.view&&c.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>xu(o.explicitTitle,o.implicitTitle)).filter(ie));return i.size?[...i].join(", "):null}}class Gp extends Dp{constructor(e,n,r,i){super(e,n,r,i);this.spec=e}}class Li extends yt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(wu(o)||vu(o))return n.createView(o,this,"layer"+s);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()){n=n.shrink(this.getPadding()),e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}}function Tt(t){return()=>t}class At{static create(e,n,r,i){return new At(Tt(e),Tt(n),Tt(r),Tt(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"?Tt(i):typeof i=="function"?i:this._passThrough(r)};return new At(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new At(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 At(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 At(()=>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 At(Tt(this.x),Tt(this.y),Tt(this.width),Tt(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}}}class fr extends yt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=Eu(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const o=Eu(e)?e.hconcat:Vp(e)?e.vconcat:e.concat;this.children=o.map((s,a)=>n.createView(s,this,"concat"+a))}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.children.filter(o=>o.isVisible());if(!e.length)return this.getPadding();const n=e.map(o=>o.getEffectivePadding()).map(o=>this.mainDimension=="height"?[o.left,o.right]:[o.top,o.bottom]),r=Hp(n),i=this.mainDimension=="height"?new qe(e[0].getEffectivePadding().top,r[1],he(e).getEffectivePadding().bottom,r[0]):new qe(r[0],e[0].getEffectivePadding().left,r[1],he(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=hu(this.spec[this.mainDimension]);else{const r=this.children.filter(i=>i.isVisible()).map(i=>i.getSize()[this.mainDimension]);e={grow:r.map(i=>+i.grow).reduce((i,o)=>i+o,0),px:IS(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&hu(this.spec[this.secondaryDimension])||{grow:1};return(this.mainDimension=="height"?new en(n,e):new en(e,n)).addPadding(this.getPadding())})}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this.children.filter(u=>u.isVisible()),o=i.map(u=>u.getSize()[this.mainDimension]),s=hs(o,n[this.mainDimension],{spacing:this.spec.spacing,devicePixelRatio:this.context.glHelper.dpr}),a=i.map(u=>u.getEffectivePadding()).map(u=>this.mainDimension=="height"?[u.left,u.right]:[u.top,u.bottom]),c=Hp(a);for(let u=0;u<i.length;u++){const f=i[u],l=s[u],h=c[0]-a[u][0],d=c[1]-a[u][1],p=n[this.secondaryDimension]-h-d,g=this.mainDimension=="height"?new At(()=>n.x+h,()=>n.y+l.location,()=>p,()=>l.size):new At(()=>n.x+l.location,()=>n.y+h,()=>l.size,()=>p);f.render(e,g,r)}e.popView(this)}*[Symbol.iterator](){for(const e of this.children)yield e}replaceChild(e,n){const r=this.children.indexOf(e);if(r>=0)this.children[r]=n;else throw new Error("Not my child view!")}addChildBySpec(e){const n=this.children.length,r=this.context.createView(e,this,"concat"+n);return this.children.push(r),r}addChild(e){const n=this.children.length;return e.name||(e.name="concat"+n),e.parent=this,this.children.push(e),e}getDefaultResolution(e,n){return"independent"}}function Hp(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class wD{constructor(){this.types=[];const e=n=>(r,i,o,s)=>{var a;return new n(r,i,o,(a=r.name)!=null?a:s)};this.addViewType(ED,e(Gp)),this.addViewType(wu,e(Li)),this.addViewType(vu,e(Oe)),this.addViewType(Vp,e(fr)),this.addViewType(Eu,e(fr)),this.addViewType(SD,e(fr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(s=>s.specGuard(e));if(o)return o.factory(e,n,r,i!=null?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 vu(t){return"mark"in t&&(ie(t.mark)||Be(t.mark))}function wu(t){return"layer"in t&&Be(t.layer)}function Qp(t){return t&&(vu(t)||wu(t))&&"aggregateSamples"in t}function ED(t){return"import"in t}function Vp(t){return"vconcat"in t&&Qe(t.vconcat)}function Eu(t){return"hconcat"in t&&Qe(t.hconcat)}function SD(t){return"concat"in t&&Qe(t.concat)}const DD={point:pS,rect:cS,rule:yS,link:vS,text:MS};class Oe extends yt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e;const o=DD[this.getMarkType()];if(o)this.mark=new o(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()||(n=n.shrink(this.getPadding()),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){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!Xe(o))continue;let s=Zn((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!li(s))continue;let a=this;for(;a.parent instanceof yt&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(s,e))&&a.getConfiguredOrDefaultResolution(s,e)!="excluded";)a=a.parent;a.resolutions[e][s]||(a.resolutions[e][s]=e=="scale"?new yD(s):new vD(s)),li(i)?a.resolutions[e][s].pushUnitView(this,i):e=="scale"&&a.resolutions[e][s].pushUnitView(this,i)}}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(fi(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Xe(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const s=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return Rp((o=n.type)!=null?o:"nominal",s.fromComplexInterval(r))}}extractDataDomain(e){var a;const r=(a=this._validateDomainQuery(e).type)!=null?a:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=Rp(r),l.constant)u.extend(l({}));else{const h=this.getCollector();(h==null?void 0:h.completed)&&h.visitData(d=>u.extend(l(d)))}}return u};let o=i(e);const s=Dc[e];if(s){const c=i(s);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return ui.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Qp(this.spec))for(const r of this.spec.aggregateSamples){r.transform=[...(e=r.transform)!=null?e:[],{type:"mergeFacets"}],r.encoding=U(T({},(n=r.encoding)!=null?n:{}),{sample:null});const i=this.context.createView(r,this,"summaryView");i.getFacetFields=o=>{},this.sampleAggregateViews.push(i)}}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function _p(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Mn extends oe{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Yp(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=TD(t)&&CD(t.url)),(r=e.parse)!=null||(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 CD(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const gs=t=>typeof t!="object"?MD:ID,MD=t=>({data:t}),ID=t=>t;function TD(t){return"url"in t}function ND(t){return"dynamicCallbackSource"in t}class Wp extends Mn{constructor(e){super();this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=gs(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Xp="chromosome_ticks_and_labels",qp={x:"width",y:"height"};function Su(t){return t=="x"?"y":"x"}const Zp=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function In(t){return Zp[t]}class Du extends Li{constructor(e,n,r,i){const o=n=="locus",s=T(T(T({},o?kD:Kp),OD(n,e)),e);super(o?BD(s):Jp(s),r,i,`axis_${e.orient}`);if(this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Wp(()=>this.ticks),o){const a=In(this.axisProps.orient),c=this.getScaleResolution(a).getGenome();this.findChildByName(Xp).getDynamicDataSource=()=>new Wp(()=>c.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Zp[this.axisProps.orient]=="x"?new en(n,e):new en(e,n)}getPerpendicularSize(){return Cu(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=In(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(bd(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=LD(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[qp[In(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Cu(t){const e=In(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}function LD(t,e,n,r=[]){const i=a=>25+60*_p(100,700,a);let o=se(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Mp(e,o,t.tickMinStep);const s=t.values?Ip(e,t.values,o):zS(e,o);if($b(s,r,a=>a,a=>a.value))return r;{const a=US(e,o,t.format);return s.map(c=>({value:c,label:a(c)}))}}const Kp={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 OD(t,e){var a;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=(a=e.labelAngle)!=null?a:(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(s)>30?(i=s>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:s,labelBaseline:o}}function Jp(t){const e=U(T({},t),{extent:Cu(t)}),n=In(e.orient),r=Su(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),a=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500,dynamicData:!0},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300,dynamicData:!0},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const h={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&h.layer.push(c()),e.labels&&h.layer.push(a()),h},l={[qp[Su(In(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const kD=U(T({},Kp),{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){const e=U(T({},t),{extent:Cu(t)}),n=In(e.orient),r=Su(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth,dynamicData:!0}}),s=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:T({type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,dynamicData:!0},u),encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const c=Jp(T(T({},t),a));if(t.chromTicks||t.chromLabels){const u={name:Xp,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(s());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(h=>h.name=="labels").forEach(h=>{f=h.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const FD={x:["bottom","top"],y:["left","right"]};class Mu extends yt{constructor(e,n){super({},e,n,"decorator");this.child=void 0,this.backgroundView=void 0,this.axisViews={top:void 0,right:void 0,bottom:void 0,left:void 0},["mousedown","wheel"].forEach(r=>this.addInteractionEventListener(r,this.handleMouseEvent.bind(this)))}initialize(){var n;Object.entries(FD).forEach(([r,i])=>this._initializeAxes(r,i)),this._invalidateCacheByPrefix("size/","ancestors");const e=(n=this.child.spec)==null?void 0:n.view;((e==null?void 0:e.fill)||(e==null?void 0:e.stroke))&&(this.backgroundView=new Oe(PD(e),this.context,this,"background"))}getEncoding(e){return Object.values(this.axisViews).find(n=>e===n)||e==this.backgroundView?{}:super.getEncoding()}getFacetAccessor(e){if(e==this.child&&this.parent)return this.parent.getFacetAccessor(this)}*[Symbol.iterator](){yield this.child,this.backgroundView&&(yield this.backgroundView);for(const e of Object.values(this.axisViews))e&&(yield e)}_getAxisExtents(){return this._cache("size/axisExtents",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.getPerpendicularSize());return qe.createFromRecord(e)})}_getAxisOffsets(){return this._cache("size/axisOffsets",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.axisProps.offset);return qe.createFromRecord(e)})}getEffectivePadding(){return this._cache("size/effectivePadding",()=>this.getPadding().add(this._getAxisExtents()))}getSize(){return this._cache("size/size",()=>this.child.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()).addPadding(this.getAxisSizes()):wp)}getAxisSizes(){return this._cache("size/axisSizes",()=>this._getAxisExtents().add(this._getAxisOffsets()))}render(e,n,r={}){if(!this.isVisible()||!this.child.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this._getAxisExtents(),o=n.shrink(i.add(this._getAxisOffsets()));this._childCoords=o,this.backgroundView&&this.backgroundView.render(e,o,r),this.child.render(e,o,r);const s=this._cache("axisViewEntries",()=>Object.entries(this.axisViews).filter(a=>!!a[1]));for(const[a,c]of s){const u=c.axisProps;let f;a=="bottom"?f=o.translate(0,o.height+u.offset).modify({height:i.bottom}):a=="top"?f=o.translate(0,-i.top-u.offset).modify({height:i.top}):a=="left"?f=o.translate(-i.left-u.offset,0).modify({width:i.left}):a=="right"&&(f=o.translate(o.width+u.offset,0).modify({width:i.right})),c.render(e,f)}e.popView(this)}_getResolutionParticipants(){return[...this.getAncestors(),...wC(this.child)]}_initializeAxes(e,n){const r=this._getResolutionParticipants().map(i=>i.resolutions.axis[e]).filter(i=>i);for(const i of r){const o=i.getAxisProps();if(o&&o.orient){if(!n.includes(o.orient))throw new Error(`Invalid axis orientation for '${e}' channel: ${o.orient}`);if(this.axisViews[o.orient])throw new Error(`The slot for ${o.orient} axis is already reserved!`);this.axisViews[o.orient]=new Du(U(T({},o),{title:i.getTitle()}),i.scaleResolution.type,this.context,this)}}e:for(const i of r){const o=i.getAxisProps();if(o&&!o.orient){for(const s of n)if(!this.axisViews[s]){o.orient=s,this.axisViews[s]=new Du(U(T({},o),{title:i.getTitle()}),i.scaleResolution.type,this.context,this);continue e}throw new Error("No room for axes. All slots are already reserved.")}}}handleMouseEvent(e,n){if(!!this.isZoomable()){if(n.type=="wheel"){n.uiEvent.preventDefault();const r=n.uiEvent,i=r.deltaMode?120:1;let{x:o,y:s}=n.point;const a=this.context.getCurrentHover();if(a){const c=e.shrink(this.getEffectivePadding()),u=a.mark.encoders;u.x&&!u.x2&&(o=+u.x(a.datum)*c.width+c.x),u.y&&!u.y2&&(s=(1-+u.y(a.datum))*c.height+c.y)}Math.abs(r.deltaX)<Math.abs(r.deltaY)?this._handleZoom(e,{x:o,y:s,xDelta:0,yDelta:0,zDelta:r.deltaY*i/300}):this._handleZoom(e,{x:o,y:s,xDelta:-r.deltaX*i,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.uiEvent.button===0){const r=n.uiEvent;r.preventDefault();let i=r;const o=a=>{this._handleZoom(e,{x:i.clientX,y:i.clientY,xDelta:a.clientX-i.clientX,yDelta:a.clientY-i.clientY,zDelta:0}),i=a},s=a=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",o,!1)}}}isZoomable(){return this._cache("zoomable",()=>Object.values(this._getZoomableResolutions()).some(e=>e.size))}_getZoomableResolutions(){return this._cache("zoomableResolutions",()=>{const e={x:new Set,y:new Set};return this.child.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e})}_handleZoom(e,n){for(const[r,i]of Object.entries(this._getZoomableResolutions())){if(i.size<=0)continue;const o=this._getAxisExtents(),s=e.shrink(o.add(this._getAxisOffsets())),a=s.normalizePoint(n.x,n.y),c=s.normalizePoint(n.x+n.xDelta,n.y+n.yDelta),u={x:c.x-a.x,y:c.y-a.y};for(const f of i)f.zoom(2**n.zDelta,r=="y"?1-a[r]:a[r],r=="x"?u.x:-u.y)}this.context.animator.requestRender()}}function PD(t){return{configurableVisibility:!1,data:{values:[{}]},mark:U(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*Iu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Iu(r,[...e,n]))yield i;else yield[[...e,n],r]}class Oi extends oe{constructor(e){super();this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new ho([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){hS(e)&&(this._data=[],this.facetBatches.set(Ye(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Bl(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)==null?void 0:o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(c=>X(c)),a=go(this._data,...s);this.facetBatches.clear();for(const[c,u]of Iu(a))this.facetBatches.set(c,u)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const s of this.facetBatches.values())for(const a of s)this._propagate(a);super.complete();for(const s of this.observers)s(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 ki{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(this.ids[r]=e,this.values[r]=n;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,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 o=0;for(;o<i;){let s=(o<<1)+1;const a=s+1;let c=this.ids[s],u=this.values[s];const f=this.values[a];if(a<this.length&&f<u&&(s=a,c=this.ids[a],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,o=s}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}}class zD extends oe{get behavior(){return It}constructor(e){super();this.params=e,this.startAccessor=X(e.start),this.endAccessor=X(e.end),this.chromAccessor=e.chrom?X(e.chrom):n=>{},this.weightAccessor=e.weight?X(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 ki}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,s=this.chromAccessor,a=this.weightAccessor;let c,u,f,l=0,h;const d=this.ends;d.clear();const p=(m,y,v)=>{if(m==y)return;let w=!1;c&&(c[e]===v?(c[n]=y,w=!0):c[e]!=0&&this._propagate(c)),w||(c=this.createSegment(m,y,v,f))},g=()=>{let m;for(;(m=d.peekValue())!==void 0;)p(h,m,l),h=m,l-=d.pop();h=void 0,c&&(this._propagate(c),c=void 0)};this.handle=m=>{const y=i(m);let v;for(;(v=d.peekValue())!==void 0&&v<y;)p(h,v,l),h=v,l-=d.pop();if(r){let S=s(m);S!==u&&(g(),f=S,u=f)}h!==void 0&&p(h,y,l),h=y;const w=a(m);l+=w,d.push(w,o(m))},this.complete=()=>{g(),super.complete()}}}function RD(t,e,n=0,r=t.length){const i=new ki,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const u=t[n+s];u>=i.peekValue()&&(i.push(s,u),i.pop())}const a=[];let c;for(;(c=i.pop())!==void 0;)a.push(n+c);return a.reverse()}class UD{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 o=this._findSlot(e,n,i);return o>=0?o: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++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class jD extends oe{constructor(e,n){super();var i,o;if(this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=X(this.params.pos),this.posBisector=fo(this.posAccessor),this.scoreAccessor=X(this.params.score),this.widthAccessor=X(this.params.width),this.laneAccessor=this.params.lane?X(this.params.lane):s=>0,this.padding=(o=this.params.padding)!=null?o: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",s=>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 UD(200));this.schedule(),super.complete()}_filterAndPropagate(){var s;super.reset();const e=this.resolution.getScale(),n=(s=this.resolution.members[0].view.coords)==null?void 0:s[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,o=RD(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const c=this._data[a],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class GD extends oe{constructor(e){super();this.params=e,this.predicate=void 0}initialize(){this.predicate=wc(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const HD="0".charCodeAt(0);function*QD(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-HD}yield r}class VD extends oe{get behavior(){return It}constructor(e){super();var s,a;const n=X((s=e.exons)!=null?s:"exons"),r=X((a=e.start)!=null?a:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const h=n(c);for(const d of QD(h)){if(l)f=u+d;else{u=f+d;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class _D extends oe{get behavior(){return It}constructor(e){super();const n=Ye(e.field).map(o=>X(o)),r=Ye(e.separator),i=Ye(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=o=>{if(n.some(c=>!c(o)))return;const s=n.map((c,u)=>c(o).split(r[u]));YD(s,o);const a=s[0].length;for(let c=0;c<a;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=s[f][c];this._propagate(u)}}}}function YD(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 WD extends oe{get behavior(){return $t}constructor(e){super();this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=wc(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class $p extends oe{get behavior(){return $t}constructor(e,n){super();var p;const r=(p=e.channel)!=null?p:"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 o=X(e.chrom),s=Ye(e.pos).map(g=>X(g)),a=Ye(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Ye(e.offset);let u;if(c.length==0)u=new Array(s.length).fill(0);else if(c.length==1)u=new Array(s.length).fill(c[0]);else if(c.length==s.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((g,m)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${m}](datum) - ${u[m]};`).join(`
|
1548
|
+
`));let l,h=0;const d=g=>{if(g!==l){if(h=i.cumulativeChromPositions.get(g),h===void 0)throw new Error("Unknown chromosome/contig: "+g);l=g}return h};this.handle=g=>{f(g,d(o(g)),s),this._propagate(g)}}}var eg={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 XD extends oe{get behavior(){return $t}constructor(e){super();const n=uu(eg),r=X(e.field),i=e.as,o=e.fontSize;this.handle=s=>{const a=r(s);a!==void 0?s[i]=n.measureWidth(a,o):s[i]=0,this._propagate(s)}}}const qD=65536;class ZD extends oe{get behavior(){return $t}constructor(e){super();this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=se(e.spacing)?e.spacing:1,i=X(e.start),o=X(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(qD),a=X(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&s.fill(-1/0),u=l;const h=c.indexOf(a(f));let d=-1;if(h>=0&&s[h]<l)d=h;else{const p=i(f);for(d=0;d<s.length&&!(s[d]<p);d++);if(d>=s.length)throw new Error("Out of lanes!")}s[d]=o(f)+r,f[n]=d,this._propagate(f)}}else{const s=new ki,a=new ki;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<c);){const d=s.pop();a.push(d,d)}c=l;let h=a.pop();h===void 0&&(h=u++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class KD extends oe{get behavior(){return It}constructor(e){super();if(e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>X(i)),r=e.as?e.as:n.map(He);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class JD extends oe{get behavior(){return $t}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=X(e.field);this.handle=o=>{const s=i(o);if(ie(s)){const a=s.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 c=0;c<r.length;c++)o[r[c]]=a[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${s}" 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 s}, field content: "${s}".`);this._propagate(o)}}}class $D extends oe{get behavior(){return It}constructor(e){super();const n=Ye(e.columnRegex).map(h=>new RegExp(h)),r=Ye(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,o=e.asKey||"sample";let s,a,c;const u=h=>{var m;const d=Object.keys(h),p=new Map;for(const[y,v]of n.entries())for(const w of d){const S=(m=v.exec(w))==null?void 0:m[1];if(S!==void 0){let b=p.get(S);b||(b=[],p.set(S,b)),b[y]=w}}s=[...p.entries()],a=d.filter(y=>!n.some(v=>v.test(y))&&!(i&&i.test(y)));const g=[...a.map(y=>JSON.stringify(y)+": datum["+JSON.stringify(y)+"]"),JSON.stringify(o)+": sampleId",...r.map(y=>JSON.stringify(y)+": null")];c=new Function("datum","sampleId",`return {
|
1547
1549
|
`+g.join(`,
|
1548
1550
|
`)+`
|
1549
|
-
};`)},f=h=>{s||u(h);for(const[d,p]of s){const g=c(h,d);for(let m=0;m<p.length;m++)g[r[m]]=h[p[m]];this._propagate(g)}},l=h=>{u(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{
|
1550
|
-
`)+" };");return n.properties=e,n}class
|
1551
|
-
Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function ug(t){const e=[];t.visit(n=>{if(n instanceof Up)return e.push(n),lr});for(const n of e){const r=n.context,i=await mC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await ug(o)}}function yC(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}function AC(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...f2(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const bC=t=>!/^(layer|concat)\d+$/.test(t);class Tu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class lg extends Tu{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=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=fo(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(r(()=>s.prepareRender(this.globalOptions)));let c;for(const u of a){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=s.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class xC extends Tu{constructor(e){super(e);this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new vC(e,n);this.root?he(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class vC{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=he(this.children);n&&e.view===n.view&&e.coords.equals(n.coords)||this.children.push(e)}dispatchInteractionEvent(e){if(this.coords.containsPoint(e.point.x,e.point.y)){if(this.view.handleInteractionEvent(this.coords,e,!0),e.stopped)return;if(this.children.length==0)e.target=this.view;else for(const n of this.children){if(n.dispatchInteractionEvent(e),e.target)break;if(e.stopped)return}this.view.handleInteractionEvent(this.coords,e,!1)}}}class wC extends Tu{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 EC{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 SC{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 DC=t=>new Promise(e=>setTimeout(e,t));function gs(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n==null?void 0:n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(u-c)+c,d=g=>Math.max(0,Math.min(1,g)),p=g=>{(n==null?void 0:n.aborted)?o("aborted"):(t.onUpdate(h(f(d(l(g))))),g<a?e(p):(t.onUpdate(h(f(1))),i()))};e(p)});return t.delay?(n==null?void 0:n.aborted)?Promise.reject("aborted"):DC(t.delay).then(r):r()}class CC{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 gs(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function fg(){const t=e=>e;return t.invert=e=>e,t.copy=fg,t.invertRange=()=>{},t}class MC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new tD(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}}}var IC="data:image/png;base64,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";const TC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class NC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new uo([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:cu(Kp),texture:this._createTextureNow(IC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(se(r)&&(r=TC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=OC(r,n),o=this.fontRepository+hg(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,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=>cu(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=hg(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=>LC(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)=>{gi(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=gi(n,{src:e,min:n.LINEAR},(a,c,u)=>{a?s(a):o(c)})});return this._promises.push(i),r}}function hg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function LC(t){const e=t.split(`
|
1552
|
-
`),n=[];let r;for(const i of e)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 o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function
|
1553
|
-
`))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 BC{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=k1([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 FC(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function Nu(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...a))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const dg=new Map;async function PC(t,e,n){var o;const r=t.symbol;let i=(o=dg.get(r))!=null?o:await UC(t.symbol);return i?(dg.set(r,i),I`<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 zC(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(s=>s.json())).result[r]:null}const RC=Nu(zC,500);function UC(t){return RC(t)}const jC=Ie(".4~r"),GC=Ie(".4~e");function pg(t){return t===null?I`<span class="na">NA</span>`:se(t)?t.substring(0,30):Number.isInteger(t)?""+t:oe(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?GC(t):jC(t):js(t)?t?"True":"False":"?"+typeof t+" "+t}async function HC(t,e,n){const r=(s,a)=>{var c;for(const[u,f]of Object.entries(e.encoders))if((c=f==null?void 0:f.accessor)==null?void 0:c.fields.includes(s))switch(u){case"color":case"fill":case"stroke":return I`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=I`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>I`<tr><th>${s}</th><td>${pg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?I`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return I`${o}${i}`}_("index",Ma,["continuous"]),_("locus",S2,["continuous"]),_("null",fg,[]),Lf("fasta",kC);class gg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new gv,this.viewFactory=new gD,this.namedDataProviders=[],this.animator=new CC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new BC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:HC,refseqgene:PC},(i=r.tooltipHandlers)!=null?i:{}),this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}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 ZE(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize(),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 Zb(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 MC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new og,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new NC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,c)=>{document.addEventListener(a,c);let u=this._keyboardListeners.get(a);u||(u=[],this._keyboardListeners.set(a,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,c,u){return e.viewFactory.createView(a,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await ug(this.viewRoot),cg(this.viewRoot),dC(this.viewRoot),this.viewRoot=pC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Oe&&i.push(a)});const o=sg(this.viewRoot,n.dataFlow);fC(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const s=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)o.addObserver(c=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const c of Object.values(a.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const c of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>Ei(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),QC(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(this.layout&&r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new SC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new EC(s,c)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(s.x,s.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=FC(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",U(T({},u),{deltaMode:0,deltaX:0,deltaY:f}));a(l)}),c.preventDefault();return}}if(r.type=="click"){const c=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(c))}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 o;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!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof Oe){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(c=>{a(c)==i&&(this._currentHover={mark:s.mark,datum:c,uniqueId:i})})}if(this._currentHover)return Mn}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var u;if(!s.isPickingParticipant())return;const c=s.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,c==null?void 0:c.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 lg({picking:!1},this._glHelper),this._pickingContext=new lg({picking:!0},this._glHelper);const r=new xC({});e.render(new wC(this._renderingContext,this._pickingContext,r),mt.create(0,0,n.width,n.height)),this.layout=r.getLayout(),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 Oe&&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 QC(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)}var GI="",VC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1551
|
+
};`)},f=h=>{s||u(h);for(const[d,p]of s){const g=c(h,d);for(let m=0;m<p.length;m++)g[r[m]]=h[p[m]];this._propagate(g)}},l=h=>{u(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{Ap(h)&&(this.handle=l),super.beginBatch(h)}}}class eC extends oe{get behavior(){return $t}constructor(e){super();this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?Bl(e.sort.field,e.sort.order):void 0,i=e.field?X(e.field):()=>1,o=e.groupby.map(l=>X(l)),s=h2(this.buffer,l=>o.map(h=>h(l)).join()).map(l=>l[1]);let a=l=>!0;if(e.baseField){const l=X(e.baseField);a=h=>l(h)!==null}let c,u;switch(e.offset){case"normalize":c=(l,h)=>l/h,u=(l,h)=>yo(l,h);break;case"center":c=(l,h)=>l-h/2,u=(l,h)=>yo(l,h);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(h,d)=>h/d,u=(h,d)=>{const p=0,g=yo(h,w=>+!a(w)),m=yo(h,d),y=m-g;let v=0;for(let w=0;w<h.length;w++){const S=h[w];if(a(S)){const b=d(S)/y;v-=b*Math.log2(b)}}return y/(l-(v+p))*(y/m)}}break;default:c=(l,h)=>l,u=(l,h)=>1}for(const l of s){r&&l.sort(r);const h=u(l,i);let d=0;for(const p of l){const g=d+i(p);a(p)&&(p[n[0]]=c(d,h),p[n[1]]=c(g,h),this._propagate(p),d=g)}}super.complete()}}class tC extends oe{get behavior(){return It}constructor(e){super();var o,s;const n=X((o=e.field)!=null?o:"sequence"),[r,i]=(s=e.as)!=null?s:["pos","sequence"];this.handle=a=>{const c=Object.assign({},a,{[i]:"",[r]:0}),u=n(a);for(let f=0;f<u.length;f++){const l=Object.assign({},c);l[r]=f,l[i]=u.charAt(f),this._propagate(l)}}}}class nC extends oe{get behavior(){return It}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(o=>X(o)),i=go(this.buffer,...r);for(const[o,s]of Iu(i)){const a={count:s.length};for(let c=0;c<n.length;c++)a[n[c]]=o[c];this._propagate(a)}super.complete()}}const rC="_uniqueId",tg=1e4,ng=[null];class rg extends oe{get behavior(){return $t}constructor(e){super();var n;this.params=e,this.as=(n=e.as)!=null?n:rC,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%tg==0&&(this._id=this._getBlock()*tg),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=ng.length;return ng[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const ig={aggregate:nC,collect:Oi,coverage:zD,filterScoredLabels:jD,filter:GD,flattenCompressedExons:VD,flattenDelimited:_D,flattenSequence:tC,formula:WD,identifier:rg,linearizeGenomicCoordinate:$p,measureText:XD,pileup:ZD,project:KD,regexExtract:JD,regexFold:$D,sample:bp,stack:eC};function iC(t,e){const n=ig[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function oC(t){return"values"in t}class sC extends Mn{constructor(e){super();var n;if(this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)==null?void 0:n.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=gs(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=kf(e,Yp(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 aC(t){return"url"in t}class cC extends Mn{constructor(e,n){super();this.params=e,this.baseUrl=n}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 o=>lo({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=kf(o,Yp(this.params));this.beginBatch({type:"file",url:s});for(const c of a)this._propagate(c)}catch(a){throw new Error(`Cannot parse: ${s}: ${a.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function uC(t){return"sequence"in t}class lC extends Mn{constructor(e){super();if(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 fC(t){return"dynamicSource"in t}class hC extends Mn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=gs(r)),this._propagate(n(r));this.complete()}async load(){}}function og(t,e){if(oC(t))return new sC(t);if(aC(t))return new cC(t,e);if(uC(t))return new lC(t);if(fC(t))return new hC;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function dC(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(`,
|
1552
|
+
`)+" };");return n.properties=e,n}class sg extends oe{get behavior(){return It}constructor(){super();const e=n=>{const r=dC(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Ap(n)&&(this.handle=e),super.beginBatch(n)}}}class ag{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(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function pC(t){return"name"in t}class gC extends Mn{constructor(e,n){super();this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=gs(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function cg(t,e){const n=[];let r;const i=e!=null?e:new ag,o=[];function s(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function a(f,l){return s(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function c(f,l){for(const h of f){let d;try{d=iC(h,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${h.type}" transform: ${p}`)}d.behavior&$t&&a(new sg),a(d)}}const u=f=>{if(n.push(r),f.spec.data){const l=ND(f.spec.data)?f.getDynamicDataSource():pC(f.spec.data)?new gC(f.spec.data,f.context.getNamedData):og(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof Oe){if(!r)throw new Error("A unit view has no (inherited) data source");const l=mC(f);if(l){o.push(l.rewrite);for(const d of l.transforms)a(d)}f.mark.isPickingParticipant()&&a(new rg({type:"identifier"}));const h=new Oi({type:"collect",groupby:f.getFacetFields(),sort:yC(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}Qp(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function mC(t){var o,s,a,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;li(l)&&kd(f)&&r.push({channel:l,chromPosDef:f})}const i=go(r,u=>Zn(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,h]of f.entries()){const d=[],p=[],g=[];for(const{channel:m,chromPosDef:y}of h){const v=b=>b.replace(/[^A-Za-z0-9_]/g,""),w=["_linearized_",v(y.chrom),"_",v(y.pos)].join(""),S=U(T({},(a=(s=(o=t.spec.encoding)==null?void 0:o[m])!=null?s:t.getEncoding()[m])!=null?a:{}),{field:w});delete S.chrom,delete S.pos,!S.type&&y.type&&(S.type=y.type),n[m]=S,d.push(y.pos),g.push((c=y.offset)!=null?c:0),p.push(w)}e.push(new $p({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:d,offset:g,as:p},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=T(T({},t.spec.encoding),n),lp(t.mark,"encoding")}}:void 0}function yC(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Xe(n)&&((r=t.getScaleResolution("x"))==null?void 0:r.isZoomable())){if(vn(n))return{field:n.field};if(!ci(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function AC(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Oi?r=n:(r=new Oi,n.addChild(r));let i;return t instanceof Mn?i=async()=>(await t.load(),r.getData()):i=async()=>{throw new Error("The root node is not derived from DataSource!")},{dataSource:t,collector:r,loadAndCollect:i}}function ug(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!ug(n,t))return!1;return!0}function Tu(t,e=!1){if(t instanceof sg)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Tu(n,e);return}t.behavior&It&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Tu(t.children[n],e||n<r-1)}function bC(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),t.addDataSource(i,r)}}function xC(t){if(Tu(t),!ug(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function vC(t){for(const e of t.dataSources)xC(e);bC(t)}function wC(t){const e=[];return t.visit(n=>{e.push(n)}),e}function lg(t){t.visit(n=>{n instanceof Oe&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof Oe&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function EC(t){for(const e of ui){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function SC(t){let e=t;const n=r=>r&&!We(r);return t.visit(r=>{if(r instanceof Li||r instanceof Oe){const i=r.getEncoding();if(r instanceof Oe&&!n(i.x)&&!n(i.y))return ur;const o=r.parent,s=new Mu(r.context,o);if(r.parent=s,s.child=r,s.name=r.name+"_decorator",o)if(o instanceof yt)o.replaceChild(r,s);else{let a;if(t.visit(MC((c,u)=>{if(c===r)return a=he(u),Cn})),a instanceof yt)a.replaceChild(r,s);else throw new Error("Cannot find parent while decorating: "+r.getPathString())}return s.resolutions=r.resolutions,r.resolutions={scale:{},axis:{}},s.spec.height=r.spec.height,r.spec.height="container",s.spec.width=r.spec.width,r.spec.width="container",s.spec.padding=r.spec.padding,r.spec.padding=void 0,r===t&&(e=s),s.initialize(),ur}}),e}function DC(t){const e=[];return t.visit(n=>{if(n instanceof Oe){const r=n.getEncoding();for(const[i,o]of Object.entries(r))vn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return ur}}),e}async function CC(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=lo({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
|
1553
|
+
Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function fg(t){const e=[];t.visit(n=>{if(n instanceof Gp)return e.push(n),ur});for(const n of e){const r=n.context,i=await CC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await fg(o)}}function MC(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}function IC(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...d2(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const TC=t=>!/^(layer|concat)\d+$/.test(t);class Nu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class hg extends Nu{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=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=go(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(r(()=>s.prepareRender(this.globalOptions)));let c;for(const u of a){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=s.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class NC extends Nu{constructor(e){super(e);this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new LC(e,n);this.root?he(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class LC{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=he(this.children);n&&e.view===n.view&&e.coords.equals(n.coords)||this.children.push(e)}dispatchInteractionEvent(e){if(this.coords.containsPoint(e.point.x,e.point.y)){if(this.view.handleInteractionEvent(this.coords,e,!0),e.stopped)return;if(this.children.length==0)e.target=this.view;else for(const n of this.children){if(n.dispatchInteractionEvent(e),e.target)break;if(e.stopped)return}this.view.handleInteractionEvent(this.coords,e,!1)}}}class OC extends Nu{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 kC{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 BC{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 FC=t=>new Promise(e=>setTimeout(e,t));function ms(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n==null?void 0:n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(u-c)+c,d=g=>Math.max(0,Math.min(1,g)),p=g=>{(n==null?void 0:n.aborted)?o("aborted"):(t.onUpdate(h(f(d(l(g))))),g<a?e(p):(t.onUpdate(h(f(1))),i()))};e(p)});return t.delay?(n==null?void 0:n.aborted)?Promise.reject("aborted"):FC(t.delay).then(r):r()}class PC{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 ms(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function dg(){const t=e=>e;return t.invert=e=>e,t.copy=dg,t.invertRange=()=>{},t}class zC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new cD(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}}}var RC="data:image/png;base64,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";const UC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class jC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new ho([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:uu(eg),texture:this._createTextureNow(RC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(ie(r)&&(r=UC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=HC(r,n),o=this.fontRepository+pg(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,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=>uu(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=pg(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=>GC(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)=>{yi(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=yi(n,{src:e,min:n.LINEAR},(a,c,u)=>{a?s(a):o(c)})});return this._promises.push(i),r}}function pg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function GC(t){const e=t.split(`
|
1554
|
+
`),n=[];let r;for(const i of e)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 o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function HC(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const o=Math.abs(e.weight-i.weight);o<r&&(r=o,n=i)}return n==null?void 0:n.filename}function QC(t,e){const n=[];let r;for(const i of t.split(`
|
1555
|
+
`))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 VC{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=F1([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 _C(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function Lu(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...a))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const gg=new Map;async function YC(t,e,n){var o;const r=t.symbol;let i=(o=gg.get(r))!=null?o:await qC(t.symbol);return i?(gg.set(r,i),I`<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 WC(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(s=>s.json())).result[r]:null}const XC=Lu(WC,500);function qC(t){return XC(t)}const ZC=Ie(".4~r"),KC=Ie(".4~e");function mg(t){return t===null?I`<span class="na">NA</span>`:ie(t)?t.substring(0,30):Number.isInteger(t)?""+t:se(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?KC(t):ZC(t):qi(t)?t?"True":"False":"?"+typeof t+" "+t}async function JC(t,e,n){const r=(s,a)=>{var c;for(const[u,f]of Object.entries(e.encoders))if((c=f==null?void 0:f.accessor)==null?void 0:c.fields.includes(s))switch(u){case"color":case"fill":case"stroke":return I`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=I`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>I`<tr><th>${s}</th><td>${mg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?I`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return I`${o}${i}`}_("index",Ma,["continuous"]),_("locus",C2,["continuous"]),_("null",dg,[]),Of("fasta",QC);class yg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new vv,this.viewFactory=new wD,this.namedDataProviders=[],this.animator=new PC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new VC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:JC,refseqgene:YC},(i=r.tooltipHandlers)!=null?i:{}),this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}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 nS(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize(),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 ex(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 zC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new ag,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new jC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,c)=>{document.addEventListener(a,c);let u=this._keyboardListeners.get(a);u||(u=[],this._keyboardListeners.set(a,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,c,u){return e.viewFactory.createView(a,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await fg(this.viewRoot),lg(this.viewRoot),EC(this.viewRoot),this.viewRoot=SC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Oe&&i.push(a)});const o=cg(this.viewRoot,n.dataFlow);vC(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const s=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)o.addObserver(c=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const c of Object.values(a.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const c of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>Di(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),$C(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(this.layout&&r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new BC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new kC(s,c)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(s.x,s.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=_C(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",U(T({},u),{deltaMode:0,deltaX:0,deltaY:f}));a(l)}),c.preventDefault();return}}if(r.type=="click"){const c=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(c))}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 o;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!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof Oe){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(c=>{a(c)==i&&(this._currentHover={mark:s.mark,datum:c,uniqueId:i})})}if(this._currentHover)return Cn}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var u;if(!s.isPickingParticipant())return;const c=s.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,c==null?void 0:c.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 hg({picking:!1},this._glHelper),this._pickingContext=new hg({picking:!0},this._glHelper);const r=new NC({});e.render(new OC(this._renderingContext,this._pickingContext,r),At.create(0,0,n.width,n.height)),this.layout=r.getLayout(),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 Oe&&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 $C(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)}var KI="",eM="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1554
1556
|
* @license
|
1555
1557
|
* Copyright 2019 Google LLC
|
1556
1558
|
* SPDX-License-Identifier: BSD-3-Clause
|
1557
|
-
*/const
|
1559
|
+
*/const Ou=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Ag=Symbol(),bg=new Map;class tM{constructor(e,n){if(this._$cssResult$=!0,n!==Ag)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=bg.get(this.cssText);return Ou&&e===void 0&&(bg.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const nM=t=>new tM(typeof t=="string"?t:t+"",Ag),rM=(t,e)=>{Ou?t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet):e.forEach(n=>{const r=document.createElement("style"),i=window.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)})},xg=Ou?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return nM(n)})(t):t;/**
|
1558
1560
|
* @license
|
1559
1561
|
* Copyright 2017 Google LLC
|
1560
1562
|
* SPDX-License-Identifier: BSD-3-Clause
|
1561
|
-
*/var
|
1563
|
+
*/var ku;const vg=window.reactiveElementPolyfillSupport,Bu={toAttribute(t,e){switch(e){case Boolean:t=t?"":null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let n=t;switch(e){case Boolean:n=t!==null;break;case Number:n=t===null?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch{n=null}}return n}},wg=(t,e)=>e!==t&&(e==e||t==t),Fu={attribute:!0,type:String,converter:Bu,reflect:!1,hasChanged:wg};class hr extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(e){var n;(n=this.l)!==null&&n!==void 0||(this.l=[]),this.l.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach((n,r)=>{const i=this._$Eh(r,n);i!==void 0&&(this._$Eu.set(i,r),e.push(i))}),e}static createProperty(e,n=Fu){if(n.state&&(n.attribute=!1),this.finalize(),this.elementProperties.set(e,n),!n.noAccessor&&!this.prototype.hasOwnProperty(e)){const r=typeof e=="symbol"?Symbol():"__"+e,i=this.getPropertyDescriptor(e,r,n);i!==void 0&&Object.defineProperty(this.prototype,e,i)}}static getPropertyDescriptor(e,n,r){return{get(){return this[n]},set(i){const o=this[e];this[n]=i,this.requestUpdate(e,o,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||Fu}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),this.elementProperties=new Map(e.elementProperties),this._$Eu=new Map,this.hasOwnProperty("properties")){const n=this.properties,r=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(const i of r)this.createProperty(i,n[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const n=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)n.unshift(xg(i))}else e!==void 0&&n.push(xg(e));return n}static _$Eh(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}o(){var e;this._$Ev=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Ep(),this.requestUpdate(),(e=this.constructor.l)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$Em)!==null&&n!==void 0?n:this._$Em=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$Em)===null||n===void 0||n.splice(this._$Em.indexOf(e)>>>0,1)}_$Ep(){this.constructor.elementProperties.forEach((e,n)=>{this.hasOwnProperty(n)&&(this._$Et.set(n,this[n]),delete this[n])})}createRenderRoot(){var e;const n=(e=this.shadowRoot)!==null&&e!==void 0?e:this.attachShadow(this.constructor.shadowRootOptions);return rM(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$Em)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostConnected)===null||r===void 0?void 0:r.call(n)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$Em)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostDisconnected)===null||r===void 0?void 0:r.call(n)})}attributeChangedCallback(e,n,r){this._$AK(e,r)}_$Eg(e,n,r=Fu){var i,o;const s=this.constructor._$Eh(e,r);if(s!==void 0&&r.reflect===!0){const a=((o=(i=r.converter)===null||i===void 0?void 0:i.toAttribute)!==null&&o!==void 0?o:Bu.toAttribute)(n,r.type);this._$Ei=e,a==null?this.removeAttribute(s):this.setAttribute(s,a),this._$Ei=null}}_$AK(e,n){var r,i,o;const s=this.constructor,a=s._$Eu.get(e);if(a!==void 0&&this._$Ei!==a){const c=s.getPropertyOptions(a),u=c.converter,f=(o=(i=(r=u)===null||r===void 0?void 0:r.fromAttribute)!==null&&i!==void 0?i:typeof u=="function"?u:null)!==null&&o!==void 0?o:Bu.fromAttribute;this._$Ei=a,this[a]=f(n,c.type),this._$Ei=null}}requestUpdate(e,n,r){let i=!0;e!==void 0&&(((r=r||this.constructor.getPropertyOptions(e)).hasChanged||wg)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$Ei!==e&&(this._$ES===void 0&&(this._$ES=new Map),this._$ES.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$Ev=this._$EC())}async _$EC(){this.isUpdatePending=!0;try{await this._$Ev}catch(n){Promise.reject(n)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach((i,o)=>this[o]=i),this._$Et=void 0);let n=!1;const r=this._$AL;try{n=this.shouldUpdate(r),n?(this.willUpdate(r),(e=this._$Em)===null||e===void 0||e.forEach(i=>{var o;return(o=i.hostUpdate)===null||o===void 0?void 0:o.call(i)}),this.update(r)):this._$EU()}catch(i){throw n=!1,this._$EU(),i}n&&this._$AE(r)}willUpdate(e){}_$AE(e){var n;(n=this._$Em)===null||n===void 0||n.forEach(r=>{var i;return(i=r.hostUpdated)===null||i===void 0?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ev}shouldUpdate(e){return!0}update(e){this._$ES!==void 0&&(this._$ES.forEach((n,r)=>this._$Eg(r,this[r],n)),this._$ES=void 0),this._$EU()}updated(e){}firstUpdated(e){}}hr.finalized=!0,hr.elementProperties=new Map,hr.elementStyles=[],hr.shadowRootOptions={mode:"open"},vg==null||vg({ReactiveElement:hr}),((ku=globalThis.reactiveElementVersions)!==null&&ku!==void 0?ku:globalThis.reactiveElementVersions=[]).push("1.0.1");/**
|
1562
1564
|
* @license
|
1563
1565
|
* Copyright 2017 Google LLC
|
1564
1566
|
* SPDX-License-Identifier: BSD-3-Clause
|
1565
|
-
*/var
|
1567
|
+
*/var Pu,zu;class Nt extends hr{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var e,n;const r=super.createRenderRoot();return(e=(n=this.renderOptions).renderBefore)!==null&&e!==void 0||(n.renderBefore=r.firstChild),r}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Dt=tt(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!1)}render(){return ye}}Nt.finalized=!0,Nt._$litElement$=!0,(Pu=globalThis.litElementHydrateSupport)===null||Pu===void 0||Pu.call(globalThis,{LitElement:Nt});const Eg=globalThis.litElementPolyfillSupport;Eg==null||Eg({LitElement:Nt}),((zu=globalThis.litElementVersions)!==null&&zu!==void 0?zu:globalThis.litElementVersions=[]).push("3.0.1");/**
|
1566
1568
|
* @license
|
1567
1569
|
* Copyright 2017 Google LLC
|
1568
1570
|
* SPDX-License-Identifier: BSD-3-Clause
|
1569
|
-
*/const
|
1571
|
+
*/const Lt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},dr=t=>(...e)=>({_$litDirective$:t,values:e});class Bi{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,n,r){this._$Ct=e,this._$AM=n,this._$Ci=r}_$AS(e,n){return this.update(e,n)}update(e,n){return this.render(...n)}}/**
|
1570
1572
|
* @license
|
1571
1573
|
* Copyright 2018 Google LLC
|
1572
1574
|
* SPDX-License-Identifier: BSD-3-Clause
|
1573
|
-
*/const
|
1575
|
+
*/const iM=dr(class extends Bi{constructor(t){var e;if(super(t),t.type!==Lt.ATTRIBUTE||t.name!=="class"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter(e=>t[e]).join(" ")+" "}update(t,[e]){var n,r;if(this.st===void 0){this.st=new Set,t.strings!==void 0&&(this.et=new Set(t.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(const o in e)e[o]&&!((n=this.et)===null||n===void 0?void 0:n.has(o))&&this.st.add(o);return this.render(e)}const i=t.element.classList;this.st.forEach(o=>{o in e||(i.remove(o),this.st.delete(o))});for(const o in e){const s=!!e[o];s===this.st.has(o)||((r=this.et)===null||r===void 0?void 0:r.has(o))||(s?(i.add(o),this.st.add(o)):(i.remove(o),this.st.delete(o)))}return ye}});/*!
|
1574
1576
|
* Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
|
1575
1577
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1576
|
-
*/var
|
1578
|
+
*/var oM={prefix:"fas",iconName:"arrows-alt-v",icon:[256,512,[],"f338","M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"]},sM={prefix:"fas",iconName:"bookmark",icon:[384,512,[],"f02e","M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]},aM={prefix:"fas",iconName:"check",icon:[512,512,[],"f00c","M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]},Sg={prefix:"fas",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]},cM={prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},uM={prefix:"fas",iconName:"ellipsis-v",icon:[192,512,[],"f142","M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]},lM={prefix:"fas",iconName:"exclamation-circle",icon:[512,512,[],"f06a","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},fM={prefix:"fas",iconName:"expand-arrows-alt",icon:[448,512,[],"f31e","M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"]},pr={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]},hM={prefix:"fas",iconName:"info-circle",icon:[512,512,[],"f05a","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]},dM={prefix:"fas",iconName:"medal",icon:[512,512,[],"f5a2","M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"]},Dg={prefix:"fas",iconName:"object-group",icon:[512,512,[],"f247","M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"]},pM={prefix:"fas",iconName:"pen",icon:[512,512,[],"f304","M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]},gM={prefix:"fas",iconName:"question-circle",icon:[512,512,[],"f059","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"]},mM={prefix:"fas",iconName:"redo",icon:[512,512,[],"f01e","M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"]},yM={prefix:"fas",iconName:"share",icon:[512,512,[],"f064","M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]},AM={prefix:"fas",iconName:"sliders-h",icon:[512,512,[],"f1de","M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"]},bM={prefix:"fas",iconName:"sort-amount-down",icon:[512,512,[],"f160","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},xM={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]},Cg={prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},vM={prefix:"fas",iconName:"undo",icon:[512,512,[],"f0e2","M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]};/*!
|
1577
1579
|
* Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
|
1578
1580
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1579
|
-
*/function hM(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Dg(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function dM(t,e,n){return e&&Dg(t.prototype,e),n&&Dg(t,n),t}function pM(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function V(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{},r=Object.keys(n);typeof Object.getOwnPropertySymbols=="function"&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(i){return Object.getOwnPropertyDescriptor(n,i).enumerable}))),r.forEach(function(i){pM(t,i,n[i])})}return t}function Cg(t,e){return gM(t)||mM(t,e)||yM()}function gM(t){if(Array.isArray(t))return t}function mM(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var s=t[Symbol.iterator](),a;!(r=(a=s.next()).done)&&(n.push(a.value),!(e&&n.length===e));r=!0);}catch(c){i=!0,o=c}finally{try{!r&&s.return!=null&&s.return()}finally{if(i)throw o}}return n}function yM(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var Mg=function(){},zu={},Ig={},AM=null,Tg={mark:Mg,measure:Mg};try{typeof window!="undefined"&&(zu=window),typeof document!="undefined"&&(Ig=document),typeof MutationObserver!="undefined"&&(AM=MutationObserver),typeof performance!="undefined"&&(Tg=performance)}catch{}var bM=zu.navigator||{},Ng=bM.userAgent,Lg=Ng===void 0?"":Ng,ms=zu,De=Ig,ys=Tg;ms.document;var Ru=!!De.documentElement&&!!De.head&&typeof De.addEventListener=="function"&&typeof De.createElement=="function";~Lg.indexOf("MSIE")||~Lg.indexOf("Trident/");var Lt="___FONT_AWESOME___",Og="fa",kg="svg-inline--fa",xM="data-fa-i2svg";(function(){try{return!0}catch{return!1}})();var Uu={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},Bg=ms.FontAwesomeConfig||{};function vM(t){var e=De.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function wM(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(De&&typeof De.querySelector=="function"){var EM=[["data-family-prefix","familyPrefix"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];EM.forEach(function(t){var e=Cg(t,2),n=e[0],r=e[1],i=wM(vM(n));i!=null&&(Bg[r]=i)})}var SM={familyPrefix:Og,replacementClass:kg,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},ju=V({},SM,Bg);ju.autoReplaceSvg||(ju.observeMutations=!1);var Pe=V({},ju);ms.FontAwesomeConfig=Pe;var Ot=ms||{};Ot[Lt]||(Ot[Lt]={}),Ot[Lt].styles||(Ot[Lt].styles={}),Ot[Lt].hooks||(Ot[Lt].hooks={}),Ot[Lt].shims||(Ot[Lt].shims=[]);var yt=Ot[Lt],DM=[],CM=function t(){De.removeEventListener("DOMContentLoaded",t),Gu=1,DM.map(function(e){return e()})},Gu=!1;Ru&&(Gu=(De.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(De.readyState),Gu||De.addEventListener("DOMContentLoaded",CM)),typeof global!="undefined"&&typeof global.process!="undefined"&&global.process.emit,typeof setImmediate=="undefined"||setImmediate;var mr={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function MM(t){if(!(!t||!Ru)){var e=De.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=De.head.childNodes,r=null,i=n.length-1;i>-1;i--){var o=n[i],s=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(r=o)}return De.head.insertBefore(e,r),t}}var IM="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function As(){for(var t=12,e="";t-- >0;)e+=IM[Math.random()*62|0];return e}function Fg(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function TM(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(Fg(t[n]),'" ')},"").trim()}function Pg(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n],";")},"")}function zg(t){return t.size!==mr.size||t.x!==mr.x||t.y!==mr.y||t.rotate!==mr.rotate||t.flipX||t.flipY}function Rg(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(e.x*32,", ").concat(e.y*32,") "),s="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),a="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(o," ").concat(s," ").concat(a)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:i,inner:c,path:u}}var Hu={x:0,y:0,width:"100%",height:"100%"};function Ug(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function NM(t){return t.tag==="g"?t.children:[t]}function LM(t){var e=t.children,n=t.attributes,r=t.main,i=t.mask,o=t.maskId,s=t.transform,a=r.width,c=r.icon,u=i.width,f=i.icon,l=Rg({transform:s,containerWidth:u,iconWidth:a}),h={tag:"rect",attributes:V({},Hu,{fill:"white"})},d=c.children?{children:c.children.map(Ug)}:{},p={tag:"g",attributes:V({},l.inner),children:[Ug(V({tag:c.tag,attributes:V({},c.attributes,l.path)},d))]},g={tag:"g",attributes:V({},l.outer),children:[p]},m="mask-".concat(o||As()),y="clip-".concat(o||As()),w={tag:"mask",attributes:V({},Hu,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},x={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:NM(f)},w]};return e.push(x,{tag:"rect",attributes:V({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(m,")")},Hu)}),{children:e,attributes:n}}function OM(t){var e=t.children,n=t.attributes,r=t.main,i=t.transform,o=t.styles,s=Pg(o);if(s.length>0&&(n.style=s),zg(i)){var a=Rg({transform:i,containerWidth:r.width,iconWidth:r.width});e.push({tag:"g",attributes:V({},a.outer),children:[{tag:"g",attributes:V({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:V({},r.icon.attributes,a.path)}]}]})}else e.push(r.icon);return{children:e,attributes:n}}function kM(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(zg(s)&&n.found&&!r.found){var a=n.width,c=n.height,u={x:a/c/2,y:.5};i.style=Pg(V({},o,{"transform-origin":"".concat(u.x+s.x/16,"em ").concat(u.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function BM(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,s=o===!0?"".concat(e,"-").concat(Pe.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:V({},i,{id:s}),children:r}]}]}function FM(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,s=t.transform,a=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,h=t.watchable,d=h===void 0?!1:h,p=r.found?r:n,g=p.width,m=p.height,y=i==="fak",w=y?"":"fa-w-".concat(Math.ceil(g/m*16)),x=[Pe.replacementClass,o?"".concat(Pe.familyPrefix,"-").concat(o):"",w].filter(function(B){return l.classes.indexOf(B)===-1}).filter(function(B){return B!==""||!!B}).concat(l.classes).join(" "),E={children:[],attributes:V({},l.attributes,{"data-prefix":i,"data-icon":o,class:x,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(m)})},b=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(g/m*16*.0625,"em")}:{};d&&(E.attributes[xM]=""),c&&E.children.push({tag:"title",attributes:{id:E.attributes["aria-labelledby"]||"title-".concat(f||As())},children:[c]});var A=V({},E,{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:s,symbol:a,styles:V({},b,l.styles)}),v=r.found&&n.found?LM(A):OM(A),D=v.children,L=v.attributes;return A.children=D,A.attributes=L,a?BM(A):kM(A)}var jg=function(){};Pe.measurePerformance&&ys&&ys.mark&&ys.measure;var PM=function(e,n){return function(r,i,o,s){return e.call(n,r,i,o,s)}},Qu=function(e,n,r,i){var o=Object.keys(e),s=o.length,a=i!==void 0?PM(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<s;c++)u=o[c],f=a(f,e[u],u,e);return f};function Gg(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=Object.keys(e).reduce(function(s,a){var c=e[a],u=!!c.icon;return u?s[c.iconName]=c.icon:s[a]=c,s},{});typeof yt.hooks.addPack=="function"&&!i?yt.hooks.addPack(t,o):yt.styles[t]=V({},yt.styles[t]||{},o),t==="fas"&&Gg("fa",e)}var Hg=yt.styles,zM=yt.shims,Qg=function(){var e=function(i){return Qu(Hg,function(o,s,a){return o[a]=Qu(s,i,{}),o},{})};e(function(r,i,o){return i[3]&&(r[i[3]]=o),r}),e(function(r,i,o){var s=i[2];return r[o]=o,s.forEach(function(a){r[a]=o}),r});var n="far"in Hg;Qu(zM,function(r,i){var o=i[0],s=i[1],a=i[2];return s==="far"&&!n&&(s="fas"),r[o]={prefix:s,iconName:a},r},{})};Qg(),yt.styles;function Vg(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function _g(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?Fg(t):"<".concat(e," ").concat(TM(r),">").concat(o.map(_g).join(""),"</").concat(e,">")}function Vu(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=new Error().stack}Vu.prototype=Object.create(Error.prototype),Vu.prototype.constructor=Vu;var bs={fill:"currentColor"},Yg={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};V({},bs,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"});var _u=V({},Yg,{attributeName:"opacity"});V({},bs,{cx:"256",cy:"364",r:"28"}),V({},Yg,{attributeName:"r",values:"28;14;28;28;14;28;"}),V({},_u,{values:"1;0;1;1;0;1;"}),V({},bs,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),V({},_u,{values:"1;0;0;0;0;1;"}),V({},bs,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),V({},_u,{values:"0;0;1;1;0;0;"}),yt.styles;function Wg(t){var e=t[0],n=t[1],r=t.slice(4),i=Cg(r,1),o=i[0],s=null;return Array.isArray(o)?s={tag:"g",attributes:{class:"".concat(Pe.familyPrefix,"-").concat(Uu.GROUP)},children:[{tag:"path",attributes:{class:"".concat(Pe.familyPrefix,"-").concat(Uu.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(Pe.familyPrefix,"-").concat(Uu.PRIMARY),fill:"currentColor",d:o[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:s}}yt.styles;var RM=`svg:not(:root).svg-inline--fa {
|
1581
|
+
*/function wM(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Mg(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function EM(t,e,n){return e&&Mg(t.prototype,e),n&&Mg(t,n),t}function SM(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function V(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{},r=Object.keys(n);typeof Object.getOwnPropertySymbols=="function"&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(i){return Object.getOwnPropertyDescriptor(n,i).enumerable}))),r.forEach(function(i){SM(t,i,n[i])})}return t}function Ig(t,e){return DM(t)||CM(t,e)||MM()}function DM(t){if(Array.isArray(t))return t}function CM(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var s=t[Symbol.iterator](),a;!(r=(a=s.next()).done)&&(n.push(a.value),!(e&&n.length===e));r=!0);}catch(c){i=!0,o=c}finally{try{!r&&s.return!=null&&s.return()}finally{if(i)throw o}}return n}function MM(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var Tg=function(){},Ru={},Ng={},IM=null,Lg={mark:Tg,measure:Tg};try{typeof window!="undefined"&&(Ru=window),typeof document!="undefined"&&(Ng=document),typeof MutationObserver!="undefined"&&(IM=MutationObserver),typeof performance!="undefined"&&(Lg=performance)}catch{}var TM=Ru.navigator||{},Og=TM.userAgent,kg=Og===void 0?"":Og,ys=Ru,De=Ng,As=Lg;ys.document;var Uu=!!De.documentElement&&!!De.head&&typeof De.addEventListener=="function"&&typeof De.createElement=="function";~kg.indexOf("MSIE")||~kg.indexOf("Trident/");var Ot="___FONT_AWESOME___",Bg="fa",Fg="svg-inline--fa",NM="data-fa-i2svg";(function(){try{return!0}catch{return!1}})();var ju={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},Pg=ys.FontAwesomeConfig||{};function LM(t){var e=De.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function OM(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(De&&typeof De.querySelector=="function"){var kM=[["data-family-prefix","familyPrefix"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];kM.forEach(function(t){var e=Ig(t,2),n=e[0],r=e[1],i=OM(LM(n));i!=null&&(Pg[r]=i)})}var BM={familyPrefix:Bg,replacementClass:Fg,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},Gu=V({},BM,Pg);Gu.autoReplaceSvg||(Gu.observeMutations=!1);var Pe=V({},Gu);ys.FontAwesomeConfig=Pe;var kt=ys||{};kt[Ot]||(kt[Ot]={}),kt[Ot].styles||(kt[Ot].styles={}),kt[Ot].hooks||(kt[Ot].hooks={}),kt[Ot].shims||(kt[Ot].shims=[]);var bt=kt[Ot],FM=[],PM=function t(){De.removeEventListener("DOMContentLoaded",t),Hu=1,FM.map(function(e){return e()})},Hu=!1;Uu&&(Hu=(De.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(De.readyState),Hu||De.addEventListener("DOMContentLoaded",PM)),typeof global!="undefined"&&typeof global.process!="undefined"&&global.process.emit,typeof setImmediate=="undefined"||setImmediate;var gr={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function zM(t){if(!(!t||!Uu)){var e=De.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=De.head.childNodes,r=null,i=n.length-1;i>-1;i--){var o=n[i],s=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(r=o)}return De.head.insertBefore(e,r),t}}var RM="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function bs(){for(var t=12,e="";t-- >0;)e+=RM[Math.random()*62|0];return e}function zg(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function UM(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(zg(t[n]),'" ')},"").trim()}function Rg(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n],";")},"")}function Ug(t){return t.size!==gr.size||t.x!==gr.x||t.y!==gr.y||t.rotate!==gr.rotate||t.flipX||t.flipY}function jg(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(e.x*32,", ").concat(e.y*32,") "),s="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),a="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(o," ").concat(s," ").concat(a)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:i,inner:c,path:u}}var Qu={x:0,y:0,width:"100%",height:"100%"};function Gg(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function jM(t){return t.tag==="g"?t.children:[t]}function GM(t){var e=t.children,n=t.attributes,r=t.main,i=t.mask,o=t.maskId,s=t.transform,a=r.width,c=r.icon,u=i.width,f=i.icon,l=jg({transform:s,containerWidth:u,iconWidth:a}),h={tag:"rect",attributes:V({},Qu,{fill:"white"})},d=c.children?{children:c.children.map(Gg)}:{},p={tag:"g",attributes:V({},l.inner),children:[Gg(V({tag:c.tag,attributes:V({},c.attributes,l.path)},d))]},g={tag:"g",attributes:V({},l.outer),children:[p]},m="mask-".concat(o||bs()),y="clip-".concat(o||bs()),v={tag:"mask",attributes:V({},Qu,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:jM(f)},v]};return e.push(w,{tag:"rect",attributes:V({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(m,")")},Qu)}),{children:e,attributes:n}}function HM(t){var e=t.children,n=t.attributes,r=t.main,i=t.transform,o=t.styles,s=Rg(o);if(s.length>0&&(n.style=s),Ug(i)){var a=jg({transform:i,containerWidth:r.width,iconWidth:r.width});e.push({tag:"g",attributes:V({},a.outer),children:[{tag:"g",attributes:V({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:V({},r.icon.attributes,a.path)}]}]})}else e.push(r.icon);return{children:e,attributes:n}}function QM(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(Ug(s)&&n.found&&!r.found){var a=n.width,c=n.height,u={x:a/c/2,y:.5};i.style=Rg(V({},o,{"transform-origin":"".concat(u.x+s.x/16,"em ").concat(u.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function VM(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,s=o===!0?"".concat(e,"-").concat(Pe.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:V({},i,{id:s}),children:r}]}]}function _M(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,s=t.transform,a=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,h=t.watchable,d=h===void 0?!1:h,p=r.found?r:n,g=p.width,m=p.height,y=i==="fak",v=y?"":"fa-w-".concat(Math.ceil(g/m*16)),w=[Pe.replacementClass,o?"".concat(Pe.familyPrefix,"-").concat(o):"",v].filter(function(k){return l.classes.indexOf(k)===-1}).filter(function(k){return k!==""||!!k}).concat(l.classes).join(" "),S={children:[],attributes:V({},l.attributes,{"data-prefix":i,"data-icon":o,class:w,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(m)})},b=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(g/m*16*.0625,"em")}:{};d&&(S.attributes[NM]=""),c&&S.children.push({tag:"title",attributes:{id:S.attributes["aria-labelledby"]||"title-".concat(f||bs())},children:[c]});var A=V({},S,{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:s,symbol:a,styles:V({},b,l.styles)}),x=r.found&&n.found?GM(A):HM(A),E=x.children,F=x.attributes;return A.children=E,A.attributes=F,a?VM(A):QM(A)}var Hg=function(){};Pe.measurePerformance&&As&&As.mark&&As.measure;var YM=function(e,n){return function(r,i,o,s){return e.call(n,r,i,o,s)}},Vu=function(e,n,r,i){var o=Object.keys(e),s=o.length,a=i!==void 0?YM(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<s;c++)u=o[c],f=a(f,e[u],u,e);return f};function Qg(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=Object.keys(e).reduce(function(s,a){var c=e[a],u=!!c.icon;return u?s[c.iconName]=c.icon:s[a]=c,s},{});typeof bt.hooks.addPack=="function"&&!i?bt.hooks.addPack(t,o):bt.styles[t]=V({},bt.styles[t]||{},o),t==="fas"&&Qg("fa",e)}var Vg=bt.styles,WM=bt.shims,_g=function(){var e=function(i){return Vu(Vg,function(o,s,a){return o[a]=Vu(s,i,{}),o},{})};e(function(r,i,o){return i[3]&&(r[i[3]]=o),r}),e(function(r,i,o){var s=i[2];return r[o]=o,s.forEach(function(a){r[a]=o}),r});var n="far"in Vg;Vu(WM,function(r,i){var o=i[0],s=i[1],a=i[2];return s==="far"&&!n&&(s="fas"),r[o]={prefix:s,iconName:a},r},{})};_g(),bt.styles;function Yg(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function Wg(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?zg(t):"<".concat(e," ").concat(UM(r),">").concat(o.map(Wg).join(""),"</").concat(e,">")}function _u(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=new Error().stack}_u.prototype=Object.create(Error.prototype),_u.prototype.constructor=_u;var xs={fill:"currentColor"},Xg={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};V({},xs,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"});var Yu=V({},Xg,{attributeName:"opacity"});V({},xs,{cx:"256",cy:"364",r:"28"}),V({},Xg,{attributeName:"r",values:"28;14;28;28;14;28;"}),V({},Yu,{values:"1;0;1;1;0;1;"}),V({},xs,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),V({},Yu,{values:"1;0;0;0;0;1;"}),V({},xs,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),V({},Yu,{values:"0;0;1;1;0;0;"}),bt.styles;function qg(t){var e=t[0],n=t[1],r=t.slice(4),i=Ig(r,1),o=i[0],s=null;return Array.isArray(o)?s={tag:"g",attributes:{class:"".concat(Pe.familyPrefix,"-").concat(ju.GROUP)},children:[{tag:"path",attributes:{class:"".concat(Pe.familyPrefix,"-").concat(ju.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(Pe.familyPrefix,"-").concat(ju.PRIMARY),fill:"currentColor",d:o[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:s}}bt.styles;var XM=`svg:not(:root).svg-inline--fa {
|
1580
1582
|
overflow: visible;
|
1581
1583
|
}
|
1582
1584
|
|
@@ -2027,38 +2029,38 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
|
|
2027
2029
|
|
2028
2030
|
.fad.fa-inverse {
|
2029
2031
|
color: #fff;
|
2030
|
-
}`;function
|
2032
|
+
}`;function qM(){var t=Bg,e=Fg,n=Pe.familyPrefix,r=Pe.replacementClass,i=XM;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),s=new RegExp("\\--".concat(t,"\\-"),"g"),a=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(s,"--".concat(n,"-")).replace(a,".".concat(r))}return i}var ZM=function(){function t(){wM(this,t),this.definitions={}}return EM(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var s=i.reduce(this._pullDefinitions,{});Object.keys(s).forEach(function(a){n.definitions[a]=V({},n.definitions[a]||{},s[a]),Qg(a,s[a]),_g()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var s=i[o],a=s.prefix,c=s.iconName,u=s.icon;n[a]||(n[a]={}),n[a][c]=u}),n}}]),t}();function KM(){Pe.autoAddCss&&!Kg&&(zM(qM()),Kg=!0)}function JM(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return Wg(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!Uu){var r=De.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function Zg(t){var e=t.prefix,n=e===void 0?"fa":e,r=t.iconName;if(!!r)return Yg(e8.definitions,n,r)||Yg(bt.styles,n,r)}function $M(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:Zg(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:Zg(i||{})),t(r,V({},n,{mask:i}))}}var e8=new ZM,Kg=!1,me=$M(function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.transform,r=n===void 0?gr:n,i=e.symbol,o=i===void 0?!1:i,s=e.mask,a=s===void 0?null:s,c=e.maskId,u=c===void 0?null:c,f=e.title,l=f===void 0?null:f,h=e.titleId,d=h===void 0?null:h,p=e.classes,g=p===void 0?[]:p,m=e.attributes,y=m===void 0?{}:m,v=e.styles,w=v===void 0?{}:v;if(!!t){var S=t.prefix,b=t.iconName,A=t.icon;return JM(V({type:"icon"},t),function(){return KM(),Pe.autoA11y&&(l?y["aria-labelledby"]="".concat(Pe.replacementClass,"-title-").concat(d||bs()):(y["aria-hidden"]="true",y.focusable="false")),_M({icons:{main:qg(A),mask:a?qg(a.icon):{found:!1,width:null,height:null,icon:{}}},prefix:S,iconName:b,transform:V({},gr,r),symbol:o,title:l,maskId:u,titleId:d,extra:{attributes:y,styles:w,classes:g}})})}});/**
|
2031
2033
|
* @license
|
2032
2034
|
* Copyright 2018 Google LLC
|
2033
2035
|
* SPDX-License-Identifier: BSD-3-Clause
|
2034
|
-
*/const
|
2035
|
-
`]))}}function p8(t){ws=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(v){return typeof v}:e=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=E;var n=s(yr),r=Nn,i=At;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function s(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var A=o();if(A&&A.has(b))return A.get(b);var v={},D=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var L in b)if(Object.prototype.hasOwnProperty.call(b,L)){var B=D?Object.getOwnPropertyDescriptor(b,L):null;B&&(B.get||B.set)?Object.defineProperty(v,L,B):v[L]=b[L]}return v.default=b,A&&A.set(b,v),v}function a(b,A){var v=Object.keys(b);if(Object.getOwnPropertySymbols){var D=Object.getOwnPropertySymbols(b);A&&(D=D.filter(function(L){return Object.getOwnPropertyDescriptor(b,L).enumerable})),v.push.apply(v,D)}return v}function c(b){for(var A=1;A<arguments.length;A++){var v=arguments[A]!=null?arguments[A]:{};A%2?a(Object(v),!0).forEach(function(D){u(b,D,v[D])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(v)):a(Object(v)).forEach(function(D){Object.defineProperty(b,D,Object.getOwnPropertyDescriptor(v,D))})}return b}function u(b,A,v){return A in b?Object.defineProperty(b,A,{value:v,enumerable:!0,configurable:!0,writable:!0}):b[A]=v,b}function f(b){return d(b)||h(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function h(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function d(b){if(Array.isArray(b)){for(var A=0,v=new Array(b.length);A<b.length;A++)v[A]=b[A];return v}}function p(b,A){var v=(0,i.newHistory)([],b,[]);return A&&(v._latestUnfiltered=null),v}function g(b,A,v,D){var L=b.past.length+1;n.log("inserting",A),n.log("new free: ",v-L);var B=b.past,C=b._latestUnfiltered,k=v&&v<=L,P=B.slice(k?1:0),H=C!=null?[].concat(f(P),[C]):P;return(0,i.newHistory)(H,A,[],D)}function m(b,A){if(A<0||A>=b.future.length)return b;var v=b.past,D=b.future,L=b._latestUnfiltered,B=[].concat(f(v),[L],f(D.slice(0,A))),C=D[A],k=D.slice(A+1);return(0,i.newHistory)(B,C,k)}function y(b,A){if(A<0||A>=b.past.length)return b;var v=b.past,D=b.future,L=b._latestUnfiltered,B=v.slice(0,A),C=[].concat(f(v.slice(A+1)),[L],f(D)),k=v[A];return(0,i.newHistory)(B,k,C)}function w(b,A){return A>0?m(b,A-1):A<0?y(b,b.past.length+A):b}function x(b,A){return A.indexOf(b)>-1?b:!b}function E(b){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(A.debug);var v=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},A,{initTypes:(0,i.parseActions)(A.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(A.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),D=v.neverSkipReducer?function(B,C){for(var k=arguments.length,P=new Array(k>2?k-2:0),H=2;H<k;H++)P[H-2]=arguments[H];return c({},B,{present:b.apply(void 0,[B.present,C].concat(P))})}:function(B){return B},L;return function(){var B=arguments.length>0&&arguments[0]!==void 0?arguments[0]:L,C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(C,B);for(var k=B,P=arguments.length,H=new Array(P>2?P-2:0),qe=2;qe<P;qe++)H[qe-2]=arguments[qe];if(!L)if(n.log("history is uninitialized"),B===void 0){var Re={type:"@@redux-undo/CREATE_HISTORY"},Ue=b.apply(void 0,[B,Re].concat(H));return k=p(Ue,v.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(k),k}else(0,i.isHistory)(B)?(k=L=v.ignoreInitialState?B:(0,i.newHistory)(B.past,B.present,B.future),n.log("initialHistory initialized: initialState is a history",L)):(k=L=p(B,v.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",L));var z;switch(C.type){case void 0:return k;case v.undoType:return z=w(k,-1),n.log("perform undo"),n.end(z),D.apply(void 0,[z,C].concat(H));case v.redoType:return z=w(k,1),n.log("perform redo"),n.end(z),D.apply(void 0,[z,C].concat(H));case v.jumpToPastType:return z=y(k,C.index),n.log("perform jumpToPast to ".concat(C.index)),n.end(z),D.apply(void 0,[z,C].concat(H));case v.jumpToFutureType:return z=m(k,C.index),n.log("perform jumpToFuture to ".concat(C.index)),n.end(z),D.apply(void 0,[z,C].concat(H));case v.jumpType:return z=w(k,C.index),n.log("perform jump to ".concat(C.index)),n.end(z),D.apply(void 0,[z,C].concat(H));case x(C.type,v.clearHistoryType):return z=p(k.present,v.ignoreInitialState),n.log("perform clearHistory"),n.end(z),D.apply(void 0,[z,C].concat(H));default:if(z=b.apply(void 0,[k.present,C].concat(H)),v.initTypes.some(function(Il){return Il===C.type}))return n.log("reset history due to init action"),n.end(L),L;if(k._latestUnfiltered===z)return k;var ne=typeof v.filter=="function"&&!v.filter(C,z,k);if(ne){var ji=(0,i.newHistory)(k.past,z,k.future,k.group);return v.syncFilter||(ji._latestUnfiltered=k._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(ji),ji}var Gi=v.groupBy(C,z,k);if(Gi!=null&&Gi===k.group){var Fs=(0,i.newHistory)(k.past,z,k.future,k.group);return n.log("groupBy grouped the action with the previous action"),n.end(Fs),Fs}return k=g(k,z,v.limit,Gi),n.log("inserted new state into history"),n.end(k),k}}}})(Kg),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=Nn,n=At,r=i(Kg);function i(o){return o&&o.__esModule?o:{default:o}}}(tn);var g8=JM(tn);let kt;function Es(){kt&&(kt.remove(),kt=void 0,document.body.classList.remove(yn))}function qu(t,e){Es(),kt=document.createElement("div"),kt.classList.add("gs-context-menu-backdrop");const n=document.createElement("ul");n.classList.add("gs-context-menu");const r=document.body;$e(t.items.map(s=>{switch(s.type){case"divider":return I`<li class="menu-divider"></li>`;case"header":return I`<li class="menu-header">${s.label||"-"}</li>`;default:return s.callback?I`<li><a @mouseup="${()=>{performance.now()-o>200&&(Es(),s.callback())}}">${s.icon?me(s.icon).node[0]:""} ${s.label}</a></li>`:I`<li><span class="disabled-item">${s.icon?me(s.icon).node[0]:""} ${s.label||"-"}</span></li>`}}),n),n.style.left=e.clientX+"px",n.style.top=e.clientY+"px",r.appendChild(kt),kt.appendChild(n),document.body.classList.add(yn);const i=n.getBoundingClientRect();i.bottom>window.innerHeight&&(n.style.top=window.innerHeight-n.offsetHeight-10+"px"),i.right>window.innerWidth&&(n.style.left=window.innerWidth-n.offsetWidth-10+"px"),kt.addEventListener("click",()=>Es(),{once:!0});const o=performance.now();kt.addEventListener("mouseup",()=>{performance.now()-o>500&&Es()},{once:!0}),e.preventDefault()}const Zu={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Ss="SAMPLE_ATTRIBUTE",Jg="SAMPLE_NAME",m8=/^attribute-(.*)$/;class $g extends hr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata");this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Ss,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Jg,n=>em),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var a;const i=r.target,o=this._findSampleForMouseEvent(n,r),s=i&&((a=this.getAttributeInfoFromView(i))==null?void 0:a.name)||void 0;if(o){const c=JSON.stringify([o.id,s]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(s)}),he([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(e){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,U(T({},r),{clipRect:this.sampleView._clipBySummary(n)}))}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition(T({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:zp,signal:n.abortController.signal},e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150})).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-e.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[],s=this.getAttributeInfoFromView(n.target);if(s){const a=i.attributes[s.name];o.push(...Yu(I`Attribute: <strong>${s.name}</strong>`,s,a,this.sampleView))}else o.push(...Yu(I`Sample: <strong>${i.displayName}</strong>`,em,i.id,this.sampleView));qu({items:o},r)}_setSamples(e){if(this.children.length)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;sg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Oe){const s=o.mark;i.push(s.initializeGraphics().then(a=>s)),n.addObserver(a=>{s.initializeEncoders(),s.initializeData(),s.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const s of o)"value"in s?s.value.finalizeGraphicsInitialization():"reason"in s&&console.error(s.reason)}),r.publishData(e)}_createViews(){this.addChildBySpec(A8());for(const e of this._getAttributeNames()){const n=this.addChildBySpec(this._createAttributeViewSpec(e));n.opacityFunction=r=>r*this._getAttributeOpacity(e)}cg(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}_getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(If(i.map(o=>o.attributes[e]))){case"integer":case"number":r=Zu.QUANTITATIVE;break;default:r=Zu.NOMINAL}}return y8(e,U(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e.name.match(m8);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Ss,specifier:i},accessor:(o,s)=>s.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:I`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(a,c)=>b8(c)?this.getAttributeInfo(a).scale(c):"transparent",s=I`<table class="attributes">${Object.entries(i.attributes).map(([a,c])=>I`<tr class="${XC({hovered:a==r})}"><th>${a}</th><td>${pg(c)}</td><td class="color" .style="background-color: ${o(a,c)}"></td></tr>`)}</table>`;return I`<div class="title"><strong>${i.displayName||i.id}</strong></div>${s}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==mu||i.type==yu)&&this.sampleView.getSamples().find(s=>s.attributes[i.name]==n)){const s=this.sampleView.actions.filterByNominal({attribute:{type:Ss,specifier:r},values:[n]}),a=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(a)&&!a.payload.remove&&a.payload.attribute.type==Ss&&a.payload.attribute.specifier==r&&a.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[tn.ActionCreators.undo(),s]:s),!0}}return!1}isPickingSupported(){return!1}}function y8(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:t,visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect"},encoding:{facetIndex:{field:"indexNumber",type:"nominal"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==Zu.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),r}function A8(){return{name:"metadata-sample-name",title:"Sample name",width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber",type:"nominal"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName",type:"nominal"}}}}function b8(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const em=Object.freeze({name:"sample",attribute:{type:Jg},accessor:t=>t,type:"identifier",scale:void 0});class x8 extends Ti{constructor(e){super({title:"Groups",width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:Ki(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,dynamicData:!0,color:"#e8e8e8"}},{mark:{type:"text",clip:!0,dynamicData:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label",type:"nominal"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups");this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()})}updateRange(){var o,s,a;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e==null?void 0:e.length))return;const n=(a=(s=this.sampleView)==null?void 0:s._coords.height)!=null?a:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(s=>({_index:s.key.index,_name:s.key.group.name,_depth:s.key.depth,attribute:s.key.attributeLabel,label:s.key.group.label,n:s.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),he([...this.getAncestors()]).visit(s=>Ei(s,"size"))}}function it(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function nn(t){return!!t&&!!t[ee]}function rn(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===T8}(t)||Array.isArray(t)||!!t[lm]||!!t.constructor[lm]||Ku(t)||Ju(t))}function On(t,e,n){n===void 0&&(n=!1),Ar(t)===0?(n?Object.keys:xr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function Ar(t){var e=t[ee];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:Ku(t)?2:Ju(t)?3:0}function br(t,e){return Ar(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function v8(t,e){return Ar(t)===2?t.get(e):t[e]}function tm(t,e,n){var r=Ar(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function nm(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Ku(t){return M8&&t instanceof Map}function Ju(t){return I8&&t instanceof Set}function kn(t){return t.o||t.t}function $u(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=fm(t);delete e[ee];for(var n=xr(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function el(t,e){return e===void 0&&(e=!1),tl(t)||nn(t)||!rn(t)||(Ar(t)>1&&(t.set=t.add=t.clear=t.delete=w8),Object.freeze(t),e&&On(t,function(n,r){return el(r,!0)},!0)),t}function w8(){it(2)}function tl(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Bt(t){var e=ll[t];return e||it(18,t),e}function E8(t,e){ll[t]||(ll[t]=e)}function nl(){return ki}function rl(t,e){e&&(Bt("Patches"),t.u=[],t.s=[],t.v=e)}function Ds(t){il(t),t.p.forEach(S8),t.p=null}function il(t){t===ki&&(ki=t.l)}function rm(t){return ki={p:[],l:ki,h:t,m:!0,_:0}}function S8(t){var e=t[ee];e.i===0||e.i===1?e.j():e.O=!0}function ol(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Bt("ES5").S(e,t,r),r?(n[ee].P&&(Ds(e),it(4)),rn(t)&&(t=Cs(e,t),e.l||Ms(e,t)),e.u&&Bt("Patches").M(n[ee],t,e.u,e.s)):t=Cs(e,n,[]),Ds(e),e.u&&e.v(e.u,e.s),t!==um?t:void 0}function Cs(t,e,n){if(tl(e))return e;var r=e[ee];if(!r)return On(e,function(o,s){return im(t,r,e,o,s,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Ms(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=$u(r.k):r.o;On(r.i===3?new Set(i):i,function(o,s){return im(t,r,i,o,s,n)}),Ms(t,i,!1),n&&t.u&&Bt("Patches").R(r,n,t.u,t.s)}return r.o}function im(t,e,n,r,i,o){if(nn(i)){var s=Cs(t,i,o&&e&&e.i!==3&&!br(e.D,r)?o.concat(r):void 0);if(tm(n,r,s),!nn(s))return;t.m=!1}if(rn(i)&&!tl(i)){if(!t.h.F&&t._<1)return;Cs(t,i),e&&e.A.l||Ms(t,i)}}function Ms(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&el(e,n)}function sl(t,e){var n=t[ee];return(n?kn(n):t)[e]}function om(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function on(t){t.P||(t.P=!0,t.l&&on(t.l))}function al(t){t.o||(t.o=$u(t.t))}function cl(t,e,n){var r=Ku(e)?Bt("MapSet").N(e,n):Ju(e)?Bt("MapSet").T(e,n):t.g?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:nl(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=a,u=vr;s&&(c=[a],u=Is);var f=Proxy.revocable(c,u),l=f.revoke,h=f.proxy;return a.k=h,a.j=l,h}(e,n):Bt("ES5").J(e,n);return(n?n.A:nl()).p.push(r),r}function D8(t){return nn(t)||it(22,t),function e(n){if(!rn(n))return n;var r,i=n[ee],o=Ar(n);if(i){if(!i.P&&(i.i<4||!Bt("ES5").K(i)))return i.t;i.I=!0,r=sm(n,o),i.I=!1}else r=sm(n,o);return On(r,function(s,a){i&&v8(i.t,s)===a||tm(r,s,e(a))}),o===3?new Set(r):r}(t)}function sm(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return $u(t)}function C8(){function t(o,s){var a=i[o];return a?a.enumerable=s:i[o]=a={configurable:!0,enumerable:s,get:function(){var c=this[ee];return vr.get(c,o)},set:function(c){var u=this[ee];vr.set(u,o,c)}},a}function e(o){for(var s=o.length-1;s>=0;s--){var a=o[s][ee];if(!a.P)switch(a.i){case 5:r(a)&&on(a);break;case 4:n(a)&&on(a)}}}function n(o){for(var s=o.t,a=o.k,c=xr(a),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ee){var l=s[f];if(l===void 0&&!br(s,f))return!0;var h=a[f],d=h&&h[ee];if(d?d.t!==l:!nm(h,l))return!0}}var p=!!s[ee];return c.length!==xr(s).length+(p?0:1)}function r(o){var s=o.k;if(s.length!==o.t.length)return!0;var a=Object.getOwnPropertyDescriptor(s,s.length-1);return!(!a||a.get)}var i={};E8("ES5",{J:function(o,s){var a=Array.isArray(o),c=function(f,l){if(f){for(var h=Array(l.length),d=0;d<l.length;d++)Object.defineProperty(h,""+d,t(d,!0));return h}var p=fm(l);delete p[ee];for(var g=xr(p),m=0;m<g.length;m++){var y=g[m];p[y]=t(y,f||!!p[y].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(a,o),u={i:a?5:4,A:s?s.A:nl(),P:!1,I:!1,D:{},l:s,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ee,{value:u,writable:!0}),c},S:function(o,s,a){a?nn(s)&&s[ee].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ee];if(f){var l=f.t,h=f.k,d=f.D,p=f.i;if(p===4)On(h,function(x){x!==ee&&(l[x]!==void 0||br(l,x)?d[x]||c(h[x]):(d[x]=!0,on(f)))}),On(l,function(x){h[x]!==void 0||br(h,x)||(d[x]=!1,on(f))});else if(p===5){if(r(f)&&(on(f),d.length=!0),h.length<l.length)for(var g=h.length;g<l.length;g++)d[g]=!1;else for(var m=l.length;m<h.length;m++)d[m]=!0;for(var y=Math.min(h.length,l.length),w=0;w<y;w++)d[w]===void 0&&c(h[w])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var am,ki,ul=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",M8=typeof Map!="undefined",I8=typeof Set!="undefined",cm=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",um=ul?Symbol.for("immer-nothing"):((am={})["immer-nothing"]=!0,am),lm=ul?Symbol.for("immer-draftable"):"__$immer_draftable",ee=ul?Symbol.for("immer-state"):"__$immer_state",T8=""+Object.prototype.constructor,xr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,fm=Object.getOwnPropertyDescriptors||function(t){var e={};return xr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},ll={},vr={get:function(t,e){if(e===ee)return t;var n=kn(t);if(!br(n,e))return function(i,o,s){var a,c=om(o,s);return c?"value"in c?c.value:(a=c.get)===null||a===void 0?void 0:a.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!rn(r)?r:r===sl(t.t,e)?(al(t),t.o[e]=cl(t.A.h,r,t)):r},has:function(t,e){return e in kn(t)},ownKeys:function(t){return Reflect.ownKeys(kn(t))},set:function(t,e,n){var r=om(kn(t),e);if(r==null?void 0:r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=sl(kn(t),e),o=i==null?void 0:i[ee];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(nm(n,i)&&(n!==void 0||br(t.t,e)))return!0;al(t),on(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return sl(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,al(t),on(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=kn(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){it(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){it(12)}},Is={};On(vr,function(t,e){Is[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Is.deleteProperty=function(t,e){return vr.deleteProperty.call(this,t[0],e)},Is.set=function(t,e,n){return vr.set.call(this,t[0],e,n,t[0])};var N8=function(){function t(n){var r=this;this.g=cm,this.F=!0,this.produce=function(i,o,s){if(typeof i=="function"&&typeof o!="function"){var a=o;o=i;var c=r;return function(d){var p=this;d===void 0&&(d=a);for(var g=arguments.length,m=Array(g>1?g-1:0),y=1;y<g;y++)m[y-1]=arguments[y];return c.produce(d,function(w){var x;return(x=o).call.apply(x,[p,w].concat(m))})}}var u;if(typeof o!="function"&&it(6),s!==void 0&&typeof s!="function"&&it(7),rn(i)){var f=rm(r),l=cl(r,i,void 0),h=!0;try{u=o(l),h=!1}finally{h?Ds(f):il(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(d){return rl(f,s),ol(d,f)},function(d){throw Ds(f),d}):(rl(f,s),ol(u,f))}if(!i||typeof i!="object")return(u=o(i))===um?void 0:(u===void 0&&(u=i),r.F&&el(u,!0),u);it(21,i)},this.produceWithPatches=function(i,o){return typeof i=="function"?function(c){for(var u=arguments.length,f=Array(u>1?u-1:0),l=1;l<u;l++)f[l-1]=arguments[l];return r.produceWithPatches(c,function(h){return i.apply(void 0,[h].concat(f))})}:[r.produce(i,o,function(c,u){s=c,a=u}),s,a];var s,a},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){rn(n)||it(8),nn(n)&&(n=D8(n));var r=rm(this),i=cl(this,n,void 0);return i[ee].C=!0,il(r),i},e.finishDraft=function(n,r){var i=n&&n[ee],o=i.A;return rl(o,r),ol(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!cm&&it(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}var s=Bt("Patches").$;return nn(n)?s(n,r):this.produce(n,function(a){return s(a,r.slice(i+1))})},t}(),ze=new N8,L8=ze.produce;ze.produceWithPatches.bind(ze),ze.setAutoFreeze.bind(ze),ze.setUseProxies.bind(ze),ze.applyPatches.bind(ze),ze.createDraft.bind(ze),ze.finishDraft.bind(ze);var hm=L8;function O8(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function dm(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function pm(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?dm(Object(n),!0).forEach(function(r){O8(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):dm(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ve(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var gm=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),fl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Ts={INIT:"@@redux/INIT"+fl(),REPLACE:"@@redux/REPLACE"+fl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+fl()}};function k8(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function mm(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(ve(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(ve(1));return n(mm)(t,e)}if(typeof t!="function")throw new Error(ve(2));var i=t,o=e,s=[],a=s,c=!1;function u(){a===s&&(a=s.slice())}function f(){if(c)throw new Error(ve(3));return o}function l(g){if(typeof g!="function")throw new Error(ve(4));if(c)throw new Error(ve(5));var m=!0;return u(),a.push(g),function(){if(!!m){if(c)throw new Error(ve(6));m=!1,u();var w=a.indexOf(g);a.splice(w,1),s=null}}}function h(g){if(!k8(g))throw new Error(ve(7));if(typeof g.type=="undefined")throw new Error(ve(8));if(c)throw new Error(ve(9));try{c=!0,o=i(o,g)}finally{c=!1}for(var m=s=a,y=0;y<m.length;y++){var w=m[y];w()}return g}function d(g){if(typeof g!="function")throw new Error(ve(10));i=g,h({type:Ts.REPLACE})}function p(){var g,m=l;return g={subscribe:function(w){if(typeof w!="object"||w===null)throw new Error(ve(11));function x(){w.next&&w.next(f())}x();var E=m(x);return{unsubscribe:E}}},g[gm]=function(){return this},g}return h({type:Ts.INIT}),r={dispatch:h,subscribe:l,getState:f,replaceReducer:d},r[gm]=p,r}function B8(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Ts.INIT});if(typeof r=="undefined")throw new Error(ve(12));if(typeof n(void 0,{type:Ts.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(ve(13))})}function hl(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),s;try{B8(n)}catch(a){s=a}return function(c,u){if(c===void 0&&(c={}),s)throw s;for(var f=!1,l={},h=0;h<o.length;h++){var d=o[h],p=n[d],g=c[d],m=p(g,u);if(typeof m=="undefined")throw u&&u.type,new Error(ve(14));l[d]=m,f=f||m!==g}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Ns(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function F8(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(ve(15))},s={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},a=e.map(function(c){return c(s)});return o=Ns.apply(void 0,a)(i.dispatch),pm(pm({},i),{},{dispatch:o})}}}function P8(t,e){return t===e}function z8(t,e,n){if(e===null||n===null||e.length!==n.length)return!1;for(var r=e.length,i=0;i<r;i++)if(!t(e[i],n[i]))return!1;return!0}function R8(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:P8,n=null,r=null;return function(){return z8(e,n,arguments)||(r=t.apply(null,arguments)),n=arguments,r}}function U8(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, "+("instead received the following types: ["+n+"]"))}return e}function j8(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];var a=0,c=o.pop(),u=U8(o),f=t.apply(void 0,[function(){return a++,c.apply(null,arguments)}].concat(n)),l=t(function(){for(var h=[],d=u.length,p=0;p<d;p++)h.push(u[p].apply(null,arguments));return f.apply(null,h)});return l.resultFunc=c,l.dependencies=u,l.recomputations=function(){return a},l.resetRecomputations=function(){return a=0},l}}var G8=j8(R8);function ym(t){return function(e){var n=e.dispatch,r=e.getState;return function(i){return function(o){return typeof o=="function"?o(n,r,t):i(o)}}}}var dl=ym();dl.withExtraArgument=ym;var H8=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var Ls=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},Q8=Object.defineProperty,Am=Object.getOwnPropertySymbols,V8=Object.prototype.hasOwnProperty,_8=Object.prototype.propertyIsEnumerable,bm=function(t,e,n){return e in t?Q8(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Bi=function(t,e){for(var n in e||(e={}))V8.call(e,n)&&bm(t,n,e[n]);if(Am)for(var r=0,i=Am(e);r<i.length;r++){var n=i[r];_8.call(e,n)&&bm(t,n,e[n])}return t},Y8=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Ns:Ns.apply(null,arguments)};function W8(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}var X8=function(t){H8(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,Ls([void 0],n[0].concat(this)))):new(e.bind.apply(e,Ls([void 0],n.concat(this))))},e}(Array);function q8(t){return typeof t=="boolean"}function Z8(){return function(e){return K8(e)}}function K8(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new X8;return n&&(q8(n)?r.push(dl):r.push(dl.withExtraArgument(n.extraArgument))),r}var J8=!0;function $8(t){var e=Z8(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,s=o===void 0?e():o,a=n.devTools,c=a===void 0?!0:a,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,h=l===void 0?void 0:l,d;if(typeof i=="function")d=i;else if(W8(i))d=hl(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var p=s;typeof p=="function"&&(p=p(e));var g=F8.apply(void 0,p),m=Ns;c&&(m=Y8(Bi({trace:!J8},typeof c=="object"&&c)));var y=[g];Array.isArray(h)?y=Ls([g],h):typeof h=="function"&&(y=h(y));var w=m.apply(void 0,y);return mm(d,f,w)}function xm(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Bi(Bi({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function vm(t){var e={},n=[],r,i={addCase:function(o,s){var a=typeof o=="string"?o:o.type;if(a in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[a]=s,i},addMatcher:function(o,s){return n.push({matcher:o,reducer:s}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function e6(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?vm(e):[e,n,r],o=i[0],s=i[1],a=i[2],c=hm(t,function(){});return function(u,f){u===void 0&&(u=c);var l=Ls([o[f.type]],s.filter(function(h){var d=h.matcher;return d(f)}).map(function(h){var d=h.reducer;return d}));return l.filter(function(h){return!!h}).length===0&&(l=[a]),l.reduce(function(h,d){if(d)if(nn(h)){var p=h,g=d(p,f);return typeof g=="undefined"?h:g}else{if(rn(h))return hm(h,function(m){return d(m,f)});var g=d(h,f);if(typeof g=="undefined"){if(h===null)return h;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return h},u)}}function t6(t,e){return t+"/"+e}function wm(t){var e=t.name,n=t.initialState;if(!e)throw new Error("`name` is a required option for createSlice");var r=t.reducers||{},i=typeof t.extraReducers=="function"?vm(t.extraReducers):[t.extraReducers],o=i[0],s=o===void 0?{}:o,a=i[1],c=a===void 0?[]:a,u=i[2],f=u===void 0?void 0:u,l=Object.keys(r),h={},d={},p={};l.forEach(function(y){var w=r[y],x=t6(e,y),E,b;"reducer"in w?(E=w.reducer,b=w.prepare):E=w,h[y]=E,d[x]=E,p[y]=b?xm(x,b):xm(x)});var g=Bi(Bi({},s),d),m=e6(n,g,c,f);return{name:e,reducer:m,actions:p,caseReducers:h}}C8();function Em(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=ny(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],a=t;a.groups=o.map(([c,u],f)=>({name:""+c,label:r?r[f]:c,samples:u})),delete t.samples}function n6(t,e){const n=Rn(".3~r"),r=o6(i6(t.samples,e,[0,.25,.5,.75,1]));r.length==1&&r.push(r[0]);const i=s=>`[${n(r[s])}, ${n(r[s+1])}${s<r.length-2?")":"]"}`,o=Ki(r.length-1).reverse();Em(t,r6(e,r.slice(1,r.length-1)),o,o.map(i))}function r6(t,e){return r=>{const i=t(r);if(!(!oe(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(i<e[o])return o;return e.length}}}function i6(t,e,n){const r=oy(t.map(e).filter(i=>oe(i)&&!isNaN(i)));return n.map(i=>_l(r,i))}function o6(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}function s6(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var a6=[].forEach;function c6(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],s=[];a6.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void s.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=s6),i.sort(function(c,u){return n(o[c],o[u])});var a=i.map(function(c){return t[c]}).concat(s);return a.length!=t.length&&(a.length=t.length),a}function u6(t,e){const n=i=>i.copy().range(Ki(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>oe(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function l6(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function f6(t,e,n=!1){return c6(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const h6={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function d6(t,e,n,r){const i=h6[n];return t.filter(o=>i(e(o),r))}function p6(t,e,n,r){const i=new Set(r),o=a=>i.has(a),s=n=="remove"?a=>!o(a):o;return t.filter(a=>s(e(a)))}function g6(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const Sm="setSamples",Dm="sortBy",Cm="retainFirstOfEach",Mm="filterByNominal",Im="filterByQuantitative",Tm="removeUndefined",Nm="groupByNominal",Lm="groupToQuartiles",wr="sampleView";function m6(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function y6(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return wm({name:wr,initialState:m6(),reducers:{[Sm]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(s=>s.id===void 0||s.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(s=>s.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((s,a)=>U(T({},s),{indexNumber:a}));n.sampleData={ids:o.map(s=>s.id),entities:Object.fromEntries(o.map(s=>[s.id,s]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[Dm]:(n,r)=>{Fi(n,i=>f6(i,u6(e(r.payload,n),t(r.payload.attribute)),!1))},[Cm]:(n,r)=>{Fi(n,i=>l6(i,e(r.payload,n)))},[Im]:(n,r)=>{Fi(n,i=>d6(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Mm]:(n,r)=>{Fi(n,i=>p6(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Tm]:(n,r)=>{Fi(n,i=>g6(i,e(r.payload,n)))},[Nm]:(n,r)=>{Om(n,i=>Em(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Lm]:(n,r)=>{Om(n,i=>n6(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function Fi(t,e){for(const n of km(t))n.samples=e(n.samples)}function Om(t,e){for(const n of km(t))e(n)}function km(t){return Bm(t).map(e=>he(e))}function pl(t){return t.provenance.present[wr]}function Bm(t){const e=[],n=[],r=i=>{if(e.push(i),Pm(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function Fm(t){return"samples"in t}function Pm(t){return"groups"in t}function*zm(t){if(yield[t],Pm(t))for(const e of t.groups)for(const n of zm(e))yield[t,...n]}const A6=Rn(".4"),b6={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function x6(t,e){if(!t.type.startsWith(wr))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||I`<em>${i}</em>`,s={attributeName:i};switch(t.type.substring(wr.length+1)){case Sm:return U(T({},s),{title:"The initial state",icon:KC});case Dm:return U(T({},s),{title:"Sort by",provenanceTitle:I`Sort by ${o}`,icon:uM});case Cm:return U(T({},s),{title:I`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:I`Retain first sample of each unique ${o}`,icon:rM});case Mm:{const c=n.values,u=c.length>1?I`{${c.map((l,h)=>I`${h>0?", ":""}<strong>${l}</strong>`)}}`:I`<strong>${c[0]}</strong>`,f=l=>I`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?I`undefined ${l}`:I`${l} ${c.length>1?"in":I`<span class="operator">=</span>`} ${u}`}`;return U(T({},s),{title:f(I`<em>${i}</em>`),provenanceTitle:f(o),icon:n.remove?Sg:gr})}case Im:{const c=u=>I`Retain samples having ${u} <span class="operator">${b6[n.operator]}</span> <strong>${A6(n.operand)}</strong>`;return U(T({},s),{title:c(I`<em>${i}</em>`),provenanceTitle:c(o),icon:gr})}case Tm:return U(T({},s),{title:"Remove samples having missing attribute",provenanceTitle:I`Remove samples having missing ${o}`,icon:gr});case Nm:return U(T({},s),{title:"Group by",provenanceTitle:I`Group by ${o}`,icon:Eg});case Lm:return U(T({},s),{title:"Group to quartiles",provenanceTitle:I`Group to quartiles by ${o}`,icon:Eg});default:return U(T({},s),{title:JSON.stringify(t),icon:wg})}}class v6{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function Os(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function Rm(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=h=>he(h),s=t.map(h=>({path:h,sampleGroup:o(h),samples:o(h).samples})).filter(h=>h.samples.length),a=n?h=>({px:h.length*n+i,grow:0}):h=>({px:i,grow:h.length}),c=[];hs(s.map(h=>a(h.samples)),e,{spacing:r}).forEach((h,d)=>{c.push({key:s[d].path,locSize:h})});const u=[];for(const[h,d]of s.entries()){const p={grow:1},g=d.samples;hs(g.map(m=>p),Math.max(0,c[h].locSize.size-i),{offset:c[h].locSize.location+i}).forEach((m,y)=>{const{size:w,location:x}=m,E=w*.1*Qp(15,22,w);m.location=x+E,m.size=w-2*E,u.push({key:g[y],locSize:m})})}function*f(){const h=[];for(const d of c){const p=d.key,g=he(p);for(;h.length<=p.length&&h.length&&p[h.length-1]!=h[h.length-1].group;)yield h.pop();for(let m=0;m<h.length;m++){const y=h[m];y.locSize.size=d.locSize.location-y.locSize.location+d.locSize.size}for(let m=h.length;m<p.length;m++)h.push({group:p[m],locSize:T({},d.locSize),depth:h.length,n:0});for(const m of h)m.n+=g.samples.length}for(;h.length;)yield h.pop()}const l=[...f()].sort((h,d)=>h.depth-d.depth).map((h,d)=>({key:{index:d,group:h.group,depth:h.depth,n:h.n,attributeLabel:void 0},locSize:h.locSize}));return{samples:u,summaries:c,groups:l}}function w6(t,e){return e.find(n=>vp(n.locSize,t))}const Um="VALUE_AT_LOCUS",jm=10;class gl extends gt{constructor(e,n,r,i,o){super(e,n,r,i);var u;this.provenance=o,this.spec=e,this.stickySummaries=(u=e.stickySummaries)!=null?u:!0,this.compositeAttributeInfoSource=new v6,this.child=n.createView(e.spec,this,"sample-facets"),this.summaryViews=new hr({vconcat:[]},n,this,"sampleSummaries"),this.child.visit(f=>{f instanceof Oe&&this.summaryViews.children.push(...f.sampleAggregateViews)}),this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new hr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},n,this,"sample-sidebar"),this.groupPanel=new x8(this),this.peripheryView.addChild(this.groupPanel),this.attributePanel=new $g(this),this.peripheryView.addChild(this.attributePanel),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Os(f=>pl(f).rootGroup,f=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Os(f=>pl(f).sampleData,f=>{const l=f&&Object.values(f.entities);!l||(this.attributePanel._setSamples(l),this.facetTextureData=new Float32Array(Math.ceil(l.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(Um,f=>{const l=f.specifier,h=this.findDescendantByPath(l.path);let d;if(oe(l.locus))d=l.locus;else{const m=this.getScaleResolution("x").getGenome();if(m)d=m.toContinuous(l.locus.chrom,l.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const p=m=>{var y;return(y=h.mark.findDatumAt(m,d))==null?void 0:y[l.field]};return{name:l.field,attribute:f,title:I`<em class="attribute">${l.field}</em> <span class="viewTitle">(${h.spec.title||h.name})</span> at <span class="locus">${Gm(l.locus)}</span>`,accessor:p,type:"quantitative",scale:void 0}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(f,l)=>{this._lastMouseY=l.point.y-f.y}),this.addInteractionEventListener("wheel",(f,l)=>{const h=l.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=uu(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this._coords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),l.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),n.addKeyboardListener("keydown",f=>{f.code=="KeyE"&&!f.repeat&&this._togglePeek()}),n.addKeyboardListener("keyup",f=>{f.code=="KeyE"&&this._togglePeek(!1)});const s=f=>this.compositeAttributeInfoSource.getAttributeInfo(f),a=y6(s);this.provenance.addReducer(a.name,a.reducer),this.provenance.addActionInfoSource(f=>x6(f,s)),this.actions=a.actions;const c=G8(f=>{var l;return(l=f.sampleData)==null?void 0:l.entities},f=>f&&Object.values(f));this.getSamples=()=>c(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px+jm:0,n=this.child.getEffectivePadding();return this.getPadding().add(new We(0,n.right,0,n.left+e))})}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(e,n){const r=n;if(e===this.child)this.child=r;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:e,collector:n}=cC(rg(this.spec.samples.data,this.getBaseUrl()),new E6);n.observers.push(i=>{const o=i.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:o}))});const r="samples "+this.getPathString();this.context.dataFlow.addDataSource(e,r)}extractSamplesFromData(){if(this.getSamples())return;const e=this.getScaleResolution("sample");if(e){const n=e.getDataDomain().map((r,i)=>({id:r,displayName:r,indexNumber:i,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:n}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[wr]}getLocations(){var e,n,r;if(!this._locations){if(!this._coords)return;const i=this.sampleHierarchy,o=Bm(i),s=[null,...i.groupMetadata],a=(r=((e=this.summaryViews)==null?void 0:e.isVisible())&&((n=this.summaryViews)==null?void 0:n.getSize().height.px))!=null?r:0,c=Rm(o,{viewHeight:this._coords.height,groupSpacing:5,summaryHeight:a}),u=Rm(o,{sampleHeight:35,groupSpacing:15,summaryHeight:a}),f=()=>-this._scrollOffset,l=()=>this._peekState;this._scrollableLocations=u,this._scrollableHeight=u.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,m)=>Math.max(g,m),0);const h=(g,m)=>{const y=[];for(let w=0;w<g.length;w++){const x=g[w].key;y.push({key:x,locSize:ES(g[w].locSize,SS(m[w].locSize,f),l)})}return y},d=h(c.groups,u.groups),p=document.createElement("div");d.forEach(g=>{if(g.key.depth==0)return;const m=s[g.key.depth].attribute,y=this.compositeAttributeInfoSource.getAttributeInfo(m).title;y?se(y)?g.key.attributeLabel=y:($e(y,p),g.key.attributeLabel=p.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:h(c.samples,u.samples),summaries:h(c.summaries,u.summaries),groups:d}}return this._locations}getSampleAt(e){const n=w6(e,this.getLocations().samples);if(n)return this.sampleHierarchy.sampleData.entities[n.key]}getSummaryAt(e){const n=this.getLocations().summaries,r=n.findIndex(i=>vp(i.locSize,e));return r>=0?{index:r,location:n[r]}:void 0}_clipBySummary(e){if(this.stickySummaries&&this.summaryViews.children.length){const n=this.summaryViews.getSize().height.px;return e.modify({y:()=>e.y+n,height:()=>e.height-n})}}renderChild(e,n,r={}){const i=1/n.height,o=()=>i,s=this._clipBySummary(n);for(const a of this.getLocations().samples)this.child.render(e,n,U(T({},r),{sampleFacetRenderingOptions:{locSize:DS(a.locSize,o)},facetId:[a.key],clipRect:s}))}renderSummaries(e,n,r={}){r=U(T({},r),{clipRect:n});const i=this.summaryViews.getSize().height.px;for(const[o,s]of this.getLocations().summaries.entries()){const a=()=>{const c=s.locSize.location;let u=n.y+c;return this.stickySummaries?u+uu(-c,0,s.locSize.size-i):u};this.summaryViews.render(e,n.modify({y:a,height:i}),U(T({},r),{facetId:[o]}))}}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n),this._coords=n;const i=hs([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],n.width,{spacing:jm}),o=s=>n.modify({x:s.location+n.x,width:s.size});this.peripheryView.render(e,o(i[0]),r),this.renderChild(e,o(i[1]),r),this.renderSummaries(e,o(i[1]),r),e.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var i;const e=this.facetTextureData;e.fill(0);const n=(i=this.sampleHierarchy.sampleData)==null?void 0:i.entities;if(n){const o=this.getLocations().samples,s=this._coords.height;for(const a of o){const c=n[a.key].indexNumber;e[c*2+0]=a.locSize.location/s,e[c*2+1]=a.locSize.size/s}}const r=this.context.glHelper.gl;this.facetTexture=Di(r,{internalFormat:r.RG32F,format:r.RG,height:1},e,this.facetTexture)}_togglePeek(e){var r;if(this._peekState>0&&this._peekState<1||e!==void 0&&e==!!this._peekState)return;const n={requestAnimationFrame:i=>this.context.animator.requestTransition(i),onUpdate:i=>{this._peekState=Math.pow(i,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const i=this._lastMouseY,o=(r=this.getSampleAt(i))==null?void 0:r.id;let s;if(o)s=(c=>c.location+c.size/2)(this._scrollableLocations.samples.find(c=>c.key==o).locSize);else{const a=this.getSummaryAt(i);a&&(s=this._scrollableLocations.summaries[a.index].locSize.location-(a.location.locSize.location-i))}if(s?this._scrollOffset=s-i:this._scrollOffset=(this._scrollableHeight-this._coords.height)/2,this._scrollableHeight>this._coords.height)gs(U(T({},n),{to:1,duration:500,easingFunction:cD}));else{const a=c=>(1-Math.pow(c*2-1,2))*.5;gs(U(T({},n),{from:0,to:1,duration:300,easingFunction:a}))}}else gs(U(T({},n),{to:0,duration:400,easingFunction:sD}))}_handleContextMenu(e,n){const r=n.uiEvent,i=e.normalizePoint(n.point.x,n.point.y).x,o=this.getScaleResolution("x").invertToComplex(i),s=gC(this.child).filter(c=>!["sample","x","x2"].includes(c.channel)).filter(c=>["rect","rule"].includes(c.view.getMarkType()));let a=[{label:`Locus: ${Gm(o)}`,type:"header"},{type:"divider"}];for(const[c,u]of s.entries()){let f=[...u.view.getAncestors()];f=f.slice(0,f.findIndex(d=>d===this));const l={path:f.map(d=>d.name).reverse(),field:u.field,locus:o},h=this.compositeAttributeInfoSource.getAttributeInfo({type:Um,specifier:l});c>0&&a.push({type:"divider"}),a.push(...Yu(I`<strong>${u.field}</strong> (${u.view.spec.title||u.view.spec.name})`,h,void 0,this))}qu({items:a},r)}getSampleFacetTexture(){return this.facetTexture}getDefaultResolution(e,n){switch(e){case"x":case"sample":return"shared";default:return"independent"}}}function Gm(t){return!oe(t)&&"chrom"in t?JS(t):""+t}class E6 extends ie{constructor(){super();this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:S6(e)})}}function S6(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function D6(t){return"samples"in t&&Be(t.samples)&&"spec"in t&&Be(t.spec)}const C6=(t,e)=>e.some(n=>t instanceof n);let Hm,Qm;function M6(){return Hm||(Hm=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function I6(){return Qm||(Qm=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const Vm=new WeakMap,ml=new WeakMap,_m=new WeakMap,yl=new WeakMap,Al=new WeakMap;function T6(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",s)},o=()=>{n(sn(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&Vm.set(n,t)}).catch(()=>{}),Al.set(e,t),e}function N6(t){if(ml.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",s),t.removeEventListener("abort",s)},o=()=>{n(),i()},s=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",s),t.addEventListener("abort",s)});ml.set(t,e)}let bl={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return ml.get(t);if(e==="objectStoreNames")return t.objectStoreNames||_m.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return sn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function L6(t){bl=t(bl)}function O6(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(xl(this),e,...n);return _m.set(r,e.sort?e.sort():[e]),sn(r)}:I6().includes(t)?function(...e){return t.apply(xl(this),e),sn(Vm.get(this))}:function(...e){return sn(t.apply(xl(this),e))}}function k6(t){return typeof t=="function"?O6(t):(t instanceof IDBTransaction&&N6(t),C6(t,M6())?new Proxy(t,bl):t)}function sn(t){if(t instanceof IDBRequest)return T6(t);if(yl.has(t))return yl.get(t);const e=k6(t);return e!==t&&(yl.set(t,e),Al.set(e,t)),e}const xl=t=>Al.get(t);function B6(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const s=indexedDB.open(t,e),a=sn(s);return r&&s.addEventListener("upgradeneeded",c=>{r(sn(s.result),c.oldVersion,c.newVersion,sn(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),a.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),a}const F6=["get","getKey","getAll","getAllKeys","count"],P6=["put","add","delete","clear"],vl=new Map;function Ym(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(vl.get(e))return vl.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=P6.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||F6.includes(n)))return;const o=async function(s,...a){const c=this.transaction(s,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(a.shift())),(await Promise.all([u[n](...a),i&&c.done]))[0]};return vl.set(e,o),o}L6(t=>U(T({},t),{get:(e,n,r)=>Ym(e,n)||t.get(e,n,r),has:(e,n)=>!!Ym(e,n)||t.has(e,n)}));const Pi="bookmarks";class z6{constructor(e){this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=B6(e,1,{upgrade(n,r,i,o){n.createObjectStore(Pi,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}async put(e,n){const i=(await this._getDB()).transaction(Pi,"readwrite");try{n?(await i.store.delete(n.name),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(Pi,e)}async getNames(){return(await this._getDB()).getAllKeys(Pi)}async get(e){return(await this._getDB()).get(Pi,e)}}/**
|
2036
|
+
*/const t8=dr(class extends Bi{constructor(t){var e;if(super(t),t.type!==Lt.ATTRIBUTE||t.name!=="style"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.ut===void 0){this.ut=new Set;for(const r in e)this.ut.add(r);return this.render(e)}this.ut.forEach(r=>{e[r]==null&&(this.ut.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ut.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return ye}}),Jg="close-dialog";function n8(){return new CustomEvent(Jg,{bubbles:!0})}function vs(){const t=document.createElement("div");t.className="gs-modal";const e=r=>{var i;switch(r.key){case"Escape":{t.querySelector(".btn-cancel").click(),r.stopPropagation();break}case"Enter":{if(((i=r.target)==null?void 0:i.tagName)=="TEXTAREA")return;t.querySelector(".btn-primary").click(),r.stopPropagation();break}}};t.addEventListener("keydown",e),tt(I`<div class="backdrop"></div><div class="content"></div>`,t);const n=()=>{t.querySelector(".backdrop").addEventListener("transitionend",()=>t.remove()),t.classList.remove("visible"),document.body.classList.remove(yn)};return t.addEventListener("keydown",r=>{r.stopPropagation()}),t.addEventListener(Jg,n),document.body.appendChild(t),window.requestAnimationFrame(()=>t.classList.add("visible")),document.body.classList.add(yn),{content:t.querySelector(".content"),close:n}}function ot(t,e=void 0,n=!1){const r=vs();return new Promise((i,o)=>{const s=()=>{r.close(),i(!0)},a=I`${e?I`<div class="modal-title">${e}</div>`:Y}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${n?I`<button @click="${()=>{r.close(),i(!1)}}">Cancel</button>`:Y} <button @click="${s}">OK</button></div>`;tt(a,r.content)})}function r8(t,e){var n,r;Vt((n=t.scale)==null?void 0:n.type)?i8(t,e):et((r=t.scale)==null?void 0:r.type)?o8(t,e):ot("Not implemented (yet).")}function i8(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=vs(),o=I`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=new Set,a=d=>{n(e.actions.filterByNominal({values:r.domain().filter(p=>s.has(p)),attribute:t.attribute,remove:d})),i.close()},c=d=>{const p=d.target;p.checked?s.add(p.value):s.delete(p.value),h()},u=()=>I`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!s.size}" @click="${()=>a(!1)}">${me(pr).node[0]} Retain</button> <button ?disabled="${!s.size}" @click="${()=>a(!0)}">${me(Cg).node[0]} Remove</button></div>`,f=r,l=I`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(d=>I`<li><label class="checkbox"><span class="color" style="${t8({backgroundColor:f(d).toString()})}"></span> <input type="checkbox" .value="${d}"> ${d}</label></li>`)}</ul>`;function h(){tt(I`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}h(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function o8(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=vs(),s=I`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=d=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>I`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>a()}">${me(pr).node[0]} Retain</button></div>`,u=d=>{r=d.target.value,h()},f=d=>{const p=d.target.value;i=p.length>0?+p:void 0,h()},l=I`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(s8).map(([d,p])=>I`<option .value="${d}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function h(){tt(I`${s}<div class="modal-body">${l}</div>${c()}`,o.content)}h(),o.content.querySelector("select").focus()}const s8={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function Wu(t,e,n,r){var l;const i=r.actions,o=e.attribute,s=r.provenance.storeHelper.getDispatcher();let a=[{label:t,type:"header"}];const c=h=>{const d=r.provenance.getActionInfo(h);return{label:d.title,icon:d.icon,callback:()=>s(h)}},u=(...h)=>a.push(...h.map(c));u(i.sortBy({attribute:o}));const f=(l=e==null?void 0:e.type)!=null?l:"identifier";return f!="quantitative"?(f!="identifier"&&u(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),u(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]}))):(u(i.groupToQuartiles({attribute:o})),a8(n)?u(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):u(i.removeUndefined({attribute:o}))),f!=="identifier"&&a.push({icon:pr,label:"Advanced filter...",callback:()=>r8(e,r)}),a}function a8(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function c8(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var tn={},Tn={};Object.defineProperty(Tn,"__esModule",{value:!0}),Tn.ActionCreators=Tn.ActionTypes=void 0;var Nn={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};Tn.ActionTypes=Nn;var u8={undo:function(){return{type:Nn.UNDO}},redo:function(){return{type:Nn.REDO}},jumpToFuture:function(e){return{type:Nn.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:Nn.JUMP_TO_PAST,index:e}},jump:function(e){return{type:Nn.JUMP,index:e}},clearHistory:function(){return{type:Nn.CLEAR_HISTORY}}};Tn.ActionCreators=u8;var xt={};Object.defineProperty(xt,"__esModule",{value:!0}),xt.parseActions=ws,xt.isHistory=l8,xt.includeAction=f8,xt.excludeAction=h8,xt.combineFilters=d8,xt.groupByActionTypes=p8,xt.newHistory=g8;function ws(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function l8(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function f8(t){var e=ws(t);return function(n){return e.indexOf(n.type)>=0}}function h8(t){var e=ws(t);return function(n){return e.indexOf(n.type)<0}}function d8(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,s,a){return r(o,s,a)&&i(o,s,a)}},function(){return!0})}function p8(t){var e=ws(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function g8(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var $g={},mr={};Object.defineProperty(mr,"__esModule",{value:!0}),mr.set=S8,mr.start=v8,mr.end=w8,mr.log=E8;function vt(t){return A8(t)||y8(t)||m8()}function m8(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function y8(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function A8(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Es,Ze,Xu={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function b8(){Ze={header:[],prev:[],action:[],next:[],msgs:[]}}function x8(){var t=Ze,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var s,a,c,u,f;(s=console).groupCollapsed.apply(s,vt(e)),(a=console).log.apply(a,vt(n)),(c=console).log.apply(c,vt(i)),(u=console).log.apply(u,vt(r)),(f=console).log.apply(f,vt(o)),console.groupEnd()}else{var l,h,d,p,g;(l=console).log.apply(l,vt(e)),(h=console).log.apply(h,vt(n)),(d=console).log.apply(d,vt(i)),(p=console).log.apply(p,vt(r)),(g=console).log.apply(g,vt(o))}}function qu(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function v8(t,e){b8(),Es&&(console.group?(Ze.header=["%credux-undo","font-style: italic","action",t.type],Ze.action=qu("action",Xu.action,t),Ze.prev=qu("prev history",Xu.prevState,e)):(Ze.header=["redux-undo action",t.type],Ze.action=["action",t],Ze.prev=["prev history",e]))}function w8(t){Es&&(console.group?Ze.next=qu("next history",Xu.nextState,t):Ze.next=["next history",t],x8())}function E8(){if(Es){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];Ze.msgs=Ze.msgs.concat([].concat(e,[`
|
2037
|
+
`]))}}function S8(t){Es=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(x){return typeof x}:e=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=S;var n=s(mr),r=Tn,i=xt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function s(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var A=o();if(A&&A.has(b))return A.get(b);var x={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var F in b)if(Object.prototype.hasOwnProperty.call(b,F)){var k=E?Object.getOwnPropertyDescriptor(b,F):null;k&&(k.get||k.set)?Object.defineProperty(x,F,k):x[F]=b[F]}return x.default=b,A&&A.set(b,x),x}function a(b,A){var x=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);A&&(E=E.filter(function(F){return Object.getOwnPropertyDescriptor(b,F).enumerable})),x.push.apply(x,E)}return x}function c(b){for(var A=1;A<arguments.length;A++){var x=arguments[A]!=null?arguments[A]:{};A%2?a(Object(x),!0).forEach(function(E){u(b,E,x[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(x)):a(Object(x)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(x,E))})}return b}function u(b,A,x){return A in b?Object.defineProperty(b,A,{value:x,enumerable:!0,configurable:!0,writable:!0}):b[A]=x,b}function f(b){return d(b)||h(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function h(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function d(b){if(Array.isArray(b)){for(var A=0,x=new Array(b.length);A<b.length;A++)x[A]=b[A];return x}}function p(b,A){var x=(0,i.newHistory)([],b,[]);return A&&(x._latestUnfiltered=null),x}function g(b,A,x,E){var F=b.past.length+1;n.log("inserting",A),n.log("new free: ",x-F);var k=b.past,C=b._latestUnfiltered,O=x&&x<=F,P=k.slice(O?1:0),H=C!=null?[].concat(f(P),[C]):P;return(0,i.newHistory)(H,A,[],E)}function m(b,A){if(A<0||A>=b.future.length)return b;var x=b.past,E=b.future,F=b._latestUnfiltered,k=[].concat(f(x),[F],f(E.slice(0,A))),C=E[A],O=E.slice(A+1);return(0,i.newHistory)(k,C,O)}function y(b,A){if(A<0||A>=b.past.length)return b;var x=b.past,E=b.future,F=b._latestUnfiltered,k=x.slice(0,A),C=[].concat(f(x.slice(A+1)),[F],f(E)),O=x[A];return(0,i.newHistory)(k,O,C)}function v(b,A){return A>0?m(b,A-1):A<0?y(b,b.past.length+A):b}function w(b,A){return A.indexOf(b)>-1?b:!b}function S(b){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(A.debug);var x=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},A,{initTypes:(0,i.parseActions)(A.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(A.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),E=x.neverSkipReducer?function(k,C){for(var O=arguments.length,P=new Array(O>2?O-2:0),H=2;H<O;H++)P[H-2]=arguments[H];return c({},k,{present:b.apply(void 0,[k.present,C].concat(P))})}:function(k){return k},F;return function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:F,C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(C,k);for(var O=k,P=arguments.length,H=new Array(P>2?P-2:0),Ke=2;Ke<P;Ke++)H[Ke-2]=arguments[Ke];if(!F)if(n.log("history is uninitialized"),k===void 0){var Re={type:"@@redux-undo/CREATE_HISTORY"},Ue=b.apply(void 0,[k,Re].concat(H));return O=p(Ue,x.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(O),O}else(0,i.isHistory)(k)?(O=F=x.ignoreInitialState?k:(0,i.newHistory)(k.past,k.present,k.future),n.log("initialHistory initialized: initialState is a history",F)):(O=F=p(k,x.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",F));var z;switch(C.type){case void 0:return O;case x.undoType:return z=v(O,-1),n.log("perform undo"),n.end(z),E.apply(void 0,[z,C].concat(H));case x.redoType:return z=v(O,1),n.log("perform redo"),n.end(z),E.apply(void 0,[z,C].concat(H));case x.jumpToPastType:return z=y(O,C.index),n.log("perform jumpToPast to ".concat(C.index)),n.end(z),E.apply(void 0,[z,C].concat(H));case x.jumpToFutureType:return z=m(O,C.index),n.log("perform jumpToFuture to ".concat(C.index)),n.end(z),E.apply(void 0,[z,C].concat(H));case x.jumpType:return z=v(O,C.index),n.log("perform jump to ".concat(C.index)),n.end(z),E.apply(void 0,[z,C].concat(H));case w(C.type,x.clearHistoryType):return z=p(O.present,x.ignoreInitialState),n.log("perform clearHistory"),n.end(z),E.apply(void 0,[z,C].concat(H));default:if(z=b.apply(void 0,[O.present,C].concat(H)),x.initTypes.some(function(Tl){return Tl===C.type}))return n.log("reset history due to init action"),n.end(F),F;if(O._latestUnfiltered===z)return O;var ne=typeof x.filter=="function"&&!x.filter(C,z,O);if(ne){var Hi=(0,i.newHistory)(O.past,z,O.future,O.group);return x.syncFilter||(Hi._latestUnfiltered=O._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(Hi),Hi}var Qi=x.groupBy(C,z,O);if(Qi!=null&&Qi===O.group){var Ps=(0,i.newHistory)(O.past,z,O.future,O.group);return n.log("groupBy grouped the action with the previous action"),n.end(Ps),Ps}return O=g(O,z,x.limit,Qi),n.log("inserted new state into history"),n.end(O),O}}}})($g),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=Tn,n=xt,r=i($g);function i(o){return o&&o.__esModule?o:{default:o}}}(tn);var D8=c8(tn);let Bt;function Ss(){Bt&&(Bt.remove(),Bt=void 0,document.body.classList.remove(yn))}function Zu(t,e){Ss(),Bt=document.createElement("div"),Bt.classList.add("gs-context-menu-backdrop");const n=document.createElement("ul");n.classList.add("gs-context-menu");const r=document.body;tt(t.items.map(s=>{switch(s.type){case"divider":return I`<li class="menu-divider"></li>`;case"header":return I`<li class="menu-header">${s.label||"-"}</li>`;default:return s.callback?I`<li><a @mouseup="${()=>{performance.now()-o>200&&(Ss(),s.callback())}}">${s.icon?me(s.icon).node[0]:""} ${s.label}</a></li>`:I`<li><span class="disabled-item">${s.icon?me(s.icon).node[0]:""} ${s.label||"-"}</span></li>`}}),n),n.style.left=e.clientX+"px",n.style.top=e.clientY+"px",r.appendChild(Bt),Bt.appendChild(n),document.body.classList.add(yn);const i=n.getBoundingClientRect();i.bottom>window.innerHeight&&(n.style.top=window.innerHeight-n.offsetHeight-10+"px"),i.right>window.innerWidth&&(n.style.left=window.innerWidth-n.offsetWidth-10+"px"),Bt.addEventListener("click",()=>Ss(),{once:!0});const o=performance.now();Bt.addEventListener("mouseup",()=>{performance.now()-o>500&&Ss()},{once:!0}),e.preventDefault()}const Ku={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Ds="SAMPLE_ATTRIBUTE",em="SAMPLE_NAME",C8=/^attribute-(.*)$/;class tm extends fr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata");this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Ds,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(em,n=>nm),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var a;const i=r.target,o=this._findSampleForMouseEvent(n,r),s=i&&((a=this.getAttributeInfoFromView(i))==null?void 0:a.name)||void 0;if(o){const c=JSON.stringify([o.id,s]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(s)}),he([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(e){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,U(T({},r),{clipRect:this.sampleView._clipBySummary(n)}))}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition(T({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:Up,signal:n.abortController.signal},e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150})).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-e.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[],s=this.getAttributeInfoFromView(n.target);if(s){const a=i.attributes[s.name];o.push(...Wu(I`Attribute: <strong>${s.name}</strong>`,s,a,this.sampleView))}else o.push(...Wu(I`Sample: <strong>${i.displayName}</strong>`,nm,i.id,this.sampleView));Zu({items:o},r)}_setSamples(e){if(this.children.length)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;cg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Oe){const s=o.mark;i.push(s.initializeGraphics().then(a=>s)),n.addObserver(a=>{s.initializeEncoders(),s.initializeData(),s.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const s of o)"value"in s?s.value.finalizeGraphicsInitialization():"reason"in s&&console.error(s.reason)}),r.publishData(e)}_createViews(){this.addChildBySpec(I8());for(const e of this._getAttributeNames()){const n=this.addChildBySpec(this._createAttributeViewSpec(e));n.opacityFunction=r=>r*this._getAttributeOpacity(e)}lg(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}_getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(Tf(i.map(o=>o.attributes[e]))){case"integer":case"number":r=Ku.QUANTITATIVE;break;default:r=Ku.NOMINAL}}return M8(e,U(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e.name.match(C8);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Ds,specifier:i},accessor:(o,s)=>s.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:I`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(a,c)=>T8(c)?this.getAttributeInfo(a).scale(c):"transparent",s=I`<table class="attributes">${Object.entries(i.attributes).map(([a,c])=>I`<tr class="${iM({hovered:a==r})}"><th>${a}</th><td>${mg(c)}</td><td class="color" .style="background-color: ${o(a,c)}"></td></tr>`)}</table>`;return I`<div class="title"><strong>${i.displayName||i.id}</strong></div>${s}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==yu||i.type==Au)&&this.sampleView.getSamples().find(s=>s.attributes[i.name]==n)){const s=this.sampleView.actions.filterByNominal({attribute:{type:Ds,specifier:r},values:[n]}),a=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(a)&&!a.payload.remove&&a.payload.attribute.type==Ds&&a.payload.attribute.specifier==r&&a.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[tn.ActionCreators.undo(),s]:s),!0}}return!1}isPickingSupported(){return!1}}function M8(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:t,visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect"},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==Ku.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale}),r}function I8(){return{name:"metadata-sample-name",title:"Sample name",width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function T8(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const nm=Object.freeze({name:"sample",attribute:{type:em},accessor:t=>t,type:"identifier",scale:void 0});class N8 extends Li{constructor(e){super({title:"Groups",width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:eo(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,dynamicData:!0,color:"#e8e8e8"}},{mark:{type:"text",clip:!0,dynamicData:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups");this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()})}updateRange(){var o,s,a;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e==null?void 0:e.length))return;const n=(a=(s=this.sampleView)==null?void 0:s._coords.height)!=null?a:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(s=>({_index:s.key.index,_name:s.key.group.name,_depth:s.key.depth,attribute:s.key.attributeLabel,label:s.key.group.label,n:s.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),he([...this.getAncestors()]).visit(s=>Di(s,"size"))}}function st(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function nn(t){return!!t&&!!t[ee]}function rn(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===U8}(t)||Array.isArray(t)||!!t[hm]||!!t.constructor[hm]||Ju(t)||$u(t))}function Ln(t,e,n){n===void 0&&(n=!1),yr(t)===0?(n?Object.keys:br)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function yr(t){var e=t[ee];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:Ju(t)?2:$u(t)?3:0}function Ar(t,e){return yr(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function L8(t,e){return yr(t)===2?t.get(e):t[e]}function rm(t,e,n){var r=yr(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function im(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Ju(t){return z8&&t instanceof Map}function $u(t){return R8&&t instanceof Set}function On(t){return t.o||t.t}function el(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=dm(t);delete e[ee];for(var n=br(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function tl(t,e){return e===void 0&&(e=!1),nl(t)||nn(t)||!rn(t)||(yr(t)>1&&(t.set=t.add=t.clear=t.delete=O8),Object.freeze(t),e&&Ln(t,function(n,r){return tl(r,!0)},!0)),t}function O8(){st(2)}function nl(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Ft(t){var e=fl[t];return e||st(18,t),e}function k8(t,e){fl[t]||(fl[t]=e)}function rl(){return Fi}function il(t,e){e&&(Ft("Patches"),t.u=[],t.s=[],t.v=e)}function Cs(t){ol(t),t.p.forEach(B8),t.p=null}function ol(t){t===Fi&&(Fi=t.l)}function om(t){return Fi={p:[],l:Fi,h:t,m:!0,_:0}}function B8(t){var e=t[ee];e.i===0||e.i===1?e.j():e.O=!0}function sl(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Ft("ES5").S(e,t,r),r?(n[ee].P&&(Cs(e),st(4)),rn(t)&&(t=Ms(e,t),e.l||Is(e,t)),e.u&&Ft("Patches").M(n[ee],t,e.u,e.s)):t=Ms(e,n,[]),Cs(e),e.u&&e.v(e.u,e.s),t!==fm?t:void 0}function Ms(t,e,n){if(nl(e))return e;var r=e[ee];if(!r)return Ln(e,function(o,s){return sm(t,r,e,o,s,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Is(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=el(r.k):r.o;Ln(r.i===3?new Set(i):i,function(o,s){return sm(t,r,i,o,s,n)}),Is(t,i,!1),n&&t.u&&Ft("Patches").R(r,n,t.u,t.s)}return r.o}function sm(t,e,n,r,i,o){if(nn(i)){var s=Ms(t,i,o&&e&&e.i!==3&&!Ar(e.D,r)?o.concat(r):void 0);if(rm(n,r,s),!nn(s))return;t.m=!1}if(rn(i)&&!nl(i)){if(!t.h.F&&t._<1)return;Ms(t,i),e&&e.A.l||Is(t,i)}}function Is(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&tl(e,n)}function al(t,e){var n=t[ee];return(n?On(n):t)[e]}function am(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function on(t){t.P||(t.P=!0,t.l&&on(t.l))}function cl(t){t.o||(t.o=el(t.t))}function ul(t,e,n){var r=Ju(e)?Ft("MapSet").N(e,n):$u(e)?Ft("MapSet").T(e,n):t.g?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:rl(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=a,u=xr;s&&(c=[a],u=Ts);var f=Proxy.revocable(c,u),l=f.revoke,h=f.proxy;return a.k=h,a.j=l,h}(e,n):Ft("ES5").J(e,n);return(n?n.A:rl()).p.push(r),r}function F8(t){return nn(t)||st(22,t),function e(n){if(!rn(n))return n;var r,i=n[ee],o=yr(n);if(i){if(!i.P&&(i.i<4||!Ft("ES5").K(i)))return i.t;i.I=!0,r=cm(n,o),i.I=!1}else r=cm(n,o);return Ln(r,function(s,a){i&&L8(i.t,s)===a||rm(r,s,e(a))}),o===3?new Set(r):r}(t)}function cm(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return el(t)}function P8(){function t(o,s){var a=i[o];return a?a.enumerable=s:i[o]=a={configurable:!0,enumerable:s,get:function(){var c=this[ee];return xr.get(c,o)},set:function(c){var u=this[ee];xr.set(u,o,c)}},a}function e(o){for(var s=o.length-1;s>=0;s--){var a=o[s][ee];if(!a.P)switch(a.i){case 5:r(a)&&on(a);break;case 4:n(a)&&on(a)}}}function n(o){for(var s=o.t,a=o.k,c=br(a),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ee){var l=s[f];if(l===void 0&&!Ar(s,f))return!0;var h=a[f],d=h&&h[ee];if(d?d.t!==l:!im(h,l))return!0}}var p=!!s[ee];return c.length!==br(s).length+(p?0:1)}function r(o){var s=o.k;if(s.length!==o.t.length)return!0;var a=Object.getOwnPropertyDescriptor(s,s.length-1);return!(!a||a.get)}var i={};k8("ES5",{J:function(o,s){var a=Array.isArray(o),c=function(f,l){if(f){for(var h=Array(l.length),d=0;d<l.length;d++)Object.defineProperty(h,""+d,t(d,!0));return h}var p=dm(l);delete p[ee];for(var g=br(p),m=0;m<g.length;m++){var y=g[m];p[y]=t(y,f||!!p[y].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(a,o),u={i:a?5:4,A:s?s.A:rl(),P:!1,I:!1,D:{},l:s,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ee,{value:u,writable:!0}),c},S:function(o,s,a){a?nn(s)&&s[ee].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ee];if(f){var l=f.t,h=f.k,d=f.D,p=f.i;if(p===4)Ln(h,function(w){w!==ee&&(l[w]!==void 0||Ar(l,w)?d[w]||c(h[w]):(d[w]=!0,on(f)))}),Ln(l,function(w){h[w]!==void 0||Ar(h,w)||(d[w]=!1,on(f))});else if(p===5){if(r(f)&&(on(f),d.length=!0),h.length<l.length)for(var g=h.length;g<l.length;g++)d[g]=!1;else for(var m=l.length;m<h.length;m++)d[m]=!0;for(var y=Math.min(h.length,l.length),v=0;v<y;v++)d[v]===void 0&&c(h[v])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var um,Fi,ll=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",z8=typeof Map!="undefined",R8=typeof Set!="undefined",lm=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",fm=ll?Symbol.for("immer-nothing"):((um={})["immer-nothing"]=!0,um),hm=ll?Symbol.for("immer-draftable"):"__$immer_draftable",ee=ll?Symbol.for("immer-state"):"__$immer_state",U8=""+Object.prototype.constructor,br=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,dm=Object.getOwnPropertyDescriptors||function(t){var e={};return br(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},fl={},xr={get:function(t,e){if(e===ee)return t;var n=On(t);if(!Ar(n,e))return function(i,o,s){var a,c=am(o,s);return c?"value"in c?c.value:(a=c.get)===null||a===void 0?void 0:a.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!rn(r)?r:r===al(t.t,e)?(cl(t),t.o[e]=ul(t.A.h,r,t)):r},has:function(t,e){return e in On(t)},ownKeys:function(t){return Reflect.ownKeys(On(t))},set:function(t,e,n){var r=am(On(t),e);if(r==null?void 0:r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=al(On(t),e),o=i==null?void 0:i[ee];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(im(n,i)&&(n!==void 0||Ar(t.t,e)))return!0;cl(t),on(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return al(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,cl(t),on(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=On(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){st(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){st(12)}},Ts={};Ln(xr,function(t,e){Ts[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Ts.deleteProperty=function(t,e){return xr.deleteProperty.call(this,t[0],e)},Ts.set=function(t,e,n){return xr.set.call(this,t[0],e,n,t[0])};var j8=function(){function t(n){var r=this;this.g=lm,this.F=!0,this.produce=function(i,o,s){if(typeof i=="function"&&typeof o!="function"){var a=o;o=i;var c=r;return function(d){var p=this;d===void 0&&(d=a);for(var g=arguments.length,m=Array(g>1?g-1:0),y=1;y<g;y++)m[y-1]=arguments[y];return c.produce(d,function(v){var w;return(w=o).call.apply(w,[p,v].concat(m))})}}var u;if(typeof o!="function"&&st(6),s!==void 0&&typeof s!="function"&&st(7),rn(i)){var f=om(r),l=ul(r,i,void 0),h=!0;try{u=o(l),h=!1}finally{h?Cs(f):ol(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(d){return il(f,s),sl(d,f)},function(d){throw Cs(f),d}):(il(f,s),sl(u,f))}if(!i||typeof i!="object")return(u=o(i))===fm?void 0:(u===void 0&&(u=i),r.F&&tl(u,!0),u);st(21,i)},this.produceWithPatches=function(i,o){return typeof i=="function"?function(c){for(var u=arguments.length,f=Array(u>1?u-1:0),l=1;l<u;l++)f[l-1]=arguments[l];return r.produceWithPatches(c,function(h){return i.apply(void 0,[h].concat(f))})}:[r.produce(i,o,function(c,u){s=c,a=u}),s,a];var s,a},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){rn(n)||st(8),nn(n)&&(n=F8(n));var r=om(this),i=ul(this,n,void 0);return i[ee].C=!0,ol(r),i},e.finishDraft=function(n,r){var i=n&&n[ee],o=i.A;return il(o,r),sl(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!lm&&st(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}var s=Ft("Patches").$;return nn(n)?s(n,r):this.produce(n,function(a){return s(a,r.slice(i+1))})},t}(),ze=new j8,G8=ze.produce;ze.produceWithPatches.bind(ze),ze.setAutoFreeze.bind(ze),ze.setUseProxies.bind(ze),ze.applyPatches.bind(ze),ze.createDraft.bind(ze),ze.finishDraft.bind(ze);var pm=G8;function H8(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function gm(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function mm(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?gm(Object(n),!0).forEach(function(r){H8(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):gm(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function we(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var ym=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),hl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Ns={INIT:"@@redux/INIT"+hl(),REPLACE:"@@redux/REPLACE"+hl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+hl()}};function Q8(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function Am(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(we(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(we(1));return n(Am)(t,e)}if(typeof t!="function")throw new Error(we(2));var i=t,o=e,s=[],a=s,c=!1;function u(){a===s&&(a=s.slice())}function f(){if(c)throw new Error(we(3));return o}function l(g){if(typeof g!="function")throw new Error(we(4));if(c)throw new Error(we(5));var m=!0;return u(),a.push(g),function(){if(!!m){if(c)throw new Error(we(6));m=!1,u();var v=a.indexOf(g);a.splice(v,1),s=null}}}function h(g){if(!Q8(g))throw new Error(we(7));if(typeof g.type=="undefined")throw new Error(we(8));if(c)throw new Error(we(9));try{c=!0,o=i(o,g)}finally{c=!1}for(var m=s=a,y=0;y<m.length;y++){var v=m[y];v()}return g}function d(g){if(typeof g!="function")throw new Error(we(10));i=g,h({type:Ns.REPLACE})}function p(){var g,m=l;return g={subscribe:function(v){if(typeof v!="object"||v===null)throw new Error(we(11));function w(){v.next&&v.next(f())}w();var S=m(w);return{unsubscribe:S}}},g[ym]=function(){return this},g}return h({type:Ns.INIT}),r={dispatch:h,subscribe:l,getState:f,replaceReducer:d},r[ym]=p,r}function V8(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Ns.INIT});if(typeof r=="undefined")throw new Error(we(12));if(typeof n(void 0,{type:Ns.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(we(13))})}function dl(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),s;try{V8(n)}catch(a){s=a}return function(c,u){if(c===void 0&&(c={}),s)throw s;for(var f=!1,l={},h=0;h<o.length;h++){var d=o[h],p=n[d],g=c[d],m=p(g,u);if(typeof m=="undefined")throw u&&u.type,new Error(we(14));l[d]=m,f=f||m!==g}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Ls(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function _8(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(we(15))},s={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},a=e.map(function(c){return c(s)});return o=Ls.apply(void 0,a)(i.dispatch),mm(mm({},i),{},{dispatch:o})}}}function Y8(t,e){return t===e}function W8(t,e,n){if(e===null||n===null||e.length!==n.length)return!1;for(var r=e.length,i=0;i<r;i++)if(!t(e[i],n[i]))return!1;return!0}function X8(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Y8,n=null,r=null;return function(){return W8(e,n,arguments)||(r=t.apply(null,arguments)),n=arguments,r}}function q8(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, "+("instead received the following types: ["+n+"]"))}return e}function Z8(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];var a=0,c=o.pop(),u=q8(o),f=t.apply(void 0,[function(){return a++,c.apply(null,arguments)}].concat(n)),l=t(function(){for(var h=[],d=u.length,p=0;p<d;p++)h.push(u[p].apply(null,arguments));return f.apply(null,h)});return l.resultFunc=c,l.dependencies=u,l.recomputations=function(){return a},l.resetRecomputations=function(){return a=0},l}}var K8=Z8(X8);function bm(t){return function(e){var n=e.dispatch,r=e.getState;return function(i){return function(o){return typeof o=="function"?o(n,r,t):i(o)}}}}var pl=bm();pl.withExtraArgument=bm;var J8=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var Os=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},$8=Object.defineProperty,xm=Object.getOwnPropertySymbols,e6=Object.prototype.hasOwnProperty,t6=Object.prototype.propertyIsEnumerable,vm=function(t,e,n){return e in t?$8(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Pi=function(t,e){for(var n in e||(e={}))e6.call(e,n)&&vm(t,n,e[n]);if(xm)for(var r=0,i=xm(e);r<i.length;r++){var n=i[r];t6.call(e,n)&&vm(t,n,e[n])}return t},n6=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Ls:Ls.apply(null,arguments)};function r6(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}var i6=function(t){J8(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,Os([void 0],n[0].concat(this)))):new(e.bind.apply(e,Os([void 0],n.concat(this))))},e}(Array);function o6(t){return typeof t=="boolean"}function s6(){return function(e){return a6(e)}}function a6(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new i6;return n&&(o6(n)?r.push(pl):r.push(pl.withExtraArgument(n.extraArgument))),r}var c6=!0;function u6(t){var e=s6(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,s=o===void 0?e():o,a=n.devTools,c=a===void 0?!0:a,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,h=l===void 0?void 0:l,d;if(typeof i=="function")d=i;else if(r6(i))d=dl(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var p=s;typeof p=="function"&&(p=p(e));var g=_8.apply(void 0,p),m=Ls;c&&(m=n6(Pi({trace:!c6},typeof c=="object"&&c)));var y=[g];Array.isArray(h)?y=Os([g],h):typeof h=="function"&&(y=h(y));var v=m.apply(void 0,y);return Am(d,f,v)}function wm(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Pi(Pi({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function Em(t){var e={},n=[],r,i={addCase:function(o,s){var a=typeof o=="string"?o:o.type;if(a in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[a]=s,i},addMatcher:function(o,s){return n.push({matcher:o,reducer:s}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function l6(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?Em(e):[e,n,r],o=i[0],s=i[1],a=i[2],c=pm(t,function(){});return function(u,f){u===void 0&&(u=c);var l=Os([o[f.type]],s.filter(function(h){var d=h.matcher;return d(f)}).map(function(h){var d=h.reducer;return d}));return l.filter(function(h){return!!h}).length===0&&(l=[a]),l.reduce(function(h,d){if(d)if(nn(h)){var p=h,g=d(p,f);return typeof g=="undefined"?h:g}else{if(rn(h))return pm(h,function(m){return d(m,f)});var g=d(h,f);if(typeof g=="undefined"){if(h===null)return h;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return h},u)}}function f6(t,e){return t+"/"+e}function Sm(t){var e=t.name,n=t.initialState;if(!e)throw new Error("`name` is a required option for createSlice");var r=t.reducers||{},i=typeof t.extraReducers=="function"?Em(t.extraReducers):[t.extraReducers],o=i[0],s=o===void 0?{}:o,a=i[1],c=a===void 0?[]:a,u=i[2],f=u===void 0?void 0:u,l=Object.keys(r),h={},d={},p={};l.forEach(function(y){var v=r[y],w=f6(e,y),S,b;"reducer"in v?(S=v.reducer,b=v.prepare):S=v,h[y]=S,d[w]=S,p[y]=b?wm(w,b):wm(w)});var g=Pi(Pi({},s),d),m=l6(n,g,c,f);return{name:e,reducer:m,actions:p,caseReducers:h}}P8();function Dm(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=iy(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],a=t;a.groups=o.map(([c,u],f)=>({name:""+c,label:r?r[f]:c,samples:u})),delete t.samples}function h6(t,e){const n=zn(".3~r"),r=g6(p6(t.samples,e,[0,.25,.5,.75,1]));r.length==1&&r.push(r[0]);const i=s=>`[${n(r[s])}, ${n(r[s+1])}${s<r.length-2?")":"]"}`,o=eo(r.length-1).reverse();Dm(t,d6(e,r.slice(1,r.length-1)),o,o.map(i))}function d6(t,e){return r=>{const i=t(r);if(!(!se(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(i<e[o])return o;return e.length}}}function p6(t,e,n){const r=ay(t.map(e).filter(i=>se(i)&&!isNaN(i)));return n.map(i=>Yl(r,i))}function g6(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}function m6(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var y6=[].forEach;function A6(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],s=[];y6.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void s.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=m6),i.sort(function(c,u){return n(o[c],o[u])});var a=i.map(function(c){return t[c]}).concat(s);return a.length!=t.length&&(a.length=t.length),a}function b6(t,e){const n=i=>i.copy().range(eo(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>se(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function x6(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function v6(t,e,n=!1){return A6(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const w6={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function E6(t,e,n,r){const i=w6[n];return t.filter(o=>i(e(o),r))}function S6(t,e,n,r){const i=new Set(r),o=a=>i.has(a),s=n=="remove"?a=>!o(a):o;return t.filter(a=>s(e(a)))}function D6(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const Cm="setSamples",Mm="sortBy",Im="retainFirstOfEach",Tm="filterByNominal",Nm="filterByQuantitative",Lm="removeUndefined",Om="groupByNominal",km="groupToQuartiles",vr="sampleView";function C6(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function M6(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return Sm({name:vr,initialState:C6(),reducers:{[Cm]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(s=>s.id===void 0||s.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(s=>s.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((s,a)=>U(T({},s),{indexNumber:a}));n.sampleData={ids:o.map(s=>s.id),entities:Object.fromEntries(o.map(s=>[s.id,s]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[Mm]:(n,r)=>{zi(n,i=>v6(i,b6(e(r.payload,n),t(r.payload.attribute)),!1))},[Im]:(n,r)=>{zi(n,i=>x6(i,e(r.payload,n)))},[Nm]:(n,r)=>{zi(n,i=>E6(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Tm]:(n,r)=>{zi(n,i=>S6(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Lm]:(n,r)=>{zi(n,i=>D6(i,e(r.payload,n)))},[Om]:(n,r)=>{Bm(n,i=>Dm(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[km]:(n,r)=>{Bm(n,i=>h6(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function zi(t,e){for(const n of Fm(t))n.samples=e(n.samples)}function Bm(t,e){for(const n of Fm(t))e(n)}function Fm(t){return Pm(t).map(e=>he(e))}function gl(t){return t.provenance.present[vr]}function Pm(t){const e=[],n=[],r=i=>{if(e.push(i),Rm(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function zm(t){return"samples"in t}function Rm(t){return"groups"in t}function*Um(t){if(yield[t],Rm(t))for(const e of t.groups)for(const n of Um(e))yield[t,...n]}const I6=zn(".4"),T6={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function N6(t,e){if(!t.type.startsWith(vr))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||I`<em>${i}</em>`,s={attributeName:i};switch(t.type.substring(vr.length+1)){case Cm:return U(T({},s),{title:"The initial state",icon:aM});case Mm:return U(T({},s),{title:"Sort by",provenanceTitle:I`Sort by ${o}`,icon:bM});case Im:return U(T({},s),{title:I`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:I`Retain first sample of each unique ${o}`,icon:dM});case Tm:{const c=n.values,u=c.length>1?I`{${c.map((l,h)=>I`${h>0?", ":""}<strong>${l}</strong>`)}}`:I`<strong>${c[0]}</strong>`,f=l=>I`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?I`undefined ${l}`:I`${l} ${c.length>1?"in":I`<span class="operator">=</span>`} ${u}`}`;return U(T({},s),{title:f(I`<em>${i}</em>`),provenanceTitle:f(o),icon:n.remove?Cg:pr})}case Nm:{const c=u=>I`Retain samples having ${u} <span class="operator">${T6[n.operator]}</span> <strong>${I6(n.operand)}</strong>`;return U(T({},s),{title:c(I`<em>${i}</em>`),provenanceTitle:c(o),icon:pr})}case Lm:return U(T({},s),{title:"Remove samples having missing attribute",provenanceTitle:I`Remove samples having missing ${o}`,icon:pr});case Om:return U(T({},s),{title:"Group by",provenanceTitle:I`Group by ${o}`,icon:Dg});case km:return U(T({},s),{title:"Group to quartiles",provenanceTitle:I`Group to quartiles by ${o}`,icon:Dg});default:return U(T({},s),{title:JSON.stringify(t),icon:Sg})}}class L6{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function ks(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function jm(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=h=>he(h),s=t.map(h=>({path:h,sampleGroup:o(h),samples:o(h).samples})).filter(h=>h.samples.length),a=n?h=>({px:h.length*n+i,grow:0}):h=>({px:i,grow:h.length}),c=[];hs(s.map(h=>a(h.samples)),e,{spacing:r}).forEach((h,d)=>{c.push({key:s[d].path,locSize:h})});const u=[];for(const[h,d]of s.entries()){const p={grow:1},g=d.samples;hs(g.map(m=>p),Math.max(0,c[h].locSize.size-i),{offset:c[h].locSize.location+i}).forEach((m,y)=>{const{size:v,location:w}=m,S=v*.1*_p(15,22,v);m.location=w+S,m.size=v-2*S,u.push({key:g[y],locSize:m})})}function*f(){const h=[];for(const d of c){const p=d.key,g=he(p);for(;h.length<=p.length&&h.length&&p[h.length-1]!=h[h.length-1].group;)yield h.pop();for(let m=0;m<h.length;m++){const y=h[m];y.locSize.size=d.locSize.location-y.locSize.location+d.locSize.size}for(let m=h.length;m<p.length;m++)h.push({group:p[m],locSize:T({},d.locSize),depth:h.length,n:0});for(const m of h)m.n+=g.samples.length}for(;h.length;)yield h.pop()}const l=[...f()].sort((h,d)=>h.depth-d.depth).map((h,d)=>({key:{index:d,group:h.group,depth:h.depth,n:h.n,attributeLabel:void 0},locSize:h.locSize}));return{samples:u,summaries:c,groups:l}}function O6(t,e){return e.find(n=>Ep(n.locSize,t))}const Gm="VALUE_AT_LOCUS",Hm=10;class ml extends yt{constructor(e,n,r,i,o){super(e,n,r,i);var u;this.provenance=o,this.spec=e,this.stickySummaries=(u=e.stickySummaries)!=null?u:!0,this.compositeAttributeInfoSource=new L6,this.child=n.createView(e.spec,this,"sample-facets"),this.summaryViews=new fr({vconcat:[]},n,this,"sampleSummaries"),this.child.visit(f=>{f instanceof Oe&&this.summaryViews.children.push(...f.sampleAggregateViews)}),this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new fr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},n,this,"sample-sidebar"),this.groupPanel=new N8(this),this.peripheryView.addChild(this.groupPanel),this.attributePanel=new tm(this),this.peripheryView.addChild(this.attributePanel),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(ks(f=>gl(f).rootGroup,f=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(ks(f=>gl(f).sampleData,f=>{const l=f&&Object.values(f.entities);!l||(this.attributePanel._setSamples(l),this.facetTextureData=new Float32Array(Math.ceil(l.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(Gm,f=>{const l=f.specifier,h=this.findDescendantByPath(l.path);let d;if(se(l.locus))d=l.locus;else{const m=this.getScaleResolution("x").getGenome();if(m)d=m.toContinuous(l.locus.chrom,l.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const p=m=>{var y;return(y=h.mark.findDatumAt(m,d))==null?void 0:y[l.field]};return{name:l.field,attribute:f,title:I`<em class="attribute">${l.field}</em> <span class="viewTitle">(${h.spec.title||h.name})</span> at <span class="locus">${Qm(l.locus)}</span>`,accessor:p,type:"quantitative",scale:void 0}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(f,l)=>{this._lastMouseY=l.point.y-f.y}),this.addInteractionEventListener("wheel",(f,l)=>{const h=l.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=lu(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this._coords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),l.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),n.addKeyboardListener("keydown",f=>{f.code=="KeyE"&&!f.repeat&&this._togglePeek()}),n.addKeyboardListener("keyup",f=>{f.code=="KeyE"&&this._togglePeek(!1)});const s=f=>this.compositeAttributeInfoSource.getAttributeInfo(f),a=M6(s);this.provenance.addReducer(a.name,a.reducer),this.provenance.addActionInfoSource(f=>N6(f,s)),this.actions=a.actions;const c=K8(f=>{var l;return(l=f.sampleData)==null?void 0:l.entities},f=>f&&Object.values(f));this.getSamples=()=>c(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px+Hm:0,n=this.child.getEffectivePadding();return this.getPadding().add(new qe(0,n.right,0,n.left+e))})}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(e,n){const r=n;if(e===this.child)this.child=r;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:e,collector:n}=AC(og(this.spec.samples.data,this.getBaseUrl()),new k6);n.observers.push(i=>{const o=i.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:o}))});const r="samples "+this.getPathString();this.context.dataFlow.addDataSource(e,r)}extractSamplesFromData(){if(this.getSamples())return;const e=this.getScaleResolution("sample");if(e){const n=e.getDataDomain().map((r,i)=>({id:r,displayName:r,indexNumber:i,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:n}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[vr]}getLocations(){var e,n,r;if(!this._locations){if(!this._coords)return;const i=this.sampleHierarchy,o=Pm(i),s=[null,...i.groupMetadata],a=(r=((e=this.summaryViews)==null?void 0:e.isVisible())&&((n=this.summaryViews)==null?void 0:n.getSize().height.px))!=null?r:0,c=jm(o,{viewHeight:this._coords.height,groupSpacing:5,summaryHeight:a}),u=jm(o,{sampleHeight:35,groupSpacing:15,summaryHeight:a}),f=()=>-this._scrollOffset,l=()=>this._peekState;this._scrollableLocations=u,this._scrollableHeight=u.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,m)=>Math.max(g,m),0);const h=(g,m)=>{const y=[];for(let v=0;v<g.length;v++){const w=g[v].key;y.push({key:w,locSize:NS(g[v].locSize,LS(m[v].locSize,f),l)})}return y},d=h(c.groups,u.groups),p=document.createElement("div");d.forEach(g=>{if(g.key.depth==0)return;const m=s[g.key.depth].attribute,y=this.compositeAttributeInfoSource.getAttributeInfo(m).title;y?ie(y)?g.key.attributeLabel=y:(tt(y,p),g.key.attributeLabel=p.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:h(c.samples,u.samples),summaries:h(c.summaries,u.summaries),groups:d}}return this._locations}getSampleAt(e){const n=O6(e,this.getLocations().samples);if(n)return this.sampleHierarchy.sampleData.entities[n.key]}getSummaryAt(e){const n=this.getLocations().summaries,r=n.findIndex(i=>Ep(i.locSize,e));return r>=0?{index:r,location:n[r]}:void 0}_clipBySummary(e){if(this.stickySummaries&&this.summaryViews.children.length){const n=this.summaryViews.getSize().height.px;return e.modify({y:()=>e.y+n,height:()=>e.height-n})}}renderChild(e,n,r={}){const i=1/n.height,o=()=>i,s=this._clipBySummary(n);for(const a of this.getLocations().samples)this.child.render(e,n,U(T({},r),{sampleFacetRenderingOptions:{locSize:OS(a.locSize,o)},facetId:[a.key],clipRect:s}))}renderSummaries(e,n,r={}){r=U(T({},r),{clipRect:n});const i=this.summaryViews.getSize().height.px;for(const[o,s]of this.getLocations().summaries.entries()){const a=()=>{const c=s.locSize.location;let u=n.y+c;return this.stickySummaries?u+lu(-c,0,s.locSize.size-i):u};this.summaryViews.render(e,n.modify({y:a,height:i}),U(T({},r),{facetId:[o]}))}}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n),this._coords=n;const i=hs([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],n.width,{spacing:Hm}),o=s=>n.modify({x:s.location+n.x,width:s.size});this.peripheryView.render(e,o(i[0]),r),this.renderChild(e,o(i[1]),r),this.renderSummaries(e,o(i[1]),r),e.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var i;const e=this.facetTextureData;e.fill(0);const n=(i=this.sampleHierarchy.sampleData)==null?void 0:i.entities;if(n){const o=this.getLocations().samples,s=this._coords.height;for(const a of o){const c=n[a.key].indexNumber;e[c*2+0]=a.locSize.location/s,e[c*2+1]=a.locSize.size/s}}const r=this.context.glHelper.gl;this.facetTexture=Mi(r,{internalFormat:r.RG32F,format:r.RG,height:1},e,this.facetTexture)}_togglePeek(e){var r;if(this._peekState>0&&this._peekState<1||e!==void 0&&e==!!this._peekState)return;const n={requestAnimationFrame:i=>this.context.animator.requestTransition(i),onUpdate:i=>{this._peekState=Math.pow(i,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const i=this._lastMouseY,o=(r=this.getSampleAt(i))==null?void 0:r.id;let s;if(o)s=(c=>c.location+c.size/2)(this._scrollableLocations.samples.find(c=>c.key==o).locSize);else{const a=this.getSummaryAt(i);a&&(s=this._scrollableLocations.summaries[a.index].locSize.location-(a.location.locSize.location-i))}if(s?this._scrollOffset=s-i:this._scrollOffset=(this._scrollableHeight-this._coords.height)/2,this._scrollableHeight>this._coords.height)ms(U(T({},n),{to:1,duration:500,easingFunction:gD}));else{const a=c=>(1-Math.pow(c*2-1,2))*.5;ms(U(T({},n),{from:0,to:1,duration:300,easingFunction:a}))}}else ms(U(T({},n),{to:0,duration:400,easingFunction:dD}))}_handleContextMenu(e,n){const r=n.uiEvent,i=e.normalizePoint(n.point.x,n.point.y).x,o=this.getScaleResolution("x").invertToComplex(i),s=DC(this.child).filter(c=>!["sample","x","x2"].includes(c.channel)).filter(c=>["rect","rule"].includes(c.view.getMarkType()));let a=[{label:`Locus: ${Qm(o)}`,type:"header"},{type:"divider"}];for(const[c,u]of s.entries()){let f=[...u.view.getAncestors()];f=f.slice(0,f.findIndex(d=>d===this));const l={path:f.map(d=>d.name).reverse(),field:u.field,locus:o},h=this.compositeAttributeInfoSource.getAttributeInfo({type:Gm,specifier:l});c>0&&a.push({type:"divider"}),a.push(...Wu(I`<strong>${u.field}</strong> (${u.view.spec.title||u.view.spec.name})`,h,void 0,this))}Zu({items:a},r)}getSampleFacetTexture(){return this.facetTexture}getDefaultResolution(e,n){switch(e){case"x":case"sample":return"shared";default:return"independent"}}}function Qm(t){return!se(t)&&"chrom"in t?oD(t):""+t}class k6 extends oe{constructor(){super();this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:B6(e)})}}function B6(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function F6(t){return"samples"in t&&Be(t.samples)&&"spec"in t&&Be(t.spec)}const P6=(t,e)=>e.some(n=>t instanceof n);let Vm,_m;function z6(){return Vm||(Vm=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function R6(){return _m||(_m=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const Ym=new WeakMap,yl=new WeakMap,Wm=new WeakMap,Al=new WeakMap,bl=new WeakMap;function U6(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",s)},o=()=>{n(sn(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&Ym.set(n,t)}).catch(()=>{}),bl.set(e,t),e}function j6(t){if(yl.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",s),t.removeEventListener("abort",s)},o=()=>{n(),i()},s=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",s),t.addEventListener("abort",s)});yl.set(t,e)}let xl={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return yl.get(t);if(e==="objectStoreNames")return t.objectStoreNames||Wm.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return sn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function G6(t){xl=t(xl)}function H6(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(vl(this),e,...n);return Wm.set(r,e.sort?e.sort():[e]),sn(r)}:R6().includes(t)?function(...e){return t.apply(vl(this),e),sn(Ym.get(this))}:function(...e){return sn(t.apply(vl(this),e))}}function Q6(t){return typeof t=="function"?H6(t):(t instanceof IDBTransaction&&j6(t),P6(t,z6())?new Proxy(t,xl):t)}function sn(t){if(t instanceof IDBRequest)return U6(t);if(Al.has(t))return Al.get(t);const e=Q6(t);return e!==t&&(Al.set(t,e),bl.set(e,t)),e}const vl=t=>bl.get(t);function V6(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const s=indexedDB.open(t,e),a=sn(s);return r&&s.addEventListener("upgradeneeded",c=>{r(sn(s.result),c.oldVersion,c.newVersion,sn(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),a.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),a}const _6=["get","getKey","getAll","getAllKeys","count"],Y6=["put","add","delete","clear"],wl=new Map;function Xm(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(wl.get(e))return wl.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=Y6.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||_6.includes(n)))return;const o=async function(s,...a){const c=this.transaction(s,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(a.shift())),(await Promise.all([u[n](...a),i&&c.done]))[0]};return wl.set(e,o),o}G6(t=>U(T({},t),{get:(e,n,r)=>Xm(e,n)||t.get(e,n,r),has:(e,n)=>!!Xm(e,n)||t.has(e,n)}));const Ri="bookmarks";class W6{constructor(e){this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=V6(e,1,{upgrade(n,r,i,o){n.createObjectStore(Ri,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}async put(e,n){const i=(await this._getDB()).transaction(Ri,"readwrite");try{n?(await i.store.delete(n.name),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(Ri,e)}async getNames(){return(await this._getDB()).getAllKeys(Ri)}async get(e){return(await this._getDB()).get(Ri,e)}}/**
|
2036
2038
|
* @license
|
2037
2039
|
* Copyright 2020 Google LLC
|
2038
2040
|
* SPDX-License-Identifier: BSD-3-Clause
|
2039
|
-
*/const
|
2041
|
+
*/const X6=t=>t===null||typeof t!="object"&&typeof t!="function",qm=t=>t.strings===void 0,q6={},Z6=(t,e=q6)=>t._$AH=e;/**
|
2040
2042
|
* @license
|
2041
2043
|
* Copyright 2017 Google LLC
|
2042
2044
|
* SPDX-License-Identifier: BSD-3-Clause
|
2043
|
-
*/const
|
2045
|
+
*/const Ui=(t,e)=>{var n,r;const i=t._$AN;if(i===void 0)return!1;for(const o of i)(r=(n=o)._$AO)===null||r===void 0||r.call(n,e,!1),Ui(o,e);return!0},Bs=t=>{let e,n;do{if((e=t._$AM)===void 0)break;n=e._$AN,n.delete(t),t=e}while((n==null?void 0:n.size)===0)},Zm=t=>{for(let e;e=t._$AM;t=e){let n=e._$AN;if(n===void 0)e._$AN=n=new Set;else if(n.has(t))break;n.add(t),$6(e)}};function K6(t){this._$AN!==void 0?(Bs(this),this._$AM=t,Zm(this)):this._$AM=t}function J6(t,e=!1,n=0){const r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(e)if(Array.isArray(r))for(let o=n;o<r.length;o++)Ui(r[o],!1),Bs(r[o]);else r!=null&&(Ui(r,!1),Bs(r));else Ui(this,t)}const $6=t=>{var e,n,r,i;t.type==Lt.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=J6),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=K6))};class Km extends Bi{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),Zm(this),this.isConnected=e._$AU}_$AO(e,n=!0){var r,i;e!==this.isConnected&&(this.isConnected=e,e?(r=this.reconnected)===null||r===void 0||r.call(this):(i=this.disconnected)===null||i===void 0||i.call(this)),n&&(Ui(this,e),Bs(this))}setValue(e){if(qm(this._$Ct))this._$Ct._$AI(e,this);else{const n=[...this._$Ct._$AH];n[this._$Ci]=e,this._$Ct._$AI(n,this,0)}}disconnected(){}reconnected(){}}/**
|
2044
2046
|
* @license
|
2045
2047
|
* Copyright 2020 Google LLC
|
2046
2048
|
* SPDX-License-Identifier: BSD-3-Clause
|
2047
|
-
*/const
|
2049
|
+
*/const Jm=()=>new eI;class eI{}const El=new WeakMap,$m=dr(class extends Km{render(t){return Y}update(t,[e]){var n;const r=e!==this.U;return r&&this.U!==void 0&&this.nt(void 0),(r||this.rt!==this.lt)&&(this.U=e,this.ht=(n=t.options)===null||n===void 0?void 0:n.host,this.nt(this.lt=t.element)),Y}nt(t){typeof this.U=="function"?(El.get(this.U)!==void 0&&this.U.call(this.ht,void 0),El.set(this.U,t),t!==void 0&&this.U.call(this.ht,t)):this.U.value=t}get rt(){var t;return typeof this.U=="function"?El.get(this.U):(t=this.U)===null||t===void 0?void 0:t.value}disconnected(){this.rt===this.lt&&this.nt(void 0)}reconnected(){this.nt(this.lt)}});/**
|
2048
2050
|
* @license
|
2049
2051
|
* Copyright 2018 Google LLC
|
2050
2052
|
* SPDX-License-Identifier: BSD-3-Clause
|
2051
|
-
*/const
|
2053
|
+
*/const tI={},nI=dr(class extends Bi{constructor(){super(...arguments),this.ot=tI}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.ot)&&this.ot.length===e.length&&e.every((r,i)=>r===this.ot[i]))return ye}else if(this.ot===e)return ye;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class rI extends Nt{constructor(){super();this.inputRef=Jm(),this.genomeSpy=void 0,this.getDefaultValue=()=>"",this._keyListener=this._onKeyDown.bind(this),this._documentClickListener=e=>{var n;e.target!==this._inputField&&((n=this._inputField)==null||n.blur())},this._focused=!1}get _inputField(){return this.inputRef.value}static get properties(){return{genomeSpy:{type:Object}}}connectedCallback(){super.connectedCallback(),this._initializeGenome(),document.addEventListener("keydown",this._keyListener),document.addEventListener("click",this._documentClickListener)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this._keyListener),document.removeEventListener("click",this._documentClickListener)}createRenderRoot(){return this}_onKeyDown(e){switch(e.code){case"KeyF":e.metaKey||e.altKey||e.ctrlKey||(e.preventDefault(),this.inputRef.value.focus());break}}_initializeGenome(){const e=e1(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",Lu(()=>this.requestUpdate(),60,!1)))}async searchViews(e){var r,i;const n=new Intl.Collator("en",{usage:"search",sensitivity:"base"});for(const o of this.genomeSpy.getSearchableViews()){const s=o.getAccessor("search"),a=o.getAccessor("x"),c=o.getAccessor("x2"),u=o.getScaleResolution("x");if(!(!a||!c||!(u==null?void 0:u.isZoomable()))){for(const f of(i=(r=o.getCollector())==null?void 0:r.getData())!=null?i:[])if(n.compare(s(f),e)===0){const l=Xi([a(f),c(f)],null,1.2);return await u.zoomTo(l),!0}}}return!1}async search(e){await(async()=>{if(this._genomeResolution&&this._genome){const r=this._genome.parseInterval(e);if(r){this._genomeResolution.zoomTo(r);return}if(await this.searchViews(e))return;this.genomeSpy.viewRoot.visit(i=>{i instanceof tm&&i.handleVerboseCommand(e)})}})(),this._inputField.value=this.getDefaultValue(),this.requestUpdate()}_onSearchHelpClicked(e){const n=e.target;n.tagName=="LI"&&this._doExampleSearch(n.innerText)}_onSearchFocused(e){const n=e.target;switch(e.type){case"focus":this._focused=!0,n.select();break;case"blur":this._focused=!1;break}}_onSearchKeyDown(e){const n=e.target;e.code=="Enter"?(e.preventDefault(),this.search(n.value).then(()=>{n.focus(),n.select()}).catch(r=>{console.log(r),alert(r)})):e.code=="Escape"?n.blur():e.stopPropagation()}_doExampleSearch(e){iI(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var n,r;const e=[];e.push(I`<p>Focus to a specific range. Examples:</p><ul><li>chr8:21,445,873-24,623,697</li><li>chr4:166,014,727-chr15:23,731,397</li></ul>`);for(const i of((n=this.genomeSpy)==null?void 0:n.getSearchableViews())||[]){const o=(r=i.spec.title)!=null?r:i.spec.name,s=i.getAccessor("search"),a=s.fields.join(", "),c=xp(3,i.getCollector().getData(),s);e.push(I`<p>Search <em>${o}</em> (${a}). Examples:</p><ul>${c.map(u=>I`<li>${u}</li>`)}</ul>`)}return I`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return I`<div class="search"><input type="text" class="search-input" .value="${this.getDefaultValue()}" @mousedown="${e=>{this._focused||(this._inputField.focus(),e.preventDefault(),e.stopPropagation())}}" @keydown="${this._onSearchKeyDown.bind(this)}" @focus="${this._onSearchFocused}" @blur="${this._onSearchFocused}" ${$m(this.inputRef)}> ${nI([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",rI);function iI(t,e){return new Promise(n=>{let r=0;const i=700/t.length+30;function o(){e.value=t.substring(0,r),r>=t.length?setTimeout(n,500):(r++,setTimeout(o,Math.random()*i*2))}o()})}function e1(t){let e;return t.visit(n=>{for(const r of["x","y"]){const i=n.resolutions.scale[r];if(i&&i.type=="locus"&&i.isZoomable())return e=i,Cn}}),e}var t1="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
|
2052
2054
|
* @license
|
2053
2055
|
* Copyright 2020 Google LLC
|
2054
2056
|
* SPDX-License-Identifier: BSD-3-Clause
|
2055
|
-
*/const
|
2057
|
+
*/const oI=dr(class extends Bi{constructor(t){if(super(t),t.type!==Lt.PROPERTY&&t.type!==Lt.ATTRIBUTE&&t.type!==Lt.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!qm(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===ye||e===Y)return e;const n=t.element,r=t.name;if(t.type===Lt.PROPERTY){if(e===n[r])return ye}else if(t.type===Lt.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return ye}else if(t.type===Lt.ATTRIBUTE&&n.getAttribute(r)===e+"")return ye;return Z6(t),e}});function n1(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function sI(t){if(!(t==null?void 0:t.length))throw new Error("Can't nest an empty array!");const e=r1(null);for(const n of t){if(!(n==null?void 0:n.length))throw new Error("Cannot nest, element has no path!");let r=e;for(const i of n){let o=r.children.find(s=>s.item===i);o||(o=r1(i),r.children.push(o)),r=o}}return e.children[0]}const r1=t=>({item:t,children:[]}),Sl=new Set;function Dl(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Sl)i.classList.remove("show"),document.body.classList.remove(yn);return Sl.clear(),t.stopPropagation(),r?(Sl.add(n),n.classList.add("show"),document.body.classList.add(yn),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(yn),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Cl={visibilities:{}},ji=Sm({name:"viewSettings",initialState:Cl,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Cl,setViewSettings:(t,e)=>T(T({},Cl),e.payload?e.payload:{})}});class aI extends Nt{constructor(){super();this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=ks(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(n1("app",e=>{this.app=e})),this.app.addInitializationListener(()=>{this.updateToggles(),this.requestUpdate(),this.style.display=this.nestedPaths.children.length?"block":"none"}),this.app.storeHelper.subscribe(this.sateWatcher)}disconnectedCallback(){this.app.storeHelper.unsubscribe(this.sateWatcher)}createRenderRoot(){return this}toolButtonClicked(e){Dl(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?ji.actions.setVisibility({name:n.name,visibility:r}):ji.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch(ji.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof Du)return ur;n.push(i)});const r=n.filter(i=>!(i instanceof Mu)&&TC(i.name)&&i1(i)).map(i=>[...i.getAncestors()].filter(o=>!(o instanceof Mu)).reverse());this.nestedPaths=sI(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=IC(n);var i=(s,a=!0)=>s.length?I`<ul class="${a?null:"unchecked"}">${s.map(o)}</ul>`:Y,o=s=>{var u,f;const a=s.item,c=(u=e[a.name])!=null?u:a.isVisibleInSpec();return I`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(a.name)||!i1(a)}" .checked="${oI(c)}" @change="${l=>this.handleCheckboxClick(l,a)}">${(f=a.spec.title)!=null?f:a.name}</label> ${i(s.children,c)}</li>`};return i(this.nestedPaths.children)}render(){const e=!Object.keys(this.getVisibilities()).length;return I`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${me(AM).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?I`<span class="disabled-item">Restore defaults</span>`:I`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():Y}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const i1=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof Li)};customElements.define("genome-spy-view-visibility",aI);class cI extends Nt{constructor(){super();this.provenance=void 0}connectedCallback(){super.connectedCallback(),this.provenance.storeHelper.subscribe(()=>{this.requestUpdate()})}disconnectedCallback(){super.disconnectedCallback()}createRenderRoot(){return this}render(){const e=(r,i)=>{var s,a;const o=this.provenance.getActionInfo(r);return o?I`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${me((s=o.icon)!=null?s:Sg).node[0]} ${(a=o.provenanceTitle)!=null?a:o.title}</a></li>`:Y},n=()=>I`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${Dl}">${me(cM).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return I`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${me(vM).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${me(mM).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",cI);/**
|
2056
2058
|
* @license
|
2057
2059
|
* Copyright 2021 Google LLC
|
2058
2060
|
* SPDX-License-Identifier: BSD-3-Clause
|
2059
|
-
*/class
|
2061
|
+
*/class uI{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class lI{constructor(){this.Y=void 0,this.q=void 0}get(){return this.Y}pause(){var e;(e=this.Y)!==null&&e!==void 0||(this.Y=new Promise(n=>this.q=n))}resume(){var e;(e=this.q)===null||e===void 0||e.call(this),this.Y=this.q=void 0}}/**
|
2060
2062
|
* @license
|
2061
2063
|
* Copyright 2017 Google LLC
|
2062
2064
|
* SPDX-License-Identifier: BSD-3-Clause
|
2063
|
-
*/const r1=t=>!R6(t)&&typeof t.then=="function";class tI extends qm{constructor(){super(...arguments),this._$Cft=1073741823,this._$Cwt=[],this._$CG=new $6(this),this._$CK=new eI}render(...e){var n;return(n=e.find(r=>!r1(r)))!==null&&n!==void 0?n:ye}update(e,n){const r=this._$Cwt;let i=r.length;this._$Cwt=n;const o=this._$CG,s=this._$CK;this.isConnected||this.disconnected();for(let a=0;a<n.length&&!(a>this._$Cft);a++){const c=n[a];if(!r1(c))return this._$Cft=a,c;a<i&&c===r[a]||(this._$Cft=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;s.get();)await s.get();const f=o.deref();if(f!==void 0){const l=f._$Cwt.indexOf(c);l>-1&&l<f._$Cft&&(f._$Cft=l,f.setValue(u))}}))}return ye}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const nI=pr(tI);var Cl={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function s(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var a={compressToBase64:function(c){if(c==null)return"";var u=a._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:a._decompress(c.length,32,function(u){return s(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":a._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:a._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=a.compress(c),f=new Uint8Array(u.length*2),l=0,h=u.length;l<h;l++){var d=u.charCodeAt(l);f[l*2]=d>>>8,f[l*2+1]=d%256}return f},decompressFromUint8Array:function(c){if(c==null)return a.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var h=[];return u.forEach(function(d){h.push(n(d))}),a.decompress(h.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":a._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),a._decompress(c.length,32,function(u){return s(i,c.charAt(u))}))},compress:function(c){return a._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,h,d={},p={},g="",m="",y="",w=2,x=3,E=2,b=[],A=0,v=0,D;for(D=0;D<c.length;D+=1)if(g=c.charAt(D),Object.prototype.hasOwnProperty.call(d,g)||(d[g]=x++,p[g]=!0),m=y+g,Object.prototype.hasOwnProperty.call(d,m))y=m;else{if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<E;l++)A=A<<1,v==u-1?(v=0,b.push(f(A)),A=0):v++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=h>>1}else{for(h=1,l=0;l<E;l++)A=A<<1|h,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=h>>1}w--,w==0&&(w=Math.pow(2,E),E++),delete p[y]}else for(h=d[y],l=0;l<E;l++)A=A<<1|h&1,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=h>>1;w--,w==0&&(w=Math.pow(2,E),E++),d[m]=x++,y=String(g)}if(y!==""){if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<E;l++)A=A<<1,v==u-1?(v=0,b.push(f(A)),A=0):v++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=h>>1}else{for(h=1,l=0;l<E;l++)A=A<<1|h,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=h>>1}w--,w==0&&(w=Math.pow(2,E),E++),delete p[y]}else for(h=d[y],l=0;l<E;l++)A=A<<1|h&1,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=h>>1;w--,w==0&&(w=Math.pow(2,E),E++)}for(h=2,l=0;l<E;l++)A=A<<1|h&1,v==u-1?(v=0,b.push(f(A)),A=0):v++,h=h>>1;for(;;)if(A=A<<1,v==u-1){b.push(f(A));break}else v++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:a._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],h=4,d=4,p=3,g="",m=[],y,w,x,E,b,A,v,D={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(x=0,b=Math.pow(2,2),A=1;A!=b;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),x|=(E>0?1:0)*A,A<<=1;switch(x){case 0:for(x=0,b=Math.pow(2,8),A=1;A!=b;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),x|=(E>0?1:0)*A,A<<=1;v=n(x);break;case 1:for(x=0,b=Math.pow(2,16),A=1;A!=b;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),x|=(E>0?1:0)*A,A<<=1;v=n(x);break;case 2:return""}for(l[3]=v,w=v,m.push(v);;){if(D.index>c)return"";for(x=0,b=Math.pow(2,p),A=1;A!=b;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),x|=(E>0?1:0)*A,A<<=1;switch(v=x){case 0:for(x=0,b=Math.pow(2,8),A=1;A!=b;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),x|=(E>0?1:0)*A,A<<=1;l[d++]=n(x),v=d-1,h--;break;case 1:for(x=0,b=Math.pow(2,16),A=1;A!=b;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),x|=(E>0?1:0)*A,A<<=1;l[d++]=n(x),v=d-1,h--;break;case 2:return m.join("")}if(h==0&&(h=Math.pow(2,p),p++),l[v])g=l[v];else if(v===d)g=w+w.charAt(0);else return null;m.push(g),l[d++]=w+g.charAt(0),h--,w=g,h==0&&(h=Math.pow(2,p),p++)}}};return a}();t!=null&&(t.exports=e)})(Cl);function rI(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Bs;function iI(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function oI(t){Bs!=null||(Bs=iI());let e=0^-1;const n=rI().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Bs[(e^n[r])&255];return(e^-1)>>>0}function i1(t){return("00000000"+oI(t).toString(16)).slice(-8)}function o1(t){const e=Cl.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+i1(e)}function sI(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(i1(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Cl.exports.decompressFromEncodedURIComponent(e))}var aI={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function s1(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function Ui(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Ml(t,e){var n,r,i,o,s,a=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function h(p){var g=aI[p[1]||""],m=c[c.length-1]==p;return g?g[1]?(m?c.pop():c.push(p),g[0|m]):g[0]:p}function d(){for(var p="";c.length;)p+=h(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,g,m){return f[g.toLowerCase()]=m,""}).replace(/^\n+|\n+$/g,"");i=a.exec(t);)r=t.substring(l,i.index),l=a.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((s=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+s1(Ui(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Ml(s1(i[5].replace(/^\s*[>*+.-]/gm,""))),s==">"?s="blockquote":(s=s.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+s+">"+o+"</"+s+">"):i[8]?n='<img src="'+Ui(i[8])+'" alt="'+Ui(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+Ui(i[11]||f[r.toLowerCase()])+'">'),n=d()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(s="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Ml(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+Ui(i[16])+"</code>":(i[17]||i[1])&&(n=h(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+d()).replace(/^\n+|\n+$/g,"")}function cI(t){const e=Ml(t),n=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${e}</div></body></html>`,"text/html");n.normalize(),a1(n.body);const r=n.body.removeChild(n.querySelector("body > div"));return r.className="snarkdown",r}function a1(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)a1(t.childNodes[e])}}async function c1(t,e){var n,r;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(Ri.actions.setViewSettings(t.viewSettings));const i=[];for(const[o,s]of Object.entries((n=t.scaleDomains)!=null?n:{})){const a=e.genomeSpy.getNamedScaleResolutions().get(o);a?i.push(a.zoomTo(s)):console.warn(`Cannot restore scale domain. Unknown name: ${o}`)}await Promise.all(i),((r=t.notes)==null?void 0:r.length)&&rt(cI(t.notes),t.name)}catch(i){console.error(i),rt(I`<p>Cannot restore the state:</p><p>${i}</p>`),e.provenance.activateState(0)}}class uI extends Tt{constructor(){super();this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(e1("app",e=>{this.app=e}))}createRenderRoot(){return this}async _addBookmark(e){var f,l;const n=e?await this.app.bookmarkDatabase.get(e):void 0,r=!!n,i=n?U(T({},n),{timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}}):{name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},o=this.app.storeHelper.state.viewSettings;Object.keys(o.visibilities).length&&(i.viewSettings=o);for(const[h,d]of this.app.genomeSpy.getNamedScaleResolutions().entries())d.isZoomable()&&(i.scaleDomains[h]=d.getComplexDomain());const s=()=>!!i.name,a=xs(),c=async()=>{if(!s()){rt("Name is missing!","Error");return}if(!(await this.app.bookmarkDatabase.get(i.name)&&!(r&&i.name==n.name)&&!await rt(I`A bookmark with the name <em>${i.name}</em> already exists. It will be overwritten.`,"Bookmark already exists",!0)))try{await this.app.bookmarkDatabase.put(i,n),a.close(),this.requestUpdate()}catch(h){rt(""+h,"Cannot save the bookmark!")}},u=I`<div class="modal-title">${r?"Edit bookmark":"Add bookmark"}</div><div class="modal-body" style="width:500px">${r?I`<div class="gs-alert warning">${me(eM).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:Y}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" required .value="${(f=i.name)!=null?f:""}" @change="${h=>{i.name=h.target.value}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=i.notes)!=null?l:""}" @change="${h=>{i.notes=h.target.value.trim()}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn-cancel" @click="${()=>a.close()}">Cancel</button> <button class="btn-primary" @click="${c}">Save</button></div>`;$e(u,a.content),a.content.querySelector("#bookmark-title").focus()}async _loadBookmark(e){const n=await this.app.bookmarkDatabase.get(e);n&&c1(n,this.app)}_createContextMenu(e,n){n.stopPropagation(),qu({items:[{label:"Edit and replace...",icon:iM,callback:()=>this._addBookmark(e)},{label:"Delete",icon:lM,callback:()=>rt(I`The bookmark <em>${e}</em> will be deleted.`,"Are you sure?",!0).then(async r=>{r&&(await this.app.bookmarkDatabase.delete(e),this.requestUpdate())})},{label:"Share...",icon:aM,callback:()=>this._showShareDialog(e)}]},n)}_getBookmarks(){return nI(this.app.bookmarkDatabase.getNames().then(e=>{const n=e.map(r=>I`<li><a @click="${()=>this._loadBookmark(r)}">${r}</a> <a class="menu-ellipsis" @click="${i=>this._createContextMenu(r,i)}">${me($C).node[0]}</a></li>`);return n.length?[I`<div class="menu-divider"></div>`,...n]:Y}),I`Loading...`)}render(){return this.app.bookmarkDatabase?I`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${Sl}">${me(ZC).node[0]}</button><ul class="gs-dropdown-menu"><li><a @click="${()=>this._addBookmark()}">Add bookmark...</a></li>${this._getBookmarks()}</ul></div>`:Y}async _showShareDialog(e){const n=await this.app.bookmarkDatabase.get(e),r=JSON.stringify(n,void 0,2),i=window.location,o=i.origin+i.pathname+i.search+o1(n);rt(I`<div style="width:600px"><div class="gs-form-group"><label for="bookmark-url">URL</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${o}"> <button @click="${a=>navigator.clipboard.writeText(o).then(()=>a.target.dispatchEvent(YM())).catch(()=>rt("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the URL is opened.</small></div><div class="gs-form-group"><label for="bookmark-json">JSON</label> <textarea id="bookmark-json" style="height:250px">
|
2064
|
-
${r}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div>`,"Share a bookmark")}}customElements.define("genome-spy-bookmark-button",uI);class lI extends Tt{constructor(){super();this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(I`<genome-spy-provenance-buttons .provenance="${n}">`),r.push(I`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(I`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${me(qC).node[0]}</button>`),this.app.bookmarkDatabase&&r.push(I`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?Ye(this.app.config.description):[];return i.length>1&&r.push(I`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>rt(I`${i.slice(1).map(o=>I`<p>${o}</p>`)}`,i[0])}">${me(nM).node[0]}</button>`),i.length>0&&r.push(I`<span class="vis-title">${i[0]}</span>`),r.push(I`<span class="spacer"></span> <button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${me(tM).node[0]}</button> <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${me(oM).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return I`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${$m}"></a><div class="title"><span>GenomeSpy</span></div>${this.appInitialized&&Jm(e.viewRoot)?I`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:Y} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",lI);class fI{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(s=>o.type.startsWith(s)),i=(o,s)=>r(s)?s:o!=null?o:null;this._reducer=g8(hl(U(T({},this._reducers),{lastAction:i})),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[tn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(tn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(tn.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(tn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(tn.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*hI(t,e=n=>+n){const n=t.length,r=new Li,i=new Array(n).fill(0);for(const[s,a]of t.entries())a.length&&r.push(s,e(a[0]));let o=0;for(;(o=r.pop())!==void 0;){const s=t[o];let a=i[o];if(yield s[a++],a<s.length){const u=e(s[a]);r.push(o,u),i[o]=a}}}const dI="sampleCount";class pI extends ie{constructor(e,n){super();this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof gl&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(pl(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.parent.getEncoding().x;if(wn(e))this.xAccessor=X(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ni)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[wr]),super.complete()}_mergeAndPropagate(e){const n=[...zm(e.rootGroup)].filter(r=>Fm(he(r)));for(const[r,i]of n.entries()){const o=he(i);if(Fm(o)){this.contextObject[dI]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=hI(s.map(u=>{var f;return(f=a.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Oe&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var gI="BATCHING_REDUCER.BATCH";function mI(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gI;return{type:e,meta:{batch:!0},payload:t}}function yI(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class AI{constructor(e){this._reducers=e!=null?e:{},this.store=$8({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(yI(hl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(mI(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}tg.mergeFacets=pI;class u1{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new AI,this.storeHelper.addReducer("viewSettings",Ri.reducer),this.provenance=new fI(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Zm(),this.appContainer=e,this._configureContainer(),this.bookmarkDatabase=typeof n.specId=="string"?new z6(n.specId):void 0,$e(I`<div class="genome-spy-app"><genome-spy-toolbar ${Km(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",a=>{a.detail.name=="app"&&(a.detail.setter(i),a.stopPropagation())});const o=a=>this.appContainer.getElementsByClassName(a)[0];this.genomeSpy=new gg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(D6,(a,c,u,f)=>new gl(a,c,u,f,this.provenance));const s=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=a=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[a.name])!=null?u:s(a)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var o;if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(Os(s=>{var a;return(a=s.viewSettings)==null?void 0:a.visibilities},(s,a)=>{var u,f;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(f=(u=this.getSampleView())==null?void 0:u.summaryViews)==null||f._invalidateCacheByPrefix("size","self");const c=this.genomeSpy.viewRoot.context;c.requestLayoutReflow(),c.animator.requestRender()},this.storeHelper.store.getState())),await this._restoreStateFromUrl(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const n=Nu(()=>this._updateStateToUrl(),500,!1);for(const[,s]of this.genomeSpy.getNamedScaleResolutions())s.isZoomable()&&s.addEventListener("domain",n);const r=this.toolbarRef.value;r.appInitialized=!0;const i=Ye((o=this.genomeSpy.spec.description)!=null?o:[]);this.isFullPage()&&i.length>0&&(document.title="GenomeSpy - "+i);for(const s of this._initializationListeners)s();this._initializationListeners=void 0}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();(n==null?void 0:n.length)&&(e.actions=n);for(const[o,s]of this.genomeSpy.getNamedScaleResolutions().entries())s.isZoomed()||(e.scaleDomains[o]=s.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);let i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?o1(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}_restoreStateFromUrl(){const e=window.location.hash;if(e&&e.length>0)try{const n=sI(e);return c1(n,this),!0}catch(n){console.error(n),rt(I`<p>Cannot restore the state:</p><p>${n}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",bI(VC)):this.appContainer.style.position="relative"}async updateConfig(e){throw new Error("Broken")}getSampleView(){var n;if(!((n=this.genomeSpy)==null?void 0:n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof gl)return e=r,Mn}),e}}function bI(t){let e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function xI(t,e,n={}){let r;if(se(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 o=Be(e)?e:await l1(e);o.baseUrl=o.baseUrl||"","width"in o||(o.width="container"),"padding"in o||(o.padding=10);const s=new u1(r,o,n);i=s.genomeSpy,vI(i,n),await s.launch()}catch(o){r.innerText=o.toString(),console.error(o)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(o,s){const a=i._eventListeners;let c=a.get(o);c||(c=new Set,a.set(o,c)),c.add(s)},removeEventListener(o,s){var c;(c=i._eventListeners.get(o))==null||c.delete(s)},getScaleResolutionByName(o){return i.getNamedScaleResolutions().get(o)}}}function vI(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function l1(t){let e;try{e=JSON.parse(await ao().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}re.GenomeSpy=gg,re.GenomeSpyApp=u1,re.embed=xI,re.html=I,re.icon=$m,re.loadSpec=l1,Object.defineProperty(re,"__esModule",{value:!0}),re[Symbol.toStringTag]="Module"});
|
2065
|
+
*/const o1=t=>!X6(t)&&typeof t.then=="function";class fI extends Km{constructor(){super(...arguments),this._$Cft=1073741823,this._$Cwt=[],this._$CG=new uI(this),this._$CK=new lI}render(...e){var n;return(n=e.find(r=>!o1(r)))!==null&&n!==void 0?n:ye}update(e,n){const r=this._$Cwt;let i=r.length;this._$Cwt=n;const o=this._$CG,s=this._$CK;this.isConnected||this.disconnected();for(let a=0;a<n.length&&!(a>this._$Cft);a++){const c=n[a];if(!o1(c))return this._$Cft=a,c;a<i&&c===r[a]||(this._$Cft=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;s.get();)await s.get();const f=o.deref();if(f!==void 0){const l=f._$Cwt.indexOf(c);l>-1&&l<f._$Cft&&(f._$Cft=l,f.setValue(u))}}))}return ye}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const hI=dr(fI);var Ml={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function s(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var a={compressToBase64:function(c){if(c==null)return"";var u=a._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:a._decompress(c.length,32,function(u){return s(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":a._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:a._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=a.compress(c),f=new Uint8Array(u.length*2),l=0,h=u.length;l<h;l++){var d=u.charCodeAt(l);f[l*2]=d>>>8,f[l*2+1]=d%256}return f},decompressFromUint8Array:function(c){if(c==null)return a.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var h=[];return u.forEach(function(d){h.push(n(d))}),a.decompress(h.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":a._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),a._decompress(c.length,32,function(u){return s(i,c.charAt(u))}))},compress:function(c){return a._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,h,d={},p={},g="",m="",y="",v=2,w=3,S=2,b=[],A=0,x=0,E;for(E=0;E<c.length;E+=1)if(g=c.charAt(E),Object.prototype.hasOwnProperty.call(d,g)||(d[g]=w++,p[g]=!0),m=y+g,Object.prototype.hasOwnProperty.call(d,m))y=m;else{if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<S;l++)A=A<<1,x==u-1?(x=0,b.push(f(A)),A=0):x++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1}v--,v==0&&(v=Math.pow(2,S),S++),delete p[y]}else for(h=d[y],l=0;l<S;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1;v--,v==0&&(v=Math.pow(2,S),S++),d[m]=w++,y=String(g)}if(y!==""){if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<S;l++)A=A<<1,x==u-1?(x=0,b.push(f(A)),A=0):x++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1}v--,v==0&&(v=Math.pow(2,S),S++),delete p[y]}else for(h=d[y],l=0;l<S;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1;v--,v==0&&(v=Math.pow(2,S),S++)}for(h=2,l=0;l<S;l++)A=A<<1|h&1,x==u-1?(x=0,b.push(f(A)),A=0):x++,h=h>>1;for(;;)if(A=A<<1,x==u-1){b.push(f(A));break}else x++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:a._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],h=4,d=4,p=3,g="",m=[],y,v,w,S,b,A,x,E={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(w=0,b=Math.pow(2,2),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(S>0?1:0)*A,A<<=1;switch(w){case 0:for(w=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(S>0?1:0)*A,A<<=1;x=n(w);break;case 1:for(w=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(S>0?1:0)*A,A<<=1;x=n(w);break;case 2:return""}for(l[3]=x,v=x,m.push(x);;){if(E.index>c)return"";for(w=0,b=Math.pow(2,p),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(S>0?1:0)*A,A<<=1;switch(x=w){case 0:for(w=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(S>0?1:0)*A,A<<=1;l[d++]=n(w),x=d-1,h--;break;case 1:for(w=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(S>0?1:0)*A,A<<=1;l[d++]=n(w),x=d-1,h--;break;case 2:return m.join("")}if(h==0&&(h=Math.pow(2,p),p++),l[x])g=l[x];else if(x===d)g=v+v.charAt(0);else return null;m.push(g),l[d++]=v+g.charAt(0),h--,v=g,h==0&&(h=Math.pow(2,p),p++)}}};return a}();t!=null&&(t.exports=e)})(Ml);function dI(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Fs;function pI(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function gI(t){Fs!=null||(Fs=pI());let e=0^-1;const n=dI().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Fs[(e^n[r])&255];return(e^-1)>>>0}function s1(t){return("00000000"+gI(t).toString(16)).slice(-8)}function a1(t){const e=Ml.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+s1(e)}function mI(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(s1(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Ml.exports.decompressFromEncodedURIComponent(e))}var yI={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function c1(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function Gi(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Il(t,e){var n,r,i,o,s,a=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function h(p){var g=yI[p[1]||""],m=c[c.length-1]==p;return g?g[1]?(m?c.pop():c.push(p),g[0|m]):g[0]:p}function d(){for(var p="";c.length;)p+=h(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,g,m){return f[g.toLowerCase()]=m,""}).replace(/^\n+|\n+$/g,"");i=a.exec(t);)r=t.substring(l,i.index),l=a.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((s=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+c1(Gi(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Il(c1(i[5].replace(/^\s*[>*+.-]/gm,""))),s==">"?s="blockquote":(s=s.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+s+">"+o+"</"+s+">"):i[8]?n='<img src="'+Gi(i[8])+'" alt="'+Gi(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+Gi(i[11]||f[r.toLowerCase()])+'">'),n=d()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(s="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Il(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+Gi(i[16])+"</code>":(i[17]||i[1])&&(n=h(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+d()).replace(/^\n+|\n+$/g,"")}function AI(t){const e=Il(t),n=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${e}</div></body></html>`,"text/html");n.normalize(),u1(n.body);const r=n.body.removeChild(n.querySelector("body > div"));return r.className="snarkdown",r}function u1(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)u1(t.childNodes[e])}}async function l1(t,e){var n,r;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(ji.actions.setViewSettings(t.viewSettings));const i=[];for(const[o,s]of Object.entries((n=t.scaleDomains)!=null?n:{})){const a=e.genomeSpy.getNamedScaleResolutions().get(o);a?i.push(a.zoomTo(s)):console.warn(`Cannot restore scale domain. Unknown name: ${o}`)}await Promise.all(i),((r=t.notes)==null?void 0:r.length)&&ot(AI(t.notes),t.name)}catch(i){console.error(i),ot(I`<p>Cannot restore the state:</p><p>${i}</p>`),e.provenance.activateState(0)}}class bI extends Nt{constructor(){super();this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(n1("app",e=>{this.app=e}))}createRenderRoot(){return this}async _addBookmark(e){var f,l;const n=e?await this.app.bookmarkDatabase.get(e):void 0,r=!!n,i=n?U(T({},n),{timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}}):{name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},o=this.app.storeHelper.state.viewSettings;Object.keys(o.visibilities).length&&(i.viewSettings=o);for(const[h,d]of this.app.genomeSpy.getNamedScaleResolutions().entries())d.isZoomable()&&(i.scaleDomains[h]=d.getComplexDomain());const s=()=>!!i.name,a=vs(),c=async()=>{if(!s()){ot("Name is missing!","Error");return}if(!(await this.app.bookmarkDatabase.get(i.name)&&!(r&&i.name==n.name)&&!await ot(I`A bookmark with the name <em>${i.name}</em> already exists. It will be overwritten.`,"Bookmark already exists",!0)))try{await this.app.bookmarkDatabase.put(i,n),a.close(),this.requestUpdate()}catch(h){ot(""+h,"Cannot save the bookmark!")}},u=I`<div class="modal-title">${r?"Edit bookmark":"Add bookmark"}</div><div class="modal-body" style="width:500px">${r?I`<div class="gs-alert warning">${me(lM).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:Y}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" required .value="${(f=i.name)!=null?f:""}" @change="${h=>{i.name=h.target.value}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=i.notes)!=null?l:""}" @change="${h=>{i.notes=h.target.value.trim()}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn-cancel" @click="${()=>a.close()}">Cancel</button> <button class="btn-primary" @click="${c}">Save</button></div>`;tt(u,a.content),a.content.querySelector("#bookmark-title").focus()}async _loadBookmark(e){const n=await this.app.bookmarkDatabase.get(e);n&&l1(n,this.app)}_createContextMenu(e,n){n.stopPropagation(),Zu({items:[{label:"Edit and replace...",icon:pM,callback:()=>this._addBookmark(e)},{label:"Delete",icon:xM,callback:()=>ot(I`The bookmark <em>${e}</em> will be deleted.`,"Are you sure?",!0).then(async r=>{r&&(await this.app.bookmarkDatabase.delete(e),this.requestUpdate())})},{label:"Share...",icon:yM,callback:()=>this._showShareDialog(e)}]},n)}_getBookmarks(){return hI(this.app.bookmarkDatabase.getNames().then(e=>{const n=e.map(r=>I`<li><a @click="${()=>this._loadBookmark(r)}">${r}</a> <a class="menu-ellipsis" @click="${i=>this._createContextMenu(r,i)}">${me(uM).node[0]}</a></li>`);return n.length?[I`<div class="menu-divider"></div>`,...n]:Y}),I`Loading...`)}render(){return this.app.bookmarkDatabase?I`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${Dl}">${me(sM).node[0]}</button><ul class="gs-dropdown-menu"><li><a @click="${()=>this._addBookmark()}">Add bookmark...</a></li>${this._getBookmarks()}</ul></div>`:Y}async _showShareDialog(e){const n=await this.app.bookmarkDatabase.get(e),r=JSON.stringify(n,void 0,2),i=window.location,o=i.origin+i.pathname+i.search+a1(n);ot(I`<div style="width:600px"><div class="gs-form-group"><label for="bookmark-url">URL</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${o}"> <button @click="${a=>navigator.clipboard.writeText(o).then(()=>a.target.dispatchEvent(n8())).catch(()=>ot("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the URL is opened.</small></div><div class="gs-form-group"><label for="bookmark-json">JSON</label> <textarea id="bookmark-json" style="height:250px">
|
2066
|
+
${r}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div>`,"Share a bookmark")}}customElements.define("genome-spy-bookmark-button",bI);class xI extends Nt{constructor(){super();this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(I`<genome-spy-provenance-buttons .provenance="${n}">`),r.push(I`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(I`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${me(oM).node[0]}</button>`),this.app.bookmarkDatabase&&r.push(I`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?Ye(this.app.config.description):[];return i.length>1&&r.push(I`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>ot(I`${i.slice(1).map(o=>I`<p>${o}</p>`)}`,i[0])}">${me(hM).node[0]}</button>`),i.length>0&&r.push(I`<span class="vis-title">${i[0]}</span>`),r.push(I`<span class="spacer"></span> <button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${me(fM).node[0]}</button> <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${me(gM).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return I`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${t1}"></a><div class="title"><span>GenomeSpy</span></div>${this.appInitialized&&e1(e.viewRoot)?I`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:Y} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",xI);class vI{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(s=>o.type.startsWith(s)),i=(o,s)=>r(s)?s:o!=null?o:null;this._reducer=D8(dl(U(T({},this._reducers),{lastAction:i})),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[tn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(tn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(tn.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(tn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(tn.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*wI(t,e=n=>+n){const n=t.length,r=new ki,i=new Array(n).fill(0);for(const[s,a]of t.entries())a.length&&r.push(s,e(a[0]));let o=0;for(;(o=r.pop())!==void 0;){const s=t[o];let a=i[o];if(yield s[a++],a<s.length){const u=e(s[a]);r.push(o,u),i[o]=a}}}const EI="sampleCount";class SI extends oe{constructor(e,n){super();this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof ml&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(gl(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.parent.getEncoding().x;if(vn(e))this.xAccessor=X(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Oi)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[vr]),super.complete()}_mergeAndPropagate(e){const n=[...Um(e.rootGroup)].filter(r=>zm(he(r)));for(const[r,i]of n.entries()){const o=he(i);if(zm(o)){this.contextObject[EI]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=wI(s.map(u=>{var f;return(f=a.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Oe&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var DI="BATCHING_REDUCER.BATCH";function CI(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:DI;return{type:e,meta:{batch:!0},payload:t}}function MI(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class II{constructor(e){this._reducers=e!=null?e:{},this.store=u6({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(MI(dl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(CI(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}ig.mergeFacets=SI;class f1{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new II,this.storeHelper.addReducer("viewSettings",ji.reducer),this.provenance=new vI(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Jm(),this.appContainer=e,this._configureContainer(),this.bookmarkDatabase=typeof n.specId=="string"?new W6(n.specId):void 0,tt(I`<div class="genome-spy-app"><genome-spy-toolbar ${$m(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",a=>{a.detail.name=="app"&&(a.detail.setter(i),a.stopPropagation())});const o=a=>this.appContainer.getElementsByClassName(a)[0];this.genomeSpy=new yg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(F6,(a,c,u,f)=>new ml(a,c,u,f,this.provenance));const s=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=a=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[a.name])!=null?u:s(a)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var o;if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(ks(s=>{var a;return(a=s.viewSettings)==null?void 0:a.visibilities},(s,a)=>{var u,f;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(f=(u=this.getSampleView())==null?void 0:u.summaryViews)==null||f._invalidateCacheByPrefix("size","self");const c=this.genomeSpy.viewRoot.context;c.requestLayoutReflow(),c.animator.requestRender()},this.storeHelper.store.getState())),await this._restoreStateFromUrl(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const n=Lu(()=>this._updateStateToUrl(),500,!1);for(const[,s]of this.genomeSpy.getNamedScaleResolutions())s.isZoomable()&&s.addEventListener("domain",n);const r=this.toolbarRef.value;r.appInitialized=!0;const i=Ye((o=this.genomeSpy.spec.description)!=null?o:[]);this.isFullPage()&&i.length>0&&(document.title="GenomeSpy - "+i);for(const s of this._initializationListeners)s();this._initializationListeners=void 0}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();(n==null?void 0:n.length)&&(e.actions=n);for(const[o,s]of this.genomeSpy.getNamedScaleResolutions().entries())s.isZoomed()||(e.scaleDomains[o]=s.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);let i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?a1(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}_restoreStateFromUrl(){const e=window.location.hash;if(e&&e.length>0)try{const n=mI(e);return l1(n,this),!0}catch(n){console.error(n),ot(I`<p>Cannot restore the state:</p><p>${n}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",TI(eM)):this.appContainer.style.position="relative"}async updateConfig(e){throw new Error("Broken")}getSampleView(){var n;if(!((n=this.genomeSpy)==null?void 0:n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof ml)return e=r,Cn}),e}}function TI(t){let e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function NI(t,e,n={}){var o,s,a;let r;if(ie(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 c=Be(e)?e:await h1(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(s=c.width)!=null||(c.width="container"),(a=c.padding)!=null||(c.padding=10);const u=new f1(r,c,n);i=u.genomeSpy,LI(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function LI(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function h1(t){let e;try{e=JSON.parse(await lo().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}re.GenomeSpy=yg,re.GenomeSpyApp=f1,re.embed=NI,re.html=I,re.icon=t1,re.loadSpec=h1,Object.defineProperty(re,"__esModule",{value:!0}),re[Symbol.toStringTag]="Module"});
|