@genome-spy/app 0.18.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- var dT=Object.defineProperty,pT=Object.defineProperties;var gT=Object.getOwnPropertyDescriptors;var ta=Object.getOwnPropertySymbols;var uy=Object.prototype.hasOwnProperty,ly=Object.prototype.propertyIsEnumerable;var cy=(Y,q,be)=>q in Y?dT(Y,q,{enumerable:!0,configurable:!0,writable:!0,value:be}):Y[q]=be,T=(Y,q)=>{for(var be in q||(q={}))uy.call(q,be)&&cy(Y,be,q[be]);if(ta)for(var be of ta(q))ly.call(q,be)&&cy(Y,be,q[be]);return Y},F=(Y,q)=>pT(Y,gT(q));var fy=(Y,q)=>{var be={};for(var Ve in Y)uy.call(Y,Ve)&&q.indexOf(Ve)<0&&(be[Ve]=Y[Ve]);if(Y!=null&&ta)for(var Ve of ta(Y))q.indexOf(Ve)<0&&ly.call(Y,Ve)&&(be[Ve]=Y[Ve]);return be};(function(Y,q){typeof exports=="object"&&typeof module!="undefined"?q(exports):typeof define=="function"&&define.amd?define(["exports"],q):(Y=typeof globalThis!="undefined"?globalThis:Y||self,q(Y.genomeSpyApp={}))})(this,function(Y){"use strict";function q(t,e,n){return t.fields=e||[],t.fname=n,t}function be(t){return t==null?null:t.fname}function Ve(t){return t==null?null:t.fields}function hy(t){return t.length===1?dy(t[0]):py(t)}const dy=t=>function(e){return e[t]},py=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function re(t){throw Error(t)}function gy(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||re("Access path missing open bracket: "+t),i>0&&u(),i=0,s=a+1)}return i&&re("Access path missing closing bracket: "+t),r&&re("Access path missing closing quote: "+t),a>s&&(a++,u()),e}function no(t,e,n){const r=gy(t);return t=r.length===1?r[0]:t,q((n&&n.get||hy)(r),[t],e||t)}no("id");const ro=q(t=>t,[],"identity");q(()=>0,[],"zero"),q(()=>1,[],"one"),q(()=>!0,[],"true"),q(()=>!1,[],"false");var _e=Array.isArray;function ze(t){return t===Object(t)}function et(t){return t[t.length-1]}function Ir(t){return t==null||t===""?null:+t}const tf=t=>e=>t*Math.exp(e),nf=t=>e=>Math.log(t*e),my=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),yy=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,io=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function na(t,e,n,r){const i=n(t[0]),o=n(et(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function Ay(t,e){return na(t,e,Ir,ro)}function by(t,e){var n=Math.sign(t[0]);return na(t,e,nf(n),tf(n))}function xy(t,e,n){return na(t,e,io(n),io(1/n))}function oo(t,e,n,r,i){const o=r(t[0]),s=r(et(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function so(t,e,n){return oo(t,e,n,Ir,ro)}function rf(t,e,n){const r=Math.sign(t[0]);return oo(t,e,n,nf(r),tf(r))}function ra(t,e,n,r){return oo(t,e,n,io(r),io(1/r))}function vy(t,e,n,r){return oo(t,e,n,my(r),yy(r))}function ia(t){return t!=null?_e(t)?t:[t]:[]}function wy(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 Te(t){return typeof t=="function"}const Ey="descending";function of(t,e,n){n=n||{},e=ia(e)||[];const r=[],i=[],o={},s=n.comparator||Sy;return ia(t).forEach((a,c)=>{a!=null&&(r.push(e[c]===Ey?-1:1),i.push(a=Te(a)?a:no(a,null,n)),(Ve(a)||[]).forEach(u=>o[u]=1))}),i.length===0?null:q(s(i,r),Object.keys(o))}const sf=(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),Sy=(t,e)=>t.length===1?Cy(t[0],e[0]):Dy(t,e,t.length),Cy=(t,e)=>function(n,r){return sf(t(n),t(r))*e},Dy=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=sf(o(r),o(i));return s*e[a]});function My(t){return Te(t)?t:()=>t}function oa(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 Iy=Object.prototype.hasOwnProperty;function dn(t,e){return Iy.call(t,e)}function ao(t){return typeof t=="boolean"}function Ty(t){return Object.prototype.toString.call(t)==="[object Date]"}function Ny(t){return t&&Te(t[Symbol.iterator])}function ae(t){return typeof t=="number"}function oe(t){return typeof t=="string"}function Ly(t,e){const n=t[0],r=et(t),i=+e;return i?i===1?r:n+i*(r-n):n}function co(t){return t&&et(t)-t[0]||0}function uo(t){return _e(t)?"["+t.map(uo)+"]":ze(t)||oe(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function ky(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const Oy=t=>ae(t)||Ty(t)?t:Date.parse(t);function By(t,e){return e=e||Oy,t==null||t===""?null:e(t)}function Py(t){return t==null||t===""?null:t+""}function lo(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var af={},sa={},aa=34,Tr=10,ca=13;function cf(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Fy(t,e){var n=cf(t);return function(r,i){return e(n(r),i,t)}}function uf(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 Ne(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function zy(t){return t<0?"-"+Ne(-t,6):t>9999?"+"+Ne(t,6):Ne(t,4)}function Ry(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":zy(t.getUTCFullYear())+"-"+Ne(t.getUTCMonth()+1,2)+"-"+Ne(t.getUTCDate(),2)+(i?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"."+Ne(i,3)+"Z":r?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"Z":n||e?"T"+Ne(e,2)+":"+Ne(n,2)+"Z":"")}function lf(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?Fy(m,h):cf(m)});return g.columns=p||[],g}function i(l,h){var d=[],p=l.length,g=0,m=0,y,x=p<=0,v=!1;l.charCodeAt(p-1)===Tr&&--p,l.charCodeAt(p-1)===ca&&--p;function S(){if(x)return sa;if(v)return v=!1,af;var A,w=g,E;if(l.charCodeAt(w)===aa){for(;g++<p&&l.charCodeAt(g)!==aa||l.charCodeAt(++g)===aa;);return(A=g)>=p?x=!0:(E=l.charCodeAt(g++))===Tr?v=!0:E===ca&&(v=!0,l.charCodeAt(g)===Tr&&++g),l.slice(w+1,A-1).replace(/""/g,'"')}for(;g<p;){if((E=l.charCodeAt(A=g++))===Tr)v=!0;else if(E===ca)v=!0,l.charCodeAt(g)===Tr&&++g;else if(E!==n)continue;return l.slice(w,A)}return x=!0,l.slice(w,p)}for(;(y=S())!==sa;){for(var b=[];y!==af&&y!==sa;)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=uf(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
- `)}function a(l,h){return h==null&&(h=uf(l)),o(l,h).join(`
1
+ var aT=Object.defineProperty,cT=Object.defineProperties;var uT=Object.getOwnPropertyDescriptors;var Ks=Object.getOwnPropertySymbols;var O1=Object.prototype.hasOwnProperty,P1=Object.prototype.propertyIsEnumerable;var L1=(Y,_,Ae)=>_ in Y?aT(Y,_,{enumerable:!0,configurable:!0,writable:!0,value:Ae}):Y[_]=Ae,T=(Y,_)=>{for(var Ae in _||(_={}))O1.call(_,Ae)&&L1(Y,Ae,_[Ae]);if(Ks)for(var Ae of Ks(_))P1.call(_,Ae)&&L1(Y,Ae,_[Ae]);return Y},F=(Y,_)=>cT(Y,uT(_));var F1=(Y,_)=>{var Ae={};for(var He in Y)O1.call(Y,He)&&_.indexOf(He)<0&&(Ae[He]=Y[He]);if(Y!=null&&Ks)for(var He of Ks(Y))_.indexOf(He)<0&&P1.call(Y,He)&&(Ae[He]=Y[He]);return Ae};(function(Y,_){typeof exports=="object"&&typeof module!="undefined"?_(exports):typeof define=="function"&&define.amd?define(["exports"],_):(Y=typeof globalThis!="undefined"?globalThis:Y||self,_(Y.genomeSpyApp={}))})(this,function(Y){"use strict";function _(t,e,n){return t.fields=e||[],t.fname=n,t}function Ae(t){return t==null?null:t.fname}function He(t){return t==null?null:t.fields}function z1(t){return t.length===1?R1(t[0]):j1(t)}const R1=t=>function(e){return e[t]},j1=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function re(t){throw Error(t)}function U1(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||re("Access path missing open bracket: "+t),i>0&&u(),i=0,s=a+1)}return i&&re("Access path missing closing bracket: "+t),r&&re("Access path missing closing quote: "+t),a>s&&(a++,u()),e}function ro(t,e,n){const r=U1(t);return t=r.length===1?r[0]:t,_((n&&n.get||z1)(r),[t],e||t)}ro("id");const io=_(t=>t,[],"identity");_(()=>0,[],"zero"),_(()=>1,[],"one"),_(()=>!0,[],"true"),_(()=>!1,[],"false");var Qe=Array.isArray;function Pe(t){return t===Object(t)}function Je(t){return t[t.length-1]}function Br(t){return t==null||t===""?null:+t}const Ul=t=>e=>t*Math.exp(e),Gl=t=>e=>Math.log(t*e),G1=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),H1=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,oo=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function Js(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 Q1(t,e){return Js(t,e,Br,io)}function V1(t,e){var n=Math.sign(t[0]);return Js(t,e,Gl(n),Ul(n))}function Y1(t,e,n){return Js(t,e,oo(n),oo(1/n))}function so(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 ao(t,e,n){return so(t,e,n,Br,io)}function Hl(t,e,n){const r=Math.sign(t[0]);return so(t,e,n,Gl(r),Ul(r))}function $s(t,e,n,r){return so(t,e,n,oo(r),oo(1/r))}function W1(t,e,n,r){return so(t,e,n,G1(r),H1(r))}function ea(t){return t!=null?Qe(t)?t:[t]:[]}function _1(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 Te(t){return typeof t=="function"}const X1="descending";function Ql(t,e,n){n=n||{},e=ea(e)||[];const r=[],i=[],o={},s=n.comparator||Z1;return ea(t).forEach((a,c)=>{a!=null&&(r.push(e[c]===X1?-1:1),i.push(a=Te(a)?a:ro(a,null,n)),(He(a)||[]).forEach(u=>o[u]=1))}),i.length===0?null:_(s(i,r),Object.keys(o))}const Vl=(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),Z1=(t,e)=>t.length===1?q1(t[0],e[0]):K1(t,e,t.length),q1=(t,e)=>function(n,r){return Vl(t(n),t(r))*e},K1=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=Vl(o(r),o(i));return s*e[a]});function J1(t){return Te(t)?t:()=>t}function ta(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 $1=Object.prototype.hasOwnProperty;function hn(t,e){return $1.call(t,e)}function co(t){return typeof t=="boolean"}function ey(t){return Object.prototype.toString.call(t)==="[object Date]"}function ty(t){return t&&Te(t[Symbol.iterator])}function se(t){return typeof t=="number"}function ie(t){return typeof t=="string"}function ny(t,e){const n=t[0],r=Je(t),i=+e;return i?i===1?r:n+i*(r-n):n}function uo(t){return t&&Je(t)-t[0]||0}function lo(t){return Qe(t)?"["+t.map(lo)+"]":Pe(t)||ie(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function ry(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const iy=t=>se(t)||ey(t)?t:Date.parse(t);function oy(t,e){return e=e||iy,t==null||t===""?null:e(t)}function sy(t){return t==null||t===""?null:t+""}function fo(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var Yl={},na={},ra=34,Lr=10,ia=13;function Wl(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function ay(t,e){var n=Wl(t);return function(r,i){return e(n(r),i,t)}}function _l(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 Ie(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function cy(t){return t<0?"-"+Ie(-t,6):t>9999?"+"+Ie(t,6):Ie(t,4)}function uy(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":cy(t.getUTCFullYear())+"-"+Ie(t.getUTCMonth()+1,2)+"-"+Ie(t.getUTCDate(),2)+(i?"T"+Ie(e,2)+":"+Ie(n,2)+":"+Ie(r,2)+"."+Ie(i,3)+"Z":r?"T"+Ie(e,2)+":"+Ie(n,2)+":"+Ie(r,2)+"Z":n||e?"T"+Ie(e,2)+":"+Ie(n,2)+"Z":"")}function Xl(t){var e=new RegExp('["'+t+`
2
+ \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(m,y){if(p)return p(m,y-1);d=m,p=h?ay(m,h):Wl(m)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,m=0,y,v=d<=0,w=!1;l.charCodeAt(d-1)===Lr&&--d,l.charCodeAt(d-1)===ia&&--d;function C(){if(v)return na;if(w)return w=!1,Yl;var A,x=g,E;if(l.charCodeAt(x)===ra){for(;g++<d&&l.charCodeAt(g)!==ra||l.charCodeAt(++g)===ra;);return(A=g)>=d?v=!0:(E=l.charCodeAt(g++))===Lr?w=!0:E===ia&&(w=!0,l.charCodeAt(g)===Lr&&++g),l.slice(x+1,A-1).replace(/""/g,'"')}for(;g<d;){if((E=l.charCodeAt(A=g++))===Lr)w=!0;else if(E===ia)w=!0,l.charCodeAt(g)===Lr&&++g;else if(E!==n)continue;return l.slice(x,A)}return v=!0,l.slice(x,d)}for(;(y=C())!==na;){for(var b=[];y!==Yl&&y!==na;)b.push(y),y=C();h&&(b=h(b,m++))==null||p.push(b)}return p}function o(l,h){return l.map(function(p){return h.map(function(d){return f(p[d])}).join(t)})}function s(l,h){return h==null&&(h=_l(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
+ `)}function a(l,h){return h==null&&(h=_l(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?Ry(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var Uy=lf(" "),jy=Uy.parseRows;function Gy(t){return t}function Hy(t){if(t==null)return Gy;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 Qy(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Vy(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return ff(t,n)})}:ff(t,e)}function ff(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=hf(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 hf(t,e){var n=Hy(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&&Qy(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 _y(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 Yy(t){return hf(t,Wy.apply(this,arguments))}function Wy(t,e,n){var r,i,o;if(arguments.length>1)r=Xy(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:_y(t,r)}}function Xy(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 jn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function ua(t){let e=t,n=t;t.length===1&&(e=(s,a)=>t(s)-a,n=qy(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 qy(t){return(e,n)=>jn(t(e),n)}function df(t){return t===null?NaN:+t}const la=ua(jn).right;ua(df).center;var Nr=la;class Zy extends Map{constructor(e,n=$y){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(Ky(this,e),n)}delete(e){return super.delete(Jy(this,e))}}function pf({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Ky({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Jy({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(n),t.delete(r)),n}function $y(t){return t!==null&&typeof t=="object"?t.valueOf():t}function gf(t){return t}function eA(t,...e){return tA(t,gf,gf,e)}function tA(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Zy,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 nA(t,e){return Array.from(e,n=>t[n])}function rA(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n=jn]=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=jn(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>jn(n[i],n[o]))),nA(t,r)}return t.sort(n)}var fa=Math.sqrt(50),ha=Math.sqrt(10),da=Math.sqrt(2);function pa(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=mf(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 mf(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>=fa?10:o>=ha?5:o>=da?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=fa?10:o>=ha?5:o>=da?2:1)}function fo(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>=fa?i*=10:o>=ha?i*=5:o>=da&&(i*=2),e<t?-i:i}function yf(t,e,n=df){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 iA(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function po(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 Gn(t){return t=po(Math.abs(t)),t?t[1]:NaN}function oA(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 sA(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var aA=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Hn(t){if(!(e=aA.exec(t)))throw new Error("invalid format: "+t);var e;return new ga({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]})}Hn.prototype=ga.prototype;function ga(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+""}ga.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 cA(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 Af;function uA(t,e){var n=po(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Af=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")+po(t,Math.max(0,e+o-1))[0]}function bf(t,e){var n=po(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 xf={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:iA,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)=>bf(t*100,e),r:bf,s:uA,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function vf(t){return t}var wf=Array.prototype.map,Ef=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function lA(t){var e=t.grouping===void 0||t.thousands===void 0?vf:oA(wf.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?vf:sA(wf.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=Hn(l);var h=l.fill,d=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):xf[b]||(v===void 0&&(v=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():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=xf[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var Ge=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=cA(D)),Ge&&+D==0&&p!=="+"&&(Ge=!1),k=(Ge?p==="("?p:a:p==="-"||p==="("?"":p)+k,z=(b==="s"?Ef[8+Af/3]:"")+z+(Ge&&p==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var U=k.length+D.length+z.length,ie=U<y?new Array(y-U+1).join(h):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),d){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,U=ie.length>>1)+k+D+z+ie.slice(U);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,h){var d=u((l=Hn(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(Gn(h)/3)))*3,g=Math.pow(10,-p),m=Ef[8+p/3];return function(y){return d(g*y)+m}}return{format:u,formatPrefix:f}}var go,Qn,ma;fA({thousands:",",grouping:[3],currency:["$",""]});function fA(t){return go=lA(t),Qn=go.format,ma=go.formatPrefix,go}function Sf(t){return Math.max(0,-Gn(Math.abs(t)))}function Cf(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(e)/3)))*3-Gn(Math.abs(t)))}function Df(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Gn(e)-Gn(t))+1}var ya=new Date,Aa=new Date;function fe(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 fe(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 ya.setTime(+o),Aa.setTime(+s),t(ya),t(Aa),Math.floor(n(ya,Aa))},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 ba=fe(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ba.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?fe(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ba};var xa=ba;const St=1e3,Ye=St*60,Ct=Ye*60,pn=Ct*24,va=pn*7,Mf=pn*30,wa=pn*365;var hA=fe(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*St)},function(t,e){return(e-t)/St},function(t){return t.getUTCSeconds()}),jt=hA,dA=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St)},function(t,e){t.setTime(+t+e*Ye)},function(t,e){return(e-t)/Ye},function(t){return t.getMinutes()}),Ea=dA,pA=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St-t.getMinutes()*Ye)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getHours()}),Sa=pA,gA=fe(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ye)/pn,t=>t.getDate()-1),gn=gA;function mn(t){return fe(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())*Ye)/va})}var mo=mn(0),Ca=mn(1);mn(2),mn(3);var Lr=mn(4);mn(5),mn(6);var mA=fe(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()}),yo=mA,If=fe(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()});If.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(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 Gt=If,yA=fe(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ye)},function(t,e){return(e-t)/Ye},function(t){return t.getUTCMinutes()}),Da=yA,AA=fe(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getUTCHours()}),Ma=AA,bA=fe(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/pn},function(t){return t.getUTCDate()-1}),yn=bA;function An(t){return fe(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)/va})}var Ao=An(0),Ia=An(1);An(2),An(3);var kr=An(4);An(5),An(6);var xA=fe(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()}),bo=xA,Tf=fe(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()});Tf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(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 Ht=Tf;function Nf(t,e,n,r,i,o){const s=[[jt,1,St],[jt,5,5*St],[jt,15,15*St],[jt,30,30*St],[o,1,Ye],[o,5,5*Ye],[o,15,15*Ye],[o,30,30*Ye],[i,1,Ct],[i,3,3*Ct],[i,6,6*Ct],[i,12,12*Ct],[r,1,pn],[r,2,2*pn],[n,1,va],[e,1,Mf],[e,3,3*Mf],[t,1,wa]];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=ua(([,,m])=>m).right(s,h);if(d===s.length)return t.every(fo(u/wa,f/wa,l));if(d===0)return xa.every(Math.max(fo(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[vA,wA]=Nf(Ht,bo,Ao,yn,Ma,Da),[EA,SA]=Nf(Gt,yo,mo,gn,Sa,Ea),Or="year",Br="quarter",Pr="month",Fr="week",zr="date",xo="day",Ta="dayofyear",Rr="hours",Ur="minutes",jr="seconds",vo="milliseconds";[Or,Br,Pr,Fr,zr,xo,Ta,Rr,Ur,jr,vo].reduce((t,e,n)=>(t[e]=1+n,t),{});const CA={[Or]:Gt,[Br]:yo.every(3),[Pr]:yo,[Fr]:mo,[zr]:gn,[xo]:gn,[Ta]:gn,[Rr]:Sa,[Ur]:Ea,[jr]:jt,[vo]:xa},DA={[Or]:Ht,[Br]:bo.every(3),[Pr]:bo,[Fr]:Ao,[zr]:yn,[xo]:yn,[Ta]:yn,[Rr]:Ma,[Ur]:Da,[jr]:jt,[vo]:xa};function MA(t){return CA[t]}function IA(t){return DA[t]}function Na(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 La(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 Gr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Lf(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=Hr(i),f=Qr(i),l=Hr(o),h=Qr(o),d=Hr(s),p=Qr(s),g=Hr(a),m=Qr(a),y=Hr(c),x=Qr(c),v={a:Ge,A:U,b:ie,B:eo,c:null,d:zf,e:zf,f:KA,g:a2,G:u2,H:XA,I:qA,j:ZA,L:Rf,m:JA,M:$A,p:to,q:ea,Q:Vf,s:_f,S:e2,u:t2,U:n2,V:r2,w:i2,W:o2,x:null,X:null,y:s2,Y:c2,Z:l2,"%":Qf},S={a:ef,A:cT,b:uT,B:lT,c:null,d:jf,e:jf,f:p2,g:S2,G:D2,H:f2,I:h2,j:d2,L:Gf,m:g2,M:m2,p:fT,q:hT,Q:Vf,s:_f,S:y2,u:A2,U:b2,V:x2,w:v2,W:w2,x:null,X:null,y:E2,Y:C2,Z:M2,"%":Qf},b={a:O,A:D,b:k,B:z,c:G,d:Pf,e:Pf,f:VA,g:Bf,G:Of,H:Ff,I:Ff,j:jA,L:QA,m:UA,M:GA,p:B,q:RA,Q:YA,s:WA,S:HA,u:OA,U:BA,V:PA,w:kA,W:FA,x:ue,X:Ae,y:Bf,Y:Of,Z:zA,"%":_A};v.x=A(n,v),v.X=A(r,v),v.c=A(e,v),S.x=A(n,S),S.X=A(r,S),S.c=A(e,S);function A(L,j){return function(V){var I=[],Fe=-1,K=0,He=L.length,Qe,Un,ay;for(V instanceof Date||(V=new Date(+V));++Fe<He;)L.charCodeAt(Fe)===37&&(I.push(L.slice(K,Fe)),(Un=kf[Qe=L.charAt(++Fe)])!=null?Qe=L.charAt(++Fe):Un=Qe==="e"?" ":"0",(ay=j[Qe])&&(Qe=ay(V,Un)),I.push(Qe),K=Fe+1);return I.push(L.slice(K,Fe)),I.join("")}}function w(L,j){return function(V){var I=Gr(1900,void 0,1),Fe=E(I,L,V+="",0),K,He;if(Fe!=V.length)return null;if("Q"in I)return new Date(I.Q);if("s"in I)return new Date(I.s*1e3+("L"in I?I.L:0));if(j&&!("Z"in I)&&(I.Z=0),"p"in I&&(I.H=I.H%12+I.p*12),I.m===void 0&&(I.m="q"in I?I.q:0),"V"in I){if(I.V<1||I.V>53)return null;"w"in I||(I.w=1),"Z"in I?(K=La(Gr(I.y,0,1)),He=K.getUTCDay(),K=He>4||He===0?Ia.ceil(K):Ia(K),K=yn.offset(K,(I.V-1)*7),I.y=K.getUTCFullYear(),I.m=K.getUTCMonth(),I.d=K.getUTCDate()+(I.w+6)%7):(K=Na(Gr(I.y,0,1)),He=K.getDay(),K=He>4||He===0?Ca.ceil(K):Ca(K),K=gn.offset(K,(I.V-1)*7),I.y=K.getFullYear(),I.m=K.getMonth(),I.d=K.getDate()+(I.w+6)%7)}else("W"in I||"U"in I)&&("w"in I||(I.w="u"in I?I.u%7:"W"in I?1:0),He="Z"in I?La(Gr(I.y,0,1)).getUTCDay():Na(Gr(I.y,0,1)).getDay(),I.m=0,I.d="W"in I?(I.w+6)%7+I.W*7-(He+5)%7:I.w+I.U*7-(He+6)%7);return"Z"in I?(I.H+=I.Z/100|0,I.M+=I.Z%100,La(I)):Na(I)}}function E(L,j,V,I){for(var Fe=0,K=j.length,He=V.length,Qe,Un;Fe<K;){if(I>=He)return-1;if(Qe=j.charCodeAt(Fe++),Qe===37){if(Qe=j.charAt(Fe++),Un=b[Qe in kf?j.charAt(Fe++):Qe],!Un||(I=Un(L,V,I))<0)return-1}else if(Qe!=V.charCodeAt(I++))return-1}return I}function B(L,j,V){var I=u.exec(j.slice(V));return I?(L.p=f.get(I[0].toLowerCase()),V+I[0].length):-1}function O(L,j,V){var I=d.exec(j.slice(V));return I?(L.w=p.get(I[0].toLowerCase()),V+I[0].length):-1}function D(L,j,V){var I=l.exec(j.slice(V));return I?(L.w=h.get(I[0].toLowerCase()),V+I[0].length):-1}function k(L,j,V){var I=y.exec(j.slice(V));return I?(L.m=x.get(I[0].toLowerCase()),V+I[0].length):-1}function z(L,j,V){var I=g.exec(j.slice(V));return I?(L.m=m.get(I[0].toLowerCase()),V+I[0].length):-1}function G(L,j,V){return E(L,e,j,V)}function ue(L,j,V){return E(L,n,j,V)}function Ae(L,j,V){return E(L,r,j,V)}function Ge(L){return s[L.getDay()]}function U(L){return o[L.getDay()]}function ie(L){return c[L.getMonth()]}function eo(L){return a[L.getMonth()]}function to(L){return i[+(L.getHours()>=12)]}function ea(L){return 1+~~(L.getMonth()/3)}function ef(L){return s[L.getUTCDay()]}function cT(L){return o[L.getUTCDay()]}function uT(L){return c[L.getUTCMonth()]}function lT(L){return a[L.getUTCMonth()]}function fT(L){return i[+(L.getUTCHours()>=12)]}function hT(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var j=A(L+="",v);return j.toString=function(){return L},j},parse:function(L){var j=w(L+="",!1);return j.toString=function(){return L},j},utcFormat:function(L){var j=A(L+="",S);return j.toString=function(){return L},j},utcParse:function(L){var j=w(L+="",!0);return j.toString=function(){return L},j}}}var kf={"-":"",_:" ","0":"0"},he=/^\s*\d+/,TA=/^%/,NA=/[\\^$*+?|[\]().{}]/g;function H(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 LA(t){return t.replace(NA,"\\$&")}function Hr(t){return new RegExp("^(?:"+t.map(LA).join("|")+")","i")}function Qr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function kA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function OA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function BA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function PA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function FA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Of(t,e,n){var r=he.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Bf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function zA(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 RA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function UA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Pf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function jA(t,e,n){var r=he.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=he.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function GA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function HA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function QA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function VA(t,e,n){var r=he.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function _A(t,e,n){var r=TA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function YA(t,e,n){var r=he.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function WA(t,e,n){var r=he.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function zf(t,e){return H(t.getDate(),e,2)}function XA(t,e){return H(t.getHours(),e,2)}function qA(t,e){return H(t.getHours()%12||12,e,2)}function ZA(t,e){return H(1+gn.count(Gt(t),t),e,3)}function Rf(t,e){return H(t.getMilliseconds(),e,3)}function KA(t,e){return Rf(t,e)+"000"}function JA(t,e){return H(t.getMonth()+1,e,2)}function $A(t,e){return H(t.getMinutes(),e,2)}function e2(t,e){return H(t.getSeconds(),e,2)}function t2(t){var e=t.getDay();return e===0?7:e}function n2(t,e){return H(mo.count(Gt(t)-1,t),e,2)}function Uf(t){var e=t.getDay();return e>=4||e===0?Lr(t):Lr.ceil(t)}function r2(t,e){return t=Uf(t),H(Lr.count(Gt(t),t)+(Gt(t).getDay()===4),e,2)}function i2(t){return t.getDay()}function o2(t,e){return H(Ca.count(Gt(t)-1,t),e,2)}function s2(t,e){return H(t.getFullYear()%100,e,2)}function a2(t,e){return t=Uf(t),H(t.getFullYear()%100,e,2)}function c2(t,e){return H(t.getFullYear()%1e4,e,4)}function u2(t,e){var n=t.getDay();return t=n>=4||n===0?Lr(t):Lr.ceil(t),H(t.getFullYear()%1e4,e,4)}function l2(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+H(e/60|0,"0",2)+H(e%60,"0",2)}function jf(t,e){return H(t.getUTCDate(),e,2)}function f2(t,e){return H(t.getUTCHours(),e,2)}function h2(t,e){return H(t.getUTCHours()%12||12,e,2)}function d2(t,e){return H(1+yn.count(Ht(t),t),e,3)}function Gf(t,e){return H(t.getUTCMilliseconds(),e,3)}function p2(t,e){return Gf(t,e)+"000"}function g2(t,e){return H(t.getUTCMonth()+1,e,2)}function m2(t,e){return H(t.getUTCMinutes(),e,2)}function y2(t,e){return H(t.getUTCSeconds(),e,2)}function A2(t){var e=t.getUTCDay();return e===0?7:e}function b2(t,e){return H(Ao.count(Ht(t)-1,t),e,2)}function Hf(t){var e=t.getUTCDay();return e>=4||e===0?kr(t):kr.ceil(t)}function x2(t,e){return t=Hf(t),H(kr.count(Ht(t),t)+(Ht(t).getUTCDay()===4),e,2)}function v2(t){return t.getUTCDay()}function w2(t,e){return H(Ia.count(Ht(t)-1,t),e,2)}function E2(t,e){return H(t.getUTCFullYear()%100,e,2)}function S2(t,e){return t=Hf(t),H(t.getUTCFullYear()%100,e,2)}function C2(t,e){return H(t.getUTCFullYear()%1e4,e,4)}function D2(t,e){var n=t.getUTCDay();return t=n>=4||n===0?kr(t):kr.ceil(t),H(t.getUTCFullYear()%1e4,e,4)}function M2(){return"+0000"}function Qf(){return"%"}function Vf(t){return+t}function _f(t){return Math.floor(+t/1e3)}var Vn,ka,Yf,Oa,Wf;I2({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 I2(t){return Vn=Lf(t),ka=Vn.format,Yf=Vn.parse,Oa=Vn.utcFormat,Wf=Vn.utcParse,Vn}function Vr(t){const e={};return n=>e[n]||(e[n]=t(n))}function T2(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=N2(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 N2(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 L2(t){const e=Vr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Hn(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return T2(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=Hn(s==null?",f":s);const a=fo(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=Cf(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=Df(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=Sf(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}k2();function k2(){return L2({format:Qn,formatPrefix:ma})}function Xf(t,e,n){n=n||{},ze(n)||re("Invalid time multi-format specifier: ".concat(n));const r=e(jr),i=e(Ur),o=e(Rr),s=e(zr),a=e(Fr),c=e(Pr),u=e(Br),f=e(Or),l=t(n[vo]||".%L"),h=t(n[jr]||":%S"),d=t(n[Ur]||"%I:%M"),p=t(n[Rr]||"%I %p"),g=t(n[zr]||n[xo]||"%a %d"),m=t(n[Fr]||"%b %d"),y=t(n[Pr]||"%B"),x=t(n[Br]||"%B"),v=t(n[Or]||"%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:x:v)(S)}function qf(t){const e=Vr(t.format),n=Vr(t.utcFormat);return{timeFormat:r=>oe(r)?e(r):Xf(e,MA,r),utcFormat:r=>oe(r)?n(r):Xf(n,IA,r),timeParse:Vr(t.parse),utcParse:Vr(t.utcParse)}}let Ba;O2();function O2(){return Ba=qf({format:ka,parse:Yf,utcFormat:Oa,utcParse:Wf})}function B2(t){return qf(Lf(t))}function P2(t){return arguments.length?Ba=B2(t):Ba}const F2=/^(data:|([A-Za-z]+:)?\/\/)/,z2=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,R2=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Zf="file://";function U2(t,e){return n=>({options:n||{},sanitize:G2,load:j2,fileAccess:!!e,file:H2(e),http:V2(t)})}async function j2(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function G2(t,e){e=oa({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=z2.test(t.replace(R2,""));(t==null||typeof t!="string"||!a)&&re("Sanitize failure, invalid URI: "+uo(t));const c=F2.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Zf))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Zf.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 H2(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Q2}async function Q2(){re("No file system access.")}function V2(t){return t?async function(e,n){const r=oa({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Te(o[i])?o[i]():o.text():re(o.status+""+o.statusText)}:_2}async function _2(){re("No HTTP fetch method available.")}const Y2=t=>t!=null&&t===t,W2=t=>t==="true"||t==="false"||t===!0||t===!1,X2=t=>!Number.isNaN(Date.parse(t)),Kf=t=>!Number.isNaN(+t)&&!(t instanceof Date),q2=t=>Kf(t)&&Number.isInteger(+t),Jf={boolean:ky,integer:Ir,number:Ir,date:By,string:Py,unknown:ro},wo=[W2,q2,Kf,X2],Z2=["boolean","integer","number","date"];function $f(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=wo.length,i=wo.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]&&Y2(c)&&!wo[a](c)&&(i[a]=0,++s,s===wo.length))return"string";return Z2[i.reduce((o,s)=>o===0?s:o,0)-1]}function K2(t,e){return e.reduce((n,r)=>(n[r]=$f(t,r),n),{})}function eh(t){const e=function(n,r){const i={delimiter:t};return Pa(n,r?oa(r,i):i)};return e.responseType="text",e}function Pa(t,e){return e.header&&(t=e.header.map(uo).join(e.delimiter)+`
6
- `+t),lf(e.delimiter).parse(t+"")}Pa.responseType="text";function J2(t){return typeof Buffer=="function"&&Te(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Fa(t,e){const n=e&&e.property?no(e.property):ro;return ze(t)&&!J2(t)?$2(n(t),e):n(JSON.parse(t))}Fa.responseType="json";function $2(t,e){return!_e(t)&&Ny(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const eb={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function th(t,e){let n,r,i,o;return t=Fa(t,e),e&&e.feature?(n=Vy,i=e.feature):e&&e.mesh?(n=Yy,i=e.mesh,o=eb[e.filter]):re("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):re("Invalid TopoJSON object: "+i),r&&r.features||[r]}th.responseType="json";const za={dsv:Pa,csv:eh(","),tsv:eh(" "),json:Fa,topojson:th};function nh(t,e){return arguments.length>1?(za[t]=e,this):dn(za,t)?za[t]:null}function rh(t,e,n,r){e=e||{};const i=nh(e.type||"json");return i||re("Unknown data format type: "+e.type),t=i(t,e),e.parse&&tb(t,e.parse,n,r),dn(t,"columns")&&delete t.columns,t}function tb(t,e,n,r){if(!t.length)return;const i=P2();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=K2(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(!Jf[p])throw Error("Illegal format pattern: "+d+":"+p);return Jf[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 _r=U2(typeof fetch!="undefined"&&fetch,null);function Ra(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Eo(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=Ra,r=(a,c)=>Ra(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 ih(t){return t===null?NaN:+t}const oh=Eo(Ra),nb=oh.right;oh.left,Eo(ih).center;var rb=nb;function ib(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 So extends Map{constructor(e,n=ab){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(sh(this,e))}has(e){return super.has(sh(this,e))}set(e,n){return super.set(ob(this,e),n)}delete(e){return super.delete(sb(this,e))}}function sh({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function ob({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function sb({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function ab(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Co(t){return t}function Do(t,...e){return Ua(t,Co,Co,e)}function cb(t,...e){return Ua(t,Array.from,Co,e)}function ub(t,e,...n){return Ua(t,Co,e,n)}function Ua(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new So,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 ja=Math.sqrt(50),Ga=Math.sqrt(10),Ha=Math.sqrt(2);function lb(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=fb(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 fb(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>=ja?10:o>=Ga?5:o>=Ha?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ja?10:o>=Ga?5:o>=Ha?2:1)}function Qa(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>=ja?i*=10:o>=Ga?i*=5:o>=Ha&&(i*=2),e<t?-i:i}function hb(t,e,n=ih){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 Io(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 db(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 pb(t){return t=To(Math.abs(t)),t?t[1]:NaN}function gb(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 mb(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var yb=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function No(t){if(!(e=yb.exec(t)))throw new Error("invalid format: "+t);var e;return new Va({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]})}No.prototype=Va.prototype;function Va(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+""}Va.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 Ab(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 ah;function bb(t,e){var n=To(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(ah=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 ch(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 uh={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:db,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)=>ch(t*100,e),r:ch,s:bb,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function lh(t){return t}var fh=Array.prototype.map,hh=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function xb(t){var e=t.grouping===void 0||t.thousands===void 0?lh:gb(fh.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?lh:mb(fh.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=No(l);var h=l.fill,d=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):uh[b]||(v===void 0&&(v=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():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=uh[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var Ge=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=Ab(D)),Ge&&+D==0&&p!=="+"&&(Ge=!1),k=(Ge?p==="("?p:a:p==="-"||p==="("?"":p)+k,z=(b==="s"?hh[8+ah/3]:"")+z+(Ge&&p==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var U=k.length+D.length+z.length,ie=U<y?new Array(y-U+1).join(h):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),d){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,U=ie.length>>1)+k+D+z+ie.slice(U);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,h){var d=u((l=No(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(pb(h)/3)))*3,g=Math.pow(10,-p),m=hh[8+p/3];return function(y){return d(g*y)+m}}return{format:u,formatPrefix:f}}var _a,Le;vb({thousands:",",grouping:[3],currency:["$",""]});function vb(t){return _a=xb(t),Le=_a.format,_a}const dh=1;function Ya(){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=ib(f),n=t[1]-t[0],n<dh){n=dh;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 lb(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=Qa(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?Le(","):Le(".3s");return p=>d(p+a)},u.copy=()=>Ya().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),u}function wb(){const t=Ya().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,Qa(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=Qa(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?Le(","):Le(".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 Eb(t){return t.type=="locus"}function ct(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Qt(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 Wa=Symbol("implicit");function Xa(){var t=new Map,e=[],n=[],r=Wa;function i(o){var s=o+"",a=t.get(s);if(!a){if(r!==Wa)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 Xa(e,n).unknown(r)},ct.apply(i,arguments),i}function _n(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Yr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Vt(){}var bn=.7,Yn=1/bn,Wn="\\s*([+-]?\\d+)\\s*",Wr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",ut="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Sb=/^#([0-9a-f]{3,8})$/,Cb=new RegExp("^rgb\\("+[Wn,Wn,Wn]+"\\)$"),Db=new RegExp("^rgb\\("+[ut,ut,ut]+"\\)$"),Mb=new RegExp("^rgba\\("+[Wn,Wn,Wn,Wr]+"\\)$"),Ib=new RegExp("^rgba\\("+[ut,ut,ut,Wr]+"\\)$"),Tb=new RegExp("^hsl\\("+[Wr,ut,ut]+"\\)$"),Nb=new RegExp("^hsla\\("+[Wr,ut,ut,Wr]+"\\)$"),ph={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};_n(Vt,Xr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:gh,formatHex:gh,formatHsl:Lb,formatRgb:mh,toString:mh});function gh(){return this.rgb().formatHex()}function Lb(){return vh(this).formatHsl()}function mh(){return this.rgb().formatRgb()}function Xr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Sb.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?yh(e):n===3?new me(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Lo(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Lo(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=Cb.exec(t))?new me(e[1],e[2],e[3],1):(e=Db.exec(t))?new me(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Mb.exec(t))?Lo(e[1],e[2],e[3],e[4]):(e=Ib.exec(t))?Lo(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Tb.exec(t))?xh(e[1],e[2]/100,e[3]/100,1):(e=Nb.exec(t))?xh(e[1],e[2]/100,e[3]/100,e[4]):ph.hasOwnProperty(t)?yh(ph[t]):t==="transparent"?new me(NaN,NaN,NaN,0):null}function yh(t){return new me(t>>16&255,t>>8&255,t&255,1)}function Lo(t,e,n,r){return r<=0&&(t=e=n=NaN),new me(t,e,n,r)}function qa(t){return t instanceof Vt||(t=Xr(t)),t?(t=t.rgb(),new me(t.r,t.g,t.b,t.opacity)):new me}function ko(t,e,n,r){return arguments.length===1?qa(t):new me(t,e,n,r==null?1:r)}function me(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}_n(me,ko,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new me(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:Ah,formatHex:Ah,formatRgb:bh,toString:bh}));function Ah(){return"#"+Za(this.r)+Za(this.g)+Za(this.b)}function bh(){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 Za(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function xh(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new lt(t,e,n,r)}function vh(t){if(t instanceof lt)return new lt(t.h,t.s,t.l,t.opacity);if(t instanceof Vt||(t=Xr(t)),!t)return new lt;if(t instanceof lt)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 lt(s,a,c,t.opacity)}function Ka(t,e,n,r){return arguments.length===1?vh(t):new lt(t,e,n,r==null?1:r)}function lt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(lt,Ka,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new lt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new lt(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 me(Ja(t>=240?t-240:t+120,i,r),Ja(t,i,r),Ja(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 Ja(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 wh=Math.PI/180,Eh=180/Math.PI,Oo=18,Sh=.96422,Ch=1,Dh=.82521,Mh=4/29,Xn=6/29,Ih=3*Xn*Xn,kb=Xn*Xn*Xn;function Th(t){if(t instanceof ft)return new ft(t.l,t.a,t.b,t.opacity);if(t instanceof Dt)return Nh(t);t instanceof me||(t=qa(t));var e=rc(t.r),n=rc(t.g),r=rc(t.b),i=ec((.2225045*e+.7168786*n+.0606169*r)/Ch),o,s;return e===n&&n===r?o=s=i:(o=ec((.4360747*e+.3850649*n+.1430804*r)/Sh),s=ec((.0139322*e+.0971045*n+.7141733*r)/Dh)),new ft(116*i-16,500*(o-i),200*(i-s),t.opacity)}function $a(t,e,n,r){return arguments.length===1?Th(t):new ft(t,e,n,r==null?1:r)}function ft(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}_n(ft,$a,Yr(Vt,{brighter:function(t){return new ft(this.l+Oo*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new ft(this.l-Oo*(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=Sh*tc(e),t=Ch*tc(t),n=Dh*tc(n),new me(nc(3.1338561*e-1.6168667*t-.4906146*n),nc(-.9787684*e+1.9161415*t+.033454*n),nc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ec(t){return t>kb?Math.pow(t,1/3):t/Ih+Mh}function tc(t){return t>Xn?t*t*t:Ih*(t-Mh)}function nc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function rc(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ob(t){if(t instanceof Dt)return new Dt(t.h,t.c,t.l,t.opacity);if(t instanceof ft||(t=Th(t)),t.a===0&&t.b===0)return new Dt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Eh;return new Dt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function ic(t,e,n,r){return arguments.length===1?Ob(t):new Dt(t,e,n,r==null?1:r)}function Dt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Nh(t){if(isNaN(t.h))return new ft(t.l,0,0,t.opacity);var e=t.h*wh;return new ft(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}_n(Dt,ic,Yr(Vt,{brighter:function(t){return new Dt(this.h,this.c,this.l+Oo*(t==null?1:t),this.opacity)},darker:function(t){return new Dt(this.h,this.c,this.l-Oo*(t==null?1:t),this.opacity)},rgb:function(){return Nh(this).rgb()}}));var Lh=-.14861,oc=1.78277,sc=-.29227,Bo=-.90649,qr=1.97294,kh=qr*Bo,Oh=qr*oc,Bh=oc*sc-Bo*Lh;function Bb(t){if(t instanceof xn)return new xn(t.h,t.s,t.l,t.opacity);t instanceof me||(t=qa(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Bh*r+kh*e-Oh*n)/(Bh+kh-Oh),o=r-i,s=(qr*(n-i)-sc*o)/Bo,a=Math.sqrt(s*s+o*o)/(qr*i*(1-i)),c=a?Math.atan2(s,o)*Eh-120:NaN;return new xn(c<0?c+360:c,a,i,t.opacity)}function ac(t,e,n,r){return arguments.length===1?Bb(t):new xn(t,e,n,r==null?1:r)}function xn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(xn,ac,Yr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*wh,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new me(255*(e+n*(Lh*r+oc*i)),255*(e+n*(sc*r+Bo*i)),255*(e+n*(qr*r)),this.opacity)}}));function Ph(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 Ph((n-r/e)*e,s,i,o,a)}}function zh(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 Ph((n-r/e)*e,i,o,s,a)}}var Po=t=>()=>t;function Rh(t,e){return function(n){return t+n*e}}function Pb(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 Fo(t,e){var n=e-t;return n?Rh(t,n>180||n<-180?n-360*Math.round(n/360):n):Po(isNaN(t)?e:t)}function Fb(t){return(t=+t)==1?de:function(e,n){return n-e?Pb(e,n,t):Po(isNaN(e)?n:e)}}function de(t,e){var n=e-t;return n?Rh(t,n):Po(isNaN(t)?e:t)}var cc=function t(e){var n=Fb(e);function r(i,o){var s=n((i=ko(i)).r,(o=ko(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=de(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 Uh(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=ko(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 zb=Uh(Fh),Rb=Uh(zh);function uc(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 jh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Ub(t,e){return(jh(e)?uc:Gh)(t,e)}function Gh(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]=_t(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 Hh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function tt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Qh(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]=_t(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var lc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,fc=new RegExp(lc.source,"g");function jb(t){return function(){return t}}function Gb(t){return function(e){return t(e)+""}}function Vh(t,e){var n=lc.lastIndex=fc.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=lc.exec(t))&&(i=fc.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:tt(r,i)})),n=fc.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?Gb(c[0].x):jb(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 _t(t,e){var n=typeof e,r;return e==null||n==="boolean"?Po(e):(n==="number"?tt:n==="string"?(r=Xr(e))?(e=r,cc):Vh:e instanceof Xr?cc:e instanceof Date?Hh:jh(e)?uc:Array.isArray(e)?Gh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Qh:tt)(t,e)}function Hb(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Qb(t,e){var n=Fo(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Zr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var _h=180/Math.PI,hc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Yh(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)*_h,skewX:Math.atan(c)*_h,scaleX:s,scaleY:a}}var zo;function Vb(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?hc:Yh(e.a,e.b,e.c,e.d,e.e,e.f)}function _b(t){return t==null||(zo||(zo=document.createElementNS("http://www.w3.org/2000/svg","g")),zo.setAttribute("transform",t),!(t=zo.transform.baseVal.consolidate()))?hc:(t=t.matrix,Yh(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:tt(u,l)},{i:g-2,x:tt(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:tt(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:tt(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:tt(u,l)},{i:g-2,x:tt(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 Yb=Wh(Vb,"px, ","px)","deg)"),Wb=Wh(_b,", ",")",")"),Xb=1e-12;function Xh(t){return((t=Math.exp(t))+1/t)/2}function qb(t){return((t=Math.exp(t))-1/t)/2}function Zb(t){return((t=Math.exp(2*t))-1)/(t+1)}var qh=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<Xb)y=Math.log(h/u)/e,m=function(w){return[a+w*d,c+w*p,u*Math.exp(e*w*y)]};else{var x=Math.sqrt(g),v=(h*h-u*u+r*g)/(2*u*n*x),S=(h*h-u*u-r*g)/(2*h*n*x),b=Math.log(Math.sqrt(v*v+1)-v),A=Math.log(Math.sqrt(S*S+1)-S);y=(A-b)/e,m=function(w){var E=w*y,B=Xh(b),O=u/(n*x)*(B*Zb(e*E+b)-qb(b));return[a+O*d,c+O*p,u*B/Xh(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 Zh(t){return function(e,n){var r=t((e=Ka(e)).h,(n=Ka(n)).h),i=de(e.s,n.s),o=de(e.l,n.l),s=de(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 Kb=Zh(Fo),Jb=Zh(de);function $b(t,e){var n=de((t=$a(t)).l,(e=$a(e)).l),r=de(t.a,e.a),i=de(t.b,e.b),o=de(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 Kh(t){return function(e,n){var r=t((e=ic(e)).h,(n=ic(n)).h),i=de(e.c,n.c),o=de(e.l,n.l),s=de(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 ex=Kh(Fo),tx=Kh(de);function Jh(t){return function e(n){n=+n;function r(i,o){var s=t((i=ac(i)).h,(o=ac(o)).h),a=de(i.s,o.s),c=de(i.l,o.l),u=de(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 nx=Jh(Fo),rx=Jh(de);function dc(t,e){e===void 0&&(e=t,t=_t);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 ix(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var ox=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:_t,interpolateArray:Ub,interpolateBasis:Fh,interpolateBasisClosed:zh,interpolateDate:Hh,interpolateDiscrete:Hb,interpolateHue:Qb,interpolateNumber:tt,interpolateNumberArray:uc,interpolateObject:Qh,interpolateRound:Zr,interpolateString:Vh,interpolateTransformCss:Yb,interpolateTransformSvg:Wb,interpolateZoom:qh,interpolateRgb:cc,interpolateRgbBasis:zb,interpolateRgbBasisClosed:Rb,interpolateHsl:Kb,interpolateHslLong:Jb,interpolateLab:$b,interpolateHcl:ex,interpolateHclLong:tx,interpolateCubehelix:nx,interpolateCubehelixLong:rx,piecewise:dc,quantize:ix});function sx(t){return function(){return t}}function pc(t){return+t}var $h=[0,1];function ke(t){return t}function gc(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:sx(isNaN(e)?NaN:.5)}function ax(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function cx(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=gc(i,r),o=n(s,o)):(r=gc(r,i),o=n(o,s)),function(a){return o(r(a))}}function ux(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]=gc(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=Nr(t,a,1,r)-1;return o[c](i[c](a))}}function Kr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ro(){var t=$h,e=$h,n=_t,r,i,o,s=ke,a,c,u;function f(){var h=Math.min(t.length,e.length);return s!==ke&&(s=ax(t[0],t[h-1])),a=h>2?ux:cx,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),tt)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,pc),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=Zr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:ke,f()):s!==ke},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 ed(){return Ro()(ke,ke)}function td(t,e,n,r){var i=fo(t,e,n),o;switch(r=Hn(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Cf(i,s))&&(r.precision=o),ma(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Df(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Sf(i))&&(r.precision=o-(r.type==="%")*2);break}}return Qn(r)}function vn(t){var e=t.domain;return t.ticks=function(n){var r=e();return pa(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return td(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=mf(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 nd(){var t=ed();return t.copy=function(){return Kr(t,nd())},ct.apply(t,arguments),vn(t)}function rd(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,pc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return rd(t).unknown(e)},t=arguments.length?Array.from(t,pc):[0,1],vn(n)}function id(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 od(t){return Math.log(t)}function sd(t){return Math.exp(t)}function lx(t){return-Math.log(-t)}function fx(t){return-Math.exp(-t)}function hx(t){return isFinite(t)?+("1e"+t):t<0?0:t}function dx(t){return t===10?hx:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function px(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 ad(t){return function(e){return-t(-e)}}function mc(t){var e=t(od,sd),n=e.domain,r=10,i,o;function s(){return i=px(r),o=dx(r),n()[0]<0?(i=ad(i),o=ad(o),t(lx,fx)):t(od,sd),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,x=[];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;x.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;x.push(m)}x.length*2<y&&(x=pa(u,f,y))}else x=pa(h,d,Math.min(d-h,y)).map(o);return l?x.reverse():x},e.tickFormat=function(a,c){if(c==null&&(c=r===10?".0e":","),typeof c!="function"&&(c=Qn(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(id(n(),{floor:function(a){return o(Math.floor(i(a)))},ceil:function(a){return o(Math.ceil(i(a)))}}))},e}function yc(){var t=mc(Ro()).domain([1,10]);return t.copy=function(){return Kr(t,yc()).base(t.base())},ct.apply(t,arguments),t}function cd(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function ud(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Ac(t){var e=1,n=t(cd(e),ud(e));return n.constant=function(r){return arguments.length?t(cd(e=+r),ud(e)):e},vn(n)}function ld(){var t=Ac(Ro());return t.copy=function(){return Kr(t,ld()).constant(t.constant())},ct.apply(t,arguments)}function fd(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function gx(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function mx(t){return t<0?-t*t:t*t}function bc(t){var e=t(ke,ke),n=1;function r(){return n===1?t(ke,ke):n===.5?t(gx,mx):t(fd(n),fd(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},vn(e)}function xc(){var t=bc(Ro());return t.copy=function(){return Kr(t,xc()).exponent(t.exponent())},ct.apply(t,arguments),t}function yx(){return xc.apply(null,arguments).exponent(.5)}function hd(){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]=yf(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[Nr(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(jn),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 hd().domain(t).range(e).unknown(r)},ct.apply(o,arguments)}function dd(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(c){return c!=null&&c<=c?i[Nr(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 dd().domain([t,e]).range(i).unknown(o)},ct.apply(vn(s),arguments)}function pd(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Nr(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 pd().domain(t).range(e).unknown(n)},ct.apply(i,arguments)}function Ax(t){return new Date(t)}function bx(t){return t instanceof Date?+t:+new Date(+t)}function vc(t,e,n,r,i,o,s,a,c,u){var f=ed(),l=f.invert,h=f.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),x=u("%b %d"),v=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:x:n(A)<A?v:S)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?h(Array.from(A,bx)):h().map(Ax)},f.ticks=function(A){var w=h();return t(w[0],w[w.length-1],A==null?10:A)},f.tickFormat=function(A,w){return w==null?b:u(w)},f.nice=function(A){var w=h();return(!A||typeof A.range!="function")&&(A=e(w[0],w[w.length-1],A==null?10:A)),A?h(id(w,A)):f},f.copy=function(){return Kr(f,vc(t,e,n,r,i,o,s,a,c,u))},f}function xx(){return ct.apply(vc(EA,SA,Gt,yo,mo,gn,Sa,Ea,jt,ka).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function vx(){return ct.apply(vc(vA,wA,Ht,bo,Ao,yn,Ma,Da,jt,Oa).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Uo(){var t=0,e=1,n,r,i,o,s=ke,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(_t),u.rangeRound=f(Zr),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 Yt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function wc(){var t=vn(Uo()(ke));return t.copy=function(){return Yt(t,wc())},Qt.apply(t,arguments)}function gd(){var t=mc(Uo()).domain([1,10]);return t.copy=function(){return Yt(t,gd()).base(t.base())},Qt.apply(t,arguments)}function md(){var t=Ac(Uo());return t.copy=function(){return Yt(t,md()).constant(t.constant())},Qt.apply(t,arguments)}function Ec(){var t=bc(Uo());return t.copy=function(){return Yt(t,Ec()).exponent(t.exponent())},Qt.apply(t,arguments)}function wx(){return Ec.apply(null,arguments).exponent(.5)}function jo(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=ke,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,x,v;return arguments.length?([y,x,v]=m,u=dc(g,[y,x,v]),d):[u(0),u(.5),u(1)]}}return d.range=p(_t),d.rangeRound=p(Zr),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 yd(){var t=vn(jo()(ke));return t.copy=function(){return Yt(t,yd())},Qt.apply(t,arguments)}function Ad(){var t=mc(jo()).domain([.1,1,10]);return t.copy=function(){return Yt(t,Ad()).base(t.base())},Qt.apply(t,arguments)}function bd(){var t=Ac(jo());return t.copy=function(){return Yt(t,bd()).constant(t.constant())},Qt.apply(t,arguments)}function Sc(){var t=bc(jo());return t.copy=function(){return Yt(t,Sc()).exponent(t.exponent())},Qt.apply(t,arguments)}function Ex(){return Sc.apply(null,arguments).exponent(.5)}function Cc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Sx="identity",qn="linear",Wt="log",Jr="pow",$r="sqrt",Go="symlog",xd="time",vd="utc",ht="sequential",Zn="diverging",Dc="quantile",wd="quantize",Ed="threshold",Mc="ordinal",Ic="point",Sd="band",Tc="bin-ordinal",le="continuous",ei="discrete",ti="discretizing",We="interpolating",Cd="temporal";function Cx(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 Dx(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 Nc(){const t=Xa().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=Cc(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=ho(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,x,v;if(!(g!==g||m!==m)&&(m<g&&(v=g,g=m,m=v),!(m<d[0]||g>r[1-h])))return y=Math.max(0,la(d,g)-1),x=g===m?y:la(d,m)-1,g-d[y]>o+1e-10&&++y,h&&(v=y,y=p-x,x=p-v),y>x?void 0:e().slice(y,x+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return Nc().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(c).align(u)},f()}function Dd(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Dd(e())},t}function Mx(){return Dd(Nc().paddingInner(1))}var Ix=Array.prototype.map;function Tx(t){return Ix.call(t,Ir)}const Nx=Array.prototype.slice;function Md(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Nr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Tx(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Nx.call(r),n):e.slice()},n.tickFormat=function(r,i){return td(t[0],et(t),r==null?10:r,i)},n.copy=function(){return Md().domain(n.domain()).range(n.range())},n}const Ho={};function Lx(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Cx(o):o.invertExtent?Dx(o):void 0),o.type=t,o};return r.metadata=lo(ia(n)),r}function W(t,e,n){return arguments.length>1?(Ho[t]=Lx(t,e,n),this):kx(t)?Ho[t]:void 0}W(Sx,rd),W(qn,nd,le),W(Wt,yc,[le,Wt]),W(Jr,xc,le),W($r,yx,le),W(Go,ld,le),W(xd,xx,[le,Cd]),W(vd,vx,[le,Cd]),W(ht,wc,[le,We]),W("".concat(ht,"-").concat(qn),wc,[le,We]),W("".concat(ht,"-").concat(Wt),gd,[le,We,Wt]),W("".concat(ht,"-").concat(Jr),Ec,[le,We]),W("".concat(ht,"-").concat($r),wx,[le,We]),W("".concat(ht,"-").concat(Go),md,[le,We]),W("".concat(Zn,"-").concat(qn),yd,[le,We]),W("".concat(Zn,"-").concat(Wt),Ad,[le,We,Wt]),W("".concat(Zn,"-").concat(Jr),Sc,[le,We]),W("".concat(Zn,"-").concat($r),Ex,[le,We]),W("".concat(Zn,"-").concat(Go),bd,[le,We]),W(Dc,hd,[ti,Dc]),W(wd,dd,ti),W(Ed,pd,ti),W(Tc,Md,[ei,ti]),W(Mc,Xa,ei),W(Sd,Nc,ei),W(Ic,Mx,ei);function kx(t){return dn(Ho,t)}function ni(t,e){const n=Ho[t];return n&&n.metadata[e]}function nt(t){return ni(t,le)}function Xt(t){return ni(t,ei)}function Kn(t){return ni(t,ti)}function Id(t){return ni(t,Wt)}function Qo(t){return ni(t,We)}function Ox(t,e){const n=e[0],r=et(e)-n;return function(i){return t(n+i*r)}}function Vo(t,e,n){return dc(Td(e||"rgb",n),t)}function Bx(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Td(t,e){const n=ox[Px(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Px(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const Fx={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"},zx={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 Nd(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 Ld(t,e){for(const n in t)Lc(n,e(t[n]))}const kd={};Ld(zx,Nd),Ld(Fx,t=>Vo(Nd(t)));function Lc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(kd[t]=e,this):kd[t]}var AT="";function Rx(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?uy(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var ly=Xl(" "),fy=ly.parseRows;function hy(t){return t}function dy(t){if(t==null)return hy;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 py(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function gy(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Zl(t,n)})}:Zl(t,e)}function Zl(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=ql(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 ql(t,e){var n=dy(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],p=0,d=h.length;p<d;++p)l.push(n(h[p],p));f<0&&py(l,d)}function o(f){return n(f)}function s(f){for(var l=[],h=0,p=f.length;h<p;++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 my(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],p,d;if(p=i[l])if(delete i[p.end],p.push(u),p.end=h,d=r[h]){delete r[d.start];var g=d===p?p:p.concat(d);r[g.start=p.start]=i[g.end=d.end]=g}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(u),p.start=l,d=i[l]){delete i[d.end];var m=d===p?p:d.concat(p);r[m.start=d.start]=i[m.end=p.end]=m}else r[p.start]=i[p.end]=p;else p=[u],r[p.start=l]=i[p.end=h]=p});function a(u){var f=t.arcs[u<0?~u:u],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(p){h[0]+=p[0],h[1]+=p[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(p){n[p<0?~p:p]=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 yy(t){return ql(t,Ay.apply(this,arguments))}function Ay(t,e,n){var r,i,o;if(arguments.length>1)r=by(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:my(t,r)}}function by(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 Vn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Or(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=Vn,r=(a,c)=>Vn(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 Kl(t){return t===null?NaN:+t}const Jl=Or(Vn),oa=Jl.right;Jl.left,Or(Kl).center;var Yn=oa;function vy(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 Wn extends Map{constructor(e,n=Cy){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get($l(this,e))}has(e){return super.has($l(this,e))}set(e,n){return super.set(xy(this,e),n)}delete(e){return super.delete(wy(this,e))}}function $l({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function xy({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function wy({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Cy(t){return t!==null&&typeof t=="object"?t.valueOf():t}function ho(t){return t}function Pr(t,...e){return sa(t,ho,ho,e)}function Sy(t,...e){return sa(t,Array.from,ho,e)}function Ey(t,e,...n){return sa(t,ho,e,n)}function sa(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Wn,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 Dy(t,e){return Array.from(e,n=>t[n])}function My(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n]=e;if(n&&n.length!==2||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=aa(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>aa(n[i],n[o]))),Dy(t,r)}return t.sort(Ty(n))}function Ty(t=Vn){if(t===Vn)return aa;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||r===0?r:(t(n,n)===0)-(t(e,e)===0)}}function aa(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var ca=Math.sqrt(50),ua=Math.sqrt(10),la=Math.sqrt(2);function po(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=ef(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 ef(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>=ca?10:o>=ua?5:o>=la?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ca?10:o>=ua?5:o>=la?2:1)}function dn(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>=ca?i*=10:o>=ua?i*=5:o>=la&&(i*=2),e<t?-i:i}function fa(t,e,n=Kl){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 Ft(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 go(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 Iy(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function mo(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 _n(t){return t=mo(Math.abs(t)),t?t[1]:NaN}function Ny(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 ky(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var By=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function zt(t){if(!(e=By.exec(t)))throw new Error("invalid format: "+t);var e;return new ha({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]})}zt.prototype=ha.prototype;function ha(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+""}ha.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 tf;function Oy(t,e){var n=mo(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(tf=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")+mo(t,Math.max(0,e+o-1))[0]}function nf(t,e){var n=mo(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:Iy,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)=>nf(t*100,e),r:nf,s:Oy,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function of(t){return t}var sf=Array.prototype.map,af=["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?of:Ny(sf.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?of:ky(sf.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=zt(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,y=l.width,v=l.comma,w=l.precision,C=l.trim,b=l.type;b==="n"?(v=!0,b="g"):rf[b]||(w===void 0&&(w=12),C=!0,b="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x=g==="$"?r:/[%p]/.test(b)?s:"",E=rf[b],N=/[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 L(I){var O=A,q=x,Z,ye,Ke;if(b==="c")q=E(I)+q,I="";else{I=+I;var fn=I<0||1/I<0;if(I=isNaN(I)?c:E(Math.abs(I),w),C&&(I=Ly(I)),fn&&+I==0&&d!=="+"&&(fn=!1),O=(fn?d==="("?d:a:d==="-"||d==="("?"":d)+O,q=(b==="s"?af[8+tf/3]:"")+q+(fn&&d==="("?")":""),N){for(Z=-1,ye=I.length;++Z<ye;)if(Ke=I.charCodeAt(Z),48>Ke||Ke>57){q=(Ke===46?i+I.slice(Z+1):I.slice(Z))+q,I=I.slice(0,Z);break}}}v&&!m&&(I=e(I,1/0));var G=O.length+I.length+q.length,je=G<y?new Array(y-G+1).join(h):"";switch(v&&m&&(I=e(je+I,je.length?y-q.length:1/0),je=""),p){case"<":I=O+I+q+je;break;case"=":I=O+je+I+q;break;case"^":I=je.slice(0,G=je.length>>1)+O+I+q+je.slice(G);break;default:I=je+O+I+q;break}return o(I)}return L.toString=function(){return l+""},L}function f(l,h){var p=u((l=zt(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(_n(h)/3)))*3,g=Math.pow(10,-d),m=af[8+d/3];return function(y){return p(g*y)+m}}return{format:u,formatPrefix:f}}var yo,ce,da;Fy({thousands:",",grouping:[3],currency:["$",""]});function Fy(t){return yo=Py(t),ce=yo.format,da=yo.formatPrefix,yo}function cf(t){return Math.max(0,-_n(Math.abs(t)))}function uf(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(_n(e)/3)))*3-_n(Math.abs(t)))}function lf(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,_n(e)-_n(t))+1}var pa=new Date,ga=new Date;function fe(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 fe(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 pa.setTime(+o),ga.setTime(+s),t(pa),t(ga),Math.floor(n(pa,ga))},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 ma=fe(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ma.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?fe(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ma};var ya=ma;const xt=1e3,Ve=xt*60,wt=Ve*60,pn=wt*24,Aa=pn*7,ff=pn*30,ba=pn*365;var zy=fe(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()}),Rt=zy,Ry=fe(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()}),va=Ry,jy=fe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*xt-t.getMinutes()*Ve)},function(t,e){t.setTime(+t+e*wt)},function(t,e){return(e-t)/wt},function(t){return t.getHours()}),xa=jy,Uy=fe(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ve)/pn,t=>t.getDate()-1),gn=Uy;function mn(t){return fe(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)/Aa})}var Ao=mn(0),wa=mn(1);mn(2),mn(3);var Fr=mn(4);mn(5),mn(6);var Gy=fe(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()}),bo=Gy,hf=fe(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()});hf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(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 jt=hf,Hy=fe(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()}),Ca=Hy,Qy=fe(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*wt)},function(t,e){return(e-t)/wt},function(t){return t.getUTCHours()}),Sa=Qy,Vy=fe(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/pn},function(t){return t.getUTCDate()-1}),yn=Vy;function An(t){return fe(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)/Aa})}var vo=An(0),Ea=An(1);An(2),An(3);var zr=An(4);An(5),An(6);var Yy=fe(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()}),xo=Yy,df=fe(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()});df.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:fe(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 Ut=df;function pf(t,e,n,r,i,o){const s=[[Rt,1,xt],[Rt,5,5*xt],[Rt,15,15*xt],[Rt,30,30*xt],[o,1,Ve],[o,5,5*Ve],[o,15,15*Ve],[o,30,30*Ve],[i,1,wt],[i,3,3*wt],[i,6,6*wt],[i,12,12*wt],[r,1,pn],[r,2,2*pn],[n,1,Aa],[e,1,ff],[e,3,3*ff],[t,1,ba]];function a(u,f,l){const h=f<u;h&&([u,f]=[f,u]);const p=l&&typeof l.range=="function"?l:c(u,f,l),d=p?p.range(u,+f+1):[];return h?d.reverse():d}function c(u,f,l){const h=Math.abs(f-u)/l,p=Or(([,,m])=>m).right(s,h);if(p===s.length)return t.every(dn(u/ba,f/ba,l));if(p===0)return ya.every(Math.max(dn(u,f,l),1));const[d,g]=s[h/s[p-1][2]<s[p][2]/h?p-1:p];return d.every(g)}return[a,c]}const[Wy,_y]=pf(Ut,xo,vo,yn,Sa,Ca),[Xy,Zy]=pf(jt,bo,Ao,gn,xa,va),Rr="year",jr="quarter",Ur="month",Gr="week",Hr="date",wo="day",Da="dayofyear",Qr="hours",Vr="minutes",Yr="seconds",Co="milliseconds";[Rr,jr,Ur,Gr,Hr,wo,Da,Qr,Vr,Yr,Co].reduce((t,e,n)=>(t[e]=1+n,t),{});const qy={[Rr]:jt,[jr]:bo.every(3),[Ur]:bo,[Gr]:Ao,[Hr]:gn,[wo]:gn,[Da]:gn,[Qr]:xa,[Vr]:va,[Yr]:Rt,[Co]:ya},Ky={[Rr]:Ut,[jr]:xo.every(3),[Ur]:xo,[Gr]:vo,[Hr]:yn,[wo]:yn,[Da]:yn,[Qr]:Sa,[Vr]:Ca,[Yr]:Rt,[Co]:ya};function Jy(t){return qy[t]}function $y(t){return Ky[t]}function Ma(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 Ta(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 Wr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function gf(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=_r(i),f=Xr(i),l=_r(o),h=Xr(o),p=_r(s),d=Xr(s),g=_r(a),m=Xr(a),y=_r(c),v=Xr(c),w={a:fn,A:G,b:je,B:to,c:null,d:xf,e:xf,f:wA,g:BA,G:OA,H:bA,I:vA,j:xA,L:wf,m:CA,M:SA,p:no,q:qs,Q:Tf,s:If,S:EA,u:DA,U:MA,V:TA,w:IA,W:NA,x:null,X:null,y:kA,Y:LA,Z:PA,"%":Mf},C={a:jl,A:nT,b:rT,B:iT,c:null,d:Sf,e:Sf,f:jA,g:ZA,G:KA,H:FA,I:zA,j:RA,L:Ef,m:UA,M:GA,p:oT,q:sT,Q:Tf,s:If,S:HA,u:QA,U:VA,V:YA,w:WA,W:_A,x:null,X:null,y:XA,Y:qA,Z:JA,"%":Mf},b={a:L,A:I,b:O,B:q,c:Z,d:bf,e:bf,f:gA,g:Af,G:yf,H:vf,I:vf,j:fA,L:pA,m:lA,M:hA,p:N,q:uA,Q:yA,s:AA,S:dA,u:iA,U:oA,V:sA,w:rA,W:aA,x:ye,X:Ke,y:Af,Y:yf,Z:cA,"%":mA};w.x=A(n,w),w.X=A(r,w),w.c=A(e,w),C.x=A(n,C),C.X=A(r,C),C.c=A(e,C);function A(B,R){return function(H){var M=[],Oe=-1,K=0,Ue=B.length,Ge,Qn,B1;for(H instanceof Date||(H=new Date(+H));++Oe<Ue;)B.charCodeAt(Oe)===37&&(M.push(B.slice(K,Oe)),(Qn=mf[Ge=B.charAt(++Oe)])!=null?Ge=B.charAt(++Oe):Qn=Ge==="e"?" ":"0",(B1=R[Ge])&&(Ge=B1(H,Qn)),M.push(Ge),K=Oe+1);return M.push(B.slice(K,Oe)),M.join("")}}function x(B,R){return function(H){var M=Wr(1900,void 0,1),Oe=E(M,B,H+="",0),K,Ue;if(Oe!=H.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?(K=Ta(Wr(M.y,0,1)),Ue=K.getUTCDay(),K=Ue>4||Ue===0?Ea.ceil(K):Ea(K),K=yn.offset(K,(M.V-1)*7),M.y=K.getUTCFullYear(),M.m=K.getUTCMonth(),M.d=K.getUTCDate()+(M.w+6)%7):(K=Ma(Wr(M.y,0,1)),Ue=K.getDay(),K=Ue>4||Ue===0?wa.ceil(K):wa(K),K=gn.offset(K,(M.V-1)*7),M.y=K.getFullYear(),M.m=K.getMonth(),M.d=K.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),Ue="Z"in M?Ta(Wr(M.y,0,1)).getUTCDay():Ma(Wr(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(Ue+5)%7:M.w+M.U*7-(Ue+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Ta(M)):Ma(M)}}function E(B,R,H,M){for(var Oe=0,K=R.length,Ue=H.length,Ge,Qn;Oe<K;){if(M>=Ue)return-1;if(Ge=R.charCodeAt(Oe++),Ge===37){if(Ge=R.charAt(Oe++),Qn=b[Ge in mf?R.charAt(Oe++):Ge],!Qn||(M=Qn(B,H,M))<0)return-1}else if(Ge!=H.charCodeAt(M++))return-1}return M}function N(B,R,H){var M=u.exec(R.slice(H));return M?(B.p=f.get(M[0].toLowerCase()),H+M[0].length):-1}function L(B,R,H){var M=p.exec(R.slice(H));return M?(B.w=d.get(M[0].toLowerCase()),H+M[0].length):-1}function I(B,R,H){var M=l.exec(R.slice(H));return M?(B.w=h.get(M[0].toLowerCase()),H+M[0].length):-1}function O(B,R,H){var M=y.exec(R.slice(H));return M?(B.m=v.get(M[0].toLowerCase()),H+M[0].length):-1}function q(B,R,H){var M=g.exec(R.slice(H));return M?(B.m=m.get(M[0].toLowerCase()),H+M[0].length):-1}function Z(B,R,H){return E(B,e,R,H)}function ye(B,R,H){return E(B,n,R,H)}function Ke(B,R,H){return E(B,r,R,H)}function fn(B){return s[B.getDay()]}function G(B){return o[B.getDay()]}function je(B){return c[B.getMonth()]}function to(B){return a[B.getMonth()]}function no(B){return i[+(B.getHours()>=12)]}function qs(B){return 1+~~(B.getMonth()/3)}function jl(B){return s[B.getUTCDay()]}function nT(B){return o[B.getUTCDay()]}function rT(B){return c[B.getUTCMonth()]}function iT(B){return a[B.getUTCMonth()]}function oT(B){return i[+(B.getUTCHours()>=12)]}function sT(B){return 1+~~(B.getUTCMonth()/3)}return{format:function(B){var R=A(B+="",w);return R.toString=function(){return B},R},parse:function(B){var R=x(B+="",!1);return R.toString=function(){return B},R},utcFormat:function(B){var R=A(B+="",C);return R.toString=function(){return B},R},utcParse:function(B){var R=x(B+="",!0);return R.toString=function(){return B},R}}}var mf={"-":"",_:" ","0":"0"},he=/^\s*\d+/,eA=/^%/,tA=/[\\^$*+?|[\]().{}]/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 nA(t){return t.replace(tA,"\\$&")}function _r(t){return new RegExp("^(?:"+t.map(nA).join("|")+")","i")}function Xr(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function rA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function iA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function oA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function sA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function aA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function yf(t,e,n){var r=he.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Af(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function cA(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 uA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function lA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function bf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function fA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function vf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function hA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function dA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function pA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function gA(t,e,n){var r=he.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function mA(t,e,n){var r=eA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function yA(t,e,n){var r=he.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function AA(t,e,n){var r=he.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function xf(t,e){return j(t.getDate(),e,2)}function bA(t,e){return j(t.getHours(),e,2)}function vA(t,e){return j(t.getHours()%12||12,e,2)}function xA(t,e){return j(1+gn.count(jt(t),t),e,3)}function wf(t,e){return j(t.getMilliseconds(),e,3)}function wA(t,e){return wf(t,e)+"000"}function CA(t,e){return j(t.getMonth()+1,e,2)}function SA(t,e){return j(t.getMinutes(),e,2)}function EA(t,e){return j(t.getSeconds(),e,2)}function DA(t){var e=t.getDay();return e===0?7:e}function MA(t,e){return j(Ao.count(jt(t)-1,t),e,2)}function Cf(t){var e=t.getDay();return e>=4||e===0?Fr(t):Fr.ceil(t)}function TA(t,e){return t=Cf(t),j(Fr.count(jt(t),t)+(jt(t).getDay()===4),e,2)}function IA(t){return t.getDay()}function NA(t,e){return j(wa.count(jt(t)-1,t),e,2)}function kA(t,e){return j(t.getFullYear()%100,e,2)}function BA(t,e){return t=Cf(t),j(t.getFullYear()%100,e,2)}function LA(t,e){return j(t.getFullYear()%1e4,e,4)}function OA(t,e){var n=t.getDay();return t=n>=4||n===0?Fr(t):Fr.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 Sf(t,e){return j(t.getUTCDate(),e,2)}function FA(t,e){return j(t.getUTCHours(),e,2)}function zA(t,e){return j(t.getUTCHours()%12||12,e,2)}function RA(t,e){return j(1+yn.count(Ut(t),t),e,3)}function Ef(t,e){return j(t.getUTCMilliseconds(),e,3)}function jA(t,e){return Ef(t,e)+"000"}function UA(t,e){return j(t.getUTCMonth()+1,e,2)}function GA(t,e){return j(t.getUTCMinutes(),e,2)}function HA(t,e){return j(t.getUTCSeconds(),e,2)}function QA(t){var e=t.getUTCDay();return e===0?7:e}function VA(t,e){return j(vo.count(Ut(t)-1,t),e,2)}function Df(t){var e=t.getUTCDay();return e>=4||e===0?zr(t):zr.ceil(t)}function YA(t,e){return t=Df(t),j(zr.count(Ut(t),t)+(Ut(t).getUTCDay()===4),e,2)}function WA(t){return t.getUTCDay()}function _A(t,e){return j(Ea.count(Ut(t)-1,t),e,2)}function XA(t,e){return j(t.getUTCFullYear()%100,e,2)}function ZA(t,e){return t=Df(t),j(t.getUTCFullYear()%100,e,2)}function qA(t,e){return j(t.getUTCFullYear()%1e4,e,4)}function KA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?zr(t):zr.ceil(t),j(t.getUTCFullYear()%1e4,e,4)}function JA(){return"+0000"}function Mf(){return"%"}function Tf(t){return+t}function If(t){return Math.floor(+t/1e3)}var Xn,Ia,Nf,Na,kf;$A({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 $A(t){return Xn=gf(t),Ia=Xn.format,Nf=Xn.parse,Na=Xn.utcFormat,kf=Xn.utcParse,Xn}function Zr(t){const e={};return n=>e[n]||(e[n]=t(n))}function e2(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=t2(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 t2(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 n2(t){const e=Zr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=zt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return e2(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=zt(s==null?",f":s);const a=dn(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=uf(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=lf(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=cf(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}r2();function r2(){return n2({format:ce,formatPrefix:da})}function Bf(t,e,n){n=n||{},Pe(n)||re("Invalid time multi-format specifier: ".concat(n));const r=e(Yr),i=e(Vr),o=e(Qr),s=e(Hr),a=e(Gr),c=e(Ur),u=e(jr),f=e(Rr),l=t(n[Co]||".%L"),h=t(n[Yr]||":%S"),p=t(n[Vr]||"%I:%M"),d=t(n[Qr]||"%I %p"),g=t(n[Hr]||n[wo]||"%a %d"),m=t(n[Gr]||"%b %d"),y=t(n[Ur]||"%B"),v=t(n[jr]||"%B"),w=t(n[Rr]||"%Y");return C=>(r(C)<C?l:i(C)<C?h:o(C)<C?p:s(C)<C?d:c(C)<C?a(C)<C?g:m:f(C)<C?u(C)<C?y:v:w)(C)}function Lf(t){const e=Zr(t.format),n=Zr(t.utcFormat);return{timeFormat:r=>ie(r)?e(r):Bf(e,Jy,r),utcFormat:r=>ie(r)?n(r):Bf(n,$y,r),timeParse:Zr(t.parse),utcParse:Zr(t.utcParse)}}let ka;i2();function i2(){return ka=Lf({format:Ia,parse:Nf,utcFormat:Na,utcParse:kf})}function o2(t){return Lf(gf(t))}function s2(t){return arguments.length?ka=o2(t):ka}const a2=/^(data:|([A-Za-z]+:)?\/\/)/,c2=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,u2=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Of="file://";function l2(t,e){return n=>({options:n||{},sanitize:h2,load:f2,fileAccess:!!e,file:d2(e),http:g2(t)})}async function f2(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function h2(t,e){e=ta({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=c2.test(t.replace(u2,""));(t==null||typeof t!="string"||!a)&&re("Sanitize failure, invalid URI: "+lo(t));const c=a2.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Of))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Of.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 d2(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):p2}async function p2(){re("No file system access.")}function g2(t){return t?async function(e,n){const r=ta({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Te(o[i])?o[i]():o.text():re(o.status+""+o.statusText)}:m2}async function m2(){re("No HTTP fetch method available.")}const y2=t=>t!=null&&t===t,A2=t=>t==="true"||t==="false"||t===!0||t===!1,b2=t=>!Number.isNaN(Date.parse(t)),Pf=t=>!Number.isNaN(+t)&&!(t instanceof Date),v2=t=>Pf(t)&&Number.isInteger(+t),Ff={boolean:ry,integer:Br,number:Br,date:oy,string:sy,unknown:io},So=[A2,v2,Pf,b2],x2=["boolean","integer","number","date"];function zf(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]&&y2(c)&&!So[a](c)&&(i[a]=0,++s,s===So.length))return"string";return x2[i.reduce((o,s)=>o===0?s:o,0)-1]}function w2(t,e){return e.reduce((n,r)=>(n[r]=zf(t,r),n),{})}function Rf(t){const e=function(n,r){const i={delimiter:t};return Ba(n,r?ta(r,i):i)};return e.responseType="text",e}function Ba(t,e){return e.header&&(t=e.header.map(lo).join(e.delimiter)+`
6
+ `+t),Xl(e.delimiter).parse(t+"")}Ba.responseType="text";function C2(t){return typeof Buffer=="function"&&Te(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function La(t,e){const n=e&&e.property?ro(e.property):io;return Pe(t)&&!C2(t)?S2(n(t),e):n(JSON.parse(t))}La.responseType="json";function S2(t,e){return!Qe(t)&&ty(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const E2={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function jf(t,e){let n,r,i,o;return t=La(t,e),e&&e.feature?(n=gy,i=e.feature):e&&e.mesh?(n=yy,i=e.mesh,o=E2[e.filter]):re("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):re("Invalid TopoJSON object: "+i),r&&r.features||[r]}jf.responseType="json";const Oa={dsv:Ba,csv:Rf(","),tsv:Rf(" "),json:La,topojson:jf};function Uf(t,e){return arguments.length>1?(Oa[t]=e,this):hn(Oa,t)?Oa[t]:null}function Gf(t,e,n,r){e=e||{};const i=Uf(e.type||"json");return i||re("Unknown data format type: "+e.type),t=i(t,e),e.parse&&D2(t,e.parse,n,r),hn(t,"columns")&&delete t.columns,t}function D2(t,e,n,r){if(!t.length)return;const i=s2();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=w2(t,o)),o=Object.keys(e);const h=o.map(p=>{const d=e[p];let g,m;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.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(!Ff[d])throw Error("Illegal format pattern: "+p+":"+d);return Ff[d]});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 qr=l2(typeof fetch!="undefined"&&fetch,null),Hf=1;function Pa(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const u=f=>(f+s-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-s,u.domain=function(f){if(arguments.length){if(t=vy(f),n=t[1]-t[0],n<Hf){n=Hf;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 po(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=dn(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?ce(","):ce(".3s");return d=>p(d+a)},u.copy=()=>Pa().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),u}function M2(){const t=Pa().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,dn(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),p=Math.min(l.continuousEnd-c/4,i[1]+1);for(let d=h;d<=p;d+=c){const g=d-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=dn(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?ce(","):ce(".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 T2(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 Gt(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 Fa=Symbol("implicit");function za(){var t=new Wn,e=[],n=[],r=Fa;function i(o){let s=t.get(o);if(s===void 0){if(r!==Fa)return r;t.set(o,s=e.push(o)-1)}return n[s%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Wn;for(const s of o)t.has(s)||t.set(s,e.push(s)-1);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 za(e,n).unknown(r)},at.apply(i,arguments),i}function Zn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Kr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Ht(){}var bn=.7,qn=1/bn,Kn="\\s*([+-]?\\d+)\\s*",Jr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ct="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",I2=/^#([0-9a-f]{3,8})$/,N2=new RegExp(`^rgb\\(${Kn},${Kn},${Kn}\\)$`),k2=new RegExp(`^rgb\\(${ct},${ct},${ct}\\)$`),B2=new RegExp(`^rgba\\(${Kn},${Kn},${Kn},${Jr}\\)$`),L2=new RegExp(`^rgba\\(${ct},${ct},${ct},${Jr}\\)$`),O2=new RegExp(`^hsl\\(${Jr},${ct},${ct}\\)$`),P2=new RegExp(`^hsla\\(${Jr},${ct},${ct},${Jr}\\)$`),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};Zn(Ht,vn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Vf,formatHex:Vf,formatHex8:F2,formatHsl:z2,formatRgb:Yf,toString:Yf});function Vf(){return this.rgb().formatHex()}function F2(){return this.rgb().formatHex8()}function z2(){return qf(this).formatHsl()}function Yf(){return this.rgb().formatRgb()}function vn(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 de(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Eo(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Eo(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=N2.exec(t))?new de(e[1],e[2],e[3],1):(e=k2.exec(t))?new de(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=B2.exec(t))?Eo(e[1],e[2],e[3],e[4]):(e=L2.exec(t))?Eo(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=O2.exec(t))?Zf(e[1],e[2]/100,e[3]/100,1):(e=P2.exec(t))?Zf(e[1],e[2]/100,e[3]/100,e[4]):Qf.hasOwnProperty(t)?Wf(Qf[t]):t==="transparent"?new de(NaN,NaN,NaN,0):null}function Wf(t){return new de(t>>16&255,t>>8&255,t&255,1)}function Eo(t,e,n,r){return r<=0&&(t=e=n=NaN),new de(t,e,n,r)}function Ra(t){return t instanceof Ht||(t=vn(t)),t?(t=t.rgb(),new de(t.r,t.g,t.b,t.opacity)):new de}function Do(t,e,n,r){return arguments.length===1?Ra(t):new de(t,e,n,r==null?1:r)}function de(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Zn(de,Do,Kr(Ht,{brighter(t){return t=t==null?qn:Math.pow(qn,t),new de(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?bn:Math.pow(bn,t),new de(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new de(xn(this.r),xn(this.g),xn(this.b),Mo(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:_f,formatHex:_f,formatHex8:R2,formatRgb:Xf,toString:Xf}));function _f(){return`#${wn(this.r)}${wn(this.g)}${wn(this.b)}`}function R2(){return`#${wn(this.r)}${wn(this.g)}${wn(this.b)}${wn((isNaN(this.opacity)?1:this.opacity)*255)}`}function Xf(){const t=Mo(this.opacity);return`${t===1?"rgb(":"rgba("}${xn(this.r)}, ${xn(this.g)}, ${xn(this.b)}${t===1?")":`, ${t})`}`}function Mo(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function xn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function wn(t){return t=xn(t),(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 $e(t,e,n,r)}function qf(t){if(t instanceof $e)return new $e(t.h,t.s,t.l,t.opacity);if(t instanceof Ht||(t=vn(t)),!t)return new $e;if(t instanceof $e)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 $e(s,a,c,t.opacity)}function ja(t,e,n,r){return arguments.length===1?qf(t):new $e(t,e,n,r==null?1:r)}function $e(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Zn($e,ja,Kr(Ht,{brighter(t){return t=t==null?qn:Math.pow(qn,t),new $e(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?bn:Math.pow(bn,t),new $e(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new de(Ua(t>=240?t-240:t+120,i,r),Ua(t,i,r),Ua(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new $e(Kf(this.h),To(this.s),To(this.l),Mo(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Mo(this.opacity);return`${t===1?"hsl(":"hsla("}${Kf(this.h)}, ${To(this.s)*100}%, ${To(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Kf(t){return t=(t||0)%360,t<0?t+360:t}function To(t){return Math.max(0,Math.min(1,t||0))}function Ua(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,Io=18,eh=.96422,th=1,nh=.82521,rh=4/29,Jn=6/29,ih=3*Jn*Jn,j2=Jn*Jn*Jn;function oh(t){if(t instanceof ut)return new ut(t.l,t.a,t.b,t.opacity);if(t instanceof Ct)return sh(t);t instanceof de||(t=Ra(t));var e=Ya(t.r),n=Ya(t.g),r=Ya(t.b),i=Ha((.2225045*e+.7168786*n+.0606169*r)/th),o,s;return e===n&&n===r?o=s=i:(o=Ha((.4360747*e+.3850649*n+.1430804*r)/eh),s=Ha((.0139322*e+.0971045*n+.7141733*r)/nh)),new ut(116*i-16,500*(o-i),200*(i-s),t.opacity)}function Ga(t,e,n,r){return arguments.length===1?oh(t):new ut(t,e,n,r==null?1:r)}function ut(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Zn(ut,Ga,Kr(Ht,{brighter(t){return new ut(this.l+Io*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new ut(this.l-Io*(t==null?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=eh*Qa(e),t=th*Qa(t),n=nh*Qa(n),new de(Va(3.1338561*e-1.6168667*t-.4906146*n),Va(-.9787684*e+1.9161415*t+.033454*n),Va(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function Ha(t){return t>j2?Math.pow(t,1/3):t/ih+rh}function Qa(t){return t>Jn?t*t*t:ih*(t-rh)}function Va(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ya(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function U2(t){if(t instanceof Ct)return new Ct(t.h,t.c,t.l,t.opacity);if(t instanceof ut||(t=oh(t)),t.a===0&&t.b===0)return new Ct(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*$f;return new Ct(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Wa(t,e,n,r){return arguments.length===1?U2(t):new Ct(t,e,n,r==null?1:r)}function Ct(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 ut(t.l,0,0,t.opacity);var e=t.h*Jf;return new ut(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Zn(Ct,Wa,Kr(Ht,{brighter(t){return new Ct(this.h,this.c,this.l+Io*(t==null?1:t),this.opacity)},darker(t){return new Ct(this.h,this.c,this.l-Io*(t==null?1:t),this.opacity)},rgb(){return sh(this).rgb()}}));var ah=-.14861,_a=1.78277,Xa=-.29227,No=-.90649,$r=1.97294,ch=$r*No,uh=$r*_a,lh=_a*Xa-No*ah;function G2(t){if(t instanceof Cn)return new Cn(t.h,t.s,t.l,t.opacity);t instanceof de||(t=Ra(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=($r*(n-i)-Xa*o)/No,a=Math.sqrt(s*s+o*o)/($r*i*(1-i)),c=a?Math.atan2(s,o)*$f-120:NaN;return new Cn(c<0?c+360:c,a,i,t.opacity)}function Za(t,e,n,r){return arguments.length===1?G2(t):new Cn(t,e,n,r==null?1:r)}function Cn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Zn(Cn,Za,Kr(Ht,{brighter(t){return t=t==null?qn:Math.pow(qn,t),new Cn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?bn:Math.pow(bn,t),new Cn(this.h,this.s,this.l*t,this.opacity)},rgb(){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 de(255*(e+n*(ah*r+_a*i)),255*(e+n*(Xa*r+No*i)),255*(e+n*($r*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 ko=t=>()=>t;function ph(t,e){return function(n){return t+n*e}}function H2(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 Bo(t,e){var n=e-t;return n?ph(t,n>180||n<-180?n-360*Math.round(n/360):n):ko(isNaN(t)?e:t)}function Q2(t){return(t=+t)==1?pe:function(e,n){return n-e?H2(e,n,t):ko(isNaN(e)?n:e)}}function pe(t,e){var n=e-t;return n?ph(t,n):ko(isNaN(t)?e:t)}var qa=function t(e){var n=Q2(e);function r(i,o){var s=n((i=Do(i)).r,(o=Do(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=pe(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=Do(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 V2=gh(hh),Y2=gh(dh);function Ka(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 W2(t,e){return(mh(e)?Ka: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]=Qt(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 et(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]=Qt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Ja=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,$a=new RegExp(Ja.source,"g");function _2(t){return function(){return t}}function X2(t){return function(e){return t(e)+""}}function vh(t,e){var n=Ja.lastIndex=$a.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=Ja.exec(t))&&(i=$a.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:et(r,i)})),n=$a.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?X2(c[0].x):_2(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 Qt(t,e){var n=typeof e,r;return e==null||n==="boolean"?ko(e):(n==="number"?et:n==="string"?(r=vn(e))?(e=r,qa):vh:e instanceof vn?qa:e instanceof Date?Ah:mh(e)?Ka:Array.isArray(e)?yh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?bh:et)(t,e)}function Z2(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function q2(t,e){var n=Bo(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function ei(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var xh=180/Math.PI,ec={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)*xh,skewX:Math.atan(c)*xh,scaleX:s,scaleY:a}}var Lo;function K2(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?ec:wh(e.a,e.b,e.c,e.d,e.e,e.f)}function J2(t){return t==null||(Lo||(Lo=document.createElementNS("http://www.w3.org/2000/svg","g")),Lo.setAttribute("transform",t),!(t=Lo.transform.baseVal.consolidate()))?ec:(t=t.matrix,wh(t.a,t.b,t.c,t.d,t.e,t.f))}function Ch(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,h,p,d){if(u!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:et(u,l)},{i:g-2,x:et(f,h)})}else(l||h)&&p.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:et(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:et(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,h,p,d){if(u!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:et(u,l)},{i:g-2,x:et(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"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(p){for(var d=-1,g=h.length,m;++d<g;)l[(m=h[d]).i]=m.x(p);return l.join("")}}}var $2=Ch(K2,"px, ","px)","deg)"),eb=Ch(J2,", ",")",")"),tb=1e-12;function Sh(t){return((t=Math.exp(t))+1/t)/2}function nb(t){return((t=Math.exp(t))-1/t)/2}function rb(t){return((t=Math.exp(2*t))-1)/(t+1)}var Eh=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],p=f-a,d=l-c,g=p*p+d*d,m,y;if(g<tb)y=Math.log(h/u)/e,m=function(x){return[a+x*p,c+x*d,u*Math.exp(e*x*y)]};else{var v=Math.sqrt(g),w=(h*h-u*u+r*g)/(2*u*n*v),C=(h*h-u*u-r*g)/(2*h*n*v),b=Math.log(Math.sqrt(w*w+1)-w),A=Math.log(Math.sqrt(C*C+1)-C);y=(A-b)/e,m=function(x){var E=x*y,N=Sh(b),L=u/(n*v)*(N*rb(e*E+b)-nb(b));return[a+L*p,c+L*d,u*N/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 Dh(t){return function(e,n){var r=t((e=ja(e)).h,(n=ja(n)).h),i=pe(e.s,n.s),o=pe(e.l,n.l),s=pe(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 ib=Dh(Bo),ob=Dh(pe);function sb(t,e){var n=pe((t=Ga(t)).l,(e=Ga(e)).l),r=pe(t.a,e.a),i=pe(t.b,e.b),o=pe(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=Wa(e)).h,(n=Wa(n)).h),i=pe(e.c,n.c),o=pe(e.l,n.l),s=pe(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 ab=Mh(Bo),cb=Mh(pe);function Th(t){return function e(n){n=+n;function r(i,o){var s=t((i=Za(i)).h,(o=Za(o)).h),a=pe(i.s,o.s),c=pe(i.l,o.l),u=pe(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 ub=Th(Bo),lb=Th(pe);function tc(t,e){e===void 0&&(e=t,t=Qt);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 fb(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var hb=Object.freeze(Object.defineProperty({__proto__:null,interpolate:Qt,interpolateArray:W2,interpolateBasis:hh,interpolateBasisClosed:dh,interpolateDate:Ah,interpolateDiscrete:Z2,interpolateHue:q2,interpolateNumber:et,interpolateNumberArray:Ka,interpolateObject:bh,interpolateRound:ei,interpolateString:vh,interpolateTransformCss:$2,interpolateTransformSvg:eb,interpolateZoom:Eh,interpolateRgb:qa,interpolateRgbBasis:V2,interpolateRgbBasisClosed:Y2,interpolateHsl:ib,interpolateHslLong:ob,interpolateLab:sb,interpolateHcl:ab,interpolateHclLong:cb,interpolateCubehelix:ub,interpolateCubehelixLong:lb,piecewise:tc,quantize:fb},Symbol.toStringTag,{value:"Module"}));function db(t){return function(){return t}}function nc(t){return+t}var Ih=[0,1];function Ne(t){return t}function rc(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:db(isNaN(e)?NaN:.5)}function pb(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function gb(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=rc(i,r),o=n(s,o)):(r=rc(r,i),o=n(o,s)),function(a){return o(r(a))}}function mb(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]=rc(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=Yn(t,a,1,r)-1;return o[c](i[c](a))}}function ti(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Oo(){var t=Ih,e=Ih,n=Qt,r,i,o,s=Ne,a,c,u;function f(){var h=Math.min(t.length,e.length);return s!==Ne&&(s=pb(t[0],t[h-1])),a=h>2?mb:gb,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),et)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,nc),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=ei,f()},l.clamp=function(h){return arguments.length?(s=h?!0:Ne,f()):s!==Ne},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function Nh(){return Oo()(Ne,Ne)}function kh(t,e,n,r){var i=dn(t,e,n),o;switch(r=zt(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=uf(i,s))&&(r.precision=o),da(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=lf(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=cf(i))&&(r.precision=o-(r.type==="%")*2);break}}return ce(r)}function Sn(t){var e=t.domain;return t.ticks=function(n){var r=e();return po(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return kh(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=ef(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 Bh(){var t=Nh();return t.copy=function(){return ti(t,Bh())},at.apply(t,arguments),Sn(t)}function Lh(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,nc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Lh(t).unknown(e)},t=arguments.length?Array.from(t,nc):[0,1],Sn(n)}function Oh(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 Ph(t){return Math.log(t)}function Fh(t){return Math.exp(t)}function yb(t){return-Math.log(-t)}function Ab(t){return-Math.exp(-t)}function bb(t){return isFinite(t)?+("1e"+t):t<0?0:t}function vb(t){return t===10?bb:t===Math.E?Math.exp:e=>Math.pow(t,e)}function xb(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function zh(t){return(e,n)=>-t(-e,n)}function ic(t){const e=t(Ph,Fh),n=e.domain;let r=10,i,o;function s(){return i=xb(r),o=vb(r),n()[0]<0?(i=zh(i),o=zh(o),t(yb,Ab)):t(Ph,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=a=>{const c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let h=i(u),p=i(f),d,g;const m=a==null?10:+a;let y=[];if(!(r%1)&&p-h<m){if(h=Math.floor(h),p=Math.ceil(p),u>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<u)){if(g>f)break;y.push(g)}}else for(;h<=p;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/o(-h):d*o(h),!(g<u)){if(g>f)break;y.push(g)}y.length*2<m&&(y=po(u,f,m))}else y=po(h,p,Math.min(p-h,m)).map(o);return l?y.reverse():y},e.tickFormat=(a,c)=>{if(a==null&&(a=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=zt(c)).precision==null&&(c.trim=!0),c=ce(c)),a===1/0)return c;const u=Math.max(1,r*a/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(Oh(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function oc(){const t=ic(Oo()).domain([1,10]);return t.copy=()=>ti(t,oc()).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 jh(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function sc(t){var e=1,n=t(Rh(e),jh(e));return n.constant=function(r){return arguments.length?t(Rh(e=+r),jh(e)):e},Sn(n)}function Uh(){var t=sc(Oo());return t.copy=function(){return ti(t,Uh()).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 wb(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Cb(t){return t<0?-t*t:t*t}function ac(t){var e=t(Ne,Ne),n=1;function r(){return n===1?t(Ne,Ne):n===.5?t(wb,Cb):t(Gh(n),Gh(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Sn(e)}function cc(){var t=ac(Oo());return t.copy=function(){return ti(t,cc()).exponent(t.exponent())},at.apply(t,arguments),t}function Sb(){return cc.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]=fa(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[Yn(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(Vn),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[Yn(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(Sn(s),arguments)}function Vh(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Yn(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 Eb(t){return new Date(t)}function Db(t){return t instanceof Date?+t:+new Date(+t)}function uc(t,e,n,r,i,o,s,a,c,u){var f=Nh(),l=f.invert,h=f.domain,p=u(".%L"),d=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),v=u("%b %d"),w=u("%B"),C=u("%Y");function b(A){return(c(A)<A?p:a(A)<A?d:s(A)<A?g:o(A)<A?m:r(A)<A?i(A)<A?y:v:n(A)<A?w:C)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?h(Array.from(A,Db)):h().map(Eb)},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(Oh(x,A)):f},f.copy=function(){return ti(f,uc(t,e,n,r,i,o,s,a,c,u))},f}function Mb(){return at.apply(uc(Xy,Zy,jt,bo,Ao,gn,xa,va,Rt,Ia).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Tb(){return at.apply(uc(Wy,_y,Ut,xo,vo,yn,Sa,Ca,Rt,Na).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Po(){var t=0,e=1,n,r,i,o,s=Ne,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 p,d;return arguments.length?([p,d]=h,s=l(p,d),u):[s(0),s(1)]}}return u.range=f(Qt),u.rangeRound=f(ei),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 Vt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function lc(){var t=Sn(Po()(Ne));return t.copy=function(){return Vt(t,lc())},Gt.apply(t,arguments)}function Yh(){var t=ic(Po()).domain([1,10]);return t.copy=function(){return Vt(t,Yh()).base(t.base())},Gt.apply(t,arguments)}function Wh(){var t=sc(Po());return t.copy=function(){return Vt(t,Wh()).constant(t.constant())},Gt.apply(t,arguments)}function fc(){var t=ac(Po());return t.copy=function(){return Vt(t,fc()).exponent(t.exponent())},Gt.apply(t,arguments)}function Ib(){return fc.apply(null,arguments).exponent(.5)}function Fo(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=Ne,f,l=!1,h;function p(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))}p.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,p):[t,e,n]},p.clamp=function(g){return arguments.length?(l=!!g,p):l},p.interpolator=function(g){return arguments.length?(u=g,p):u};function d(g){return function(m){var y,v,w;return arguments.length?([y,v,w]=m,u=tc(g,[y,v,w]),p):[u(0),u(.5),u(1)]}}return p.range=d(Qt),p.rangeRound=d(ei),p.unknown=function(g){return arguments.length?(h=g,p):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,p}}function _h(){var t=Sn(Fo()(Ne));return t.copy=function(){return Vt(t,_h())},Gt.apply(t,arguments)}function Xh(){var t=ic(Fo()).domain([.1,1,10]);return t.copy=function(){return Vt(t,Xh()).base(t.base())},Gt.apply(t,arguments)}function Zh(){var t=sc(Fo());return t.copy=function(){return Vt(t,Zh()).constant(t.constant())},Gt.apply(t,arguments)}function hc(){var t=ac(Fo());return t.copy=function(){return Vt(t,hc()).exponent(t.exponent())},Gt.apply(t,arguments)}function Nb(){return hc.apply(null,arguments).exponent(.5)}function dc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const kb="identity",$n="linear",Yt="log",ni="pow",ri="sqrt",zo="symlog",qh="time",Kh="utc",lt="sequential",er="diverging",pc="quantile",Jh="quantize",$h="threshold",gc="ordinal",mc="point",ed="band",yc="bin-ordinal",ue="continuous",ii="discrete",oi="discretizing",Ye="interpolating",td="temporal";function Bb(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 Lb(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 Ac(){const t=za().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],p=r[1-h],d=dc(l,a,c);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*u,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=Ft(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],p=h?n().reverse():n(),d=p.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<p[0]||g>r[1-h])))return y=Math.max(0,oa(p,g)-1),v=g===m?y:oa(p,m)-1,g-p[y]>o+1e-10&&++y,h&&(w=y,y=d-v,v=d-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 Ac().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 Ob(){return nd(Ac().paddingInner(1))}var Pb=Array.prototype.map;function Fb(t){return Pb.call(t,Br)}const zb=Array.prototype.slice;function rd(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Yn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Fb(r),n):t.slice()},n.range=function(r){return arguments.length?(e=zb.call(r),n):e.slice()},n.tickFormat=function(r,i){return kh(t[0],Je(t),r==null?10:r,i)},n.copy=function(){return rd().domain(n.domain()).range(n.range())},n}const Ro={};function Rb(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Bb(o):o.invertExtent?Lb(o):void 0),o.type=t,o};return r.metadata=fo(ea(n)),r}function V(t,e,n){return arguments.length>1?(Ro[t]=Rb(t,e,n),this):jb(t)?Ro[t]:void 0}V(kb,Lh),V($n,Bh,ue),V(Yt,oc,[ue,Yt]),V(ni,cc,ue),V(ri,Sb,ue),V(zo,Uh,ue),V(qh,Mb,[ue,td]),V(Kh,Tb,[ue,td]),V(lt,lc,[ue,Ye]),V("".concat(lt,"-").concat($n),lc,[ue,Ye]),V("".concat(lt,"-").concat(Yt),Yh,[ue,Ye,Yt]),V("".concat(lt,"-").concat(ni),fc,[ue,Ye]),V("".concat(lt,"-").concat(ri),Ib,[ue,Ye]),V("".concat(lt,"-").concat(zo),Wh,[ue,Ye]),V("".concat(er,"-").concat($n),_h,[ue,Ye]),V("".concat(er,"-").concat(Yt),Xh,[ue,Ye,Yt]),V("".concat(er,"-").concat(ni),hc,[ue,Ye]),V("".concat(er,"-").concat(ri),Nb,[ue,Ye]),V("".concat(er,"-").concat(zo),Zh,[ue,Ye]),V(pc,Hh,[oi,pc]),V(Jh,Qh,oi),V($h,Vh,oi),V(yc,rd,[ii,oi]),V(gc,za,ii),V(ed,Ac,ii),V(mc,Ob,ii);function jb(t){return hn(Ro,t)}function si(t,e){const n=Ro[t];return n&&n.metadata[e]}function tt(t){return si(t,ue)}function Wt(t){return si(t,ii)}function tr(t){return si(t,oi)}function id(t){return si(t,Yt)}function jo(t){return si(t,Ye)}function Ub(t,e){const n=e[0],r=Je(e)-n;return function(i){return t(n+i*r)}}function Uo(t,e,n){return tc(od(e||"rgb",n),t)}function Gb(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=hb[Hb(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Hb(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const Qb={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"},Vb={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)bc(n,e(t[n]))}const cd={};ad(Vb,sd),ad(Qb,t=>Uo(sd(t)));function bc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(cd[t]=e,this):cd[t]}var fT="";function Yb(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 kc;const Jn=globalThis.trustedTypes,Od=Jn?Jn.createPolicy("lit-html",{createHTML:t=>t}):void 0,qt=`lit$${(Math.random()+"").slice(9)}$`,Bd="?"+qt,Ux=`<${Bd}>`,$n=document,ri=(t="")=>$n.createComment(t),ii=t=>t===null||typeof t!="object"&&typeof t!="function",Pd=Array.isArray,jx=t=>{var e;return Pd(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},oi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Fd=/-->/g,zd=/>/g,wn=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,Rd=/'/g,Ud=/"/g,jd=/^(?:script|style|textarea)$/i,Gx=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),M=Gx(1),xe=Symbol.for("lit-noChange"),R=Symbol.for("lit-nothing"),Gd=new WeakMap,Xe=(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 ai(e.insertBefore(ri(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},er=$n.createTreeWalker($n,129,null,!1),Hx=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=oi;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===oi?l[1]==="!--"?s=Fd:l[1]!==void 0?s=zd:l[2]!==void 0?(jd.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=wn):l[3]!==void 0&&(s=wn):s===wn?l[0]===">"?(s=i!=null?i:oi,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?wn:l[3]==='"'?Ud:Rd):s===Ud||s===Rd?s=wn:s===Fd||s===zd?s=oi:(s=wn,i=void 0);const p=s===wn&&t[c+1].startsWith("/>")?" ":"";o+=s===oi?u+Ux:h>=0?(r.push(f),u.slice(0,h)+"$lit$"+u.slice(h)+qt+p):u+qt+(h===-2?(r.push(void 0),c):p)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");return[Od!==void 0?Od.createHTML(a):a,r]};class si{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]=Hx(e,n);if(this.el=si.createElement(u,r),er.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=er.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(qt)){const d=f[s++];if(l.push(h),d!==void 0){const p=i.getAttribute(d.toLowerCase()+"$lit$").split(qt),g=/([.?@])?(.*)/.exec(d);c.push({type:1,index:o,name:g[2],strings:p,ctor:g[1]==="."?Vx:g[1]==="?"?Yx:g[1]==="@"?Wx:_o})}else c.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(jd.test(i.tagName)){const l=i.textContent.split(qt),h=l.length-1;if(h>0){i.textContent=Jn?Jn.emptyScript:"";for(let d=0;d<h;d++)i.append(l[d],ri()),er.nextNode(),c.push({type:2,index:++o});i.append(l[h],ri())}}}else if(i.nodeType===8)if(i.data===Bd)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(qt,l+1))!==-1;)c.push({type:7,index:o}),l+=qt.length-1}o++}}static createElement(e,n){const r=$n.createElement("template");return r.innerHTML=e,r}}function tr(t,e,n=t,r){var i,o,s,a;if(e===xe)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=ii(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=tr(t,c._$AS(t,e.values),c,r)),e}class Qx{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:$n).importNode(r,!0);er.currentNode=o;let s=er.nextNode(),a=0,c=0,u=i[0];for(;u!==void 0;){if(a===u.index){let f;u.type===2?f=new ai(s,s.nextSibling,this,e):u.type===1?f=new u.ctor(s,u.name,u.strings,this,e):u.type===6&&(f=new Xx(s,this,e)),this.v.push(f),u=i[++c]}a!==(u==null?void 0:u.index)&&(s=er.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 ai{constructor(e,n,r,i){var o;this.type=2,this._$AH=R,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=tr(this,e,n),ii(e)?e===R||e==null||e===""?(this._$AH!==R&&this._$AR(),this._$AH=R):e!==this._$AH&&e!==xe&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.S(e):jx(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!==R&&ii(this._$AH)?this._$AA.nextSibling.data=e:this.S($n.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=si.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 Qx(o,this),a=s.p(this.options);s.m(r),this.S(a),this._$AH=s}}_$AC(e){let n=Gd.get(e.strings);return n===void 0&&Gd.set(e.strings,n=new si(e)),n}M(e){Pd(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 ai(this.A(ri()),this.A(ri()),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 _o{constructor(e,n,r,i,o){this.type=1,this._$AH=R,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=R}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=tr(this,e,n,0),s=!ii(e)||e!==this._$AH&&e!==xe,s&&(this._$AH=e);else{const a=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=tr(this,a[r+c],n,c),u===xe&&(u=this._$AH[c]),s||(s=!ii(u)||u!==this._$AH[c]),u===R?e=R:e!==R&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}s&&!i&&this.k(e)}k(e){e===R?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Vx extends _o{constructor(){super(...arguments),this.type=3}k(e){this.element[this.name]=e===R?void 0:e}}const _x=Jn?Jn.emptyScript:"";class Yx extends _o{constructor(){super(...arguments),this.type=4}k(e){e&&e!==R?this.element.setAttribute(this.name,_x):this.element.removeAttribute(this.name)}}class Wx extends _o{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=tr(this,e,n,0))!==null&&r!==void 0?r:R)===xe)return;const i=this._$AH,o=e===R&&i!==R||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==R&&(i===R||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 Xx{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){tr(this,e)}}const Hd=window.litHtmlPolyfillSupport;Hd==null||Hd(si,ai),((kc=globalThis.litHtmlVersions)!==null&&kc!==void 0?kc:globalThis.litHtmlVersions=[]).push("2.0.2");function Qd(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function qx(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function qe(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function pe(t){return t[t.length-1]}const En="gs-suppress-tooltip";class Zx{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=pe(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=Rx(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&Kx(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Xe("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Xe(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(M`${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 Kx(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const Jx="RawCode",$x="Literal",ev="Property",tv="Identifier",nv="ArrayExpression",rv="BinaryExpression",iv="CallExpression",ov="ConditionalExpression",sv="LogicalExpression",av="MemberExpression",cv="ObjectExpression",uv="UnaryExpression";function rt(t){this.type=t}rt.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=lv(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function lv(t){switch(t.type){case nv:return t.elements;case rv:case sv:return[t.left,t.right];case iv:return[t.callee].concat(t.arguments);case ov:return[t.test,t.consequent,t.alternate];case av:return[t.object,t.property];case cv:return t.properties;case ev:return[t.key,t.value];case uv:return[t.argument];case tv:case $x:case Jx:default:return[]}}var dt,N,C,ve,X,Yo=1,ci=2,Sn=3,Zt=4,Wo=5,Cn=6,Oe=7,ui=8,fv=9;dt={},dt[Yo]="Boolean",dt[ci]="<end>",dt[Sn]="Identifier",dt[Zt]="Keyword",dt[Wo]="Null",dt[Cn]="Numeric",dt[Oe]="Punctuator",dt[ui]="String",dt[fv]="RegularExpression";var hv="ArrayExpression",dv="BinaryExpression",pv="CallExpression",gv="ConditionalExpression",Vd="Identifier",mv="Literal",yv="LogicalExpression",Av="MemberExpression",bv="ObjectExpression",xv="Property",vv="UnaryExpression",ge="Unexpected token %0",wv="Unexpected number",Ev="Unexpected string",Sv="Unexpected identifier",Cv="Unexpected reserved word",Dv="Unexpected end of input",Oc="Invalid regular expression",Bc="Invalid regular expression: missing /",_d="Octal literals are not allowed in strict mode.",Mv="Duplicate data property in object literal not allowed in strict mode",ye="ILLEGAL",li="Disabled.",Iv=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]"),Tv=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 Xo(t,e){if(!t)throw new Error("ASSERT: "+e)}function Mt(t){return t>=48&&t<=57}function Pc(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function fi(t){return"01234567".indexOf(t)>=0}function Nv(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 hi(t){return t===10||t===13||t===8232||t===8233}function di(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Iv.test(String.fromCharCode(t))}function qo(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Tv.test(String.fromCharCode(t))}const Lv={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 Yd(){for(;C<ve;){const t=N.charCodeAt(C);if(Nv(t)||hi(t))++C;else break}}function Fc(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)C<ve&&Pc(N[C])?(r=N[C++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):Q({},ge,ye);return String.fromCharCode(i)}function kv(){var t,e,n,r;for(t=N[C],e=0,t==="}"&&Q({},ge,ye);C<ve&&(t=N[C++],!!Pc(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&Q({},ge,ye),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Wd(){var t,e;for(t=N.charCodeAt(C++),e=String.fromCharCode(t),t===92&&(N.charCodeAt(C)!==117&&Q({},ge,ye),++C,t=Fc("u"),(!t||t==="\\"||!di(t.charCodeAt(0)))&&Q({},ge,ye),e=t);C<ve&&(t=N.charCodeAt(C),!!qo(t));)++C,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),N.charCodeAt(C)!==117&&Q({},ge,ye),++C,t=Fc("u"),(!t||t==="\\"||!qo(t.charCodeAt(0)))&&Q({},ge,ye),e+=t);return e}function Ov(){var t,e;for(t=C++;C<ve;){if(e=N.charCodeAt(C),e===92)return C=t,Wd();if(qo(e))++C;else break}return N.slice(t,C)}function Bv(){var t,e,n;return t=C,e=N.charCodeAt(C)===92?Wd():Ov(),e.length===1?n=Sn:Lv.hasOwnProperty(e)?n=Zt:e==="null"?n=Wo:e==="true"||e==="false"?n=Yo:n=Sn,{type:n,value:e,start:t,end:C}}function zc(){var t=C,e=N.charCodeAt(C),n,r=N[C],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++C,{type:Oe,value:String.fromCharCode(e),start:t,end:C};default:if(n=N.charCodeAt(C+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 C+=2,{type:Oe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:C};case 33:case 61:return C+=2,N.charCodeAt(C)===61&&++C,{type:Oe,value:N.slice(t,C),start:t,end:C}}}if(s=N.substr(C,4),s===">>>=")return C+=4,{type:Oe,value:s,start:t,end:C};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return C+=3,{type:Oe,value:o,start:t,end:C};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return C+=2,{type:Oe,value:i,start:t,end:C};if(i==="//"&&Q({},ge,ye),"<>=!+-*%&|^/".indexOf(r)>=0)return++C,{type:Oe,value:r,start:t,end:C};Q({},ge,ye)}function Pv(t){let e="";for(;C<ve&&Pc(N[C]);)e+=N[C++];return e.length===0&&Q({},ge,ye),di(N.charCodeAt(C))&&Q({},ge,ye),{type:Cn,value:parseInt("0x"+e,16),start:t,end:C}}function Fv(t){let e="0"+N[C++];for(;C<ve&&fi(N[C]);)e+=N[C++];return(di(N.charCodeAt(C))||Mt(N.charCodeAt(C)))&&Q({},ge,ye),{type:Cn,value:parseInt(e,8),octal:!0,start:t,end:C}}function Xd(){var t,e,n;if(n=N[C],Xo(Mt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=C,t="",n!=="."){if(t=N[C++],n=N[C],t==="0"){if(n==="x"||n==="X")return++C,Pv(e);if(fi(n))return Fv(e);n&&Mt(n.charCodeAt(0))&&Q({},ge,ye)}for(;Mt(N.charCodeAt(C));)t+=N[C++];n=N[C]}if(n==="."){for(t+=N[C++];Mt(N.charCodeAt(C));)t+=N[C++];n=N[C]}if(n==="e"||n==="E")if(t+=N[C++],n=N[C],(n==="+"||n==="-")&&(t+=N[C++]),Mt(N.charCodeAt(C)))for(;Mt(N.charCodeAt(C));)t+=N[C++];else Q({},ge,ye);return di(N.charCodeAt(C))&&Q({},ge,ye),{type:Cn,value:parseFloat(t),start:e,end:C}}function zv(){var t="",e,n,r,i,o=!1;for(e=N[C],Xo(e==="'"||e==='"',"String literal must starts with a quote"),n=C,++C;C<ve;)if(r=N[C++],r===e){e="";break}else if(r==="\\")if(r=N[C++],!r||!hi(r.charCodeAt(0)))switch(r){case"u":case"x":N[C]==="{"?(++C,t+=kv()):t+=Fc(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:fi(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),C<ve&&fi(N[C])&&(o=!0,i=i*8+"01234567".indexOf(N[C++]),"0123".indexOf(r)>=0&&C<ve&&fi(N[C])&&(i=i*8+"01234567".indexOf(N[C++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&N[C]===`
12
- `&&++C;else{if(hi(r.charCodeAt(0)))break;t+=r}return e!==""&&Q({},ge,ye),{type:ui,value:t,octal:o,start:n,end:C}}function Rv(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";Q({},Oc)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{Q({},Oc)}try{return new RegExp(t,e)}catch{return null}}function Uv(){var t,e,n,r,i;for(t=N[C],Xo(t==="/","Regular expression literal must start with a slash"),e=N[C++],n=!1,r=!1;C<ve;)if(t=N[C++],e+=t,t==="\\")t=N[C++],hi(t.charCodeAt(0))&&Q({},Bc),e+=t;else if(hi(t.charCodeAt(0)))Q({},Bc);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||Q({},Bc),i=e.substr(1,e.length-2),{value:i,literal:e}}function jv(){var t,e,n;for(e="",n="";C<ve&&(t=N[C],!!qo(t.charCodeAt(0)));)++C,t==="\\"&&C<ve?Q({},ge,ye):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&Q({},Oc,n),{value:n,literal:e}}function Gv(){var t,e,n,r;return X=null,Yd(),t=C,e=Uv(),n=jv(),r=Rv(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:C}}function Hv(t){return t.type===Sn||t.type===Zt||t.type===Yo||t.type===Wo}function qd(){if(Yd(),C>=ve)return{type:ci,start:C,end:C};const t=N.charCodeAt(C);return di(t)?Bv():t===40||t===41||t===59?zc():t===39||t===34?zv():t===46?Mt(N.charCodeAt(C+1))?Xd():zc():Mt(t)?Xd():zc()}function Be(){const t=X;return C=t.end,X=qd(),C=t.end,t}function Zd(){const t=C;X=qd(),C=t}function Qv(t){const e=new rt(hv);return e.elements=t,e}function Kd(t,e,n){const r=new rt(t==="||"||t==="&&"?yv:dv);return r.operator=t,r.left=e,r.right=n,r}function Vv(t,e){const n=new rt(pv);return n.callee=t,n.arguments=e,n}function _v(t,e,n){const r=new rt(gv);return r.test=t,r.consequent=e,r.alternate=n,r}function Rc(t){const e=new rt(Vd);return e.name=t,e}function pi(t){const e=new rt(mv);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 Jd(t,e,n){const r=new rt(Av);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function Yv(t){const e=new rt(bv);return e.properties=t,e}function $d(t,e,n){const r=new rt(xv);return r.key=e,r.value=n,r.kind=t,r}function Wv(t,e){const n=new rt(vv);return n.operator=t,n.argument=e,n.prefix=!0,n}function Q(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Xo(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=C,n.description=i,n}function Zo(t){t.type===ci&&Q(t,Dv),t.type===Cn&&Q(t,wv),t.type===ui&&Q(t,Ev),t.type===Sn&&Q(t,Sv),t.type===Zt&&Q(t,Cv),Q(t,ge,t.value)}function we(t){const e=Be();(e.type!==Oe||e.value!==t)&&Zo(e)}function J(t){return X.type===Oe&&X.value===t}function Uc(t){return X.type===Zt&&X.value===t}function Xv(){const t=[];for(C=X.start,we("[");!J("]");)J(",")?(Be(),t.push(null)):(t.push(Dn()),J("]")||we(","));return Be(),Qv(t)}function e0(){C=X.start;const t=Be();return t.type===ui||t.type===Cn?(t.octal&&Q(t,_d),pi(t)):Rc(t.value)}function qv(){var t,e,n,r;if(C=X.start,t=X,t.type===Sn)return n=e0(),we(":"),r=Dn(),$d("init",n,r);if(t.type===ci||t.type===Oe)Zo(t);else return e=e0(),we(":"),r=Dn(),$d("init",e,r)}function Zv(){var t=[],e,n,r,i={},o=String;for(C=X.start,we("{");!J("}");)e=qv(),e.key.type===Vd?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},Mv):i[r]=!0,t.push(e),J("}")||we(",");return we("}"),Yv(t)}function Kv(){we("(");const t=jc();return we(")"),t}const Jv={if:1};function $v(){var t,e,n;if(J("("))return Kv();if(J("["))return Xv();if(J("{"))return Zv();if(t=X.type,C=X.start,t===Sn||Jv[X.value])n=Rc(Be().value);else if(t===ui||t===Cn)X.octal&&Q(X,_d),n=pi(Be());else{if(t===Zt)throw new Error(li);t===Yo?(e=Be(),e.value=e.value==="true",n=pi(e)):t===Wo?(e=Be(),e.value=null,n=pi(e)):J("/")||J("/=")?(n=pi(Gv()),Zd()):Zo(Be())}return n}function ew(){const t=[];if(we("("),!J(")"))for(;C<ve&&(t.push(Dn()),!J(")"));)we(",");return we(")"),t}function tw(){C=X.start;const t=Be();return Hv(t)||Zo(t),Rc(t.value)}function nw(){return we("."),tw()}function rw(){we("[");const t=jc();return we("]"),t}function iw(){var t,e,n;for(t=$v();;)if(J("."))n=nw(),t=Jd(".",t,n);else if(J("("))e=ew(),t=Vv(t,e);else if(J("["))n=rw(),t=Jd("[",t,n);else break;return t}function t0(){const t=iw();if(X.type===Oe&&(J("++")||J("--")))throw new Error(li);return t}function Ko(){var t,e;if(X.type!==Oe&&X.type!==Zt)e=t0();else{if(J("++")||J("--"))throw new Error(li);if(J("+")||J("-")||J("~")||J("!"))t=Be(),e=Ko(),e=Wv(t.value,e);else{if(Uc("delete")||Uc("void")||Uc("typeof"))throw new Error(li);e=t0()}}return e}function n0(t){let e=0;if(t.type!==Oe&&t.type!==Zt)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 ow(){var t,e,n,r,i,o,s,a,c,u;if(t=X,c=Ko(),r=X,i=n0(r),i===0)return c;for(r.prec=i,Be(),e=[t,X],s=Ko(),o=[c,r,s];(i=n0(X))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,c=o.pop(),e.pop(),n=Kd(a,c,s),o.push(n);r=Be(),r.prec=i,o.push(r),e.push(X),n=Ko(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=Kd(o[u-1].value,o[u-2],n),u-=2;return n}function Dn(){var t,e,n;return t=ow(),J("?")&&(Be(),e=Dn(),we(":"),n=Dn(),t=_v(t,e,n)),t}function jc(){const t=Dn();if(J(","))throw new Error(li);return t}function sw(t){N=t,C=0,ve=N.length,X=null,Zd();const e=jc();if(X.type!==ci)throw new Error("Unexpect token after expression.");return e}var aw={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 cw(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&&re("Missing arguments to clamp function."),s.length>3&&re("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&&re("Missing arguments to if function."),s.length>3&&re("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function uw(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function lw(t){t=t||{};const e=t.allowed?lo(t.allowed):{},n=t.forbidden?lo(t.forbidden):{},r=t.constants||aw,i=(t.functions||cw)(l),o=t.globalvar,s=t.fieldvar,a=Te(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(oe(p))return p;const g=h[p.type];return g==null&&re("Unsupported type: "+p.type),g(p)}const h={Literal:p=>p.raw,Identifier:p=>{const g=p.name;return f>0?g:dn(n,g)?re("Illegal identifier: "+g):dn(r,g)?r[g]:dn(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[uw(y)]=1),g&&(f-=1),m+(g?"."+y:"["+y+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&re("Illegal callee type: "+p.callee.type);const g=p.callee.name,m=p.arguments,y=dn(i,g)&&i[g];return y||re("Unrecognized function: "+g),Te(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 Gc(t,e={}){const n=lw({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=sw(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 fw(){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 hw(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Ke(i)&&i.resolutionChannel||r);n[r]=dw(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function dw(t,e,n,r){let i;if(Ze(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)),Xt(e.type)){const o=fw();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 Ze(t){return t&&"value"in t}function Mn(t){return t&&"field"in t}function gi(t){return t&&"datum"in t}function Ke(t){return Mn(t)||gi(t)||Qc(t)||r0(t)}function Hc(t,e){const n=t.mark.encoding[e];if(Ke(n))return n;throw new Error("Not a channel def with scale!")}function r0(t){return t&&"chrom"in t}function Qc(t){return t&&"expr"in t}const mi=["x","y"],pw=["x2","y2"],gw=[...mi,...pw];function i0(t){return mi.includes(t)}function yi(t){return gw.includes(t)}const Vc={x:"x2",y:"y2"},o0=Object.fromEntries(Object.entries(Vc).map(t=>[t[1],t[0]]));function Ai(t){return t in o0}function mw(t){const e=Vc[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function nr(t){var e;return(e=o0[t])!=null?e:t}function In(t){return["color","fill","stroke"].includes(nr(t))}function Jo(t){return["shape","squeeze"].includes(t)}function s0(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function a0(t){if(!Jo(t))throw new Error("Not a discrete channel: "+t);const e=new Map(s0(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 Z(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return q(n,[t],e)}else return no(t)}class yw{constructor(){this.accessorCreators=[],this.register(e=>{if(Mn(e))try{const n=Z(e.field);return n.constant=!1,n.fields=Ve(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Qc(e)?Aw(e.expr):void 0),this.register(e=>{if(gi(e)){const r=My(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 Aw(t){const e=Gc(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 vc;const nr=globalThis.trustedTypes,ud=nr?nr.createPolicy("lit-html",{createHTML:t=>t}):void 0,_t=`lit$${(Math.random()+"").slice(9)}$`,ld="?"+_t,Wb=`<${ld}>`,rr=document,ai=(t="")=>rr.createComment(t),ci=t=>t===null||typeof t!="object"&&typeof t!="function",fd=Array.isArray,_b=t=>{var e;return fd(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},ui=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,hd=/-->/g,dd=/>/g,En=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,pd=/'/g,gd=/"/g,md=/^(?:script|style|textarea|title)$/i,Xb=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=Xb(1),be=Symbol.for("lit-noChange"),z=Symbol.for("lit-nothing"),yd=new WeakMap,Fe=(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 fi(e.insertBefore(ai(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},ir=rr.createTreeWalker(rr,129,null,!1),Zb=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=ui;for(let c=0;c<n;c++){const u=t[c];let f,l,h=-1,p=0;for(;p<u.length&&(s.lastIndex=p,l=s.exec(u),l!==null);)p=s.lastIndex,s===ui?l[1]==="!--"?s=hd:l[1]!==void 0?s=dd:l[2]!==void 0?(md.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=En):l[3]!==void 0&&(s=En):s===En?l[0]===">"?(s=i!=null?i:ui,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?En:l[3]==='"'?gd:pd):s===gd||s===pd?s=En:s===hd||s===dd?s=ui:(s=En,i=void 0);const d=s===En&&t[c+1].startsWith("/>")?" ":"";o+=s===ui?u+Wb:h>=0?(r.push(f),u.slice(0,h)+"$lit$"+u.slice(h)+_t+d):u+_t+(h===-2?(r.push(void 0),c):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[ud!==void 0?ud.createHTML(a):a,r]};class li{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]=Zb(e,n);if(this.el=li.createElement(u,r),ir.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=ir.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 p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(_t),g=/([.?@])?(.*)/.exec(p);c.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?Kb:g[1]==="?"?$b:g[1]==="@"?ev:Go})}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=nr?nr.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],ai()),ir.nextNode(),c.push({type:2,index:++o});i.append(l[h],ai())}}}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=rr.createElement("template");return r.innerHTML=e,r}}function or(t,e,n=t,r){var i,o,s,a;if(e===be)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=ci(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=or(t,c._$AS(t,e.values),c,r)),e}class qb{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:rr).importNode(r,!0);ir.currentNode=o;let s=ir.nextNode(),a=0,c=0,u=i[0];for(;u!==void 0;){if(a===u.index){let f;u.type===2?f=new fi(s,s.nextSibling,this,e):u.type===1?f=new u.ctor(s,u.name,u.strings,this,e):u.type===6&&(f=new tv(s,this,e)),this.v.push(f),u=i[++c]}a!==(u==null?void 0:u.index)&&(s=ir.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 fi{constructor(e,n,r,i){var o;this.type=2,this._$AH=z,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=or(this,e,n),ci(e)?e===z||e==null||e===""?(this._$AH!==z&&this._$AR(),this._$AH=z):e!==this._$AH&&e!==be&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):_b(e)?this.S(e):this.$(e)}A(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}k(e){this._$AH!==e&&(this._$AR(),this._$AH=this.A(e))}$(e){this._$AH!==z&&ci(this._$AH)?this._$AA.nextSibling.data=e:this.k(rr.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=li.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 qb(o,this),a=s.p(this.options);s.m(r),this.k(a),this._$AH=s}}_$AC(e){let n=yd.get(e.strings);return n===void 0&&yd.set(e.strings,n=new li(e)),n}S(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 fi(this.A(ai()),this.A(ai()),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 Go{constructor(e,n,r,i,o){this.type=1,this._$AH=z,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=z}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=or(this,e,n,0),s=!ci(e)||e!==this._$AH&&e!==be,s&&(this._$AH=e);else{const a=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=or(this,a[r+c],n,c),u===be&&(u=this._$AH[c]),s||(s=!ci(u)||u!==this._$AH[c]),u===z?e=z:e!==z&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}s&&!i&&this.C(e)}C(e){e===z?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Kb extends Go{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===z?void 0:e}}const Jb=nr?nr.emptyScript:"";class $b extends Go{constructor(){super(...arguments),this.type=4}C(e){e&&e!==z?this.element.setAttribute(this.name,Jb):this.element.removeAttribute(this.name)}}class ev extends Go{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=or(this,e,n,0))!==null&&r!==void 0?r:z)===be)return;const i=this._$AH,o=e===z&&i!==z||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==z&&(i===z||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 tv{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){or(this,e)}}const Ad=window.litHtmlPolyfillSupport;Ad==null||Ad(li,fi),((vc=globalThis.litHtmlVersions)!==null&&vc!==void 0?vc:globalThis.litHtmlVersions=[]).push("2.2.1");function bd(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function nv(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function We(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function le(t){return t[t.length-1]}const Dn="gs-suppress-tooltip";class rv{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=le(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=Yb(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&iv(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Fe("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Fe(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(D`${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 iv(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const ov="RawCode",sv="Literal",av="Property",cv="Identifier",uv="ArrayExpression",lv="BinaryExpression",fv="CallExpression",hv="ConditionalExpression",dv="LogicalExpression",pv="MemberExpression",gv="ObjectExpression",mv="UnaryExpression";function nt(t){this.type=t}nt.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=yv(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function yv(t){switch(t.type){case uv:return t.elements;case lv:case dv:return[t.left,t.right];case fv:return[t.callee].concat(t.arguments);case hv:return[t.test,t.consequent,t.alternate];case pv:return[t.object,t.property];case gv:return t.properties;case av:return[t.key,t.value];case mv:return[t.argument];case cv:case sv:case ov:default:return[]}}var ft,k,S,ve,W,Ho=1,hi=2,Mn=3,Xt=4,Qo=5,Tn=6,ke=7,di=8,Av=9;ft={},ft[Ho]="Boolean",ft[hi]="<end>",ft[Mn]="Identifier",ft[Xt]="Keyword",ft[Qo]="Null",ft[Tn]="Numeric",ft[ke]="Punctuator",ft[di]="String",ft[Av]="RegularExpression";var bv="ArrayExpression",vv="BinaryExpression",xv="CallExpression",wv="ConditionalExpression",vd="Identifier",Cv="Literal",Sv="LogicalExpression",Ev="MemberExpression",Dv="ObjectExpression",Mv="Property",Tv="UnaryExpression",ge="Unexpected token %0",Iv="Unexpected number",Nv="Unexpected string",kv="Unexpected identifier",Bv="Unexpected reserved word",Lv="Unexpected end of input",xc="Invalid regular expression",wc="Invalid regular expression: missing /",xd="Octal literals are not allowed in strict mode.",Ov="Duplicate data property in object literal not allowed in strict mode",me="ILLEGAL",pi="Disabled.",Pv=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]"),Fv=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 Vo(t,e){if(!t)throw new Error("ASSERT: "+e)}function St(t){return t>=48&&t<=57}function Cc(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function gi(t){return"01234567".indexOf(t)>=0}function zv(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 mi(t){return t===10||t===13||t===8232||t===8233}function yi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Pv.test(String.fromCharCode(t))}function Yo(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Fv.test(String.fromCharCode(t))}const Rv={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(;S<ve;){const t=k.charCodeAt(S);if(zv(t)||mi(t))++S;else break}}function Sc(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<ve&&Cc(k[S])?(r=k[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):U({},ge,me);return String.fromCharCode(i)}function jv(){var t,e,n,r;for(t=k[S],e=0,t==="}"&&U({},ge,me);S<ve&&(t=k[S++],!!Cc(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&U({},ge,me),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Cd(){var t,e;for(t=k.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(k.charCodeAt(S)!==117&&U({},ge,me),++S,t=Sc("u"),(!t||t==="\\"||!yi(t.charCodeAt(0)))&&U({},ge,me),e=t);S<ve&&(t=k.charCodeAt(S),!!Yo(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),k.charCodeAt(S)!==117&&U({},ge,me),++S,t=Sc("u"),(!t||t==="\\"||!Yo(t.charCodeAt(0)))&&U({},ge,me),e+=t);return e}function Uv(){var t,e;for(t=S++;S<ve;){if(e=k.charCodeAt(S),e===92)return S=t,Cd();if(Yo(e))++S;else break}return k.slice(t,S)}function Gv(){var t,e,n;return t=S,e=k.charCodeAt(S)===92?Cd():Uv(),e.length===1?n=Mn:Rv.hasOwnProperty(e)?n=Xt:e==="null"?n=Qo:e==="true"||e==="false"?n=Ho:n=Mn,{type:n,value:e,start:t,end:S}}function Ec(){var t=S,e=k.charCodeAt(S),n,r=k[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:ke,value:String.fromCharCode(e),start:t,end:S};default:if(n=k.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:ke,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,k.charCodeAt(S)===61&&++S,{type:ke,value:k.slice(t,S),start:t,end:S}}}if(s=k.substr(S,4),s===">>>=")return S+=4,{type:ke,value:s,start:t,end:S};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:ke,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:ke,value:i,start:t,end:S};if(i==="//"&&U({},ge,me),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:ke,value:r,start:t,end:S};U({},ge,me)}function Hv(t){let e="";for(;S<ve&&Cc(k[S]);)e+=k[S++];return e.length===0&&U({},ge,me),yi(k.charCodeAt(S))&&U({},ge,me),{type:Tn,value:parseInt("0x"+e,16),start:t,end:S}}function Qv(t){let e="0"+k[S++];for(;S<ve&&gi(k[S]);)e+=k[S++];return(yi(k.charCodeAt(S))||St(k.charCodeAt(S)))&&U({},ge,me),{type:Tn,value:parseInt(e,8),octal:!0,start:t,end:S}}function Sd(){var t,e,n;if(n=k[S],Vo(St(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=k[S++],n=k[S],t==="0"){if(n==="x"||n==="X")return++S,Hv(e);if(gi(n))return Qv(e);n&&St(n.charCodeAt(0))&&U({},ge,me)}for(;St(k.charCodeAt(S));)t+=k[S++];n=k[S]}if(n==="."){for(t+=k[S++];St(k.charCodeAt(S));)t+=k[S++];n=k[S]}if(n==="e"||n==="E")if(t+=k[S++],n=k[S],(n==="+"||n==="-")&&(t+=k[S++]),St(k.charCodeAt(S)))for(;St(k.charCodeAt(S));)t+=k[S++];else U({},ge,me);return yi(k.charCodeAt(S))&&U({},ge,me),{type:Tn,value:parseFloat(t),start:e,end:S}}function Vv(){var t="",e,n,r,i,o=!1;for(e=k[S],Vo(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<ve;)if(r=k[S++],r===e){e="";break}else if(r==="\\")if(r=k[S++],!r||!mi(r.charCodeAt(0)))switch(r){case"u":case"x":k[S]==="{"?(++S,t+=jv()):t+=Sc(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:gi(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),S<ve&&gi(k[S])&&(o=!0,i=i*8+"01234567".indexOf(k[S++]),"0123".indexOf(r)>=0&&S<ve&&gi(k[S])&&(i=i*8+"01234567".indexOf(k[S++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&k[S]===`
12
+ `&&++S;else{if(mi(r.charCodeAt(0)))break;t+=r}return e!==""&&U({},ge,me),{type:di,value:t,octal:o,start:n,end:S}}function Yv(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";U({},xc)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{U({},xc)}try{return new RegExp(t,e)}catch{return null}}function Wv(){var t,e,n,r,i;for(t=k[S],Vo(t==="/","Regular expression literal must start with a slash"),e=k[S++],n=!1,r=!1;S<ve;)if(t=k[S++],e+=t,t==="\\")t=k[S++],mi(t.charCodeAt(0))&&U({},wc),e+=t;else if(mi(t.charCodeAt(0)))U({},wc);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||U({},wc),i=e.substr(1,e.length-2),{value:i,literal:e}}function _v(){var t,e,n;for(e="",n="";S<ve&&(t=k[S],!!Yo(t.charCodeAt(0)));)++S,t==="\\"&&S<ve?U({},ge,me):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&U({},xc,n),{value:n,literal:e}}function Xv(){var t,e,n,r;return W=null,wd(),t=S,e=Wv(),n=_v(),r=Yv(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function Zv(t){return t.type===Mn||t.type===Xt||t.type===Ho||t.type===Qo}function Ed(){if(wd(),S>=ve)return{type:hi,start:S,end:S};const t=k.charCodeAt(S);return yi(t)?Gv():t===40||t===41||t===59?Ec():t===39||t===34?Vv():t===46?St(k.charCodeAt(S+1))?Sd():Ec():St(t)?Sd():Ec()}function Be(){const t=W;return S=t.end,W=Ed(),S=t.end,t}function Dd(){const t=S;W=Ed(),S=t}function qv(t){const e=new nt(bv);return e.elements=t,e}function Md(t,e,n){const r=new nt(t==="||"||t==="&&"?Sv:vv);return r.operator=t,r.left=e,r.right=n,r}function Kv(t,e){const n=new nt(xv);return n.callee=t,n.arguments=e,n}function Jv(t,e,n){const r=new nt(wv);return r.test=t,r.consequent=e,r.alternate=n,r}function Dc(t){const e=new nt(vd);return e.name=t,e}function Ai(t){const e=new nt(Cv);return e.value=t.value,e.raw=k.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Td(t,e,n){const r=new nt(Ev);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function $v(t){const e=new nt(Dv);return e.properties=t,e}function Id(t,e,n){const r=new nt(Mv);return r.key=e,r.value=n,r.kind=t,r}function ex(t,e){const n=new nt(Tv);return n.operator=t,n.argument=e,n.prefix=!0,n}function U(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Vo(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=S,n.description=i,n}function Wo(t){t.type===hi&&U(t,Lv),t.type===Tn&&U(t,Iv),t.type===di&&U(t,Nv),t.type===Mn&&U(t,kv),t.type===Xt&&U(t,Bv),U(t,ge,t.value)}function xe(t){const e=Be();(e.type!==ke||e.value!==t)&&Wo(e)}function J(t){return W.type===ke&&W.value===t}function Mc(t){return W.type===Xt&&W.value===t}function tx(){const t=[];for(S=W.start,xe("[");!J("]");)J(",")?(Be(),t.push(null)):(t.push(In()),J("]")||xe(","));return Be(),qv(t)}function Nd(){S=W.start;const t=Be();return t.type===di||t.type===Tn?(t.octal&&U(t,xd),Ai(t)):Dc(t.value)}function nx(){var t,e,n,r;if(S=W.start,t=W,t.type===Mn)return n=Nd(),xe(":"),r=In(),Id("init",n,r);if(t.type===hi||t.type===ke)Wo(t);else return e=Nd(),xe(":"),r=In(),Id("init",e,r)}function rx(){var t=[],e,n,r,i={},o=String;for(S=W.start,xe("{");!J("}");)e=nx(),e.key.type===vd?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?U({},Ov):i[r]=!0,t.push(e),J("}")||xe(",");return xe("}"),$v(t)}function ix(){xe("(");const t=Tc();return xe(")"),t}const ox={if:1};function sx(){var t,e,n;if(J("("))return ix();if(J("["))return tx();if(J("{"))return rx();if(t=W.type,S=W.start,t===Mn||ox[W.value])n=Dc(Be().value);else if(t===di||t===Tn)W.octal&&U(W,xd),n=Ai(Be());else{if(t===Xt)throw new Error(pi);t===Ho?(e=Be(),e.value=e.value==="true",n=Ai(e)):t===Qo?(e=Be(),e.value=null,n=Ai(e)):J("/")||J("/=")?(n=Ai(Xv()),Dd()):Wo(Be())}return n}function ax(){const t=[];if(xe("("),!J(")"))for(;S<ve&&(t.push(In()),!J(")"));)xe(",");return xe(")"),t}function cx(){S=W.start;const t=Be();return Zv(t)||Wo(t),Dc(t.value)}function ux(){return xe("."),cx()}function lx(){xe("[");const t=Tc();return xe("]"),t}function fx(){var t,e,n;for(t=sx();;)if(J("."))n=ux(),t=Td(".",t,n);else if(J("("))e=ax(),t=Kv(t,e);else if(J("["))n=lx(),t=Td("[",t,n);else break;return t}function kd(){const t=fx();if(W.type===ke&&(J("++")||J("--")))throw new Error(pi);return t}function _o(){var t,e;if(W.type!==ke&&W.type!==Xt)e=kd();else{if(J("++")||J("--"))throw new Error(pi);if(J("+")||J("-")||J("~")||J("!"))t=Be(),e=_o(),e=ex(t.value,e);else{if(Mc("delete")||Mc("void")||Mc("typeof"))throw new Error(pi);e=kd()}}return e}function Bd(t){let e=0;if(t.type!==ke&&t.type!==Xt)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 hx(){var t,e,n,r,i,o,s,a,c,u;if(t=W,c=_o(),r=W,i=Bd(r),i===0)return c;for(r.prec=i,Be(),e=[t,W],s=_o(),o=[c,r,s];(i=Bd(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=Be(),r.prec=i,o.push(r),e.push(W),n=_o(),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 In(){var t,e,n;return t=hx(),J("?")&&(Be(),e=In(),xe(":"),n=In(),t=Jv(t,e,n)),t}function Tc(){const t=In();if(J(","))throw new Error(pi);return t}function dx(t){k=t,S=0,ve=k.length,W=null,Dd();const e=Tc();if(W.type!==hi)throw new Error("Unexpect token after expression.");return e}var px={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 gx(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&&re("Missing arguments to clamp function."),s.length>3&&re("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&&re("Missing arguments to if function."),s.length>3&&re("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function mx(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function yx(t){t=t||{};const e=t.allowed?fo(t.allowed):{},n=t.forbidden?fo(t.forbidden):{},r=t.constants||px,i=(t.functions||gx)(l),o=t.globalvar,s=t.fieldvar,a=Te(o)?o:d=>`${o}["${d}"]`;let c={},u={},f=0;function l(d){if(ie(d))return d;const g=h[d.type];return g==null&&re("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:hn(n,g)?re("Illegal identifier: "+g):hn(r,g)?r[g]:hn(e,g)?g:(c[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,m=l(d.object);g&&(f+=1);const y=l(d.property);return m===s&&(u[mx(y)]=1),g&&(f-=1),m+(g?"."+y:"["+y+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&re("Illegal callee type: "+d.callee.type);const g=d.callee.name,m=d.arguments,y=hn(i,g)&&i[g];return y||re("Unrecognized function: "+g),Te(y)?y(m):y+"("+m.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},g}return p.functions=i,p.constants=r,p}function Ic(t,e={}){const n=yx({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=dx(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 Ax(){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 bx(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]=vx(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function vx(t,e,n,r){let i;if(_e(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)),Wt(e.type)){const o=Ax();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 _e(t){return t&&"value"in t}function Nn(t){return t&&"field"in t}function bi(t){return t&&"datum"in t}function Xe(t){return Nn(t)||bi(t)||kc(t)||Ld(t)}function Nc(t,e){const n=t.mark.encoding[e];if(Xe(n))return n;throw new Error("Not a channel def with scale!")}function Ld(t){return t&&"chrom"in t}function kc(t){return t&&"expr"in t}const vi=["x","y"],xx=["x2","y2"],wx=[...vi,...xx];function Od(t){return vi.includes(t)}function xi(t){return wx.includes(t)}const Bc={x:"x2",y:"y2"},Pd=Object.fromEntries(Object.entries(Bc).map(t=>[t[1],t[0]]));function wi(t){return t in Pd}function Cx(t){const e=Bc[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function sr(t){var e;return(e=Pd[t])!=null?e:t}function kn(t){return["color","fill","stroke"].includes(sr(t))}function Xo(t){return["shape","squeeze"].includes(t)}function Fd(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function zd(t){if(!Xo(t))throw new Error("Not a discrete channel: "+t);const e=new Map(Fd(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 _(n,[t],e)}else return ro(t)}class Sx{constructor(){this.accessorCreators=[],this.register(e=>{if(Nn(e))try{const n=X(e.field);return n.constant=!1,n.fields=He(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>kc(e)?Ex(e.expr):void 0),this.register(e=>{if(bi(e)){const r=J1(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 Ex(t){const e=Ic(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 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 _c=5120,bi=5121,Yc=5122,Wc=5123,Xc=5124,qc=5125,Zc=5126,bw=32819,xw=32820,vw=33635,ww=5131,Ew=33640,Sw=35899,Cw=35902,Dw=36269,Mw=34042,c0={};{const t=c0;t[_c]=Int8Array,t[bi]=Uint8Array,t[Yc]=Int16Array,t[Wc]=Uint16Array,t[Xc]=Int32Array,t[qc]=Uint32Array,t[Zc]=Float32Array,t[bw]=Uint16Array,t[xw]=Uint16Array,t[vw]=Uint16Array,t[ww]=Uint16Array,t[Ew]=Uint32Array,t[Sw]=Uint32Array,t[Cw]=Uint32Array,t[Dw]=Uint32Array,t[Mw]=Uint32Array}function Kc(t){if(t instanceof Int8Array)return _c;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return bi;if(t instanceof Int16Array)return Yc;if(t instanceof Uint16Array)return Wc;if(t instanceof Int32Array)return Xc;if(t instanceof Uint32Array)return qc;if(t instanceof Float32Array)return Zc;throw new Error("unsupported typed array type")}function Iw(t){if(t===Int8Array)return _c;if(t===Uint8Array||t===Uint8ClampedArray)return bi;if(t===Int16Array)return Yc;if(t===Uint16Array)return Wc;if(t===Int32Array)return Xc;if(t===Uint32Array)return qc;if(t===Float32Array)return Zc;throw new Error("unsupported typed array type")}function Tw(t){const e=c0[t];if(!e)throw new Error("unknown gl type");return e}const $o=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 Nw(...t){console.error(...t)}function u0(...t){console.warn(...t)}function Lw(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function l0(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function es(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function kw(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const f0=35044,pt=34962,Ow=34963,Bw=34660,Pw=5120,Fw=5121,zw=5122,Rw=5123,Uw=5124,jw=5125,Gw=5126,h0={attribPrefix:""};function d0(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||f0)}function p0(t,e,n,r){if(Lw(t,e))return e;n=n||pt;const i=t.createBuffer();return d0(t,n,i,e,r),i}function g0(t){return t==="indices"}function Hw(t){return t instanceof Int8Array||t instanceof Uint8Array}function Qw(t){return t===Int8Array||t===Uint8Array}function Vw(t){return t.length?t:t.data}const _w=/coord|texture/i,Yw=/color|colour/i;function m0(t,e){let n;if(_w.test(t)?n=2:Yw.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 Ww(t,e){return t.numComponents||t.size||m0(e,Vw(t).length)}function Jc(t,e){if($o(t))return t;if($o(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(g0(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function Xw(t,e){const n={};return Object.keys(e).forEach(function(r){if(!g0(r)){const i=e[r],o=i.attrib||i.name||i.attribName||h0.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!$o(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=Iw(l),c=i.normalize!==void 0?i.normalize:Qw(l),u=i.numComponents||i.size||m0(r,f),s=t.createBuffer(),t.bindBuffer(pt,s),t.bufferData(pt,h,i.drawType||f0)}else{const f=Jc(i,r);s=p0(t,f,void 0,i.drawType),a=Kc(f),c=i.normalize!==void 0?i.normalize:Hw(f),u=Ww(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(pt,null),n}function qw(t,e,n,r){n=Jc(n),r!==void 0?(t.bindBuffer(pt,e.buffer),t.bufferSubData(pt,r,n)):d0(t,pt,e.buffer,n,e.drawType)}function Zw(t,e){return e===Pw||e===Fw?1:e===zw||e===Rw?2:e===Uw||e===jw||e===Gw?4:0}const $c=["position","positions","a_position"];function Kw(t,e){let n,r;for(r=0;r<$c.length&&(n=$c[r],!(n in e||(n=h0.attribPrefix+n,n in e)));++r);r===$c.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(pt,i.buffer);const o=t.getBufferParameter(pt,Bw);t.bindBuffer(pt,null);const s=Zw(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 Jw(t,e,n){const r=Xw(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=Jc(o,"indices");i.indices=p0(t,s,Ow),i.numElements=s.length,i.elementType=Kc(s)}else i.numElements||(i.numElements=Kw(t,i.attribs));return i}function rr(t){return!!t.texStorage2D}const eu=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)}}(),Kt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},ir=$o,y0=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),A0=6406,gt=6407,$=6408,b0=6409,x0=6410,xi=6402,v0=34041,ts=33071,$w=9728,e4=9729,It=3553,Tt=34067,Jt=32879,$t=35866,ns=34069,t4=34070,n4=34071,r4=34072,i4=34073,o4=34074,tu=10241,nu=10240,rs=10242,is=10243,w0=32882,s4=33082,a4=33083,c4=33084,u4=33085,ru=3317,E0=3314,S0=32878,C0=3316,D0=3315,M0=32877,l4=37443,f4=37441,h4=37440,d4=33321,p4=36756,g4=33325,m4=33326,y4=33330,A4=33329,b4=33338,x4=33337,v4=33340,w4=33339,E4=33323,S4=36757,C4=33327,D4=33328,M4=33336,I4=33335,T4=33332,N4=33331,L4=33334,k4=33333,O4=32849,B4=35905,P4=36194,F4=36758,z4=35898,R4=35901,U4=34843,j4=34837,G4=36221,H4=36239,Q4=36215,V4=36233,_4=36209,Y4=36227,W4=32856,X4=35907,q4=36759,Z4=32855,K4=32854,J4=32857,$4=34842,e3=34836,t3=36220,n3=36238,r3=36975,i3=36214,o3=36232,s3=36226,a3=36208,c3=33189,u3=33190,l3=36012,f3=36013,h3=35056,en=5120,ee=5121,os=5122,or=5123,ss=5124,Tn=5125,Ee=5126,I0=32819,T0=32820,N0=33635,it=5131,vi=36193,iu=33640,d3=35899,p3=35902,g3=36269,m3=34042,as=33319,sr=33320,cs=6403,ar=36244,cr=36248,Nn=36249;let ou;function us(t){if(!ou){const e={};e[A0]={textureFormat:A0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ee,it,vi,Ee]},e[b0]={textureFormat:b0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ee,it,vi,Ee]},e[x0]={textureFormat:x0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[ee,it,vi,Ee]},e[gt]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[ee,it,vi,Ee,N0]},e[$]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[ee,it,vi,Ee,I0,T0]},e[xi]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Tn,or]},e[d4]={textureFormat:cs,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[ee]},e[p4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[en]},e[g4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Ee,it]},e[m4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[y4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ee]},e[A4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[en]},e[T4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[or]},e[N4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[os]},e[L4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Tn]},e[k4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ss]},e[E4]={textureFormat:as,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[ee]},e[S4]={textureFormat:as,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[en]},e[C4]={textureFormat:as,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Ee,it]},e[D4]={textureFormat:as,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Ee]},e[M4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ee]},e[I4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[en]},e[b4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[or]},e[x4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[os]},e[v4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Tn]},e[w4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ss]},e[O4]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[ee]},e[B4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ee]},e[P4]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[ee,N0]},e[F4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[en]},e[z4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,it,d3]},e[R4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,it,p3]},e[U4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Ee,it]},e[j4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Ee]},e[G4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ee]},e[H4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[en]},e[Q4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[or]},e[V4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[os]},e[_4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Tn]},e[Y4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ss]},e[W4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ee]},e[X4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ee]},e[q4]={textureFormat:$,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[en]},e[Z4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[ee,T0,iu]},e[K4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[ee,I0]},e[J4]={textureFormat:$,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[iu]},e[$4]={textureFormat:$,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Ee,it]},e[e3]={textureFormat:$,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Ee]},e[t3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ee]},e[n3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[en]},e[r3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[iu]},e[i3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[or]},e[o3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[os]},e[s3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ss]},e[a3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Tn]},e[c3]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[or,Tn]},e[u3]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Tn]},e[l3]={textureFormat:xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[h3]={textureFormat:v0,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[m3]},e[f3]={textureFormat:v0,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[g3]},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})}),ou=e}return ou[t]}function y3(t,e){const n=us(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function ur(t){const e=us(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function L0(t){return(t&t-1)===0}function A3(t,e,n,r){if(!rr(t))return L0(e)&&L0(n);const i=us(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function b3(t){const e=us(t);if(!e)throw"unknown internal format";return e.textureFilterable}function k0(t,e,n){return ir(e)?Kc(e):n||ee}function ls(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Tt?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 lr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(l4,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(f4,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(h4,e.flipY)}function O0(t){t.pixelStorei(ru,4),rr(t)&&(t.pixelStorei(E0,0),t.pixelStorei(S0,0),t.pixelStorei(C0,0),t.pixelStorei(D0,0),t.pixelStorei(M0,0))}function x3(t,e,n,r){r.minMag&&(n.call(t,e,tu,r.minMag),n.call(t,e,nu,r.minMag)),r.min&&n.call(t,e,tu,r.min),r.mag&&n.call(t,e,nu,r.mag),r.wrap&&(n.call(t,e,rs,r.wrap),n.call(t,e,is,r.wrap),(e===Jt||kw(t,e))&&n.call(t,e,w0,r.wrap)),r.wrapR&&n.call(t,e,w0,r.wrapR),r.wrapS&&n.call(t,e,rs,r.wrapS),r.wrapT&&n.call(t,e,is,r.wrapT),r.minLod&&n.call(t,e,s4,r.minLod),r.maxLod&&n.call(t,e,a4,r.maxLod),r.baseLevel&&n.call(t,e,c4,r.baseLevel),r.maxLevel&&n.call(t,e,u4,r.maxLevel)}function B0(t,e,n){const r=n.target||It;t.bindTexture(r,e),x3(t,r,t.texParameteri,n)}function v3(t){return t=t||Kt.textureColor,ir(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function su(t,e,n,r,i,o){n=n||Kt.textureOptions,o=o||$;const s=n.target||It;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),A3(t,r,i,o))t.generateMipmap(s);else{const a=b3(o)?e4:$w;t.texParameteri(s,tu,a),t.texParameteri(s,nu,a),t.texParameteri(s,rs,ts),t.texParameteri(s,is,ts)}}function wi(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function au(t,e){return e=e||{},e.cubeFaceOrder||[ns,t4,n4,r4,i4,o4]}function cu(t,e){const r=au(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function P0(t,e,n,r){r=r||Kt.textureOptions;const i=r.target||It,o=r.level||0;let s=n.width,a=n.height;const c=r.internalFormat||r.format||$,u=ur(c),f=r.format||u.format,l=r.type||u.type;if(lr(t,r),t.bindTexture(i,e),i===Tt){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=y0();m?(m.canvas.width=p,m.canvas.height=p,s=p,a=p,cu(t,r).forEach(function(y){const x=g[y.ndx*2+0]*p,v=g[y.ndx*2+1]*p;m.drawImage(n,x,v,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,cu(t,r).forEach(function(y){const x=g[y.ndx*2+0]*p,v=g[y.ndx*2+1]*p;t.texImage2D(y.face,o,c,p,p,0,f,l,null),createImageBitmap(n,x,v,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(S){lr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,S),wi(r)&&su(t,e,r,s,a,c)})}))}else if(i===Jt||i===$t){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(ru,1),t.pixelStorei(E0,n.width),t.pixelStorei(S0,0),t.pixelStorei(M0,0),t.texImage3D(i,o,c,h,h,h,0,f,l,null);for(let y=0;y<p;++y){const x=y*h*g,v=y*h*m;t.pixelStorei(C0,x),t.pixelStorei(D0,v),t.texSubImage3D(i,o,0,0,y,h,h,1,f,l,n)}O0(t)}else t.texImage2D(i,o,c,f,l,n);wi(r)&&su(t,e,r,s,a,c),B0(t,e,r)}function Ei(){}function w3(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 E3(t,e){return e===void 0&&!w3(t)?"anonymous":e}function S3(t,e,n){n=n||Ei;let r;if(e=e!==void 0?e:Kt.crossOrigin,e=E3(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;Nw(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 F0(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function uu(t,e,n){return F0(t)?(setTimeout(function(){n(null,t)}),t):S3(t,e,n)}function lu(t,e,n){n=n||Kt.textureOptions;const r=n.target||It;if(t.bindTexture(r,e),n.color===!1)return;const i=v3(n.color);if(r===Tt)for(let o=0;o<6;++o)t.texImage2D(ns+o,0,$,1,1,0,$,ee,i);else r===Jt||r===$t?t.texImage3D(r,0,$,1,1,1,0,$,ee,i):t.texImage2D(r,0,$,1,1,0,$,ee,i)}function C3(t,e,n,r){return r=r||Ei,n=n||Kt.textureOptions,lu(t,e,n),n=Object.assign({},n),uu(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(P0(t,e,s,n),r(null,e,s))})}function D3(t,e,n,r){r=r||Ei;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||$,a=ur(s),c=n.format||a.format,u=n.type||ee,f=n.target||It;if(f!==Tt)throw"target must be TEXTURE_CUBE_MAP";lu(t,e,n),n=Object.assign({},n);let l=6;const h=[],d=au(t,n);let p;function g(m){return function(y,x){--l,y?h.push(y):x.width!==x.height?h.push("cubemap face img is not a square: "+x.src):(lr(t,n),t.bindTexture(f,e),l===5?au().forEach(function(v){t.texImage2D(v,o,s,c,u,x)}):t.texImage2D(m,o,s,c,u,x),wi(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,p)}}p=i.map(function(m,y){return uu(m,n.crossOrigin,g(d[y]))})}function M3(t,e,n,r){r=r||Ei;const i=n.src,o=n.internalFormat||n.format||$,s=ur(o),a=n.format||s.format,c=n.type||ee,u=n.target||$t;if(u!==Jt&&u!==$t)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";lu(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 x(v){return function(S,b){if(--f,S)l.push(S);else{if(lr(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,w;(b.width!==p||b.height!==g)&&(w=y0(),A=w.canvas,w.canvas.width=p,w.canvas.height=g,w.drawImage(b,0,0,p,g)),t.texSubImage3D(u,d,0,0,v,p,g,1,a,c,A),w&&A===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}wi(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(v,S){return uu(v,n.crossOrigin,x(S))})}function z0(t,e,n,r){r=r||Kt.textureOptions;const i=r.target||It;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const c=r.level||0,u=r.internalFormat||r.format||$,f=ur(u),l=r.format||f.format,h=r.type||k0(t,n,f.type);if(ir(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=Tw(h);n=new m(n)}const d=y3(u,h),p=n.byteLength/d;if(p%1)throw"length wrong size for format: "+eu(t,l);let g;if(i===Jt||i===$t)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=ls(t,i,s,a,p/o),s=g.width,a=g.height):s&&(!o||!a)?(g=ls(t,i,o,a,p/s),o=g.width,a=g.height):(g=ls(t,i,o,s,p/a),o=g.width,s=g.height);else g=ls(t,i,o,s,p),o=g.width,s=g.height;if(O0(t),t.pixelStorei(ru,r.unpackAlignment||1),lr(t,r),i===Tt){const m=d/n.BYTES_PER_ELEMENT,y=p/6*m;cu(t,r).forEach(x=>{const v=y*x.ndx,S=n.subarray(v,v+y);t.texImage2D(x.face,c,u,o,s,0,l,h,S)})}else i===Jt||i===$t?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 I3(t,e,n){const r=n.target||It;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||$,s=ur(o),a=n.format||s.format,c=n.type||s.type;if(lr(t,n),r===Tt)for(let u=0;u<6;++u)t.texImage2D(ns+u,i,o,n.width,n.height,0,a,c,null);else r===Jt||r===$t?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 Si(t,e,n){n=n||Ei,e=e||Kt.textureOptions;const r=t.createTexture(),i=e.target||It;let o=e.width||1,s=e.height||1;const a=e.internalFormat||$;t.bindTexture(i,r),i===Tt&&(t.texParameteri(i,rs,ts),t.texParameteri(i,is,ts));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")C3(t,r,e,n);else if(ir(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||ir(c[0]))){const u=z0(t,r,c,e);o=u.width,s=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||F0(c[0]))?i===Tt?D3(t,r,e,n):M3(t,r,e,n):(P0(t,r,c,e),o=c.width,s=c.height);else I3(t,r,e);return wi(e)&&su(t,r,e,o,s,a),B0(t,r,e),r}function T3(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||It;t.bindTexture(s,e);const a=n.level||0,c=n.internalFormat||n.format||$,u=ur(c),f=n.format||u.format;let l;const h=n.src;if(h&&(ir(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||k0(t,h,u.type):l=n.type||u.type,s===Tt)for(let d=0;d<6;++d)t.texImage2D(ns+d,a,c,r,i,0,f,l,null);else s===Jt||s===$t?t.texImage3D(s,a,c,r,i,o,0,f,l,null):t.texImage2D(s,a,c,r,i,0,f,l,null)}const N3=u0,fs=33984,L3=35048,hs=34962,k3=34963,fu=35345,R0=35718,O3=35721,B3=35971,P3=35382,F3=35396,z3=35398,R3=35392,U3=35395,ds=5126,U0=35664,j0=35665,G0=35666,hu=5124,H0=35667,Q0=35668,V0=35669,_0=35670,Y0=35671,W0=35672,X0=35673,q0=35674,Z0=35675,K0=35676,j3=35678,G3=35680,H3=35679,Q3=35682,V3=35685,_3=35686,Y3=35687,W3=35688,X3=35689,q3=35690,Z3=36289,K3=36292,J3=36293,du=5125,J0=36294,$0=36295,ep=36296,$3=36298,eE=36299,tE=36300,nE=36303,rE=36306,iE=36307,oE=36308,sE=36311,ps=3553,gs=34067,pu=32879,ms=35866,P={};function tp(t,e){return P[e].bindPoint}function aE(t,e){return function(n){t.uniform1f(e,n)}}function cE(t,e){return function(n){t.uniform1fv(e,n)}}function uE(t,e){return function(n){t.uniform2fv(e,n)}}function lE(t,e){return function(n){t.uniform3fv(e,n)}}function fE(t,e){return function(n){t.uniform4fv(e,n)}}function np(t,e){return function(n){t.uniform1i(e,n)}}function rp(t,e){return function(n){t.uniform1iv(e,n)}}function ip(t,e){return function(n){t.uniform2iv(e,n)}}function op(t,e){return function(n){t.uniform3iv(e,n)}}function sp(t,e){return function(n){t.uniform4iv(e,n)}}function hE(t,e){return function(n){t.uniform1ui(e,n)}}function dE(t,e){return function(n){t.uniform1uiv(e,n)}}function pE(t,e){return function(n){t.uniform2uiv(e,n)}}function gE(t,e){return function(n){t.uniform3uiv(e,n)}}function mE(t,e){return function(n){t.uniform4uiv(e,n)}}function yE(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function AE(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function bE(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function xE(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function vE(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function wE(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function EE(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function SE(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function CE(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function De(t,e,n,r){const i=tp(t,e);return rr(t)?function(o){let s,a;es(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(fs+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(fs+n),t.bindTexture(i,o)}}function Me(t,e,n,r,i){const o=tp(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return rr(t)?function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(fs+s[u]);let f,l;es(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(fs+s[u]),t.bindTexture(o,c)})}}P[ds]={Type:Float32Array,size:4,setter:aE,arraySetter:cE},P[U0]={Type:Float32Array,size:8,setter:uE,cols:2},P[j0]={Type:Float32Array,size:12,setter:lE,cols:3},P[G0]={Type:Float32Array,size:16,setter:fE,cols:4},P[hu]={Type:Int32Array,size:4,setter:np,arraySetter:rp},P[H0]={Type:Int32Array,size:8,setter:ip,cols:2},P[Q0]={Type:Int32Array,size:12,setter:op,cols:3},P[V0]={Type:Int32Array,size:16,setter:sp,cols:4},P[du]={Type:Uint32Array,size:4,setter:hE,arraySetter:dE},P[J0]={Type:Uint32Array,size:8,setter:pE,cols:2},P[$0]={Type:Uint32Array,size:12,setter:gE,cols:3},P[ep]={Type:Uint32Array,size:16,setter:mE,cols:4},P[_0]={Type:Uint32Array,size:4,setter:np,arraySetter:rp},P[Y0]={Type:Uint32Array,size:8,setter:ip,cols:2},P[W0]={Type:Uint32Array,size:12,setter:op,cols:3},P[X0]={Type:Uint32Array,size:16,setter:sp,cols:4},P[q0]={Type:Float32Array,size:32,setter:yE,rows:2,cols:2},P[Z0]={Type:Float32Array,size:48,setter:AE,rows:3,cols:3},P[K0]={Type:Float32Array,size:64,setter:bE,rows:4,cols:4},P[V3]={Type:Float32Array,size:32,setter:xE,rows:2,cols:3},P[_3]={Type:Float32Array,size:32,setter:wE,rows:2,cols:4},P[Y3]={Type:Float32Array,size:48,setter:vE,rows:3,cols:2},P[W3]={Type:Float32Array,size:48,setter:SE,rows:3,cols:4},P[X3]={Type:Float32Array,size:64,setter:EE,rows:4,cols:2},P[q3]={Type:Float32Array,size:64,setter:CE,rows:4,cols:3},P[j3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ps},P[G3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[H3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:pu},P[Q3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ps},P[Z3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[K3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[J3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[$3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ps},P[eE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:pu},P[tE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[nE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[rE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ps},P[iE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:pu},P[oE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[sE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms};function ys(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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ds,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function tn(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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||hu,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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||du,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function gu(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(hs,o.buffer);const s=o.size||o.numComponents||r,a=s/i,c=o.type||ds,f=P[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 ce={};ce[ds]={size:4,setter:ys},ce[U0]={size:8,setter:ys},ce[j0]={size:12,setter:ys},ce[G0]={size:16,setter:ys},ce[hu]={size:4,setter:tn},ce[H0]={size:8,setter:tn},ce[Q0]={size:12,setter:tn},ce[V0]={size:16,setter:tn},ce[du]={size:4,setter:As},ce[J0]={size:8,setter:As},ce[$0]={size:12,setter:As},ce[ep]={size:16,setter:As},ce[_0]={size:4,setter:tn},ce[Y0]={size:8,setter:tn},ce[W0]={size:12,setter:tn},ce[X0]={size:16,setter:tn},ce[q0]={size:4,setter:gu,count:2},ce[Z0]={size:9,setter:gu,count:3},ce[K0]={size:16,setter:gu,count:4};function ap(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const DE=/(\.|\[|]|\w+)/g,ME=t=>t>="0"&&t<="9";function cp(t,e,n,r){const i=t.split(DE).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const c=ME(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){lp(p,g)}}(d),s+=l}}}function IE(t,e){let n=0;function r(a,c,u){const f=c.name.endsWith("[0]"),l=c.type,h=P[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,R0);for(let a=0;a<s;++a){const c=t.getActiveUniform(e,a);if(ap(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,cp(u,l,o,i)}}return i}function TE(t,e){const n={},r=t.getProgramParameter(e,B3);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 NE(t,e){const n=t.getProgramParameter(e,R0),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,P3);for(let a=0;a<s;++a){const c=t.getActiveUniformBlockName(e,a),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,F3),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,z3),size:t.getActiveUniformBlockParameter(e,a,R3),uniformIndices:t.getActiveUniformBlockParameter(e,a,U3)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const up=/\[\d+\]\.$/,LE=(t,e)=>((t+(e-1))/e|0)*e;function kE(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 OE(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return N3("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),c=t.createBuffer(),u=s.index;t.bindBuffer(fu,c),t.uniformBlockBinding(e,s.index,u);let f=r+".";up.test(f)&&(f=f.replace(up,"."));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 x=P[g.type],v=x.Type,S=y?LE(x.size,16)*g.size:x.size*g.size,b=new v(a,g.offset,S/v.BYTES_PER_ELEMENT);l[m]=b;const A=kE(b,y,x.rows,x.cols);h[m]=A,cp(m,A,d,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:c,uniforms:l,setters:h}}function BE(t,e,n){return OE(t,e.program,e.uniformBlockSpec,n)}function PE(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(fu,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function FE(t,e,n){PE(t,e,n)&&t.bufferData(fu,n.array,L3)}function lp(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):lp(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 zE(t,e){const n={},r=t.getProgramParameter(e,O3);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(ap(o))continue;const s=t.getAttribLocation(e,o.name),a=ce[o.type],c=a.setter(t,s,a);c.location=s,n[o.name]=c}return n}function RE(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function fr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(RE(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(k3,n.indices))}function UE(t,e){const n=IE(t,e),r=zE(t,e),i={program:e,uniformSetters:n,attribSetters:r};return rr(t)&&(i.uniformBlockSpec=NE(t,e),i.transformFeedbackInfo=TE(t,e)),i}const jE=4,fp=5123;function Ci(t,e,n,r,i,o){n=n===void 0?jE: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?fp:e.elementType,i,o):t.drawElements(n,c,a===void 0?fp:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const GE=36160,Di=36161,HE=3553,QE=5121,VE=6402,_E=6408,YE=33190,WE=36012,XE=35056,qE=36013,ZE=32854,KE=32855,JE=36194,hp=33189,dp=6401,pp=36168,mu=34041,$E=36064,bs=36096,gp=36128,yu=33306,Au=33071,bu=9729,mp=[{format:_E,type:QE,min:bu,wrap:Au},{format:mu}],ot={};ot[mu]=yu,ot[dp]=gp,ot[pp]=gp,ot[VE]=bs,ot[hp]=bs,ot[YE]=bs,ot[WE]=bs,ot[XE]=yu,ot[qE]=yu;function eS(t,e){return ot[t]||ot[e]}const nn={};nn[ZE]=!0,nn[KE]=!0,nn[JE]=!0,nn[mu]=!0,nn[hp]=!0,nn[dp]=!0,nn[pp]=!0;function tS(t){return nn[t]}function nS(t,e,n,r){const i=GE,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||mp;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||eS(f,c.internalFormat);if(l||(l=$E+s++),!u)if(tS(f))u=t.createRenderbuffer(),t.bindRenderbuffer(Di,u),t.renderbufferStorage(Di,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||bu,h.mag=h.mag||h.minMag||bu,h.wrapS=h.wrapS||h.wrap||Au,h.wrapT=h.wrapT||h.wrap||Au),u=Si(t,h)}if(l0(t,u))t.framebufferRenderbuffer(i,l,Di,u);else if(es(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,l,u,c.level||0,c.layer):t.framebufferTexture2D(i,l,c.target||HE,u,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),a}function rS(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||mp,n.forEach(function(o,s){const a=e.attachments[s],c=o.format;if(l0(t,a))t.bindRenderbuffer(Di,a),t.renderbufferStorage(Di,c,r,i);else if(es(t,a))T3(t,a,o,r,i);else throw new Error("unknown attachment type")})}function iS(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){fr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const oS=/^(.*?)_/;function sS(t,e){eu(t,0);const n=t.getExtension(e);if(n){const r={},i=oS.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&&u0(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},eu(r,0)}return n}const yp=["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 Ap(t){for(let e=0;e<yp.length;++e)sS(t,yp[e])}function aS(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){Ap(r);break}return r}function cS(t,e){return aS(t,e)}var uS=`/**
14
+ see: http://github.com/greggman/twgl.js for details */const Lc=5120,Ci=5121,Oc=5122,Pc=5123,Fc=5124,zc=5125,Rc=5126,Dx=32819,Mx=32820,Tx=33635,Ix=5131,Nx=33640,kx=35899,Bx=35902,Lx=36269,Ox=34042,Rd={};{const t=Rd;t[Lc]=Int8Array,t[Ci]=Uint8Array,t[Oc]=Int16Array,t[Pc]=Uint16Array,t[Fc]=Int32Array,t[zc]=Uint32Array,t[Rc]=Float32Array,t[Dx]=Uint16Array,t[Mx]=Uint16Array,t[Tx]=Uint16Array,t[Ix]=Uint16Array,t[Nx]=Uint32Array,t[kx]=Uint32Array,t[Bx]=Uint32Array,t[Lx]=Uint32Array,t[Ox]=Uint32Array}function jc(t){if(t instanceof Int8Array)return Lc;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Ci;if(t instanceof Int16Array)return Oc;if(t instanceof Uint16Array)return Pc;if(t instanceof Int32Array)return Fc;if(t instanceof Uint32Array)return zc;if(t instanceof Float32Array)return Rc;throw new Error("unsupported typed array type")}function Px(t){if(t===Int8Array)return Lc;if(t===Uint8Array||t===Uint8ClampedArray)return Ci;if(t===Int16Array)return Oc;if(t===Uint16Array)return Pc;if(t===Int32Array)return Fc;if(t===Uint32Array)return zc;if(t===Float32Array)return Rc;throw new Error("unsupported typed array type")}function Fx(t){const e=Rd[t];if(!e)throw new Error("unknown gl type");return e}const Zo=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 zx(...t){console.error(...t)}function jd(...t){console.warn(...t)}function Rx(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function Ud(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function qo(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function jx(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const Gd=35044,ht=34962,Ux=34963,Gx=34660,Hx=5120,Qx=5121,Vx=5122,Yx=5123,Wx=5124,_x=5125,Xx=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(Rx(t,e))return e;n=n||ht;const i=t.createBuffer();return Qd(t,n,i,e,r),i}function Yd(t){return t==="indices"}function Zx(t){return t instanceof Int8Array||t instanceof Uint8Array}function qx(t){return t===Int8Array||t===Uint8Array}function Kx(t){return t.length?t:t.data}const Jx=/coord|texture/i,$x=/color|colour/i;function Wd(t,e){let n;if(Jx.test(t)?n=2:$x.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 ew(t,e){return t.numComponents||t.size||Wd(e,Kx(t).length)}function Uc(t,e){if(Zo(t))return t;if(Zo(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(Yd(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function tw(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Yd(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Hd.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Zo(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=Px(l),c=i.normalize!==void 0?i.normalize:qx(l),u=i.numComponents||i.size||Wd(r,f),s=t.createBuffer(),t.bindBuffer(ht,s),t.bufferData(ht,h,i.drawType||Gd)}else{const f=Uc(i,r);s=Vd(t,f,void 0,i.drawType),a=jc(f),c=i.normalize!==void 0?i.normalize:Zx(f),u=ew(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(ht,null),n}function nw(t,e,n,r){n=Uc(n),r!==void 0?(t.bindBuffer(ht,e.buffer),t.bufferSubData(ht,r,n)):Qd(t,ht,e.buffer,n,e.drawType)}function rw(t,e){return e===Hx||e===Qx?1:e===Vx||e===Yx?2:e===Wx||e===_x||e===Xx?4:0}const Gc=["position","positions","a_position"];function iw(t,e){let n,r;for(r=0;r<Gc.length&&(n=Gc[r],!(n in e||(n=Hd.attribPrefix+n,n in e)));++r);r===Gc.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(ht,i.buffer);const o=t.getBufferParameter(ht,Gx);t.bindBuffer(ht,null);const s=rw(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 ow(t,e,n){const r=tw(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=Uc(o,"indices");i.indices=Vd(t,s,Ux),i.numElements=s.length,i.elementType=jc(s)}else i.numElements||(i.numElements=iw(t,i.attribs));return i}function ar(t){return!!t.texStorage2D}const Hc=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)}}(),Zt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},cr=Zo,_d=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Xd=6406,dt=6407,ee=6408,Zd=6409,qd=6410,Si=6402,Kd=34041,Ko=33071,sw=9728,aw=9729,Et=3553,Dt=34067,qt=32879,Kt=35866,Jo=34069,cw=34070,uw=34071,lw=34072,fw=34073,hw=34074,Qc=10241,Vc=10240,$o=10242,es=10243,Jd=32882,dw=33082,pw=33083,gw=33084,mw=33085,Yc=3317,$d=3314,e0=32878,t0=3316,n0=3315,r0=32877,yw=37443,Aw=37441,bw=37440,vw=33321,xw=36756,ww=33325,Cw=33326,Sw=33330,Ew=33329,Dw=33338,Mw=33337,Tw=33340,Iw=33339,Nw=33323,kw=36757,Bw=33327,Lw=33328,Ow=33336,Pw=33335,Fw=33332,zw=33331,Rw=33334,jw=33333,Uw=32849,Gw=35905,Hw=36194,Qw=36758,Vw=35898,Yw=35901,Ww=34843,_w=34837,Xw=36221,Zw=36239,qw=36215,Kw=36233,Jw=36209,$w=36227,e4=32856,t4=35907,n4=36759,r4=32855,i4=32854,o4=32857,s4=34842,a4=34836,c4=36220,u4=36238,l4=36975,f4=36214,h4=36232,d4=36226,p4=36208,g4=33189,m4=33190,y4=36012,A4=36013,b4=35056,Jt=5120,te=5121,ts=5122,ur=5123,ns=5124,Bn=5125,we=5126,i0=32819,o0=32820,s0=33635,rt=5131,Ei=36193,Wc=33640,v4=35899,x4=35902,w4=36269,C4=34042,rs=33319,lr=33320,is=6403,fr=36244,hr=36248,Ln=36249;let _c;function os(t){if(!_c){const e={};e[Xd]={textureFormat:Xd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[te,rt,Ei,we]},e[Zd]={textureFormat:Zd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[te,rt,Ei,we]},e[qd]={textureFormat:qd,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[te,rt,Ei,we]},e[dt]={textureFormat:dt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[te,rt,Ei,we,s0]},e[ee]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[te,rt,Ei,we,i0,o0]},e[Si]={textureFormat:Si,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Bn,ur]},e[vw]={textureFormat:is,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[te]},e[xw]={textureFormat:is,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Jt]},e[ww]={textureFormat:is,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[we,rt]},e[Cw]={textureFormat:is,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[we]},e[Sw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[te]},e[Ew]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Jt]},e[Fw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ur]},e[zw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ts]},e[Rw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bn]},e[jw]={textureFormat:fr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ns]},e[Nw]={textureFormat:rs,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[te]},e[kw]={textureFormat:rs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Jt]},e[Bw]={textureFormat:rs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[we,rt]},e[Lw]={textureFormat:rs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[we]},e[Ow]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[te]},e[Pw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Jt]},e[Dw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ur]},e[Mw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ts]},e[Tw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Bn]},e[Iw]={textureFormat:lr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ns]},e[Uw]={textureFormat:dt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[te]},e[Gw]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[te]},e[Hw]={textureFormat:dt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[te,s0]},e[Qw]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Jt]},e[Vw]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[we,rt,v4]},e[Yw]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[we,rt,x4]},e[Ww]={textureFormat:dt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[we,rt]},e[_w]={textureFormat:dt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[we]},e[Xw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[te]},e[Zw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Jt]},e[qw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ur]},e[Kw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ts]},e[Jw]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Bn]},e[$w]={textureFormat:hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ns]},e[e4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[te]},e[t4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[te]},e[n4]={textureFormat:ee,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Jt]},e[r4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[te,o0,Wc]},e[i4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[te,i0]},e[o4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Wc]},e[s4]={textureFormat:ee,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[we,rt]},e[a4]={textureFormat:ee,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[we]},e[c4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[te]},e[u4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Jt]},e[l4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wc]},e[f4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ur]},e[h4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ts]},e[d4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ns]},e[p4]={textureFormat:Ln,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Bn]},e[g4]={textureFormat:Si,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[ur,Bn]},e[m4]={textureFormat:Si,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bn]},e[y4]={textureFormat:Si,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[we]},e[b4]={textureFormat:Kd,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[C4]},e[A4]={textureFormat:Kd,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[w4]},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})}),_c=e}return _c[t]}function S4(t,e){const n=os(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function dr(t){const e=os(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function a0(t){return(t&t-1)===0}function E4(t,e,n,r){if(!ar(t))return a0(e)&&a0(n);const i=os(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function D4(t){const e=os(t);if(!e)throw"unknown internal format";return e.textureFilterable}function c0(t,e,n){return cr(e)?jc(e):n||te}function ss(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Dt?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 pr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(yw,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Aw,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(bw,e.flipY)}function u0(t){t.pixelStorei(Yc,4),ar(t)&&(t.pixelStorei($d,0),t.pixelStorei(e0,0),t.pixelStorei(t0,0),t.pixelStorei(n0,0),t.pixelStorei(r0,0))}function M4(t,e,n,r){r.minMag&&(n.call(t,e,Qc,r.minMag),n.call(t,e,Vc,r.minMag)),r.min&&n.call(t,e,Qc,r.min),r.mag&&n.call(t,e,Vc,r.mag),r.wrap&&(n.call(t,e,$o,r.wrap),n.call(t,e,es,r.wrap),(e===qt||jx(t,e))&&n.call(t,e,Jd,r.wrap)),r.wrapR&&n.call(t,e,Jd,r.wrapR),r.wrapS&&n.call(t,e,$o,r.wrapS),r.wrapT&&n.call(t,e,es,r.wrapT),r.minLod&&n.call(t,e,dw,r.minLod),r.maxLod&&n.call(t,e,pw,r.maxLod),r.baseLevel&&n.call(t,e,gw,r.baseLevel),r.maxLevel&&n.call(t,e,mw,r.maxLevel)}function l0(t,e,n){const r=n.target||Et;t.bindTexture(r,e),M4(t,r,t.texParameteri,n)}function T4(t){return t=t||Zt.textureColor,cr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Xc(t,e,n,r,i,o){n=n||Zt.textureOptions,o=o||ee;const s=n.target||Et;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),E4(t,r,i,o))t.generateMipmap(s);else{const a=D4(o)?aw:sw;t.texParameteri(s,Qc,a),t.texParameteri(s,Vc,a),t.texParameteri(s,$o,Ko),t.texParameteri(s,es,Ko)}}function Di(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Zc(t,e){return e=e||{},e.cubeFaceOrder||[Jo,cw,uw,lw,fw,hw]}function qc(t,e){const r=Zc(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||Zt.textureOptions;const i=r.target||Et,o=r.level||0;let s=n.width,a=n.height;const c=r.internalFormat||r.format||ee,u=dr(c),f=r.format||u.format,l=r.type||u.type;if(pr(t,r),t.bindTexture(i,e),i===Dt){const h=n.width,p=n.height;let d,g;if(h/6===p)d=p,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===p/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===p/3)d=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=_d();m?(m.canvas.width=d,m.canvas.height=d,s=d,a=d,qc(t,r).forEach(function(y){const v=g[y.ndx*2+0]*d,w=g[y.ndx*2+1]*d;m.drawImage(n,v,w,d,d,0,0,d,d),t.texImage2D(y.face,o,c,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap!="undefined"&&(s=d,a=d,qc(t,r).forEach(function(y){const v=g[y.ndx*2+0]*d,w=g[y.ndx*2+1]*d;t.texImage2D(y.face,o,c,d,d,0,f,l,null),createImageBitmap(n,v,w,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){pr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,C),Di(r)&&Xc(t,e,r,s,a,c)})}))}else if(i===qt||i===Kt){const h=Math.min(n.width,n.height),p=Math.max(n.width,n.height),d=p/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===p?1:0,m=n.height===p?1:0;t.pixelStorei(Yc,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<d;++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);Di(r)&&Xc(t,e,r,s,a,c),l0(t,e,r)}function Mi(){}function I4(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 N4(t,e){return e===void 0&&!I4(t)?"anonymous":e}function k4(t,e,n){n=n||Mi;let r;if(e=e!==void 0?e:Zt.crossOrigin,e=N4(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;zx(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 Kc(t,e,n){return h0(t)?(setTimeout(function(){n(null,t)}),t):k4(t,e,n)}function Jc(t,e,n){n=n||Zt.textureOptions;const r=n.target||Et;if(t.bindTexture(r,e),n.color===!1)return;const i=T4(n.color);if(r===Dt)for(let o=0;o<6;++o)t.texImage2D(Jo+o,0,ee,1,1,0,ee,te,i);else r===qt||r===Kt?t.texImage3D(r,0,ee,1,1,1,0,ee,te,i):t.texImage2D(r,0,ee,1,1,0,ee,te,i)}function B4(t,e,n,r){return r=r||Mi,n=n||Zt.textureOptions,Jc(t,e,n),n=Object.assign({},n),Kc(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(f0(t,e,s,n),r(null,e,s))})}function L4(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||ee,a=dr(s),c=n.format||a.format,u=n.type||te,f=n.target||Et;if(f!==Dt)throw"target must be TEXTURE_CUBE_MAP";Jc(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Zc(t,n);let d;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):(pr(t,n),t.bindTexture(f,e),l===5?Zc().forEach(function(w){t.texImage2D(w,o,s,c,u,v)}):t.texImage2D(m,o,s,c,u,v),Di(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(m,y){return Kc(m,n.crossOrigin,g(p[y]))})}function O4(t,e,n,r){r=r||Mi;const i=n.src,o=n.internalFormat||n.format||ee,s=dr(o),a=n.format||s.format,c=n.type||te,u=n.target||Kt;if(u!==qt&&u!==Kt)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Jc(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const p=n.level||0;let d=n.width,g=n.height;const m=i.length;let y=!0;function v(w){return function(C,b){if(--f,C)l.push(C);else{if(pr(t,n),t.bindTexture(u,e),y){y=!1,d=n.width||b.width,g=n.height||b.height,t.texImage3D(u,p,o,d,g,m,0,a,c,null);for(let A=0;A<m;++A)t.texSubImage3D(u,p,0,0,A,d,g,1,a,c,b)}else{let A=b,x;(b.width!==d||b.height!==g)&&(x=_d(),A=x.canvas,x.canvas.width=d,x.canvas.height=g,x.drawImage(b,0,0,d,g)),t.texSubImage3D(u,p,0,0,w,d,g,1,a,c,A),x&&A===x.canvas&&(x.canvas.width=0,x.canvas.height=0)}Di(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(w,C){return Kc(w,n.crossOrigin,v(C))})}function d0(t,e,n,r){r=r||Zt.textureOptions;const i=r.target||Et;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const c=r.level||0,u=r.internalFormat||r.format||ee,f=dr(u),l=r.format||f.format,h=r.type||c0(t,n,f.type);if(cr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=Fx(h);n=new m(n)}const p=S4(u,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+Hc(t,l);let g;if(i===qt||i===Kt)if(!o&&!s&&!a){const m=Math.cbrt(d);if(m%1!==0)throw"can't guess cube size of array of numElements: "+d;o=m,s=m,a=m}else o&&(!s||!a)?(g=ss(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=ss(t,i,o,a,d/s),o=g.width,a=g.height):(g=ss(t,i,o,s,d/a),o=g.width,s=g.height);else g=ss(t,i,o,s,d),o=g.width,s=g.height;if(u0(t),t.pixelStorei(Yc,r.unpackAlignment||1),pr(t,r),i===Dt){const m=p/n.BYTES_PER_ELEMENT,y=d/6*m;qc(t,r).forEach(v=>{const w=y*v.ndx,C=n.subarray(w,w+y);t.texImage2D(v.face,c,u,o,s,0,l,h,C)})}else i===qt||i===Kt?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 P4(t,e,n){const r=n.target||Et;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||ee,s=dr(o),a=n.format||s.format,c=n.type||s.type;if(pr(t,n),r===Dt)for(let u=0;u<6;++u)t.texImage2D(Jo+u,i,o,n.width,n.height,0,a,c,null);else r===qt||r===Kt?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 Ti(t,e,n){n=n||Mi,e=e||Zt.textureOptions;const r=t.createTexture(),i=e.target||Et;let o=e.width||1,s=e.height||1;const a=e.internalFormat||ee;t.bindTexture(i,r),i===Dt&&(t.texParameteri(i,$o,Ko),t.texParameteri(i,es,Ko));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")B4(t,r,e,n);else if(cr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||cr(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===Dt?L4(t,r,e,n):O4(t,r,e,n):(f0(t,r,c,e),o=c.width,s=c.height);else P4(t,r,e);return Di(e)&&Xc(t,r,e,o,s,a),l0(t,r,e),r}function F4(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||Et;t.bindTexture(s,e);const a=n.level||0,c=n.internalFormat||n.format||ee,u=dr(c),f=n.format||u.format;let l;const h=n.src;if(h&&(cr(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||c0(t,h,u.type):l=n.type||u.type,s===Dt)for(let p=0;p<6;++p)t.texImage2D(Jo+p,a,c,r,i,0,f,l,null);else s===qt||s===Kt?t.texImage3D(s,a,c,r,i,o,0,f,l,null):t.texImage2D(s,a,c,r,i,0,f,l,null)}const z4=jd,as=33984,R4=35048,cs=34962,j4=34963,$c=35345,p0=35718,U4=35721,G4=35971,H4=35382,Q4=35396,V4=35398,Y4=35392,W4=35395,us=5126,g0=35664,m0=35665,y0=35666,eu=5124,A0=35667,b0=35668,v0=35669,x0=35670,w0=35671,C0=35672,S0=35673,E0=35674,D0=35675,M0=35676,_4=35678,X4=35680,Z4=35679,q4=35682,K4=35685,J4=35686,$4=35687,e3=35688,t3=35689,n3=35690,r3=36289,i3=36292,o3=36293,tu=5125,T0=36294,I0=36295,N0=36296,s3=36298,a3=36299,c3=36300,u3=36303,l3=36306,f3=36307,h3=36308,d3=36311,ls=3553,fs=34067,nu=32879,hs=35866,P={};function k0(t,e){return P[e].bindPoint}function p3(t,e){return function(n){t.uniform1f(e,n)}}function g3(t,e){return function(n){t.uniform1fv(e,n)}}function m3(t,e){return function(n){t.uniform2fv(e,n)}}function y3(t,e){return function(n){t.uniform3fv(e,n)}}function A3(t,e){return function(n){t.uniform4fv(e,n)}}function B0(t,e){return function(n){t.uniform1i(e,n)}}function L0(t,e){return function(n){t.uniform1iv(e,n)}}function O0(t,e){return function(n){t.uniform2iv(e,n)}}function P0(t,e){return function(n){t.uniform3iv(e,n)}}function F0(t,e){return function(n){t.uniform4iv(e,n)}}function b3(t,e){return function(n){t.uniform1ui(e,n)}}function v3(t,e){return function(n){t.uniform1uiv(e,n)}}function x3(t,e){return function(n){t.uniform2uiv(e,n)}}function w3(t,e){return function(n){t.uniform3uiv(e,n)}}function C3(t,e){return function(n){t.uniform4uiv(e,n)}}function S3(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function E3(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function D3(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function M3(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function T3(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function I3(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function N3(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function k3(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function B3(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Ee(t,e,n,r){const i=k0(t,e);return ar(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(as+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(as+n),t.bindTexture(i,o)}}function De(t,e,n,r,i){const o=k0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return ar(t)?function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(as+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(as+s[u]),t.bindTexture(o,c)})}}P[us]={Type:Float32Array,size:4,setter:p3,arraySetter:g3},P[g0]={Type:Float32Array,size:8,setter:m3,cols:2},P[m0]={Type:Float32Array,size:12,setter:y3,cols:3},P[y0]={Type:Float32Array,size:16,setter:A3,cols:4},P[eu]={Type:Int32Array,size:4,setter:B0,arraySetter:L0},P[A0]={Type:Int32Array,size:8,setter:O0,cols:2},P[b0]={Type:Int32Array,size:12,setter:P0,cols:3},P[v0]={Type:Int32Array,size:16,setter:F0,cols:4},P[tu]={Type:Uint32Array,size:4,setter:b3,arraySetter:v3},P[T0]={Type:Uint32Array,size:8,setter:x3,cols:2},P[I0]={Type:Uint32Array,size:12,setter:w3,cols:3},P[N0]={Type:Uint32Array,size:16,setter:C3,cols:4},P[x0]={Type:Uint32Array,size:4,setter:B0,arraySetter:L0},P[w0]={Type:Uint32Array,size:8,setter:O0,cols:2},P[C0]={Type:Uint32Array,size:12,setter:P0,cols:3},P[S0]={Type:Uint32Array,size:16,setter:F0,cols:4},P[E0]={Type:Float32Array,size:32,setter:S3,rows:2,cols:2},P[D0]={Type:Float32Array,size:48,setter:E3,rows:3,cols:3},P[M0]={Type:Float32Array,size:64,setter:D3,rows:4,cols:4},P[K4]={Type:Float32Array,size:32,setter:M3,rows:2,cols:3},P[J4]={Type:Float32Array,size:32,setter:I3,rows:2,cols:4},P[$4]={Type:Float32Array,size:48,setter:T3,rows:3,cols:2},P[e3]={Type:Float32Array,size:48,setter:k3,rows:3,cols:4},P[t3]={Type:Float32Array,size:64,setter:N3,rows:4,cols:2},P[n3]={Type:Float32Array,size:64,setter:B3,rows:4,cols:3},P[_4]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:ls},P[X4]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:fs},P[Z4]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:nu},P[q4]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:ls},P[r3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:hs},P[i3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:hs},P[o3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:fs},P[s3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:ls},P[a3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:nu},P[c3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:fs},P[u3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:hs},P[l3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:ls},P[f3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:nu},P[h3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:fs},P[d3]={Type:null,size:0,setter:Ee,arraySetter:De,bindPoint:hs};function ds(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(cs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||us,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function $t(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(cs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||eu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ps(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(cs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||tu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ru(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(cs,o.buffer);const s=o.size||o.numComponents||r,a=s/i,c=o.type||us,f=P[c].size*s,l=o.normalize||!1,h=o.offset||0,p=f/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,c,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const ae={};ae[us]={size:4,setter:ds},ae[g0]={size:8,setter:ds},ae[m0]={size:12,setter:ds},ae[y0]={size:16,setter:ds},ae[eu]={size:4,setter:$t},ae[A0]={size:8,setter:$t},ae[b0]={size:12,setter:$t},ae[v0]={size:16,setter:$t},ae[tu]={size:4,setter:ps},ae[T0]={size:8,setter:ps},ae[I0]={size:12,setter:ps},ae[N0]={size:16,setter:ps},ae[x0]={size:4,setter:$t},ae[w0]={size:8,setter:$t},ae[C0]={size:12,setter:$t},ae[S0]={size:16,setter:$t},ae[E0]={size:4,setter:ru,count:2},ae[D0]={size:9,setter:ru,count:3},ae[M0]={size:16,setter:ru,count:4};function z0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const L3=/(\.|\[|]|\w+)/g,O3=t=>t>="0"&&t<="9";function R0(t,e,n,r){const i=t.split(L3).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const c=O3(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==="[",p=n[u]||(h?[]:{});n[u]=p,n=p,r[s]=r[s]||function(d){return function(g){U0(d,g)}}(p),s+=l}}}function P3(t,e){let n=0;function r(a,c,u){const f=c.name.endsWith("[0]"),l=c.type,h=P[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=c.size,f?p=h.arraySetter(t,l,d,u,c.size):p=h.setter(t,l,d,u,c.size)}else h.arraySetter&&f?p=h.arraySetter(t,u):p=h.setter(t,u);return p.location=u,p}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 F3(t,e){const n={},r=t.getProgramParameter(e,G4);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 z3(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,H4);for(let a=0;a<s;++a){const c=t.getActiveUniformBlockName(e,a),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,Q4),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,V4),size:t.getActiveUniformBlockParameter(e,a,Y4),uniformIndices:t.getActiveUniformBlockParameter(e,a,W4)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const j0=/\[\d+\]\.$/,R3=(t,e)=>((t+(e-1))/e|0)*e;function j3(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 U3(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return z4("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),c=t.createBuffer(),u=s.index;t.bindBuffer($c,c),t.uniformBlockBinding(e,s.index,u);let f=r+".";j0.test(f)&&(f=f.replace(j0,"."));const l={},h={},p={};return s.uniformIndices.forEach(function(d){const g=o[d];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=P[g.type],w=v.Type,C=y?R3(v.size,16)*g.size:v.size*g.size,b=new w(a,g.offset,C/w.BYTES_PER_ELEMENT);l[m]=b;const A=j3(b,y,v.rows,v.cols);h[m]=A,R0(m,A,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:c,uniforms:l,setters:h}}function G3(t,e,n){return U3(t,e.program,e.uniformBlockSpec,n)}function H3(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange($c,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Q3(t,e,n){H3(t,e,n)&&t.bufferData($c,n.array,R4)}function U0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):U0(t[n],e[n])}}function Ce(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)Ce(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function V3(t,e){const n={},r=t.getProgramParameter(e,U4);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 Y3(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function gr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(Y3(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(j4,n.indices))}function W3(t,e){const n=P3(t,e),r=V3(t,e),i={program:e,uniformSetters:n,attribSetters:r};return ar(t)&&(i.uniformBlockSpec=z3(t,e),i.transformFeedbackInfo=F3(t,e)),i}const _3=4,G0=5123;function Ii(t,e,n,r,i,o){n=n===void 0?_3: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 X3=36160,On=36161,Z3=3553,q3=5121,K3=6402,J3=6408,$3=33190,eC=36012,tC=35056,nC=36013,rC=32854,iC=32855,oC=36194,H0=33189,Q0=6401,V0=36168,iu=34041,sC=36064,gs=36096,Y0=36128,ou=33306,su=33071,au=9729,W0=[{format:J3,type:q3,min:au,wrap:su},{format:iu}],it={};it[iu]=ou,it[Q0]=Y0,it[V0]=Y0,it[K3]=gs,it[H0]=gs,it[$3]=gs,it[eC]=gs,it[tC]=ou,it[nC]=ou;function aC(t,e){return it[t]||it[e]}const en={};en[rC]=!0,en[iC]=!0,en[oC]=!0,en[iu]=!0,en[H0]=!0,en[Q0]=!0,en[V0]=!0;function cC(t){return en[t]}function uC(t,e,n,r){const i=X3,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||W0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let h=c.attachmentPoint||aC(l,c.internalFormat);if(h||(h=sC+s++),!u)if(f!==void 0||cC(l))u=t.createRenderbuffer(),t.bindRenderbuffer(On,u),f>1?t.renderbufferStorageMultisample(On,f,l,n,r):t.renderbufferStorage(On,l,n,r);else{const p=Object.assign({},c);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||au,p.mag=p.mag||p.minMag||au,p.wrapS=p.wrapS||p.wrap||su,p.wrapT=p.wrapT||p.wrap||su),u=Ti(t,p)}if(Ud(t,u))t.framebufferRenderbuffer(i,h,On,u);else if(qo(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,h,u,c.level||0,c.layer):t.framebufferTexture2D(i,h,c.target||Z3,u,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),a}function lC(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||W0,n.forEach(function(o,s){const a=e.attachments[s],c=o.format,u=o.samples;if(u!==void 0||Ud(t,a))t.bindRenderbuffer(On,a),u>1?t.renderbufferStorageMultisample(On,u,c,r,i):t.renderbufferStorage(On,c,r,i);else if(qo(t,a))F4(t,a,o,r,i);else throw new Error("unknown attachment type")})}function fC(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){gr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const hC=/^(.*?)_/;function dC(t,e){Hc(t,0);const n=t.getExtension(e);if(n){const r={},i=hC.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&&jd(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},Hc(r,0)}return n}const _0=["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<_0.length;++e)dC(t,_0[e])}function pC(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 gC(t,e){return pC(t,e)}var mC=`/**
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
- `,lS=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
128
+ `,yC=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
129
129
  in vec2 vPosInPixels;
130
130
  #endif
131
131
 
@@ -176,38 +176,20 @@ void main(void) {
176
176
  fragColor = vPickingColor;
177
177
  }
178
178
  }
179
- `;function xu(t,e=[],n=0){const r=Math.fround(t);return e[n]=r,e[n+1]=isFinite(r)?t-r:0,e}function fS(t){switch(mS(t).gpuVendor.toLowerCase()){case"nvidia":return` #define NVIDIA_GPU
180
- // Nvidia optimizes away the calculation necessary for emulated fp64
181
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
182
- `;case"intel":return` #define INTEL_GPU
183
- // Intel optimizes away the calculation necessary for emulated fp64
184
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
185
- // Intel's built-in 'tan' function doesn't have acceptable precision
186
- #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
187
- // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
188
- #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
189
- `;case"amd":return` #define AMD_GPU
190
- `;default:return` #define DEFAULT_GPU
191
- // Prevent driver from optimizing away the calculation necessary for emulated fp64
192
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
193
- // Intel's built-in 'tan' function doesn't have acceptable precision
194
- #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
195
- // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
196
- #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
197
- `}}const hS=7936,dS=7937,pS=7938,gS=35724;function mS(t){const e=t.getExtension("WEBGL_debug_renderer_info"),n=t.getParameter(e&&e.UNMASKED_VENDOR_WEBGL||hS),r=t.getParameter(e&&e.UNMASKED_RENDERER_WEBGL||dS);return{gpuVendor:yS(n,r),vendor:n,renderer:r,version:t.getParameter(pS),shadingLanguageVersion:t.getParameter(gS)}}function yS(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 vu(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function bp(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Mi(){}var Ii=.7,xs=1/Ii,hr="\\s*([+-]?\\d+)\\s*",Ti="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",mt="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",AS=/^#([0-9a-f]{3,8})$/,bS=new RegExp("^rgb\\("+[hr,hr,hr]+"\\)$"),xS=new RegExp("^rgb\\("+[mt,mt,mt]+"\\)$"),vS=new RegExp("^rgba\\("+[hr,hr,hr,Ti]+"\\)$"),wS=new RegExp("^rgba\\("+[mt,mt,mt,Ti]+"\\)$"),ES=new RegExp("^hsl\\("+[Ti,mt,mt]+"\\)$"),SS=new RegExp("^hsla\\("+[Ti,mt,mt,Ti]+"\\)$"),xp={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};vu(Mi,Ni,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:vp,formatHex:vp,formatHsl:CS,formatRgb:wp,toString:wp});function vp(){return this.rgb().formatHex()}function CS(){return Mp(this).formatHsl()}function wp(){return this.rgb().formatRgb()}function Ni(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=AS.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Ep(e):n===3?new Re(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?vs(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?vs(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=bS.exec(t))?new Re(e[1],e[2],e[3],1):(e=xS.exec(t))?new Re(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=vS.exec(t))?vs(e[1],e[2],e[3],e[4]):(e=wS.exec(t))?vs(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=ES.exec(t))?Dp(e[1],e[2]/100,e[3]/100,1):(e=SS.exec(t))?Dp(e[1],e[2]/100,e[3]/100,e[4]):xp.hasOwnProperty(t)?Ep(xp[t]):t==="transparent"?new Re(NaN,NaN,NaN,0):null}function Ep(t){return new Re(t>>16&255,t>>8&255,t&255,1)}function vs(t,e,n,r){return r<=0&&(t=e=n=NaN),new Re(t,e,n,r)}function DS(t){return t instanceof Mi||(t=Ni(t)),t?(t=t.rgb(),new Re(t.r,t.g,t.b,t.opacity)):new Re}function MS(t,e,n,r){return arguments.length===1?DS(t):new Re(t,e,n,r==null?1:r)}function Re(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}vu(Re,MS,bp(Mi,{brighter:function(t){return t=t==null?xs:Math.pow(xs,t),new Re(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?Ii:Math.pow(Ii,t),new Re(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:Sp,formatHex:Sp,formatRgb:Cp,toString:Cp}));function Sp(){return"#"+wu(this.r)+wu(this.g)+wu(this.b)}function Cp(){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 wu(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function Dp(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new yt(t,e,n,r)}function Mp(t){if(t instanceof yt)return new yt(t.h,t.s,t.l,t.opacity);if(t instanceof Mi||(t=Ni(t)),!t)return new yt;if(t instanceof yt)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 yt(s,a,c,t.opacity)}function IS(t,e,n,r){return arguments.length===1?Mp(t):new yt(t,e,n,r==null?1:r)}function yt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}vu(yt,IS,bp(Mi,{brighter:function(t){return t=t==null?xs:Math.pow(xs,t),new yt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?Ii:Math.pow(Ii,t),new yt(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 Re(Eu(t>=240?t-240:t+120,i,r),Eu(t,i,r),Eu(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 Eu(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 Su="attr_",Ip="uDomain_",TS="range_",Tp="scale_",Np="getScaled_",Cu="uRangeTexture_",Lp=3402823466e29;function NS(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 LS(t,e){let n;if(Jo(t))n=Ln(a0(t)(e));else if(oe(e))if(In(t))n=OS(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ao(e))n=Ln(e?1:0);else if(e===null)if(In(t))n=Ln([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Ln(e);return`
179
+ `;const cu="attr_",Z0="uDomain_",AC="range_",q0="scale_",K0="getScaled_",uu="uRangeTexture_",J0=3402823466e29;function bC(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 vC(t,e){let n;if(Xo(t))n=Pn(zd(t)(e));else if(ie(e))if(kn(t))n=wC(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(co(e))n=Pn(e?1:0);else if(e===null)if(kn(t))n=Pn([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Pn(e);return`
198
180
  #define ${t}_DEFINED
199
- ${n.type} ${Np}${t}() {
181
+ ${n.type} ${K0}${t}() {
200
182
  // Constant value
201
183
  return ${n};
202
- }`}function kS(t,e,n){var w;if(Ze(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=nr(t),i=Su+t,o=Ip+r,s=TS+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}=NS(e.type),d=(E,...B)=>BS.apply(null,[E+(a?"Fp64":""),"value",...B]);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(),(w=n.band)!=null?w:.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=Qo(e.type)||nt(e.type)&&In(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(ae)){const E=kp(g);l.push(`const ${E.type} ${s} = ${E};`)}const m=In(t)?"vec3":"float";let y;if(In(t)){const E=Cu+r;if(t==r&&l.push(`uniform sampler2D ${E};`),nt(e.type))y=`getInterpolatedColor(${E}, transformed)`;else if(Xt(e.type)||Kn(e.type))y=`getDiscreteColor(${E}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Kn(e.type)){const E=Cu+r;t==r&&l.push(`uniform sampler2D ${E};`),y=`getDiscreteColor(${E}, int(transformed)).r`}gi(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const x=[],v=nt(e.type)&&u>2,S=Kn(e.type)||v;if(x.push("int slot = 0;"),S){const E=o;x.push(v?`while (slot < ${E}.length() - 2 && value >= ${E}[slot + 1]) { slot++; }`:`while (slot < ${E}.length() && value >= ${E}[slot]) { slot++; }`)}const b=nt(e.type)||Kn(e.type)||["band","point"].includes(e.type);if(p){const E=o;if(b){const B=a?"vec4":"vec2";x.push(`${B} domain = ${B}(${E}[slot], ${E}[slot + 1]);`)}x.push(`float transformed = ${p};`),v&&x.push(`transformed = (float(slot) + transformed) / (float(${E}.length()) - 1.0);`)}else x.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&x.push(`transformed = clampToRange(transformed, ${kp(g)});`),x.push(`return ${y!=null?y:"transformed"};`),l.push(`
203
- ${m} ${Tp}${t}(${c} value) {
204
- ${x.map(E=>` ${E}
184
+ }`}function xC(t,e,n){var x,E;if(_e(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=sr(t),i=cu+t,o=Z0+r,s=AC+r,a=ms(e.type),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`);const{transform:h}=bC(e.type),p=(N,...L)=>CC.apply(null,[N,"value",...L]);let d;switch(h){case"linear":d=p("scaleLinear","domain",s);break;case"log":d=p("scaleLog","domain",s,e.base());break;case"symlog":d=p("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":d=p("scalePow","domain",s,e.exponent());break;case"index":case"locus":d=p("scaleBandHp","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(x=n.band)!=null?x:.5);break;case"point":case"band":d=p("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(E=n.band)!=null?E:.5);break;case"ordinal":case"null":case"identity":d=p("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=jo(e.type)||tt(e.type)&&kn(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(se)){const N=$0(g);l.push(`const ${N.type} ${s} = ${N};`)}const m=kn(t)?"vec3":"float";let y;if(kn(t)){const N=uu+r;if(t==r&&l.push(`uniform sampler2D ${N};`),tt(e.type))y=`getInterpolatedColor(${N}, transformed)`;else if(Wt(e.type)||tr(e.type))y=`getDiscreteColor(${N}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||tr(e.type)){const N=uu+r;t==r&&l.push(`uniform sampler2D ${N};`),y=`getDiscreteColor(${N}, int(transformed)).r`}bi(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const v=[],w=tt(e.type)&&u>2,C=tr(e.type)||w;if(v.push("int slot = 0;"),C){const N=o;v.push(w?`while (slot < ${N}.length() - 2 && value >= ${N}[slot + 1]) { slot++; }`:`while (slot < ${N}.length() && value >= ${N}[slot]) { slot++; }`)}const b=tt(e.type)||tr(e.type)||["band","point"].includes(e.type);if(d){const N=o;b&&(a?v.push(`vec3 domain = ${N};`):v.push(`vec2 domain = vec2(${N}[slot], ${N}[slot + 1]);`)),v.push(`float transformed = ${d};`),w&&v.push(`transformed = (float(slot) + transformed) / (float(${N}.length()) - 1.0);`)}else v.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&v.push(`transformed = clampToRange(transformed, ${$0(g)});`),v.push(`return ${y!=null?y:"transformed"};`),l.push(`
185
+ ${m} ${q0}${t}(${c} value) {
186
+ ${v.map(N=>` ${N}
205
187
  `).join("")}
206
188
  }`),l.push(`
207
- ${m} ${Np}${t}() {
208
- return ${Tp}${t}(${i});
189
+ ${m} ${K0}${t}() {
190
+ return ${q0}${t}(${i});
209
191
  }`);const A=l.join(`
210
- `);if(b&&t==r){const E=nt(e.type)||Kn(e.type)?u:2;f=`${a?"vec2":"float"} ${o}[${E}];`}return{glsl:A,domainUniform:f}}function Du(t){if(!ae(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+Lp;if(t==-1/0)return""+-Lp;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Ln(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(Du).join(", ")})`):(n="float",r=Du(t[0])),Object.assign(r,{type:n,numComponents:e})}function OS(t){const e=Ni(t).rgb();return Ln([e.r,e.g,e.b].map(n=>n/255))}function kp(t){return Ln([t[0],pe(t)])}function BS(t,...e){const n=[];for(const r of e)ae(r)?n.push(Du(r)):_e(r)?n.push(Ln(r)):n.push(r);return`${t}(${n.join(", ")})`}class PS{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Su+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(!ae(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}];
192
+ `);if(b&&t==r){const N=tt(e.type)||tr(e.type)?u:2;f=a?`highp vec3 ${o};`:`mediump float ${o}[${N}];`}return{glsl:A,domainUniform:f}}function lu(t){if(!se(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+J0;if(t==-1/0)return""+-J0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Pn(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(lu).join(", ")})`):(n="float",r=lu(t[0])),Object.assign(r,{type:n,numComponents:e})}function wC(t){const e=vn(t).rgb();return Pn([e.r,e.g,e.b].map(n=>n/255))}function $0(t){return Pn([t[0],le(t)])}function CC(t,...e){const n=[];for(const r of e)se(r)?n.push(lu(r)):Qe(r)?n.push(Pn(r)):n.push(r);return`${t}(${n.join(", ")})`}function ms(t){return t=="index"||t=="locus"}function fu(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function SC(t){return[...fu(t[0]),t[1]-t[0]]}class EC{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(cu+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
193
  `,n+=`p${i}();
212
194
  `;const r=new Function("that",`${e}
213
195
 
@@ -215,201 +197,15 @@ ${m} ${Np}${t}() {
215
197
  ${n}
216
198
  that.vertexCount++;
217
199
  };
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 dr=5,Mu=127;function Iu(t){const e=[];for(let p=0;p<=Mu;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=Mu?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<=Mu?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-dr*2,l=c.height-dr*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 Tu(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const FS=2**31-1;function zS(t,e){const n=new Int32Array(t);n.fill(FS);const r=new Int32Array(t),i=e[0],s=(e[1]-e[0])/t,a=l=>Tu(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 Li{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 PS(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=>xu(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 So([],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=zS(50,[i(e[0]),o(pe(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 RS extends Li{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 US extends Li{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 jS extends Li{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class GS extends Li{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 HS extends Li{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=!Ze(c)&&c.format?Le(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=-dr;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=oe(m)?m:m===null?"":""+m;if(y.length==0)continue;this.variableBuilder.updateFromDatum(g);const x=s?y.length:this.metrics.measureWidth(y);this.updateWidth(x);let v=o=="right"?-x:o=="center"?-x/2:0;if(!s){const w=this.metrics.getCharByCode(y.charCodeAt(0));v-=(w.width-w.xadvance)/a/2}let S=-.5,b=1,A=1;for(let w=0;w<y.length;w++){const E=this.metrics.getCharByCode(y.charCodeAt(w)),B=s?1:E.xadvance/a;if(E.id==32){v+=B;continue}s?(A=(E.width+dr*2)/E.width,v=-A/2,b=(E.height+dr*2)/E.height,S=-.5-dr/E.height):(b=E.height/a,S=-(E.height+E.yoffset+u)/a,A=E.width/a);const O=E.x,D=E.y;l[0]=v,l[1]=S+b,h[0]=O/c,h[1]=D/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S+b,h[0]=(O+E.width)/c,h[1]=D/c,this.variableBuilder.pushAll(),l[0]=v,l[1]=S,h[0]=O/c,h[1]=(D+E.height)/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S+b,h[0]=(O+E.width)/c,h[1]=D/c,this.variableBuilder.pushAll(),l[0]=v,l[1]=S,h[0]=O/c,h[1]=(D+E.height)/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S,h[0]=(O+E.width)/c,h[1]=(D+E.height)/c,this.variableBuilder.pushAll(),v+=B}this.addToXIndex(n)}this.registerBatch(e)}}var QS=`// Adapted from luma.gl - https://github.com/uber/luma.gl
219
-
220
- // Copyright (c) 2015 - 2017 Uber Technologies, Inc.
221
- //
222
- // Permission is hereby granted, free of charge, to any person obtaining a copy
223
- // of this software and associated documentation files (the "Software"), to deal
224
- // in the Software without restriction, including without limitation the rights
225
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
226
- // copies of the Software, and to permit persons to whom the Software is
227
- // furnished to do so, subject to the following conditions:
228
- //
229
- // The above copyright notice and this permission notice shall be included in
230
- // all copies or substantial portions of the Software.
231
- //
232
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
233
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
234
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
235
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
236
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
237
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
238
- // THE SOFTWARE.
239
-
240
- uniform float ONE;
241
-
242
- /*
243
- About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
244
-
245
- The purpose of this workaround is to prevent shader compilers from
246
- optimizing away necessary arithmetic operations by swapping their sequences
247
- or transform the equation to some 'equivalent' from.
248
-
249
- The method is to multiply an artifical variable, ONE, which will be known to
250
- the compiler to be 1 only at runtime. The whole expression is then represented
251
- as a polynomial with respective to ONE. In the coefficients of all terms, only one a
252
- and one b should appear
253
-
254
- err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
255
- */
256
-
257
- // Divide float number to high and low floats to extend fraction bits
258
- vec2 split(float a) {
259
- const float SPLIT = 4097.0;
260
- float t = a * SPLIT;
261
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
262
- float a_hi = t * ONE - (t - a);
263
- float a_lo = a * ONE - a_hi;
264
- #else
265
- float a_hi = t - (t - a);
266
- float a_lo = a - a_hi;
267
- #endif
268
- return vec2(a_hi, a_lo);
269
- }
270
-
271
- // Divide float number again when high float uses too many fraction bits
272
- vec2 split2(vec2 a) {
273
- vec2 b = split(a.x);
274
- b.y += a.y;
275
- return b;
276
- }
277
-
278
- // Special sum operation when a > b
279
- vec2 quickTwoSum(float a, float b) {
280
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
281
- float sum = (a + b) * ONE;
282
- float err = b - (sum - a) * ONE;
283
- #else
284
- float sum = a + b;
285
- float err = b - (sum - a);
286
- #endif
287
- return vec2(sum, err);
288
- }
289
-
290
- // General sum operation
291
- vec2 twoSum(float a, float b) {
292
- float s = (a + b);
293
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
294
- float v = (s * ONE - a) * ONE;
295
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
296
- #else
297
- float v = s - a;
298
- float err = (a - (s - v)) + (b - v);
299
- #endif
300
- return vec2(s, err);
301
- }
302
-
303
- vec2 twoSub(float a, float b) {
304
- float s = (a - b);
305
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
306
- float v = (s * ONE - a) * ONE;
307
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
308
- #else
309
- float v = s - a;
310
- float err = (a - (s - v)) - (b + v);
311
- #endif
312
- return vec2(s, err);
313
- }
314
-
315
- vec2 twoSqr(float a) {
316
- float prod = a * a;
317
- vec2 a_fp64 = split(a);
318
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
319
- float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
320
- a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
321
- #else
322
- float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
323
- #endif
324
- return vec2(prod, err);
325
- }
326
-
327
- vec2 twoProd(float a, float b) {
328
- float prod = a * b;
329
- vec2 a_fp64 = split(a);
330
- vec2 b_fp64 = split(b);
331
- float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
332
- a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
333
- return vec2(prod, err);
334
- }
335
-
336
- vec2 sum_fp64(vec2 a, vec2 b) {
337
- vec2 s, t;
338
- s = twoSum(a.x, b.x);
339
- t = twoSum(a.y, b.y);
340
- s.y += t.x;
341
- s = quickTwoSum(s.x, s.y);
342
- s.y += t.y;
343
- s = quickTwoSum(s.x, s.y);
344
- return s;
345
- }
346
-
347
- vec2 sub_fp64(vec2 a, vec2 b) {
348
- vec2 s, t;
349
- s = twoSub(a.x, b.x);
350
- t = twoSub(a.y, b.y);
351
- s.y += t.x;
352
- s = quickTwoSum(s.x, s.y);
353
- s.y += t.y;
354
- s = quickTwoSum(s.x, s.y);
355
- return s;
356
- }
357
-
358
- vec2 mul_fp64(vec2 a, vec2 b) {
359
- vec2 prod = twoProd(a.x, b.x);
360
- // y component is for the error
361
- prod.y += a.x * b.y;
362
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
363
- prod = split2(prod);
364
- #endif
365
- prod = quickTwoSum(prod.x, prod.y);
366
- prod.y += a.y * b.x;
367
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
368
- prod = split2(prod);
369
- #endif
370
- prod = quickTwoSum(prod.x, prod.y);
371
- return prod;
372
- }
373
-
374
- vec2 div_fp64(vec2 a, vec2 b) {
375
- float xn = 1.0 / b.x;
376
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
377
- vec2 yn = mul_fp64(a, vec2(xn, 0));
378
- #else
379
- vec2 yn = a * xn;
380
- #endif
381
- float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
382
- vec2 prod = twoProd(xn, diff);
383
- return sum_fp64(yn, prod);
384
- }
385
-
386
- vec2 sqrt_fp64(vec2 a) {
387
- if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
388
- if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
389
-
390
- float x = 1.0 / sqrt(a.x);
391
- float yn = a.x * x;
392
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
393
- vec2 yn_sqr = twoSqr(yn) * ONE;
394
- #else
395
- vec2 yn_sqr = twoSqr(yn);
396
- #endif
397
- float diff = sub_fp64(a, yn_sqr).x;
398
- vec2 prod = twoProd(x * 0.5, diff);
399
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
400
- return sum_fp64(split(yn), prod);
401
- #else
402
- return sum_fp64(vec2(yn, 0.0), prod);
403
- #endif
404
- }`,Op=`#define PI 3.141593
200
+ `);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 mr=5,hu=127;function du(t){const e=[];for(let d=0;d<=hu;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=hu?e[d.id]=d:n.set(d.id,d);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(d){return(d<=hu?e[d]:n.get(d))||e[63]}function o(d){return i(d.charCodeAt(0))}const s=t.common.base,a=o("x"),c=o("X"),u=o("q"),f=a.height-mr*2,l=c.height-mr*2,h=u.height-a.height+u.yoffset-a.yoffset;function p(d,g=1){let m=0;for(let y=0;y<d.length;y++)m+=i(d.charCodeAt(y)).xadvance;return m/s*g}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function pu(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const DC=2**31-1;function MC(t,e){const n=new Int32Array(t);n.fill(DC);const r=new Int32Array(t),i=e[0],s=(e[1]-e[0])/t,a=l=>pu(Math.floor((l-i)/s),0,t-1),c=(l,h,p,d)=>{const g=a(l),m=a(h);for(let y=g;y<=m;y++)n[y]>p&&(n[y]=p),r[y]<d&&(r[y]=d)},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 Ni{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 EC(n);for(const[o,s]of Object.entries(this.variableEncoders)){const a=s.accessor,c=[0,0],u=ms(s.scale.type),f=s.indexer,l=f?h=>f(a(h)):u?h=>fu(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 Wn([],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=MC(50,[i(e[0]),o(le(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 TC extends Ni{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||(p=>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 p=n[h];let d=u(p),g=f(p);if(d>g&&([d,g]=[g,d]),g<s||d>a)continue;d<s&&(d=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(p),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(p)}this.registerBatch(e)}}class IC extends Ni{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 NC extends Ni{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class kC extends Ni{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 BC extends Ni{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=!_e(c)&&c.format?ce(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 p;const o=this.properties.align||"left",s=(p=this.properties.logoLetters)!=null?p:!1,a=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-mr;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 d=r;d<i;d++){const g=n[d],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 C=-.5,b=1,A=1;for(let x=0;x<y.length;x++){const E=this.metrics.getCharByCode(y.charCodeAt(x)),N=s?1:E.xadvance/a;if(E.id==32){w+=N;continue}s?(A=(E.width+mr*2)/E.width,w=-A/2,b=(E.height+mr*2)/E.height,C=-.5-mr/E.height):(b=E.height/a,C=-(E.height+E.yoffset+u)/a,A=E.width/a);const L=E.x,I=E.y;l[0]=w,l[1]=C+b,h[0]=L/c,h[1]=I/c,this.variableBuilder.pushAll(),l[0]=w+A,l[1]=C+b,h[0]=(L+E.width)/c,h[1]=I/c,this.variableBuilder.pushAll(),l[0]=w,l[1]=C,h[0]=L/c,h[1]=(I+E.height)/c,this.variableBuilder.pushAll(),l[0]=w+A,l[1]=C+b,h[0]=(L+E.width)/c,h[1]=I/c,this.variableBuilder.pushAll(),l[0]=w,l[1]=C,h[0]=L/c,h[1]=(I+E.height)/c,this.variableBuilder.pushAll(),l[0]=w+A,l[1]=C,h[0]=(L+E.width)/c,h[1]=(I+E.height)/c,this.variableBuilder.pushAll(),w+=N}this.addToXIndex(n)}this.registerBatch(e)}}var ep=`#define PI 3.141593
405
201
 
406
202
  /** Offset in "unit" units */
407
- uniform vec2 uViewOffset;
203
+ uniform mediump vec2 uViewOffset;
408
204
 
409
- uniform vec2 uViewScale;
205
+ uniform mediump vec2 uViewScale;
410
206
 
411
207
  /** Size of the logical viewport in pixels, i.e., the view */
412
- uniform vec2 uViewportSize;
208
+ uniform mediump vec2 uViewportSize;
413
209
 
414
210
  uniform lowp float uDevicePixelRatio;
415
211
 
@@ -464,7 +260,9 @@ vec4 distanceToColor(float d, vec4 fill, vec4 stroke, float halfStrokeWidth) {
464
260
  return fill * distanceToRatio(-d);
465
261
  }
466
262
  }
467
- `,VS=`// Utils ------------
263
+ `,LC=`const float inf = 1.0 / 0.0;
264
+
265
+ // Utils ------------
468
266
 
469
267
  vec3 getDiscreteColor(sampler2D s, int index) {
470
268
  return texelFetch(s, ivec2(index % textureSize(s, 0).x, 0), 0).rgb;
@@ -533,49 +331,48 @@ float scaleBand(float value, vec2 domainExtent, vec2 range,
533
331
  // TODO: reverse
534
332
  float start = range[0];
535
333
  float stop = range[1];
334
+ float rangeSpan = stop - start;
536
335
 
537
336
  float n = domainExtent[1] - domainExtent[0];
538
337
 
338
+ // This fix departs from Vega and d3: https://github.com/vega/vega/issues/3357#issuecomment-1063253596
539
339
  paddingInner = int(n) > 1 ? paddingInner : 0.0;
540
340
 
541
341
  // Adapted from: https://github.com/d3/d3-scale/blob/master/src/band.js
542
- float step = (stop - start) / max(1.0, n - paddingInner + paddingOuter * 2.0);
543
- start += (stop - start - step * (n - paddingInner)) * align;
342
+ float step = rangeSpan / max(1.0, n - paddingInner + paddingOuter * 2.0);
343
+ start += (rangeSpan - step * (n - paddingInner)) * align;
544
344
  float bandwidth = step * (1.0 - paddingInner);
545
345
 
546
346
  return start + (value - domainExtent[0]) * step + bandwidth * band;
547
347
  }
548
- `,_S=`float scaleIdentityFp64(vec2 value) {
549
- return value[0];
550
- }
551
-
552
- float scaleLinearFp64(vec2 value, vec4 domain, vec2 range) {
553
- vec2 domainSpan = sub_fp64(domain.zw, domain.xy);
554
- float rangeSpan = range[1] - range[0];
555
348
 
556
- float unitValue = div_fp64(sub_fp64(value, domain.xy), domainSpan).x;
557
- return unitValue * rangeSpan + range[0];
558
- }
559
-
560
- float scaleBandFp64(vec2 value, vec4 domainExtent, vec2 range,
561
- float paddingInner, float paddingOuter,
562
- float align, float band) {
349
+ // High precision variant of scaleBand for index/locus scales
350
+ float scaleBandHp(vec2 value, vec3 domainExtent, vec2 range,
351
+ float paddingInner, float paddingOuter,
352
+ float align, float band) {
563
353
 
564
354
  // TODO: reverse
565
355
  float start = range[0];
566
356
  float stop = range[1];
357
+ float rangeSpan = stop - start;
567
358
 
568
- vec2 domainSpan = sub_fp64(domainExtent.zw, domainExtent.xy);
569
- float n = domainSpan.x;
359
+ vec2 domainStart = domainExtent.xy;
360
+ float n = domainExtent[2];
570
361
 
571
- // Based on: https://github.com/d3/d3-scale/blob/master/src/band.js
572
- float step = (stop - start) / max(1.0, n - paddingInner + paddingOuter * 2.0);
573
- start += (stop - start - step * (n - paddingInner)) * align;
362
+ // The following computation is identical for every vertex. Could be done on the JS side.
363
+ float step = rangeSpan / max(1.0, n - paddingInner + paddingOuter * 2.0);
364
+ start += (rangeSpan - step * (n - paddingInner)) * align;
574
365
  float bandwidth = step * (1.0 - paddingInner);
575
366
 
576
- return start + sub_fp64(value, domainExtent.xy).x * step + bandwidth * band;
367
+ // Using max to prevent the shader compiler from wrecking the precision.
368
+ // Othwewise the compiler could optimize the sum of the four terms into
369
+ // some equivalent form that does premature rounding.
370
+ float hi = max(value[0] - domainStart[0], -inf);
371
+ float lo = max(value[1] - domainStart[1], -inf);
372
+
373
+ return dot(vec4(start, hi, lo, bandwidth), vec4(1.0, step, step, band));
577
374
  }
578
- `,YS=`
375
+ `,OC=`
579
376
  /**
580
377
  * Describes where a sample facet should be shown. Interpolating between the
581
378
  * current and target positions/heights allows for transitioning between facet
@@ -682,7 +479,7 @@ float getSampleFacetHeight(vec2 pos) {
682
479
  return facetPos.height;
683
480
  }
684
481
  }
685
- `,WS=`/*
482
+ `,PC=`/*
686
483
  * Based on concepts presented at:
687
484
  * https://webglfundamentals.org/webgl/lessons/webgl-picking.html
688
485
  * https://deck.gl/docs/developer-guide/custom-layers/picking
@@ -711,25 +508,24 @@ bool setupPicking() {
711
508
  }
712
509
  return false;
713
510
  }
714
- `,XS=`uniform bool uPickingEnabled;
511
+ `,FC=`uniform bool uPickingEnabled;
715
512
 
716
513
  flat in highp vec4 vPickingColor;
717
- `;const ws=Symbol("cacheMap");function pr(t,e,n){let r=Oi(t).get(e);return r===void 0&&(r=n(e),Oi(t).set(e,r)),r}function Bp(t,e){Oi(t).delete(e)}function ki(t,e){const n=Oi(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Oi(t).delete(e)}function Pp(t){t[ws]=new Map}function Oi(t){return t[ws]||Pp(t),t[ws]}function qS(t,e,n,r){const i=oe(t)?t:t.name,o=!oe(t)&&t.extent||[0,1];if(n===void 0&&!oe(t)&&(n=t.count),i){const s=Lc(i);if(Te(s)){const a=zp(s,{extent:o,count:n});return Bi(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(_e(s))return Fp(s,e);throw new Error("Unknown scheme: "+i)}}}function ZS(t,e="rgb",n,r){const i=Vo(t,oe(e)?e:e.type,oe(e)?void 0:e.gamma),o=zp(i);return Bi(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function KS(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 Bi(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Fp(t,e,n,r){const i=Rp(t,n);return Bi(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function zp(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=pe(e)-i,s=Mo(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),Rp(s)}function Rp(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ni(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 JS{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=cS(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(!rr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");Ap(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this._shaderDefines=fS(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=nS(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;";_e(n)&&(n=n.join(`
514
+ `;const ys=Symbol("cacheMap");function yr(t,e,n){let r=Bi(t).get(e);return r===void 0&&(r=n(e),Bi(t).set(e,r)),r}function tp(t,e){Bi(t).delete(e)}function ki(t,e){const n=Bi(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Bi(t).delete(e)}function np(t){t[ys]=new Map}function Bi(t){return t[ys]||np(t),t[ys]}function zC(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=bc(i);if(Te(s)){const a=ip(s,{extent:o,count:n});return Li(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Qe(s))return rp(s,e);throw new Error("Unknown scheme: "+i)}}}function RC(t,e="rgb",n,r){const i=Uo(t,ie(e)?e:e.type,ie(e)?void 0:e.gamma),o=ip(i);return Li(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function jC(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 Li(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function rp(t,e,n,r){const i=op(t,n);return Li(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function ip(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=le(e)-i,s=Ft(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),op(s)}function op(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=vn(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 UC{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=gC(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(!ar(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.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=uC(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(`
718
515
 
719
516
  `));const o=this.gl,s=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(s);if(!a){const c=[r,i,n].join(`
720
517
 
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,rS(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 Xt(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(In(o)){const s=e.getScaleProps(),a=e.getScale();let c;if(s.scheme){let u=oe(s.scheme)?void 0:s.scheme.count;u=i(u,a),c=qS(s.scheme,this.gl,u,r)}else{const u=a.range();Qo(a.type)?c=ZS(u,s.interpolate,this.gl,r):c=Fp(u,this.gl,a.domain().length,r)}this.rangeTextures.set(e,c)}else{const s=e.getScale();if(s.type==="ordinal"||Kn(s.type)){const a=Jo(o)?a0(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,KS(c.map(a),this.gl,s.domain().length,r))}}}}function $S(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(`
518
+ `);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,lC(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 Wt(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(kn(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=zC(s.scheme,this.gl,u,r)}else{const u=a.range();jo(a.type)?c=RC(u,s.interpolate,this.gl,r):c=rp(u,this.gl,a.domain().length,r)}this.rangeTextures.set(e,c)}else{const s=e.getScale();if(s.type==="ordinal"||tr(s.type)){const a=Xo(o)?zd(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,jC(c.map(a),this.gl,s.domain().length,r))}}}}function GC(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(`
722
519
  `).map((s,a)=>{const c=o.get(a);return`${a+1+n}: ${s}${c?`
723
520
 
724
521
  ^^^ ${c}`:""}`}).join(`
725
- `)}function eC(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=$S(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 Bi(t,e,n,r){return r?z0(t,r,n,e):r=Si(t,F(T({},e),{src:n})),r}function tC(...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 nC(t){return oe(t)||ae(t)||ao(t)}const rC="SAMPLE_FACET_UNIFORM",Up="SAMPLE_FACET_TEXTURE";class Pi{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=tC(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 pr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return nC(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=hw(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Up;if(this.unitView.getFacetAccessor())return rC}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(Ze(d))o.push(LS(h,d.value));else{const p=Ke(d)&&d.resolutionChannel||h,g=this.unitView.getScaleResolution(p).getScale(),m=kS(h,g,d);o.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
727
- `+this.domainUniforms.map(l=>` ${l}
522
+ `)}function HC(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=GC(t.getShaderSource(c),o,0)+`
523
+ Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function Li(t,e,n,r){return r?d0(t,r,n,e):r=Ti(t,F(T({},e),{src:n})),r}function QC(...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 VC(t){return ie(t)||se(t)||co(t)}const YC="SAMPLE_FACET_UNIFORM",sp="SAMPLE_FACET_TEXTURE";class Oi{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=QC(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 yr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return VC(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=bx(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return sp;if(this.unitView.getFacetAccessor())return YC}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 h of i){let p;if(h in this.encoding)p=h;else continue;const d=this.encoding[p];if(!!d)if(_e(d))o.push(vC(p,d.value));else{const g=Xe(d)&&d.resolutionChannel||p,m=this.unitView.getScaleResolution(g).getScale(),y=xC(p,m,d);o.push(y.glsl),y.domainUniform&&this.domainUniforms.push(y.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
524
+ `+this.domainUniforms.map(h=>` ${h}
728
525
  `).join("")+`};
729
526
 
730
- `:"",c=[...r,Op,VS,a,...o,YS,WS,e];c.some(l=>/[Ff]p64/.test(l))&&(c.unshift(_S),c.unshift(QS));const u=[...r,Op,XS,n],f=this.gl;this.programStatus=eC(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=UE(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=BE(this.gl,this.programInfo,"Domains")),this.gl.useProgram(this.programInfo.program),this._setDatums()}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(gi(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):r.scale.fp64?xu(+n.datum):+n.datum;Se(this.programInfo,{[Su+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&&qw(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=Jw(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=iS(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=Ke(c)&&c.resolutionChannel||a,f=this.unitView.getScaleResolution(u);if(f){const l=f.getScale(),h=Xt(l.type)?[0,l.domain().length]:l.domain();s(l.fp64?h.map(d=>xu(d)).flat():h)}}FE(r,this.programInfo,this.domainUniformInfo)}for(const[o,s]of Object.entries(this.encoding))if(Ke(s)){const a=Ke(s)&&s.resolutionChannel||o,c=this.unitView.getScaleResolution(a),u=n.rangeTextures.get(c);u&&Se(this.programInfo,{[Cu+o]:u})}if(this.getSampleFacetMode()==Up){let o;for(const s of this.unitView.getAncestors())if(o=s.getSampleFacetTexture(),o)break;Se(this.programInfo,{uSampleFacetTexture:o})}Se(this.programInfo,{ONE:1,uDevicePixelRatio:this.glHelper.dpr,uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:((i=e.picking)!=null?i:!1)&&this.isPickingParticipant()}),Se(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(v=>v*r),m=g.map(v=>Math.floor(v)),[y,x]=g.map((v,S)=>v-m[S]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+h+y)/l.width,-(u+d-x)/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 Se(this.programInfo,f),Se(this.programInfo,{uViewportSize:[e.width,e.height]}),l.height>0&&l.width>0}findDatumAt(e,n){}}function Nu(t,e){var o;const n=mw(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(Ze(r)||Ze(i))){if(r){if(!Ke(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 jp(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),Ze(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function Gp(t,e){Ze(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 iC extends Pi{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 pr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ze(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Nu(e,"x"),Nu(e,"y"),jp(e,this.properties.filled),Gp(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!(Ze(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(uS,lS,e.map(n=>"#define "+n))}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new RS({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;Se(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]}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Ci(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e,()=>this.rangeMap)}findDatumAt(e,n){e=qe(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 oC=`precision mediump float;
731
-
732
- /**
527
+ `:"",u=[`precision highp float;
528
+ `,...r,ep,LC,a,...o,OC,PC,e],f=[...r,ep,FC,n],l=this.gl;this.programStatus=HC(l,this.glHelper.compileShader(l.VERTEX_SHADER,u),this.glHelper.compileShader(l.FRAGMENT_SHADER,f))}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=W3(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=G3(this.gl,this.programInfo,"Domains")),this.gl.useProgram(this.programInfo.program),this._setDatums()}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(bi(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):ms(r.scale.type)?fu(+n.datum):+n.datum;Ce(this.programInfo,{[cu+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&&nw(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=ow(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=fC(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(Z0.length),c=this.encoding[a],u=Xe(c)&&c.resolutionChannel||a,f=this.unitView.getScaleResolution(u);if(f){const l=f.getScale(),h=Wt(l.type)?[0,l.domain().length]:l.domain();s(ms(l.type)?SC(h):h)}}Q3(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&&Ce(this.programInfo,{[uu+o]:u})}if(this.getSampleFacetMode()==sp){let o;for(const s of this.unitView.getAncestors())if(o=s.getSampleFacetTexture(),o)break;Ce(this.programInfo,{uSampleFacetTexture:o})}Ce(this.programInfo,{uDevicePixelRatio:this.glHelper.dpr,uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:((i=e.picking)!=null?i:!1)&&this.isPickingParticipant()}),Ce(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,p=0,d;n?(l=o.clip?e.intersect(n):n,d=[e.width/l.width,e.height/l.height],p=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):d=[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,C)=>w-m[C]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+h+y)/l.width,-(u+p-v)/l.height],uViewScale:d}}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 Ce(this.programInfo,f),Ce(this.programInfo,{uViewportSize:[e.width,e.height]}),l.height>0&&l.width>0}findDatumAt(e,n){}}function gu(t,e){var o;const n=Cx(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(_e(r)||_e(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 ap(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),_e(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function cp(t,e){_e(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 WC extends Oi{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 yr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&_e(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return gu(e,"x"),gu(e,"y"),ap(e,this.properties.filled),cp(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!(_e(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(mC,yC,e.map(n=>"#define "+n))}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new TC({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;Ce(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]}),gr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Ii(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e,()=>this.rangeMap)}findDatumAt(e,n){e=We(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 _C=`/**
733
529
  * The stroke should only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
734
530
  * Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with
735
531
  * geometric zoom, etc.
@@ -855,7 +651,7 @@ void main(void) {
855
651
 
856
652
  setupPicking();
857
653
  }
858
- `,sC=`const lowp vec4 white = vec4(1.0);
654
+ `,XC=`const lowp vec4 white = vec4(1.0);
859
655
  const lowp vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
860
656
 
861
657
  uniform bool uInwardStroke;
@@ -978,10 +774,10 @@ void main() {
978
774
  }
979
775
  }
980
776
 
981
- `;const Nt=1<<0,rn=1<<1,aC={};class se{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(`
777
+ `;const Mt=1<<0,tn=1<<1,ZC={};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",Ft(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
778
+ `)+`return function propagate(datum) {${Ft(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
983
779
  `)}}`)(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])+`
984
- `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():aC}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 Hp(t){return t.type=="file"}function cC(t){return t.type=="facet"}class Qp extends se{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 Vp(t,e,n){const r=new Qp({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const uC={};class lC extends Pi{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()),uC)}fixEncoding(e){return jp(e,this.properties.filled),Gp(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(Vp(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(oC,sC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new jS({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 hb(n,e)}}else return-1}prepareRender(e){super.prepareRender(e),Se(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()}),fr(this.gl,this.programInfo,this.vertexArrayInfo);const n=this.encoders.x;if(n&&!n.constant){const r=Eo(n.accessor).left,i=this.unitView.getScaleResolution("x").getScale().domain(),o=so(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&&Ci(n,this.vertexArrayInfo,n.POINTS,a,r+o)},e,()=>this.rangeMap)}}var fC=`// Line caps
780
+ `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():ZC}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 up(t){return t.type=="file"}function qC(t){return t.type=="facet"}class lp 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 fp(t,e,n){const r=new lp({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const KC={};class JC extends Oi{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()),KC)}fixEncoding(e){return ap(e,this.properties.filled),cp(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(fp(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(_C,XC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ce(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new NC({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 fa(n,e)}}else return-1}prepareRender(e){super.prepareRender(e),Ce(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()}),gr(this.gl,this.programInfo,this.vertexArrayInfo);const n=this.encoders.x;if(n&&!n.constant){const r=Or(n.accessor).left,i=this.unitView.getScaleResolution("x").getScale().domain(),o=ao(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&&Ii(n,this.vertexArrayInfo,n.POINTS,a,r+o)},e,()=>this.rangeMap)}}var $C=`// Line caps
985
781
  const int BUTT = 0;
986
782
  const int SQUARE = 1;
987
783
  const int ROUND = 2;
@@ -995,7 +791,7 @@ in float side;
995
791
  /** Minimum rule length in pixels */
996
792
  uniform float uMinLength;
997
793
 
998
- uniform float uDashTextureSize;
794
+ uniform mediump float uDashTextureSize;
999
795
  uniform lowp int uStrokeCap;
1000
796
 
1001
797
  flat out vec4 vColor;
@@ -1070,7 +866,7 @@ void main(void) {
1070
866
 
1071
867
  setupPicking();
1072
868
  }
1073
- `,hC=`// Line ending
869
+ `,eS=`// Line ending
1074
870
  const int BUTT = 0;
1075
871
  const int SQUARE = 1;
1076
872
  const int ROUND = 2;
@@ -1122,7 +918,7 @@ void main(void) {
1122
918
  fragColor = vPickingColor;
1123
919
  }
1124
920
  }
1125
- `;class dC extends Pi{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&&Ke(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Ke(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=pC(this.properties.strokeDash);this.dashTexture=Si(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(fC,hC)}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new US({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),Se(this.programInfo,{uMinLength:this.properties.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(this.properties.strokeCap)}),this.dashTexture&&Se(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ci(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e,()=>this.rangeMap)}}function pC(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 gC=`uniform float uSagittaScaleFactor;
921
+ `;class tS extends Oi{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=nS(this.properties.strokeDash);this.dashTexture=Ti(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders($C,eS)}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new IC({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),Ce(this.programInfo,{uMinLength:this.properties.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(this.properties.strokeCap)}),this.dashTexture&&Ce(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset}),gr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ii(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e,()=>this.rangeMap)}}function nS(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 rS=`uniform float uSagittaScaleFactor;
1126
922
 
1127
923
  /** Make very small arcs visible */
1128
924
  uniform float uMinSagittaLength;
@@ -1233,7 +1029,7 @@ void main(void) {
1233
1029
 
1234
1030
  setupPicking();
1235
1031
  }
1236
- `,mC=`in lowp vec4 vColor;
1032
+ `,iS=`in lowp vec4 vColor;
1237
1033
  in float vSize;
1238
1034
  in float vNormalLengthInPixels;
1239
1035
 
@@ -1251,7 +1047,7 @@ void main(void) {
1251
1047
  fragColor = vPickingColor;
1252
1048
  }
1253
1049
  }
1254
- `;class yC extends Pi{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(gC,mC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new GS({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:AC(this.properties.segments),numComponents:2},this.rangeMap=i.rangeMap,this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,F(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)}fr(n,this.programInfo,this.bufferInfo),Ci(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e,()=>this.rangeMap)}}function AC(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var bC=`uniform float uSdfNumerator;
1050
+ `;class oS extends Oi{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(rS,iS)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ce(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new kC({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:sS(this.properties.segments),numComponents:2},this.rangeMap=i.rangeMap,this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,F(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)}gr(n,this.programInfo,this.bufferInfo),Ii(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e,()=>this.rangeMap)}}function sS(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var aS=`uniform float uSdfNumerator;
1255
1051
 
1256
1052
  uniform vec2 uD; // dx & dy
1257
1053
 
@@ -1497,7 +1293,7 @@ void main(void) {
1497
1293
 
1498
1294
  setupPicking();
1499
1295
  }
1500
- `,xC=`uniform sampler2D uTexture;
1296
+ `,cS=`uniform sampler2D uTexture;
1501
1297
 
1502
1298
  in vec2 vTexCoord;
1503
1299
  in float vEdgeFadeOpacity;
@@ -1528,7 +1324,7 @@ void main() {
1528
1324
  fragColor = vPickingColor;
1529
1325
  }
1530
1326
  }
1531
- `;const vC={left:-1,center:0,right:1},wC={top:-1,middle:0,bottom:1,alphabetic:1};class EC extends Pi{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 mi)this.properties.fitToBand&&Nu(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(bC,xC)}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:[vC[e.align],wC[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?Le(r.text.format):u=>u;for(const u of n){const f=s(i(u)),l=oe(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new HS({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)}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ci(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function Es(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+=Fi(p.px)+(Ss(p)?0:n),a+=Fi(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&&Ss(t[0]))return[{location:d,size:0}];for(let p=0;p<t.length;p++){const g=t[p];if(Ss(g))f.push(g);else{h(l.length>0);const m=Fi(g.px)+(a?Fi(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 SC(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=Fi(r.px)+(Ss(r)?0:e);return Math.max(0,n-e)}class on{constructor(e,n){this.width=e,this.height=n}addPadding(e){return new on({px:(this.width.px||0)+e.width,grow:this.width.grow},{px:(this.height.px||0)+e.height,grow:this.height.grow})}}const _p=Object.freeze({px:0,grow:0}),Yp=new on(_p,_p);function Ss(t){return!t.px&&!t.grow}function Fi(t){return t||0}function CC(t){return t&&(ae(t.px)||ae(t.grow))}function Lu(t){if(Zp(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(CC(t))return t;if(ae(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 DC(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 MC(t,e){const n=ae(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function IC(t,e){const n=ae(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Wp(t,e){return e>=t.location&&e<t.location+t.size}class Je{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 Je(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Je(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):ku}static createFromRecord(e){return new Je(e.top,e.right,e.bottom,e.left)}static zero(){return ku}static createUniformPadding(e){return new Je(e,e,e,e)}}const ku=Je.createUniformPadding(0);Object.freeze(ku);const TC=/^([A-Za-z]+:)?\/\//;function NC(t,e){if(e&&TC.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const gr="VISIT_SKIP",kn="VISIT_STOP",Xp=t=>t;class qp{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={},Pp(this),this.opacityFunction=Xp}getPadding(){return this._cache("size/padding",()=>Je.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Yp)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Zp(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let c=0;if(Xt(a.type))c=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();c=pe(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const u=a;return c=Cc(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&&Lu(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new on(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!==kn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Xp)&&(this.opacityFunction=kC(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 Mn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=nr(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 NC(()=>{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 pr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":ki(this,e);break;case"ancestors":for(const r of this.getAncestors())ki(r,e);break;case"progeny":this.visit(r=>ki(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}}function LC(t){return"unitsPerPixel"in t}function kC(t){const e=t.spec.opacity;if(e!==void 0){if(ae(e))return n=>n*e;if(LC(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=yc().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=co(r.domain())/1e3;return i(a)*o}}}return n=>n}const Zp=t=>!!(t==null?void 0:t.step);class At extends qp{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===kn)return n;if(n!==gr){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===kn)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 At)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 Cs(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||mr(s)&&mr(a)||mr(s)&&a===!0||s===!0&&ze(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(mr(u))mr(c)&&(r[a]=Cs([u,c],a));else if(mr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[a]=Cs([{},c],a)}else r[a]=c}}};for(const s of t)o(s);return r}function mr(t){return ze(t)&&!Array.isArray(t)}/*!
1327
+ `;const uS={left:-1,center:0,right:1},lS={top:-1,middle:0,bottom:1,alphabetic:1};class fS extends Oi{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 vi)this.properties.fitToBand&&gu(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(aS,cS)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ce(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[uS[e.align],lS[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?ce(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 BC({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),Ce(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),gr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Ii(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function As(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const d of t)s+=Pi(d.px)+(bs(d)?0:n),a+=Pi(d.grow);s-=n;const c=Math.max(0,e-s),u=r!==void 0?d=>Math.round(d*r)/r:d=>d,f=[],l=[],h=d=>{const g=f.length;if(!g)return;const m=(d?n:0)*(o?-1:1);p-=m;for(let y=0;y<g;y++)l.push({location:p+(y+1)/(g+1)*m,size:0});p+=m,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&bs(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(bs(g))f.push(g);else{h(l.length>0);const m=Pi(g.px)+(a?Pi(g.grow)/a*c:0);o&&(p-=m),l.push({location:u(p),size:u(m)}),o?p-=n:p+=m+n}}return p+=o?n:-n,h(!1),l}function hS(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=Pi(r.px)+(bs(r)?0:e);return Math.max(0,n-e)}class nn{constructor(e,n){this.width=e,this.height=n}addPadding(e){return new nn({px:(this.width.px||0)+e.width,grow:this.width.grow},{px:(this.height.px||0)+e.height,grow:this.height.grow})}}const hp=Object.freeze({px:0,grow:0}),dp=new nn(hp,hp);function bs(t){return!t.px&&!t.grow}function Pi(t){return t||0}function dS(t){return t&&(se(t.px)||se(t.grow))}function mu(t){if(yp(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(dS(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 pS(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 gS(t,e){const n=se(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function mS(t,e){const n=se(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function pp(t,e){return e>=t.location&&e<t.location+t.size}class Ze{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 Ze(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Ze(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):yu}static createFromRecord(e){return new Ze(e.top,e.right,e.bottom,e.left)}static zero(){return yu}static createUniformPadding(e){return new Ze(e,e,e,e)}}const yu=Ze.createUniformPadding(0);Object.freeze(yu);const yS=/^([A-Za-z]+:)?\/\//;function AS(t,e){if(e&&yS.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const Ar="VISIT_SKIP",Fn="VISIT_STOP",gp=t=>t;class mp{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={},np(this),this.opacityFunction=gp}getPadding(){return this._cache("size/padding",()=>Ze.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):dp)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(yp(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let c=0;if(Wt(a.type))c=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();c=le(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const u=a;return c=dc(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&&mu(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new nn(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!==Fn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===gp)&&(this.opacityFunction=vS(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 Nn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=sr(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 AS(()=>{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 yr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":ki(this,e);break;case"ancestors":for(const r of this.getAncestors())ki(r,e);break;case"progeny":this.visit(r=>ki(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}}function bS(t){return"unitsPerPixel"in t}function vS(t){const e=t.spec.opacity;if(e!==void 0){if(se(e))return n=>n*e;if(bS(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=oc().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=uo(r.domain())/1e3;return i(a)*o}}}return n=>n}const yp=t=>!!(t!=null&&t.step);class pt extends mp{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===Fn)return n;if(n!==Ar){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Fn)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 pt)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 vs(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||br(s)&&br(a)||br(s)&&a===!0||s===!0&&Pe(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(br(u))br(c)&&(r[a]=vs([u,c],a));else if(br(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[a]=vs([{},c],a)}else r[a]=c}}};for(const s of t)o(s);return r}function br(t){return Pe(t)&&!Array.isArray(t)}/*!
1532
1328
  * Adapted from vega-encode:
1533
1329
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
1534
1330
  *
@@ -1536,7 +1332,7 @@ void main() {
1536
1332
  * All rights reserved.
1537
1333
  *
1538
1334
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
1539
- */function Kp(t,e,n){return ae(e)&&n!=null&&(e=Math.min(e,~~(co(t.domain())/n)||1)),ze(e)&&(e=e.interval),e}function Jp(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(et(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],et(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,c){return!(c%2)});e.length<3&&(e=s)}return e}function OC(t,e){return t.bins?Jp(t,BC(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function BC(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function PC(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?Le(n):String;if(Id(t.type)){var i=zC(n);r=t.bins?i:FC(r,i)}return r}function FC(t,e){return function(n){return t(n)?e(n):""}}function zC(t){var e=No(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return RC(Le(e),Le(".1f")(1)[1])}else return Le(e)}function RC(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=UC(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function UC(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}/*!
1335
+ */function Ap(t,e,n){return se(e)&&n!=null&&(e=Math.min(e,~~(uo(t.domain())/n)||1)),Pe(e)&&(e=e.interval),e}function bp(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 xS(t,e){return t.bins?bp(t,wS(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function wS(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function CS(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?ce(n):String;if(id(t.type)){var i=ES(n);r=t.bins?i:SS(r,i)}return r}function SS(t,e){return function(n){return t(n)?e(n):""}}function ES(t){var e=zt(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return DS(ce(e),ce(".1f")(1)[1])}else return ce(e)}function DS(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=MS(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function MS(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}/*!
1540
1336
  * Adapted from vega-encode:
1541
1337
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
1542
1338
  *
@@ -1544,41 +1340,41 @@ void main() {
1544
1340
  * All rights reserved.
1545
1341
  *
1546
1342
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
1547
- */const jC="locus",GC="index";var HC=5;function QC(t){const e=t.type;return!t.bins&&(e===qn||e===Jr||e===$r)}function $p(t){return nt(t)&&![ht,GC,jC].includes(t)}function eg(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var VC=lo(["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 tg(t,e,n){n=eg(n);for(const r in t)if(!VC[r]){if(r==="padding"&&$p(e.type))continue;Te(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}JC(e,t,KC(e,t,XC(e,t,n)))}function _C(t,e){const n=YC(t),r=W(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return tg(t,i,e),i}function YC(t){var e=t.type,n="",r;return e===ht?ht+"-"+qn:(WC(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?ht+"-":r===3?Zn+"-":""),(n+e||qn).toLowerCase())}function WC(t){const e=t.type;return nt(e)&&e!==xd&&e!==vd&&(t.scheme||t.range&&t.range.length&&t.range.every(oe))}function XC(t,e,n){if(!t.domain)return 0;n=eg(n);var r=qC(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&QC(t),a,c;return i?($p(o)&&e.padding&&i[0]!==et(i)&&(i=ZC(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(ng(o,i,n)),o===Mc&&t.unknown(e.domainImplicit?Wa:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Kp(t,e.nice)||null),i.length):0}function qC(t,e,n){return e?(t.domain(ng(t.type,e,n)),e.length):-1}function ZC(t,e,n,r,i,o){var s=Math.abs(et(n)-n[0]),a=s/(s-2*r),c=t===Wt?rf(e,null,a):t===$r?ra(e,null,a,.5):t===Jr?ra(e,null,a,i||1):t===Go?vy(e,null,a,o||1):so(e,null,a);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function ng(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: "+uo(e))}return e}function KC(t,e,n){let r=e.bins;if(r&&!_e(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?et(i):r.stop,a=r.step;a||re("Scale bins parameter missing step property."),r=Mo(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Tc&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function JC(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=$C(r,e,n);else if(e.scheme&&(o=eD(r,e,n),Te(o))){if(t.interpolator)return t.interpolator(o);re(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Qo(r))return t.interpolator(Vo(Ou(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(Td(e.interpolate,e.interpolateGamma)):Te(t.round)?t.round(i):Te(t.rangeRound)&&t.interpolate(i?Zr:_t),o&&t.range(Ou(o,e.reverse))}function $C(t,e,n){t!==Sd&&t!==Ic&&re("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Ic?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Cc(n,i,r)]}function eD(t,e,n){var r=e.schemeExtent,i,o;return _e(e.scheme)?o=Vo(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Lc(i),o||re(`Unrecognized scheme name: ${e.scheme}`)),n=t===Ed?n+1:t===Tc?n-1:t===Dc||t===wd?+e.schemeCount||HC:n,Qo(t)?rg(o,r,e.reverse):Te(o)?Bx(rg(o,r),n):t===Mc?o:o.slice(0,n)}function rg(t,e,n){return Te(t)&&(e||n)?Ox(t,Ou(e||[0,1],n)):t}function Ou(t,e){return e?t.slice().reverse():t}const Bu=Le(",d");function tD(t){return t.chrom+":"+Bu(Math.floor(t.pos+1))}function nD(t,e){return t.chrom+":"+Bu(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+Bu(Math.ceil(e.pos))}const rD="https://genomespy.app/data/genomes/";class iD{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=rD;try{this.setChromSizes(oD(await _r({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=F(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=rb(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 nD(...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 oD(t){return jy(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function ig(t){return ze(t)&&"chrom"in t}function sD(t){return t.every(ig)}class zi extends Array{constructor(){super();this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof zi&&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 Pu extends zi{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 og extends zi{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 sg extends og{constructor(){super();this.type="nominal"}}class aD extends zi{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 ag={quantitative:Pu,index:Pu,locus:Pu,nominal:sg,ordinal:og};function cg(t,e){if(t=="quantitative"&&cD(e)){const n=new aD(e);return n.type=t,n}else if(ag[t]){const n=new ag[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function cD(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function ug(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function uD(t){return--t*t*t+1}function lD(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function fD(t){return 1-lD(t)}const lg="quantitative",Fu="ordinal",zu="nominal",Ru="locus",hD="index";class dD{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=Hc(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&&!Ai(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 pr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Hc(n.view,n.channel).scale).filter(n=>n!==void 0);return Cs(e,"scale",["domain"])})}getScaleProps(){return pr(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=pD(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Xt(n.type)&&(n.domain=new sg),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),n.type==Ru&&!("fp64"in n)&&(n.fp64=!0),this.channel=="y"&&Xt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),gD(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Ru?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>Ai(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Ai(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Bp(this,"scaleProps");const e=this.getScaleProps();tg(e,this._scale),nt(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=_C(e);return this._scale=n,Eb(n)&&n.genome(this.getGenome()),n.fp64=!!e.fp64,nt(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()&&Qd(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!i0(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=Ay(s,r||0),s=so(s,a,e);break;case"log":s=by(s,r||0),s=rf(s,a,e);break;case"pow":case"sqrt":{const c=i;s=xy(s,r||0,c.exponent()),s=ra(s,a,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=wy(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(ao(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=qh([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:ug,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()?co(this._zoomExtent)/co(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(mD(n)&&_e(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),yi(n)?r.nice=!this.isExplicitDomain():In(n)?r.scheme=e==zu?"tableau10":e==Fu?"blues":"viridis":Jo(n)?r.range=s0(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 ig(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&sD(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 pD(t,e){if(e==hD||e==Ru){if(i0(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][[zu,Fu,lg].indexOf(e)]:e==lg?"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 gD(t,e){yi(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&nt(t.type)&&(t.clamp=!0)}function mD(t){return ze(t)}function Uu(...t){for(const e of t)if(e!==void 0)return e}class yD{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=pe(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 pr(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:Cs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=Hc(o.view,o.channel);if(!Ze(s))return{member:o,explicitTitle:Uu((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:Uu(Mn(s)?s.field:void 0,Qc(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(Ai(o.member.channel)&&!o.explicitTitle){const a=nr(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=>Uu(o.explicitTitle,o.implicitTitle)).filter(oe));return i.size?[...i].join(", "):null}}class fg extends qp{constructor(e,n,r,i){super(e,n,r,i);this.spec=e}}class Ri extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(Gu(o)||ju(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 Lt(t){return()=>t}class bt{static create(e,n,r,i){return new bt(Lt(e),Lt(n),Lt(r),Lt(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"?Lt(i):typeof i=="function"?i:this._passThrough(r)};return new bt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new bt(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 bt(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 bt(()=>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 bt(Lt(this.x),Lt(this.y),Lt(this.width),Lt(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 yr extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=Hu(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const o=Hu(e)?e.hconcat:pg(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=hg(n),i=this.mainDimension=="height"?new Je(e[0].getEffectivePadding().top,r[1],pe(e).getEffectivePadding().bottom,r[0]):new Je(r[0],e[0].getEffectivePadding().left,r[1],pe(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=Lu(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:SC(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&Lu(this.spec[this.secondaryDimension])||{grow:1};return(this.mainDimension=="height"?new on(n,e):new on(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=Es(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=hg(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 bt(()=>n.x+h,()=>n.y+l.location,()=>p,()=>l.size):new bt(()=>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 hg(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class AD{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(bD,e(fg)),this.addViewType(Gu,e(Ri)),this.addViewType(ju,e(Pe)),this.addViewType(pg,e(yr)),this.addViewType(Hu,e(yr)),this.addViewType(xD,e(yr))}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 ju(t){return"mark"in t&&(oe(t.mark)||ze(t.mark))}function Gu(t){return"layer"in t&&ze(t.layer)}function dg(t){return t&&(ju(t)||Gu(t))&&"aggregateSamples"in t}function bD(t){return"import"in t}function pg(t){return"vconcat"in t&&_e(t.vconcat)}function Hu(t){return"hconcat"in t&&_e(t.hconcat)}function xD(t){return"concat"in t&&_e(t.concat)}const vD={point:lC,rect:iC,rule:dC,link:yC,text:EC};class Pe extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e;const o=vD[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(!Ke(o))continue;let s=nr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!yi(s))continue;let a=this;for(;a.parent instanceof At&&["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 dD(s):new yD(s)),yi(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(Ai(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Ke(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 cg((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=cg(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=Vc[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 mi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(dg(this.spec))for(const r of this.spec.aggregateSamples){r.transform=[...(e=r.transform)!=null?e:[],{type:"mergeFacets"}],r.encoding=F(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 gg(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class On extends se{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function mg(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=CD(t)&&wD(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 wD(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const Ds=t=>typeof t!="object"?ED:SD,ED=t=>({data:t}),SD=t=>t;function CD(t){return"url"in t}function DD(t){return"dynamicCallbackSource"in t}class yg extends On{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=Ds(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Ag="chromosome_ticks_and_labels",bg={x:"width",y:"height"};function Qu(t){return t=="x"?"y":"x"}const xg=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function Bn(t){return xg[t]}class Vu extends Ri{constructor(e,n,r,i){const o=n=="locus",s=T(T(T({},o?TD:vg),ID(n,e)),e);super(o?ND(s):wg(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 yg(()=>this.ticks),o){const a=Bn(this.axisProps.orient),c=this.getScaleResolution(a).getGenome();this.findChildByName(Ag).getDynamicDataSource=()=>new yg(()=>c.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return xg[this.axisProps.orient]=="x"?new on(n,e):new on(e,n)}getPerpendicularSize(){return _u(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=Bn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(Qd(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=MD(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[bg[Bn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function _u(t){const e=Bn(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 MD(t,e,n,r=[]){const i=a=>25+60*gg(100,700,a);let o=ae(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Kp(e,o,t.tickMinStep);const s=t.values?Jp(e,t.values,o):OC(e,o);if(qx(s,r,a=>a,a=>a.value))return r;{const a=PC(e,o,t.format);return s.map(c=>({value:c,label:a(c)}))}}const vg={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 ID(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 wg(t){const e=F(T({},t),{extent:_u(t)}),n=Bn(e.orient),r=Qu(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={[bg[Qu(Bn(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 TD=F(T({},vg),{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 ND(t){const e=F(T({},t),{extent:_u(t)}),n=Bn(e.orient),r=Qu(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=wg(T(T({},t),a));if(t.chromTicks||t.chromLabels){const u={name:Ag,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 LD={x:["bottom","top"],y:["left","right"]};class Yu extends At{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(LD).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 Pe(kD(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 Je.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 Je.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()):Yp)}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(),...AM(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 Vu(F(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 Vu(F(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 kD(t){return{configurableVisibility:!1,data:{values:[{}]},mark:F(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*Wu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Wu(r,[...e,n]))yield i;else yield[[...e,n],r]}class Ui extends se{constructor(e){super();this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new So([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){cC(e)&&(this._data=[],this.facetBatches.set(qe(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?of(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=>Z(c)),a=Do(this._data,...s);this.facetBatches.clear();for(const[c,u]of Wu(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 ji{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 OD extends se{get behavior(){return Nt}constructor(e){super();this.params=e,this.startAccessor=Z(e.start),this.endAccessor=Z(e.end),this.chromAccessor=e.chrom?Z(e.chrom):n=>{},this.weightAccessor=e.weight?Z(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 ji}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,x)=>{if(m==y)return;let v=!1;c&&(c[e]===x?(c[n]=y,v=!0):c[e]!=0&&this._propagate(c)),v||(c=this.createSegment(m,y,x,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 x;for(;(x=d.peekValue())!==void 0&&x<y;)p(h,x,l),h=x,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 v=a(m);l+=v,d.push(v,o(m))},this.complete=()=>{g(),super.complete()}}}function BD(t,e,n=0,r=t.length){const i=new ji,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 PD{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 FD extends se{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=Z(this.params.pos),this.posBisector=Eo(this.posAccessor),this.scoreAccessor=Z(this.params.score),this.widthAccessor=Z(this.params.width),this.laneAccessor=this.params.lane?Z(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 PD(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=BD(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 zD extends se{constructor(e){super();this.params=e,this.predicate=void 0}initialize(){this.predicate=Gc(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const RD="0".charCodeAt(0);function*UD(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-RD}yield r}class jD extends se{get behavior(){return Nt}constructor(e){super();var s,a;const n=Z((s=e.exons)!=null?s:"exons"),r=Z((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 UD(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 GD extends se{get behavior(){return Nt}constructor(e){super();const n=qe(e.field).map(o=>Z(o)),r=qe(e.separator),i=qe(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]));HD(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 HD(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 QD extends se{get behavior(){return rn}constructor(e){super();this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Gc(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Eg extends se{get behavior(){return rn}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=Z(e.chrom),s=qe(e.pos).map(g=>Z(g)),a=qe(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=qe(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 Sg={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 VD extends se{get behavior(){return rn}constructor(e){super();const n=Iu(Sg),r=Z(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 _D=65536;class YD extends se{get behavior(){return rn}constructor(e){super();this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=ae(e.spacing)?e.spacing:1,i=Z(e.start),o=Z(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(_D),a=Z(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 ji,a=new ji;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 WD extends se{get behavior(){return Nt}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=>Z(i)),r=e.as?e.as:n.map(be);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class XD extends se{get behavior(){return rn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=Z(e.field);this.handle=o=>{const s=i(o);if(oe(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 qD extends se{get behavior(){return Nt}constructor(e){super();const n=qe(e.columnRegex).map(h=>new RegExp(h)),r=qe(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,x]of n.entries())for(const v of d){const S=(m=x.exec(v))==null?void 0:m[1];if(S!==void 0){let b=p.get(S);b||(b=[],p.set(S,b)),b[y]=v}}s=[...p.entries()],a=d.filter(y=>!n.some(x=>x.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 {
1343
+ */const TS="locus",IS="index";var NS=5;function kS(t){const e=t.type;return!t.bins&&(e===$n||e===ni||e===ri)}function vp(t){return tt(t)&&![lt,IS,TS].includes(t)}function xp(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var BS=fo(["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 wp(t,e,n){n=xp(n);for(const r in t)if(!BS[r]){if(r==="padding"&&vp(e.type))continue;Te(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}US(e,t,jS(e,t,FS(e,t,n)))}function LS(t,e){const n=OS(t),r=V(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return wp(t,i,e),i}function OS(t){var e=t.type,n="",r;return e===lt?lt+"-"+$n:(PS(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?lt+"-":r===3?er+"-":""),(n+e||$n).toLowerCase())}function PS(t){const e=t.type;return tt(e)&&e!==qh&&e!==Kh&&(t.scheme||t.range&&t.range.length&&t.range.every(ie))}function FS(t,e,n){if(!t.domain)return 0;n=xp(n);var r=zS(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&kS(t),a,c;return i?(vp(o)&&e.padding&&i[0]!==Je(i)&&(i=RS(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(Cp(o,i,n)),o===gc&&t.unknown(e.domainImplicit?Fa:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Ap(t,e.nice)||null),i.length):0}function zS(t,e,n){return e?(t.domain(Cp(t.type,e,n)),e.length):-1}function RS(t,e,n,r,i,o){var s=Math.abs(Je(n)-n[0]),a=s/(s-2*r),c=t===Yt?Hl(e,null,a):t===ri?$s(e,null,a,.5):t===ni?$s(e,null,a,i||1):t===zo?W1(e,null,a,o||1):ao(e,null,a);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Cp(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: "+lo(e))}return e}function jS(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||re("Scale bins parameter missing step property."),r=Ft(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===yc&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function US(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=GS(r,e,n);else if(e.scheme&&(o=HS(r,e,n),Te(o))){if(t.interpolator)return t.interpolator(o);re(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&jo(r))return t.interpolator(Uo(Au(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(od(e.interpolate,e.interpolateGamma)):Te(t.round)?t.round(i):Te(t.rangeRound)&&t.interpolate(i?ei:Qt),o&&t.range(Au(o,e.reverse))}function GS(t,e,n){t!==ed&&t!==mc&&re("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===mc?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*dc(n,i,r)]}function HS(t,e,n){var r=e.schemeExtent,i,o;return Qe(e.scheme)?o=Uo(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=bc(i),o||re(`Unrecognized scheme name: ${e.scheme}`)),n=t===$h?n+1:t===yc?n-1:t===pc||t===Jh?+e.schemeCount||NS:n,jo(t)?Sp(o,r,e.reverse):Te(o)?Gb(Sp(o,r),n):t===gc?o:o.slice(0,n)}function Sp(t,e,n){return Te(t)&&(e||n)?Ub(t,Au(e||[0,1],n)):t}function Au(t,e){return e?t.slice().reverse():t}const bu=ce(",d");function QS(t){return t.chrom+":"+bu(Math.floor(t.pos+1))}function VS(t,e){return t.chrom+":"+bu(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+bu(Math.ceil(e.pos))}const YS="https://genomespy.app/data/genomes/";class WS{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=YS;try{this.setChromSizes(_S(await qr({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=F(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=Yn(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 VS(...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];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function _S(t){return fy(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Ep(t){return Pe(t)&&"chrom"in t}function XS(t){return t.every(Ep)}class Fi extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Fi&&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 vu extends Fi{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 Dp extends Fi{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 Mp extends Dp{constructor(){super(),this.type="nominal"}}class ZS extends Fi{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 Tp={quantitative:vu,index:vu,locus:vu,nominal:Mp,ordinal:Dp};function Ip(t,e){if(t=="quantitative"&&qS(e)){const n=new ZS(e);return n.type=t,n}else if(Tp[t]){const n=new Tp[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function qS(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Np(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function KS(t){return--t*t*t+1}function JS(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function $S(t){return 1-JS(t)}const kp="quantitative",xu="ordinal",wu="nominal",Bp="locus",eE="index";class tE{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=Nc(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&&!wi(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 yr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Nc(n.view,n.channel).scale).filter(n=>n!==void 0);return vs(e,"scale",["domain"])})}getScaleProps(){return yr(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=nE(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Wt(n.type)&&(n.domain=new Mp),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&Wt(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),rE(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Bp?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>wi(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>wi(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){tp(this,"scaleProps");const e=this.getScaleProps();wp(e,this._scale),tt(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=LS(e);return this._scale=n,T2(n)&&n.genome(this.getGenome()),tt(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(!Od(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],a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(a+=i.align()),i.type){case"linear":case"index":case"locus":s=Q1(s,r||0),s=ao(s,a,e);break;case"log":s=V1(s,r||0),s=Hl(s,a,e);break;case"pow":case"sqrt":{const c=i;s=Y1(s,r||0,c.exponent()),s=$s(s,a,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=_1(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(co(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=Eh([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:Np,onUpdate:p=>{const[d,,g]=h(p);o.domain([d-g/2,d+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?uo(this._zoomExtent)/uo(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(iE(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),xi(n)?r.nice=!this.isExplicitDomain():kn(n)?r.scheme=e==wu?"tableau10":e==xu?"blues":"viridis":Xo(n)?r.range=Fd(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 Ep(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&XS(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 nE(t,e){if(e==eE||e==Bp){if(Od(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][[wu,xu,kp].indexOf(e)]:e==kp?"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 rE(t,e){xi(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&tt(t.type)&&(t.clamp=!0)}function iE(t){return Pe(t)}function Cu(...t){for(const e of t)if(e!==void 0)return e}class oE{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=le(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 yr(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:vs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=Nc(o.view,o.channel);if(!_e(s))return{member:o,explicitTitle:Cu((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:Cu(Nn(s)?s.field:void 0,kc(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(wi(o.member.channel)&&!o.explicitTitle){const a=sr(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=>Cu(o.explicitTitle,o.implicitTitle)).filter(ie));return i.size?[...i].join(", "):null}}class Lp extends mp{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class zi extends pt{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(Eu(o)||Su(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 gt{static create(e,n,r,i){return new gt(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 gt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new gt(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 gt(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 gt(()=>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 gt(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 vr extends pt{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=Du(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const o=Du(e)?e.hconcat:Fp(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=Op(n),i=this.mainDimension=="height"?new Ze(e[0].getEffectivePadding().top,r[1],le(e).getEffectivePadding().bottom,r[0]):new Ze(r[0],e[0].getEffectivePadding().left,r[1],le(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=mu(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:hS(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&mu(this.spec[this.secondaryDimension])||{grow:1};return(this.mainDimension=="height"?new nn(n,e):new nn(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=As(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=Op(a);for(let u=0;u<i.length;u++){const f=i[u],l=s[u],h=c[0]-a[u][0],p=c[1]-a[u][1],d=n[this.secondaryDimension]-h-p,g=this.mainDimension=="height"?new gt(()=>n.x+h,()=>n.y+l.location,()=>d,()=>l.size):new gt(()=>n.x+l.location,()=>n.y+h,()=>l.size,()=>d);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 Op(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class sE{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(aE,e(Lp)),this.addViewType(Eu,e(zi)),this.addViewType(Su,e(Le)),this.addViewType(Fp,e(vr)),this.addViewType(Du,e(vr)),this.addViewType(cE,e(vr))}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 Su(t){return"mark"in t&&(ie(t.mark)||Pe(t.mark))}function Eu(t){return"layer"in t&&Pe(t.layer)}function Pp(t){return t&&(Su(t)||Eu(t))&&"aggregateSamples"in t}function aE(t){return"import"in t}function Fp(t){return"vconcat"in t&&Qe(t.vconcat)}function Du(t){return"hconcat"in t&&Qe(t.hconcat)}function cE(t){return"concat"in t&&Qe(t.concat)}const uE={point:JC,rect:WC,rule:tS,link:oS,text:fS};class Le extends pt{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=uE[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=sr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!xi(s))continue;let a=this;for(;a.parent instanceof pt&&["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 tE(s):new oE(s)),xi(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(wi(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 Ip((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=Ip(r),l.constant)u.extend(l({}));else{const h=this.getCollector();h!=null&&h.completed&&h.visitData(p=>u.extend(l(p)))}}return u};let o=i(e);const s=Bc[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 vi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Pp(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&le(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding=F(T({},(n=r.encoding)!=null?n:{}),{sample:null});const o=this.context.createView(r,this,"summaryView");o.getFacetFields=s=>{},this.sampleAggregateViews.push(o)}}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function zp(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class zn extends oe{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Rp(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=dE(t)&&lE(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 lE(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const xs=t=>typeof t!="object"?fE:hE,fE=t=>({data:t}),hE=t=>t;function dE(t){return"url"in t}function pE(t){return"dynamicCallbackSource"in t}class jp extends zn{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=xs(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Up="chromosome_ticks_and_labels",Gp={x:"width",y:"height"};function Mu(t){return t=="x"?"y":"x"}const Hp=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function Rn(t){return Hp[t]}class Tu extends zi{constructor(e,n,r,i){const o=n=="locus",s=T(T(T({},o?yE:Qp),mE(n,e)),e);if(super(o?AE(s):Vp(s),r,i,`axis_${e.orient}`),this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new jp(()=>this.ticks),o){const a=Rn(this.axisProps.orient),c=this.getScaleResolution(a).getGenome();this.findChildByName(Up).getDynamicDataSource=()=>new jp(()=>c.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Hp[this.axisProps.orient]=="x"?new nn(n,e):new nn(e,n)}getPerpendicularSize(){return Iu(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=Rn(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=gE(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[Gp[Rn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Iu(t){const e=Rn(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function gE(t,e,n,r=[]){const i=a=>25+60*zp(100,700,a);let o=se(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Ap(e,o,t.tickMinStep);const s=t.values?bp(e,t.values,o):xS(e,o);if(nv(s,r,a=>a,a=>a.value))return r;{const a=CS(e,o,t.format);return s.map(c=>({value:c,label:a(c)}))}}const Qp={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 mE(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 Vp(t){const e=F(T({},t),{extent:Iu(t)}),n=Rn(e.orient),r=Mu(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={[Gp[Mu(Rn(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 yE=F(T({},Qp),{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 AE(t){const e=F(T({},t),{extent:Iu(t)}),n=Rn(e.orient),r=Mu(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=Vp(T(T({},t),a));if(t.chromTicks||t.chromLabels){const u={name:Up,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 bE={x:["bottom","top"],y:["left","right"]};class Nu extends pt{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(bE).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 Le(vE(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 Ze.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 Ze.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()):dp)}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(),...sD(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 Tu(F(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 Tu(F(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 vE(t){return{configurableVisibility:!1,data:{values:[{}]},mark:F(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*ku(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ku(r,[...e,n]))yield i;else yield[[...e,n],r]}class xr 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 Wn([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){qC(e)&&(this._data=[],this.facetBatches.set(We(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Ql(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(c=>X(c)),a=Pr(this._data,...s);this.facetBatches.clear();for(const[c,u]of ku(a))this.facetBatches.set(c,u)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const c={type:"facet",facetId:s};for(const u of this.children)u.beginBatch(c)}for(const c of a)this._propagate(c)}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 Ri{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 xE extends oe{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 Ri}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 p=this.ends;p.clear();const d=(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=p.peekValue())!==void 0;)d(h,m,l),h=m,l-=p.pop();h=void 0,c&&(this._propagate(c),c=void 0)};this.handle=m=>{const y=i(m);let v;for(;(v=p.peekValue())!==void 0&&v<y;)d(h,v,l),h=v,l-=p.pop();if(r){let C=s(m);C!==u&&(g(),f=C,u=f)}h!==void 0&&d(h,y,l),h=y;const w=a(m);l+=w,p.push(w,o(m))},this.complete=()=>{g(),super.complete()}}}function wE(t,e,n=0,r=t.length){const i=new Ri,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 CE{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 SE extends oe{constructor(e,n){var i,o;if(super(),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=Or(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 CE(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=wE(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 EE extends oe{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Ic(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const DE="0".charCodeAt(0);function*ME(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-DE}yield r}class TE extends oe{get behavior(){return Mt}constructor(e){var s,a;super();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 p of ME(h)){if(l)f=u+p;else{u=f+p;const d=Object.assign({},c);d[i]=f,d[o]=u,this._propagate(d)}l=!l}}}}class IE extends oe{get behavior(){return Mt}constructor(e){super();const n=We(e.field).map(o=>X(o)),r=We(e.separator),i=We(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]));NE(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 NE(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 kE extends oe{get behavior(){return tn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Ic(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Yp extends oe{get behavior(){return tn}constructor(e,n){var d;super();const r=(d=e.channel)!=null?d:"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=We(e.pos).map(g=>X(g)),a=We(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=We(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(`
1344
+ `));let l,h=0;const p=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,p(o(g)),s),this._propagate(g)}}}var Wp={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 BE extends oe{get behavior(){return tn}constructor(e){super();const n=du(Wp),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 LE=65536;class OE extends oe{get behavior(){return tn}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(LE),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 p=-1;if(h>=0&&s[h]<l)p=h;else{const d=i(f);for(p=0;p<s.length&&!(s[p]<d);p++);if(p>=s.length)throw new Error("Out of lanes!")}s[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const s=new Ri,a=new Ri;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<c);){const p=s.pop();a.push(p,p)}c=l;let h=a.pop();h===void 0&&(h=u++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class PE extends oe{get behavior(){return Mt}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>X(i)),r=e.as?e.as:n.map(Ae);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class FE extends oe{get behavior(){return tn}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 zE extends oe{get behavior(){return Mt}constructor(e){super();const n=We(e.columnRegex).map(h=>new RegExp(h)),r=We(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 p=Object.keys(h),d=new Map;for(const[y,v]of n.entries())for(const w of p){const C=(m=v.exec(w))==null?void 0:m[1];if(C!==void 0){let b=d.get(C);b||(b=[],d.set(C,b)),b[y]=w}}s=[...d.entries()],a=p.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 {
1549
1345
  `+g.join(`,
1550
1346
  `)+`
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=>{Hp(h)&&(this.handle=l),super.beginBatch(h)}}}class ZD extends se{get behavior(){return rn}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?of(e.sort.field,e.sort.order):void 0,i=e.field?Z(e.field):()=>1,o=e.groupby.map(l=>Z(l)),s=cb(this.buffer,l=>o.map(h=>h(l)).join()).map(l=>l[1]);let a=l=>!0;if(e.baseField){const l=Z(e.baseField);a=h=>l(h)!==null}let c,u;switch(e.offset){case"normalize":c=(l,h)=>l/h,u=(l,h)=>Io(l,h);break;case"center":c=(l,h)=>l-h/2,u=(l,h)=>Io(l,h);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(h,d)=>h/d,u=(h,d)=>{const g=Io(h,v=>+!a(v)),m=Io(h,d),y=m-g;let x=0;for(let v=0;v<h.length;v++){const S=h[v];if(a(S)){const b=d(S)/y;x-=b*Math.log2(b)}}return y/(l-(x+0))*(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 KD extends se{get behavior(){return Nt}constructor(e){super();var o,s;const n=Z((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 JD extends se{get behavior(){return Nt}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=>Z(o)),i=Do(this.buffer,...r);for(const[o,s]of Wu(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 $D="_uniqueId",Cg=1e4,Dg=[null];class Mg extends se{get behavior(){return rn}constructor(e){super();var n;this.params=e,this.as=(n=e.as)!=null?n:$D,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%Cg==0&&(this._id=this._getBlock()*Cg),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Dg.length;return Dg[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const Ig={aggregate:JD,collect:Ui,coverage:OD,filterScoredLabels:FD,filter:zD,flattenCompressedExons:jD,flattenDelimited:GD,flattenSequence:KD,formula:QD,identifier:Mg,linearizeGenomicCoordinate:Eg,measureText:VD,pileup:YD,project:WD,regexExtract:XD,regexFold:qD,sample:Qp,stack:ZD};function eM(t,e){const n=Ig[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function tM(t){return"values"in t}class nM extends On{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=Ds(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=rh(e,mg(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 rM(t){return"url"in t}class iM extends On{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=>_r({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=rh(o,mg(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 oM(t){return"sequence"in t}class sM extends On{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 aM(t){return"dynamicSource"in t}class cM extends On{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Ds(r)),this._propagate(n(r));this.complete()}async load(){}}function Tg(t,e){if(tM(t))return new nM(t);if(rM(t))return new iM(t,e);if(oM(t))return new sM(t);if(aM(t))return new cM;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function uM(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 Ng extends se{get behavior(){return Nt}constructor(){super();const e=n=>{const r=uM(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Hp(n)&&(this.handle=e),super.beginBatch(n)}}}class Lg{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 lM(t){return"name"in t}class fM extends On{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=Ds(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 kg(t,e){const n=[];let r;const i=e!=null?e:new Lg,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=eM(h,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${h.type}" transform: ${p}`)}d.behavior&rn&&a(new Ng),a(d)}}const u=f=>{if(n.push(r),f.spec.data){const l=DD(f.spec.data)?f.getDynamicDataSource():lM(f.spec.data)?new fM(f.spec.data,f.context.getNamedData):Tg(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof Pe){if(!r)throw new Error("A unit view has no (inherited) data source");const l=hM(f);if(l){o.push(l.rewrite);for(const d of l.transforms)a(d)}f.mark.isPickingParticipant()&&a(new Mg({type:"identifier"}));const h=new Ui({type:"collect",groupby:f.getFacetFields(),sort:dM(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}dg(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function hM(t){var o,s,a,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;yi(l)&&r0(f)&&r.push({channel:l,chromPosDef:f})}const i=Do(r,u=>nr(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 x=b=>b.replace(/[^A-Za-z0-9_]/g,""),v=["_linearized_",x(y.chrom),"_",x(y.pos)].join(""),S=F(T({},(a=(s=(o=t.spec.encoding)==null?void 0:o[m])!=null?s:t.getEncoding()[m])!=null?a:{}),{field:v});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(v)}e.push(new Eg({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),Bp(t.mark,"encoding")}}:void 0}function dM(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Ke(n)&&((r=t.getScaleResolution("x"))==null?void 0:r.isZoomable())){if(Mn(n))return{field:n.field};if(!gi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function pM(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Ui?r=n:(r=new Ui,n.addChild(r));let i;return t instanceof On?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 Og(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Og(n,t))return!1;return!0}function Xu(t,e=!1){if(t instanceof Ng)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Xu(n,e);return}t.behavior&Nt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Xu(t.children[n],e||n<r-1)}function gM(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 mM(t){if(Xu(t),!Og(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function yM(t){for(const e of t.dataSources)mM(e);gM(t)}function AM(t){const e=[];return t.visit(n=>{e.push(n)}),e}function Bg(t){t.visit(n=>{n instanceof Pe&&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 Pe&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function bM(t){for(const e of mi){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function xM(t){let e=t;const n=r=>r&&!Ze(r);return t.visit(r=>{if(r instanceof Ri||r instanceof Pe){const i=r.getEncoding();if(r instanceof Pe&&!n(i.x)&&!n(i.y))return gr;const o=r.parent,s=new Yu(r.context,o);if(r.parent=s,s.child=r,s.name=r.name+"_decorator",o)if(o instanceof At)o.replaceChild(r,s);else{let a;if(t.visit(EM((c,u)=>{if(c===r)return a=pe(u),kn})),a instanceof At)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(),gr}}),e}function vM(t){const e=[];return t.visit(n=>{if(n instanceof Pe){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Mn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return gr}}),e}async function wM(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=_r({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 Pg(t){const e=[];t.visit(n=>{if(n instanceof fg)return e.push(n),gr});for(const n of e){const r=n.context,i=await wM(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Pg(o)}}function EM(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}function SM(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...ub(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const CM=t=>!/^(layer|concat)\d+$/.test(t);class qu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Fg extends qu{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=Do(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 DM extends qu{constructor(e){super(e);this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new MM(e,n);this.root?pe(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class MM{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=pe(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 IM extends qu{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 TM{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 NM{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 LM=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"):LM(t.delay).then(r):r()}class kM{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 zg(){const t=e=>e;return t.invert=e=>e,t.copy=zg,t.invertRange=()=>{},t}class OM{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new iD(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 BM="data:image/png;base64,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";const PM={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class FM{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new So([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Iu(Sg),texture:this._createTextureNow(BM)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(oe(r)&&(r=PM[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=RM(r,n),o=this.fontRepository+Rg(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=>Iu(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Rg(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=>zM(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)=>{Si(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=Si(n,{src:e,min:n.LINEAR},(a,c,u)=>{a?s(a):o(c)})});return this._promises.push(i),r}}function Rg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function zM(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 RM(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 UM(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 jM{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=Ly([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 GM(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 Is(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 Ug=new Map;async function HM(t,e,n){var o;const r=t.symbol;let i=(o=Ug.get(r))!=null?o:await _M(t.symbol);return i?(Ug.set(r,i),M`<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 QM(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 VM=Is(QM,500);function _M(t){return VM(t)}const YM=Le(".4~r"),WM=Le(".4~e");function jg(t){return t===null?M`<span class="na">NA</span>`:oe(t)?t.substring(0,30):Number.isInteger(t)?""+t:ae(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?WM(t):YM(t):ao(t)?t?"True":"False":"?"+typeof t+" "+t}async function XM(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 M`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=M`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>M`<tr><th>${s}</th><td>${jg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?M`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return M`${o}${i}`}W("index",Ya,["continuous"]),W("locus",wb,["continuous"]),W("null",zg,[]),nh("fasta",UM);class Gg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new yw,this.viewFactory=new AD,this.namedDataProviders=[],this.animator=new kM(()=>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 jM(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:XM,refseqgene:HM},(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 JS(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 Zx(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 OM(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Lg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new FM(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 Pg(this.viewRoot),Bg(this.viewRoot),bM(this.viewRoot),this.viewRoot=xM(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Pe&&i.push(a)});const o=kg(this.viewRoot,n.dataFlow);yM(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=>ki(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),qM(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 NM(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new TM(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=GM(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",F(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 Pe){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 kn}}),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 Fg({picking:!1},this._glHelper),this._pickingContext=new Fg({picking:!0},this._glHelper);const r=new DM({});e.render(new IM(this._renderingContext,this._pickingContext,r),bt.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 Pe&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function qM(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 CT="",ZM="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
1347
+ };`)},f=h=>{s||u(h);for(const[p,d]of s){const g=c(h,p);for(let m=0;m<d.length;m++)g[r[m]]=h[d[m]];this._propagate(g)}},l=h=>{u(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{up(h)&&(this.handle=l),super.beginBatch(h)}}}class RE extends oe{get behavior(){return tn}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?Ql(e.sort.field,e.sort.order):void 0,i=e.field?X(e.field):()=>1,o=e.groupby.map(l=>X(l)),s=Sy(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)=>go(l,h);break;case"center":c=(l,h)=>l-h/2,u=(l,h)=>go(l,h);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(h,p)=>h/p,u=(h,p)=>{const g=go(h,w=>+!a(w)),m=go(h,p),y=m-g;let v=0;for(let w=0;w<h.length;w++){const C=h[w];if(a(C)){const b=p(C)/y;v-=b*Math.log2(b)}}return y/(l-(v+0))*(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 p=0;for(const d of l){const g=p+i(d);a(d)&&(d[n[0]]=c(p,h),d[n[1]]=c(g,h),this._propagate(d),p=g)}}super.complete()}}class jE extends oe{get behavior(){return Mt}constructor(e){var o,s;super();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 UE extends oe{get behavior(){return Mt}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=Pr(this.buffer,...r);for(const[o,s]of ku(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 GE="_uniqueId",_p=1e4,Xp=[null];class Zp extends oe{get behavior(){return tn}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:GE,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%_p==0&&(this._id=this._getBlock()*_p),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Xp.length;return Xp[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const qp={aggregate:UE,collect:xr,coverage:xE,filterScoredLabels:SE,filter:EE,flattenCompressedExons:TE,flattenDelimited:IE,flattenSequence:jE,formula:kE,identifier:Zp,linearizeGenomicCoordinate:Yp,measureText:BE,pileup:OE,project:PE,regexExtract:FE,regexFold:zE,sample:lp,stack:RE};function HE(t,e){const n=qp[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function QE(t){return"values"in t}class VE extends zn{constructor(e){var n;if(super(),this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)!=null&&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=xs(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Gf(e,Rp(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 YE(t){return"url"in t}class WE extends zn{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=>qr({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=Gf(o,Rp(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 _E(t){return"sequence"in t}class XE extends zn{constructor(e){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function ZE(t){return"dynamicSource"in t}class qE extends zn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=xs(r)),this._propagate(n(r));this.complete()}async load(){}}function Kp(t,e){if(QE(t))return new VE(t);if(YE(t))return new WE(t,e);if(_E(t))return new XE(t);if(ZE(t))return new qE;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function KE(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(`,
1348
+ `)+" };");return n.properties=e,n}class Jp extends oe{get behavior(){return Mt}constructor(){super();const e=n=>{const r=KE(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{up(n)&&(this.handle=e),super.beginBatch(n)}}}class $p{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 JE(t){return"name"in t}class $E extends zn{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=xs(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 eg(t,e){const n=[];let r;const i=e!=null?e:new $p,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 p;try{p=HE(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&tn&&a(new Jp),a(p)}}const u=f=>{if(n.push(r),f.spec.data){const l=pE(f.spec.data)?f.getDynamicDataSource():JE(f.spec.data)?new $E(f.spec.data,f.context.getNamedData):Kp(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof Le){if(!r)throw new Error("A unit view has no (inherited) data source");const l=eD(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new Zp({type:"identifier"}));const h=new xr({type:"collect",groupby:f.getFacetFields(),sort:tD(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}Pp(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function eD(t){var o,s,a,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;xi(l)&&Ld(f)&&r.push({channel:l,chromPosDef:f})}const i=Pr(r,u=>sr(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,h]of f.entries()){const p=[],d=[],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(""),C=F(T({},(a=(s=(o=t.spec.encoding)==null?void 0:o[m])!=null?s:t.getEncoding()[m])!=null?a:{}),{field:w});delete C.chrom,delete C.pos,!C.type&&y.type&&(C.type=y.type),n[m]=C,p.push(y.pos),g.push((c=y.offset)!=null?c:0),d.push(w)}e.push(new Yp({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:p,offset:g,as:d},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=T(T({},t.spec.encoding),n),tp(t.mark,"encoding")}}:void 0}function tD(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Xe(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Nn(n))return{field:n.field};if(!bi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function nD(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof xr?r=n:(r=new xr,n.addChild(r));let i;return t instanceof zn?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 tg(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!tg(n,t))return!1;return!0}function Bu(t,e=!1){if(t instanceof xr&&(e=!0),t instanceof Jp)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Bu(n,e);return}t.behavior&Mt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Bu(t.children[n],e||n<r-1)}function rD(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 iD(t){if(Bu(t),!tg(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function oD(t){for(const e of t.dataSources)iD(e);rD(t)}function sD(t){const e=[];return t.visit(n=>{e.push(n)}),e}function ng(t){t.visit(n=>{n instanceof Le&&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 Le&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function aD(t){for(const e of vi){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function cD(t){let e=t;const n=r=>r&&!_e(r);return t.visit(r=>{if(r instanceof zi||r instanceof Le){const i=r.getEncoding();if(r instanceof Le&&!n(i.x)&&!n(i.y))return Ar;const o=r.parent,s=new Nu(r.context,o);if(r.parent=s,s.child=r,s.name=r.name+"_decorator",o)if(o instanceof pt)o.replaceChild(r,s);else{let a;if(t.visit(fD((c,u)=>{if(c===r)return a=le(u),Fn})),a instanceof pt)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(),Ar}}),e}function uD(t){const e=[];return t.visit(n=>{if(n instanceof Le){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Nn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return Ar}}),e}async function lD(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=qr({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}
1349
+ 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 rg(t){const e=[];t.visit(n=>{if(n instanceof Lp)return e.push(n),Ar});for(const n of e){const r=n.context,i=await lD(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await rg(o)}}function fD(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}function hD(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Ey(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const dD=t=>!/^(layer|concat)\d+$/.test(t);class Lu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class ig extends Lu{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=Pr(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 pD extends Lu{constructor(e){super(e),this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new gD(e,n);this.root?le(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class gD{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=le(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 mD extends Lu{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 yD{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 AD{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 bD=t=>new Promise(e=>setTimeout(e,t));function ws(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&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,p=g=>Math.max(0,Math.min(1,g)),d=g=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(h(f(p(l(g))))),g<a?e(d):(t.onUpdate(h(f(1))),i()))};e(d)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):bD(t.delay).then(r):r()}class vD{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 ws(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function og(){const t=e=>e;return t.invert=e=>e,t.copy=og,t.invertRange=()=>{},t}class xD{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new WS(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 wD="data:image/png;base64,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";const CD={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class SD{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Wn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:du(Wp),texture:this._createTextureNow(wD)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(ie(r)&&(r=CD[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=DD(r,n),o=this.fontRepository+sg(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=>du(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=sg(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=>ED(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)=>{Ti(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=Ti(n,{src:e,min:n.LINEAR},(a,c,u)=>{a?s(a):o(c)})});return this._promises.push(i),r}}function sg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function ED(t){const e=t.split(`
1350
+ `),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 DD(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 MD(t,e){const n=[];let r;for(const i of t.split(`
1351
+ `))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 TD{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=ny([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 ID(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 Cs(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 ag=new Map;async function ND(t,e,n){var o;const r=t.symbol;let i=(o=ag.get(r))!=null?o:await LD(t.symbol);return i?(ag.set(r,i),D`<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 kD(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 BD=Cs(kD,500);function LD(t){return BD(t)}const OD=ce(".4~r"),PD=ce(".4~e");function cg(t){return t===null?D`<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)?PD(t):OD(t):co(t)?t?"True":"False":"?"+typeof t+" "+t}async function FD(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&&c.fields.includes(s))switch(u){case"color":case"fill":case"stroke":return D`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=D`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>D`<tr><th>${s}</th><td>${cg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?D`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return D`${o}${i}`}V("index",Pa,["continuous"]),V("locus",M2,["continuous"]),V("null",og,[]),Uf("fasta",MD);class ug{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new Sx,this.viewFactory=new sE,this.namedDataProviders=[],this.animator=new vD(()=>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 TD(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:FD,refseqgene:ND},(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 UC(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 rv(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 xD(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new $p,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new SD(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 rg(this.viewRoot),ng(this.viewRoot),aD(this.viewRoot),this.viewRoot=cD(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Le&&i.push(a)});const o=eg(this.viewRoot,n.dataFlow);oD(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=>ki(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),zD(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 AD(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new yD(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=ID(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",F(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 Le){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 Fn}}),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 ig({picking:!1},this._glHelper),this._pickingContext=new ig({picking:!0},this._glHelper);const r=new pD({});e.render(new mD(this._renderingContext,this._pickingContext,r),gt.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 Le&&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 zD(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 AT="",RD="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
1556
1352
  * @license
1557
1353
  * Copyright 2019 Google LLC
1558
1354
  * SPDX-License-Identifier: BSD-3-Clause
1559
- */const Zu=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Hg=Symbol(),Qg=new Map;class KM{constructor(e,n){if(this._$cssResult$=!0,n!==Hg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=Qg.get(this.cssText);return Zu&&e===void 0&&(Qg.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const JM=t=>new KM(typeof t=="string"?t:t+"",Hg),$M=(t,e)=>{Zu?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)})},Vg=Zu?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return JM(n)})(t):t;/**
1355
+ */const Ou=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,lg=Symbol(),fg=new Map;class jD{constructor(e,n){if(this._$cssResult$=!0,n!==lg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=fg.get(this.cssText);return Ou&&e===void 0&&(fg.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const UD=t=>new jD(typeof t=="string"?t:t+"",lg),GD=(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)})},hg=Ou?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return UD(n)})(t):t;/**
1560
1356
  * @license
1561
1357
  * Copyright 2017 Google LLC
1562
1358
  * SPDX-License-Identifier: BSD-3-Clause
1563
- */var Ku;const _g=window.reactiveElementPolyfillSupport,Ju={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}},Yg=(t,e)=>e!==t&&(e==e||t==t),$u={attribute:!0,type:String,converter:Ju,reflect:!1,hasChanged:Yg};class Ar 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=$u){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)||$u}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(Vg(i))}else e!==void 0&&n.push(Vg(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 $M(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=$u){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:Ju.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:Ju.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||Yg)(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){}}Ar.finalized=!0,Ar.elementProperties=new Map,Ar.elementStyles=[],Ar.shadowRootOptions={mode:"open"},_g==null||_g({ReactiveElement:Ar}),((Ku=globalThis.reactiveElementVersions)!==null&&Ku!==void 0?Ku:globalThis.reactiveElementVersions=[]).push("1.0.1");/**
1359
+ */var Pu;const dg=window.trustedTypes,HD=dg?dg.emptyScript:"",pg=window.reactiveElementPolyfillSupport,Fu={toAttribute(t,e){switch(e){case Boolean:t=t?HD: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}},gg=(t,e)=>e!==t&&(e==e||t==t),zu={attribute:!0,type:String,converter:Fu,reflect:!1,hasChanged:gg};class wr 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=zu){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)||zu}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(hg(i))}else e!==void 0&&n.push(hg(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._$Ep=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Em(),this.requestUpdate(),(e=this.constructor.l)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$Eg)!==null&&n!==void 0?n:this._$Eg=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$Eg)===null||n===void 0||n.splice(this._$Eg.indexOf(e)>>>0,1)}_$Em(){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 GD(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$Eg)===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._$Eg)===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)}_$ES(e,n,r=zu){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:Fu.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:Fu.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||gg)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$Ei!==e&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$Ep=this._$E_())}async _$E_(){this.isUpdatePending=!0;try{await this._$Ep}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._$Eg)===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._$Eg)===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._$Ep}shouldUpdate(e){return!0}update(e){this._$EC!==void 0&&(this._$EC.forEach((n,r)=>this._$ES(r,this[r],n)),this._$EC=void 0),this._$EU()}updated(e){}firstUpdated(e){}}wr.finalized=!0,wr.elementProperties=new Map,wr.elementStyles=[],wr.shadowRootOptions={mode:"open"},pg==null||pg({ReactiveElement:wr}),((Pu=globalThis.reactiveElementVersions)!==null&&Pu!==void 0?Pu:globalThis.reactiveElementVersions=[]).push("1.3.1");/**
1564
1360
  * @license
1565
1361
  * Copyright 2017 Google LLC
1566
1362
  * SPDX-License-Identifier: BSD-3-Clause
1567
- */var el,tl;class kt extends Ar{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=Xe(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 xe}}kt.finalized=!0,kt._$litElement$=!0,(el=globalThis.litElementHydrateSupport)===null||el===void 0||el.call(globalThis,{LitElement:kt});const Wg=globalThis.litElementPolyfillSupport;Wg==null||Wg({LitElement:kt}),((tl=globalThis.litElementVersions)!==null&&tl!==void 0?tl:globalThis.litElementVersions=[]).push("3.0.1");/**
1363
+ */var Ru,ju;class It extends wr{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=Fe(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 be}}It.finalized=!0,It._$litElement$=!0,(Ru=globalThis.litElementHydrateSupport)===null||Ru===void 0||Ru.call(globalThis,{LitElement:It});const mg=globalThis.litElementPolyfillSupport;mg==null||mg({LitElement:It}),((ju=globalThis.litElementVersions)!==null&&ju!==void 0?ju:globalThis.litElementVersions=[]).push("3.2.0");/**
1568
1364
  * @license
1569
1365
  * Copyright 2017 Google LLC
1570
1366
  * SPDX-License-Identifier: BSD-3-Clause
1571
- */const Ot={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},br=t=>(...e)=>({_$litDirective$:t,values:e});class Gi{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)}}/**
1367
+ */const Nt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Cr=t=>(...e)=>({_$litDirective$:t,values:e});class ji{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)}}/**
1572
1368
  * @license
1573
1369
  * Copyright 2018 Google LLC
1574
1370
  * SPDX-License-Identifier: BSD-3-Clause
1575
- */const e8=br(class extends Gi{constructor(t){var e;if(super(t),t.type!==Ot.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 xe}});/*!
1371
+ */const QD=Cr(class extends ji{constructor(t){var e;if(super(t),t.type!==Nt.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.et===void 0){this.et=new Set,t.strings!==void 0&&(this.st=new Set(t.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(const o in e)e[o]&&!(!((n=this.st)===null||n===void 0)&&n.has(o))&&this.et.add(o);return this.render(e)}const i=t.element.classList;this.et.forEach(o=>{o in e||(i.remove(o),this.et.delete(o))});for(const o in e){const s=!!e[o];s===this.et.has(o)||((r=this.st)===null||r===void 0?void 0:r.has(o))||(s?(i.add(o),this.et.add(o)):(i.remove(o),this.et.delete(o)))}return be}});/*!
1576
1372
  * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
1577
1373
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
1578
- */var t8={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"]},Xg={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"]},n8={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"]},r8={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]},qg={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"]},i8={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"]},o8={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"]},s8={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"]},a8={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"]},Hi={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"]},Zg={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"]},c8={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"]},Kg={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"]},u8={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"]},l8={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"]},f8={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"]},nl={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"]},h8={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"]},d8={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"]},p8={prefix:"fas",iconName:"step-backward",icon:[448,512,[],"f048","M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]},g8={prefix:"fas",iconName:"step-forward",icon:[448,512,[],"f051","M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]},m8={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"]},rl={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"]},y8={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"]};/*!
1374
+ */var VD={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"]},yg={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"]},YD={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"]},WD={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]},Ag={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"]},_D={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"]},XD={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"]},ZD={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"]},qD={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"]},Ui={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"]},bg={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"]},KD={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"]},Gi={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"]},JD={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"]},$D={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"]},eM={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"]},Uu={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"]},tM={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"]},nM={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"]},rM={prefix:"fas",iconName:"step-backward",icon:[448,512,[],"f048","M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]},iM={prefix:"fas",iconName:"step-forward",icon:[448,512,[],"f051","M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]},oM={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"]},Gu={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"]},sM={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"]};/*!
1579
1375
  * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
1580
1376
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
1581
- */function A8(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Jg(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 b8(t,e,n){return e&&Jg(t.prototype,e),n&&Jg(t,n),t}function x8(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _(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){x8(t,i,n[i])})}return t}function $g(t,e){return v8(t)||w8(t,e)||E8()}function v8(t){if(Array.isArray(t))return t}function w8(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 E8(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var em=function(){},il={},tm={},S8=null,nm={mark:em,measure:em};try{typeof window!="undefined"&&(il=window),typeof document!="undefined"&&(tm=document),typeof MutationObserver!="undefined"&&(S8=MutationObserver),typeof performance!="undefined"&&(nm=performance)}catch{}var C8=il.navigator||{},rm=C8.userAgent,im=rm===void 0?"":rm,Ts=il,Ie=tm,Ns=nm;Ts.document;var ol=!!Ie.documentElement&&!!Ie.head&&typeof Ie.addEventListener=="function"&&typeof Ie.createElement=="function";~im.indexOf("MSIE")||~im.indexOf("Trident/");var Bt="___FONT_AWESOME___",om="fa",sm="svg-inline--fa",D8="data-fa-i2svg";(function(){try{return!0}catch{return!1}})();var sl={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},am=Ts.FontAwesomeConfig||{};function M8(t){var e=Ie.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function I8(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(Ie&&typeof Ie.querySelector=="function"){var T8=[["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"]];T8.forEach(function(t){var e=$g(t,2),n=e[0],r=e[1],i=I8(M8(n));i!=null&&(am[r]=i)})}var N8={familyPrefix:om,replacementClass:sm,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},al=_({},N8,am);al.autoReplaceSvg||(al.observeMutations=!1);var Ue=_({},al);Ts.FontAwesomeConfig=Ue;var Pt=Ts||{};Pt[Bt]||(Pt[Bt]={}),Pt[Bt].styles||(Pt[Bt].styles={}),Pt[Bt].hooks||(Pt[Bt].hooks={}),Pt[Bt].shims||(Pt[Bt].shims=[]);var xt=Pt[Bt],L8=[],k8=function t(){Ie.removeEventListener("DOMContentLoaded",t),cl=1,L8.map(function(e){return e()})},cl=!1;ol&&(cl=(Ie.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(Ie.readyState),cl||Ie.addEventListener("DOMContentLoaded",k8)),typeof global!="undefined"&&typeof global.process!="undefined"&&global.process.emit,typeof setImmediate=="undefined"||setImmediate;var xr={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function O8(t){if(!(!t||!ol)){var e=Ie.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=Ie.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 Ie.head.insertBefore(e,r),t}}var B8="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Ls(){for(var t=12,e="";t-- >0;)e+=B8[Math.random()*62|0];return e}function cm(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function P8(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(cm(t[n]),'" ')},"").trim()}function um(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n],";")},"")}function lm(t){return t.size!==xr.size||t.x!==xr.x||t.y!==xr.y||t.rotate!==xr.rotate||t.flipX||t.flipY}function fm(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 ul={x:0,y:0,width:"100%",height:"100%"};function hm(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 F8(t){return t.tag==="g"?t.children:[t]}function z8(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=fm({transform:s,containerWidth:u,iconWidth:a}),h={tag:"rect",attributes:_({},ul,{fill:"white"})},d=c.children?{children:c.children.map(hm)}:{},p={tag:"g",attributes:_({},l.inner),children:[hm(_({tag:c.tag,attributes:_({},c.attributes,l.path)},d))]},g={tag:"g",attributes:_({},l.outer),children:[p]},m="mask-".concat(o||Ls()),y="clip-".concat(o||Ls()),x={tag:"mask",attributes:_({},ul,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},v={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:F8(f)},x]};return e.push(v,{tag:"rect",attributes:_({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(m,")")},ul)}),{children:e,attributes:n}}function R8(t){var e=t.children,n=t.attributes,r=t.main,i=t.transform,o=t.styles,s=um(o);if(s.length>0&&(n.style=s),lm(i)){var a=fm({transform:i,containerWidth:r.width,iconWidth:r.width});e.push({tag:"g",attributes:_({},a.outer),children:[{tag:"g",attributes:_({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:_({},r.icon.attributes,a.path)}]}]})}else e.push(r.icon);return{children:e,attributes:n}}function U8(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(lm(s)&&n.found&&!r.found){var a=n.width,c=n.height,u={x:a/c/2,y:.5};i.style=um(_({},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 j8(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,s=o===!0?"".concat(e,"-").concat(Ue.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:_({},i,{id:s}),children:r}]}]}function G8(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",x=y?"":"fa-w-".concat(Math.ceil(g/m*16)),v=[Ue.replacementClass,o?"".concat(Ue.familyPrefix,"-").concat(o):"",x].filter(function(O){return l.classes.indexOf(O)===-1}).filter(function(O){return O!==""||!!O}).concat(l.classes).join(" "),S={children:[],attributes:_({},l.attributes,{"data-prefix":i,"data-icon":o,class:v,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[D8]=""),c&&S.children.push({tag:"title",attributes:{id:S.attributes["aria-labelledby"]||"title-".concat(f||Ls())},children:[c]});var A=_({},S,{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:s,symbol:a,styles:_({},b,l.styles)}),w=r.found&&n.found?z8(A):R8(A),E=w.children,B=w.attributes;return A.children=E,A.attributes=B,a?j8(A):U8(A)}var dm=function(){};Ue.measurePerformance&&Ns&&Ns.mark&&Ns.measure;var H8=function(e,n){return function(r,i,o,s){return e.call(n,r,i,o,s)}},ll=function(e,n,r,i){var o=Object.keys(e),s=o.length,a=i!==void 0?H8(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 pm(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 xt.hooks.addPack=="function"&&!i?xt.hooks.addPack(t,o):xt.styles[t]=_({},xt.styles[t]||{},o),t==="fas"&&pm("fa",e)}var gm=xt.styles,Q8=xt.shims,mm=function(){var e=function(i){return ll(gm,function(o,s,a){return o[a]=ll(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 gm;ll(Q8,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},{})};mm(),xt.styles;function ym(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function Am(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"?cm(t):"<".concat(e," ").concat(P8(r),">").concat(o.map(Am).join(""),"</").concat(e,">")}function fl(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=new Error().stack}fl.prototype=Object.create(Error.prototype),fl.prototype.constructor=fl;var ks={fill:"currentColor"},bm={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};_({},ks,{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 hl=_({},bm,{attributeName:"opacity"});_({},ks,{cx:"256",cy:"364",r:"28"}),_({},bm,{attributeName:"r",values:"28;14;28;28;14;28;"}),_({},hl,{values:"1;0;1;1;0;1;"}),_({},ks,{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"}),_({},hl,{values:"1;0;0;0;0;1;"}),_({},ks,{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"}),_({},hl,{values:"0;0;1;1;0;0;"}),xt.styles;function xm(t){var e=t[0],n=t[1],r=t.slice(4),i=$g(r,1),o=i[0],s=null;return Array.isArray(o)?s={tag:"g",attributes:{class:"".concat(Ue.familyPrefix,"-").concat(sl.GROUP)},children:[{tag:"path",attributes:{class:"".concat(Ue.familyPrefix,"-").concat(sl.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(Ue.familyPrefix,"-").concat(sl.PRIMARY),fill:"currentColor",d:o[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:s}}xt.styles;var V8=`svg:not(:root).svg-inline--fa {
1377
+ */function aM(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function vg(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 cM(t,e,n){return e&&vg(t.prototype,e),n&&vg(t,n),t}function uM(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Q(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){uM(t,i,n[i])})}return t}function xg(t,e){return lM(t)||fM(t,e)||hM()}function lM(t){if(Array.isArray(t))return t}function fM(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 hM(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var wg=function(){},Hu={},Cg={},dM=null,Sg={mark:wg,measure:wg};try{typeof window!="undefined"&&(Hu=window),typeof document!="undefined"&&(Cg=document),typeof MutationObserver!="undefined"&&(dM=MutationObserver),typeof performance!="undefined"&&(Sg=performance)}catch{}var pM=Hu.navigator||{},Eg=pM.userAgent,Dg=Eg===void 0?"":Eg,Ss=Hu,Me=Cg,Es=Sg;Ss.document;var Qu=!!Me.documentElement&&!!Me.head&&typeof Me.addEventListener=="function"&&typeof Me.createElement=="function";~Dg.indexOf("MSIE")||~Dg.indexOf("Trident/");var kt="___FONT_AWESOME___",Mg="fa",Tg="svg-inline--fa",gM="data-fa-i2svg";(function(){try{return!0}catch{return!1}})();var Vu={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},Ig=Ss.FontAwesomeConfig||{};function mM(t){var e=Me.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function yM(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(Me&&typeof Me.querySelector=="function"){var AM=[["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"]];AM.forEach(function(t){var e=xg(t,2),n=e[0],r=e[1],i=yM(mM(n));i!=null&&(Ig[r]=i)})}var bM={familyPrefix:Mg,replacementClass:Tg,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},Yu=Q({},bM,Ig);Yu.autoReplaceSvg||(Yu.observeMutations=!1);var ze=Q({},Yu);Ss.FontAwesomeConfig=ze;var Bt=Ss||{};Bt[kt]||(Bt[kt]={}),Bt[kt].styles||(Bt[kt].styles={}),Bt[kt].hooks||(Bt[kt].hooks={}),Bt[kt].shims||(Bt[kt].shims=[]);var mt=Bt[kt],vM=[],xM=function t(){Me.removeEventListener("DOMContentLoaded",t),Wu=1,vM.map(function(e){return e()})},Wu=!1;Qu&&(Wu=(Me.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(Me.readyState),Wu||Me.addEventListener("DOMContentLoaded",xM)),typeof global!="undefined"&&typeof global.process!="undefined"&&global.process.emit,typeof setImmediate=="undefined"||setImmediate;var Sr={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function wM(t){if(!(!t||!Qu)){var e=Me.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=Me.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 Me.head.insertBefore(e,r),t}}var CM="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Ds(){for(var t=12,e="";t-- >0;)e+=CM[Math.random()*62|0];return e}function Ng(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function SM(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(Ng(t[n]),'" ')},"").trim()}function kg(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n],";")},"")}function Bg(t){return t.size!==Sr.size||t.x!==Sr.x||t.y!==Sr.y||t.rotate!==Sr.rotate||t.flipX||t.flipY}function Lg(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 _u={x:0,y:0,width:"100%",height:"100%"};function Og(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 EM(t){return t.tag==="g"?t.children:[t]}function DM(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=Lg({transform:s,containerWidth:u,iconWidth:a}),h={tag:"rect",attributes:Q({},_u,{fill:"white"})},p=c.children?{children:c.children.map(Og)}:{},d={tag:"g",attributes:Q({},l.inner),children:[Og(Q({tag:c.tag,attributes:Q({},c.attributes,l.path)},p))]},g={tag:"g",attributes:Q({},l.outer),children:[d]},m="mask-".concat(o||Ds()),y="clip-".concat(o||Ds()),v={tag:"mask",attributes:Q({},_u,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:EM(f)},v]};return e.push(w,{tag:"rect",attributes:Q({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(m,")")},_u)}),{children:e,attributes:n}}function MM(t){var e=t.children,n=t.attributes,r=t.main,i=t.transform,o=t.styles,s=kg(o);if(s.length>0&&(n.style=s),Bg(i)){var a=Lg({transform:i,containerWidth:r.width,iconWidth:r.width});e.push({tag:"g",attributes:Q({},a.outer),children:[{tag:"g",attributes:Q({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:Q({},r.icon.attributes,a.path)}]}]})}else e.push(r.icon);return{children:e,attributes:n}}function TM(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(Bg(s)&&n.found&&!r.found){var a=n.width,c=n.height,u={x:a/c/2,y:.5};i.style=kg(Q({},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 IM(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,s=o===!0?"".concat(e,"-").concat(ze.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:Q({},i,{id:s}),children:r}]}]}function NM(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,p=h===void 0?!1:h,d=r.found?r:n,g=d.width,m=d.height,y=i==="fak",v=y?"":"fa-w-".concat(Math.ceil(g/m*16)),w=[ze.replacementClass,o?"".concat(ze.familyPrefix,"-").concat(o):"",v].filter(function(L){return l.classes.indexOf(L)===-1}).filter(function(L){return L!==""||!!L}).concat(l.classes).join(" "),C={children:[],attributes:Q({},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")}:{};p&&(C.attributes[gM]=""),c&&C.children.push({tag:"title",attributes:{id:C.attributes["aria-labelledby"]||"title-".concat(f||Ds())},children:[c]});var A=Q({},C,{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:s,symbol:a,styles:Q({},b,l.styles)}),x=r.found&&n.found?DM(A):MM(A),E=x.children,N=x.attributes;return A.children=E,A.attributes=N,a?IM(A):TM(A)}var Pg=function(){};ze.measurePerformance&&Es&&Es.mark&&Es.measure;var kM=function(e,n){return function(r,i,o,s){return e.call(n,r,i,o,s)}},Xu=function(e,n,r,i){var o=Object.keys(e),s=o.length,a=i!==void 0?kM(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 Fg(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 mt.hooks.addPack=="function"&&!i?mt.hooks.addPack(t,o):mt.styles[t]=Q({},mt.styles[t]||{},o),t==="fas"&&Fg("fa",e)}var zg=mt.styles,BM=mt.shims,Rg=function(){var e=function(i){return Xu(zg,function(o,s,a){return o[a]=Xu(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 zg;Xu(BM,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},{})};Rg(),mt.styles;function jg(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function Ug(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"?Ng(t):"<".concat(e," ").concat(SM(r),">").concat(o.map(Ug).join(""),"</").concat(e,">")}function Zu(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=new Error().stack}Zu.prototype=Object.create(Error.prototype),Zu.prototype.constructor=Zu;var Ms={fill:"currentColor"},Gg={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};Q({},Ms,{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 qu=Q({},Gg,{attributeName:"opacity"});Q({},Ms,{cx:"256",cy:"364",r:"28"}),Q({},Gg,{attributeName:"r",values:"28;14;28;28;14;28;"}),Q({},qu,{values:"1;0;1;1;0;1;"}),Q({},Ms,{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"}),Q({},qu,{values:"1;0;0;0;0;1;"}),Q({},Ms,{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"}),Q({},qu,{values:"0;0;1;1;0;0;"}),mt.styles;function Hg(t){var e=t[0],n=t[1],r=t.slice(4),i=xg(r,1),o=i[0],s=null;return Array.isArray(o)?s={tag:"g",attributes:{class:"".concat(ze.familyPrefix,"-").concat(Vu.GROUP)},children:[{tag:"path",attributes:{class:"".concat(ze.familyPrefix,"-").concat(Vu.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(ze.familyPrefix,"-").concat(Vu.PRIMARY),fill:"currentColor",d:o[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:s}}mt.styles;var LM=`svg:not(:root).svg-inline--fa {
1582
1378
  overflow: visible;
1583
1379
  }
1584
1380
 
@@ -2029,38 +1825,38 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
2029
1825
 
2030
1826
  .fad.fa-inverse {
2031
1827
  color: #fff;
2032
- }`;function _8(){var t=om,e=sm,n=Ue.familyPrefix,r=Ue.replacementClass,i=V8;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 Y8=function(){function t(){A8(this,t),this.definitions={}}return b8(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]=_({},n.definitions[a]||{},s[a]),pm(a,s[a]),mm()})}},{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 W8(){Ue.autoAddCss&&!wm&&(O8(_8()),wm=!0)}function X8(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return Am(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!ol){var r=Ie.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function vm(t){var e=t.prefix,n=e===void 0?"fa":e,r=t.iconName;if(!!r)return ym(Z8.definitions,n,r)||ym(xt.styles,n,r)}function q8(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:vm(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:vm(i||{})),t(r,_({},n,{mask:i}))}}var Z8=new Y8,wm=!1,te=q8(function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.transform,r=n===void 0?xr: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,x=e.styles,v=x===void 0?{}:x;if(!!t){var S=t.prefix,b=t.iconName,A=t.icon;return X8(_({type:"icon"},t),function(){return W8(),Ue.autoA11y&&(l?y["aria-labelledby"]="".concat(Ue.replacementClass,"-title-").concat(d||Ls()):(y["aria-hidden"]="true",y.focusable="false")),G8({icons:{main:xm(A),mask:a?xm(a.icon):{found:!1,width:null,height:null,icon:{}}},prefix:S,iconName:b,transform:_({},xr,r),symbol:o,title:l,maskId:u,titleId:d,extra:{attributes:y,styles:v,classes:g}})})}});/**
1828
+ }`;function OM(){var t=Mg,e=Tg,n=ze.familyPrefix,r=ze.replacementClass,i=LM;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 PM=function(){function t(){aM(this,t),this.definitions={}}return cM(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]=Q({},n.definitions[a]||{},s[a]),Fg(a,s[a]),Rg()})}},{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 FM(){ze.autoAddCss&&!Vg&&(wM(OM()),Vg=!0)}function zM(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return Ug(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!Qu){var r=Me.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function Qg(t){var e=t.prefix,n=e===void 0?"fa":e,r=t.iconName;if(!!r)return jg(jM.definitions,n,r)||jg(mt.styles,n,r)}function RM(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:Qg(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:Qg(i||{})),t(r,Q({},n,{mask:i}))}}var jM=new PM,Vg=!1,$=RM(function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.transform,r=n===void 0?Sr: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,p=h===void 0?null:h,d=e.classes,g=d===void 0?[]:d,m=e.attributes,y=m===void 0?{}:m,v=e.styles,w=v===void 0?{}:v;if(!!t){var C=t.prefix,b=t.iconName,A=t.icon;return zM(Q({type:"icon"},t),function(){return FM(),ze.autoA11y&&(l?y["aria-labelledby"]="".concat(ze.replacementClass,"-title-").concat(p||Ds()):(y["aria-hidden"]="true",y.focusable="false")),NM({icons:{main:Hg(A),mask:a?Hg(a.icon):{found:!1,width:null,height:null,icon:{}}},prefix:C,iconName:b,transform:Q({},Sr,r),symbol:o,title:l,maskId:u,titleId:p,extra:{attributes:y,styles:w,classes:g}})})}});/**
2033
1829
  * @license
2034
1830
  * Copyright 2018 Google LLC
2035
1831
  * SPDX-License-Identifier: BSD-3-Clause
2036
- */const K8=br(class extends Gi{constructor(t){var e;if(super(t),t.type!==Ot.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 xe}}),Em="close-dialog";function J8(){return new CustomEvent(Em,{bubbles:!0})}function Qi(t="default"){const e=document.createElement("div");e.classList.add("gs-modal"),t!="default"&&e.classList.add(t);const n=i=>{var o;switch(i.key){case"Escape":{e.querySelector(".btn-cancel").click(),i.stopPropagation();break}case"Enter":{if(((o=i.target)==null?void 0:o.tagName)=="TEXTAREA")return;e.querySelector(".btn-primary").click(),i.stopPropagation();break}}};e.addEventListener("keydown",n),Xe(M`<div class="backdrop"></div><div class="content"></div>`,e);const r=()=>{e.querySelector(".backdrop").addEventListener("transitionend",()=>e.remove()),e.classList.remove("visible"),document.body.classList.remove(En)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(Em,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(En),{content:e.querySelector(".content"),close:r}}function st(t,e={}){var i;const n=Qi(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,s)=>{const a=()=>{n.close(),o(!0)},c=M`${r?M`<div class="modal-title">${r}</div>`:R}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?M`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:R} <button @click="${a}">${e.okLabel}</button></div>`;Xe(c,n.content)})}function $8(t,e){var n,r;Xt((n=t.scale)==null?void 0:n.type)?e6(t,e):nt((r=t.scale)==null?void 0:r.type)?t6(t,e):st("Not implemented (yet).")}function e6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Qi(),o=M`<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=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!s.size}" @click="${()=>a(!1)}">${te(Hi).node[0]} Retain</button> <button ?disabled="${!s.size}" @click="${()=>a(!0)}">${te(rl).node[0]} Remove</button></div>`,f=r,l=M`<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=>M`<li><label class="checkbox"><span class="color" style="${K8({backgroundColor:f(d).toString()})}"></span> <input type="checkbox" .value="${d}"> ${d}</label></li>`)}</ul>`;function h(){Xe(M`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}h(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function t6(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Qi(),s=M`<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=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>a()}">${te(Hi).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=M`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(n6).map(([d,p])=>M`<option .value="${d}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function h(){Xe(M`${s}<div class="modal-body">${l}</div>${c()}`,o.content)}h(),o.content.querySelector("select").focus()}const n6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function dl(t,e,n,r){var l;const i=r.actions,o=e.attribute,s=r.provenance.storeHelper.getDispatcher(),a=[];t&&a.push({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})),r6(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:Hi,label:"Advanced filter...",callback:()=>$8(e,r)}),a}function r6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function i6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var sn={},Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.ActionCreators=Pn.ActionTypes=void 0;var Fn={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"};Pn.ActionTypes=Fn;var o6={undo:function(){return{type:Fn.UNDO}},redo:function(){return{type:Fn.REDO}},jumpToFuture:function(e){return{type:Fn.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:Fn.JUMP_TO_PAST,index:e}},jump:function(e){return{type:Fn.JUMP,index:e}},clearHistory:function(){return{type:Fn.CLEAR_HISTORY}}};Pn.ActionCreators=o6;var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.parseActions=Os,vt.isHistory=s6,vt.includeAction=a6,vt.excludeAction=c6,vt.combineFilters=u6,vt.groupByActionTypes=l6,vt.newHistory=f6;function Os(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function s6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function a6(t){var e=Os(t);return function(n){return e.indexOf(n.type)>=0}}function c6(t){var e=Os(t);return function(n){return e.indexOf(n.type)<0}}function u6(){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 l6(t){var e=Os(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function f6(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 Sm={},vr={};Object.defineProperty(vr,"__esModule",{value:!0}),vr.set=x6,vr.start=y6,vr.end=A6,vr.log=b6;function wt(t){return p6(t)||d6(t)||h6()}function h6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function p6(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 Bs,$e,pl={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function g6(){$e={header:[],prev:[],action:[],next:[],msgs:[]}}function m6(){var t=$e,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,wt(e)),(a=console).log.apply(a,wt(n)),(c=console).log.apply(c,wt(i)),(u=console).log.apply(u,wt(r)),(f=console).log.apply(f,wt(o)),console.groupEnd()}else{var l,h,d,p,g;(l=console).log.apply(l,wt(e)),(h=console).log.apply(h,wt(n)),(d=console).log.apply(d,wt(i)),(p=console).log.apply(p,wt(r)),(g=console).log.apply(g,wt(o))}}function gl(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function y6(t,e){g6(),Bs&&(console.group?($e.header=["%credux-undo","font-style: italic","action",t.type],$e.action=gl("action",pl.action,t),$e.prev=gl("prev history",pl.prevState,e)):($e.header=["redux-undo action",t.type],$e.action=["action",t],$e.prev=["prev history",e]))}function A6(t){Bs&&(console.group?$e.next=gl("next history",pl.nextState,t):$e.next=["next history",t],m6())}function b6(){if(Bs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];$e.msgs=$e.msgs.concat([].concat(e,[`
2037
- `]))}}function x6(t){Bs=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(w){return typeof w}:e=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=S;var n=s(vr),r=Pn,i=vt;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 w={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in b)if(Object.prototype.hasOwnProperty.call(b,B)){var O=E?Object.getOwnPropertyDescriptor(b,B):null;O&&(O.get||O.set)?Object.defineProperty(w,B,O):w[B]=b[B]}return w.default=b,A&&A.set(b,w),w}function a(b,A){var w=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);A&&(E=E.filter(function(B){return Object.getOwnPropertyDescriptor(b,B).enumerable})),w.push.apply(w,E)}return w}function c(b){for(var A=1;A<arguments.length;A++){var w=arguments[A]!=null?arguments[A]:{};A%2?a(Object(w),!0).forEach(function(E){u(b,E,w[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(w)):a(Object(w)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(w,E))})}return b}function u(b,A,w){return A in b?Object.defineProperty(b,A,{value:w,enumerable:!0,configurable:!0,writable:!0}):b[A]=w,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,w=new Array(b.length);A<b.length;A++)w[A]=b[A];return w}}function p(b,A){var w=(0,i.newHistory)([],b,[]);return A&&(w._latestUnfiltered=null),w}function g(b,A,w,E){var B=b.past.length+1;n.log("inserting",A),n.log("new free: ",w-B);var O=b.past,D=b._latestUnfiltered,k=w&&w<=B,z=O.slice(k?1:0),G=D!=null?[].concat(f(z),[D]):z;return(0,i.newHistory)(G,A,[],E)}function m(b,A){if(A<0||A>=b.future.length)return b;var w=b.past,E=b.future,B=b._latestUnfiltered,O=[].concat(f(w),[B],f(E.slice(0,A))),D=E[A],k=E.slice(A+1);return(0,i.newHistory)(O,D,k)}function y(b,A){if(A<0||A>=b.past.length)return b;var w=b.past,E=b.future,B=b._latestUnfiltered,O=w.slice(0,A),D=[].concat(f(w.slice(A+1)),[B],f(E)),k=w[A];return(0,i.newHistory)(O,k,D)}function x(b,A){return A>0?m(b,A-1):A<0?y(b,b.past.length+A):b}function v(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 w=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=w.neverSkipReducer?function(O,D){for(var k=arguments.length,z=new Array(k>2?k-2:0),G=2;G<k;G++)z[G-2]=arguments[G];return c({},O,{present:b.apply(void 0,[O.present,D].concat(z))})}:function(O){return O},B;return function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:B,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(D,O);for(var k=O,z=arguments.length,G=new Array(z>2?z-2:0),ue=2;ue<z;ue++)G[ue-2]=arguments[ue];if(!B)if(n.log("history is uninitialized"),O===void 0){var Ae={type:"@@redux-undo/CREATE_HISTORY"},Ge=b.apply(void 0,[O,Ae].concat(G));return k=p(Ge,w.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(k),k}else(0,i.isHistory)(O)?(k=B=w.ignoreInitialState?O:(0,i.newHistory)(O.past,O.present,O.future),n.log("initialHistory initialized: initialState is a history",B)):(k=B=p(O,w.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",B));var U;switch(D.type){case void 0:return k;case w.undoType:return U=x(k,-1),n.log("perform undo"),n.end(U),E.apply(void 0,[U,D].concat(G));case w.redoType:return U=x(k,1),n.log("perform redo"),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpToPastType:return U=y(k,D.index),n.log("perform jumpToPast to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpToFutureType:return U=m(k,D.index),n.log("perform jumpToFuture to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpType:return U=x(k,D.index),n.log("perform jump to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case v(D.type,w.clearHistoryType):return U=p(k.present,w.ignoreInitialState),n.log("perform clearHistory"),n.end(U),E.apply(void 0,[U,D].concat(G));default:if(U=b.apply(void 0,[k.present,D].concat(G)),w.initTypes.some(function(ef){return ef===D.type}))return n.log("reset history due to init action"),n.end(B),B;if(k._latestUnfiltered===U)return k;var ie=typeof w.filter=="function"&&!w.filter(D,U,k);if(ie){var eo=(0,i.newHistory)(k.past,U,k.future,k.group);return w.syncFilter||(eo._latestUnfiltered=k._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(eo),eo}var to=w.groupBy(D,U,k);if(to!=null&&to===k.group){var ea=(0,i.newHistory)(k.past,U,k.future,k.group);return n.log("groupBy grouped the action with the previous action"),n.end(ea),ea}return k=g(k,U,w.limit,to),n.log("inserted new state into history"),n.end(k),k}}}})(Sm),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=Pn,n=vt,r=i(Sm);function i(o){return o&&o.__esModule?o:{default:o}}}(sn);var v6=i6(sn);function ml(t){return t.split("-")[0]}function Cm(t){return t.split("-")[1]}function Dm(t){return["top","bottom"].includes(ml(t))?"x":"y"}function Mm(t){return t==="y"?"height":"width"}function Im(t){let{reference:e,floating:n,placement:r}=t;const i=e.x+e.width/2-n.width/2,o=e.y+e.height/2-n.height/2;let s;switch(ml(r)){case"top":s={x:i,y:e.y-n.height};break;case"bottom":s={x:i,y:e.y+e.height};break;case"right":s={x:e.x+e.width,y:o};break;case"left":s={x:e.x-n.width,y:o};break;default:s={x:e.x,y:e.y}}const a=Dm(r),c=Mm(a);switch(Cm(r)){case"start":s[a]=s[a]-(e[c]/2-n[c]/2);break;case"end":s[a]=s[a]+(e[c]/2-n[c]/2);break}return s}const w6=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:s}=n;let a=await s.getElementRects({reference:t,floating:e,strategy:i}),{x:c,y:u}=Im(F(T({},a),{placement:r})),f=r,l={};for(let h=0;h<o.length;h++){const{name:d,fn:p}=o[h],{x:g,y:m,data:y,reset:x}=await p({x:c,y:u,initialPlacement:r,placement:f,strategy:i,middlewareData:l,rects:a,platform:s,elements:{reference:t,floating:e}});if(c=g!=null?g:c,u=m!=null?m:u,l=F(T({},l),{[d]:y!=null?y:{}}),x){typeof x=="object"&&(x.placement&&(f=x.placement),x.rects&&(a=x.rects===!0?await s.getElementRects({reference:t,floating:e,strategy:i}):x.rects),{x:c,y:u}=Im(F(T({},a),{placement:f}))),h=-1;continue}}return{x:c,y:u,placement:f,strategy:i,middlewareData:l}};function E6(t){return T({top:0,right:0,bottom:0,left:0},t)}function S6(t){return typeof t!="number"?E6(t):{top:t,right:t,bottom:t,left:t}}function yl(t){return F(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function C6(t,e){e===void 0&&(e={});const{x:n,y:r,platform:i,rects:o,elements:s,strategy:a}=t,{boundary:c="clippingParents",rootBoundary:u="viewport",elementContext:f="floating",altBoundary:l=!1,padding:h=0}=e,d=S6(h),g=s[l?f==="floating"?"reference":"floating":f],m=await i.getClippingClientRect({element:await i.isElement(g)?g:g.contextElement||await i.getDocumentElement({element:s.floating}),boundary:c,rootBoundary:u}),y=yl(await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:f==="floating"?F(T({},o.floating),{x:n,y:r}):o.reference,offsetParent:await i.getOffsetParent({element:s.floating}),strategy:a}));return{top:m.top-y.top+d.top,bottom:y.bottom-m.bottom+d.bottom,left:m.left-y.left+d.left,right:y.right-m.right+d.right}}const D6={left:"right",right:"left",bottom:"top",top:"bottom"};function Ps(t){return t.replace(/left|right|bottom|top/g,e=>D6[e])}function M6(t,e){const n=Cm(t)==="start",r=Dm(t),i=Mm(r);let o=r==="x"?n?"right":"left":n?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=Ps(o)),{main:o,cross:Ps(o)}}const I6={start:"end",end:"start"};function Tm(t){return t.replace(/start|end/g,e=>I6[e])}function T6(t){const e=Ps(t);return[Tm(t),e,Tm(e)]}const N6=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n,r;const{placement:i,middlewareData:o,rects:s,initialPlacement:a}=e;if((n=o.flip)!=null&&n.skip)return{};const E=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:f,fallbackStrategy:l="bestFit",flipAlignment:h=!0}=E,d=fy(E,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),p=ml(i),m=f||(p===a||!h?[Ps(a)]:T6(a)),y=[a,...m],x=await C6(e,d),v=[];let S=((r=o.flip)==null?void 0:r.overflows)||[];if(c&&v.push(x[p]),u){const{main:B,cross:O}=M6(i,s);v.push(x[B],x[O])}if(S=[...S,{placement:i,overflows:v}],!v.every(B=>B<=0)){var b,A;const B=((b=(A=o.flip)==null?void 0:A.index)!=null?b:0)+1,O=y[B];if(O)return{data:{index:B,overflows:S},reset:{placement:O}};let D="bottom";switch(l){case"bestFit":{var w;const k=(w=S.slice().sort((z,G)=>z.overflows.filter(ue=>ue>0).reduce((ue,Ae)=>ue+Ae,0)-G.overflows.filter(ue=>ue>0).reduce((ue,Ae)=>ue+Ae,0))[0])==null?void 0:w.placement;k&&(D=k);break}case"initialPlacement":D=a;break}return{data:{skip:!0},reset:{placement:D}}}return{}}}};function Al(t){return(t==null?void 0:t.toString())==="[object Window]"}function an(t){if(t==null)return window;if(!Al(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function Fs(t){return an(t).getComputedStyle(t)}function Ft(t){return Al(t)?"":t?(t.nodeName||"").toLowerCase():""}function zt(t){return t instanceof an(t).HTMLElement}function zs(t){return t instanceof an(t).Element}function L6(t){return t instanceof an(t).Node}function Nm(t){const e=an(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Rs(t){const{overflow:e,overflowX:n,overflowY:r}=Fs(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function k6(t){return["table","td","th"].includes(Ft(t))}function Lm(t){const e=navigator.userAgent.toLowerCase().includes("firefox"),n=Fs(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}const km=Math.min,Vi=Math.max,Us=Math.round;function wr(t,e){e===void 0&&(e=!1);const n=t.getBoundingClientRect();let r=1,i=1;return e&&zt(t)&&(r=t.offsetWidth>0&&Us(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&Us(n.height)/t.offsetHeight||1),{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function cn(t){return((L6(t)?t.ownerDocument:t.document)||window.document).documentElement}function js(t){return Al(t)?{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function Om(t){return wr(cn(t)).left+js(t).scrollLeft}function O6(t){const e=wr(t);return Us(e.width)!==t.offsetWidth||Us(e.height)!==t.offsetHeight}function B6(t,e,n){const r=zt(e),i=cn(e),o=wr(t,r&&O6(e));let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(r||!r&&n!=="fixed")if((Ft(e)!=="body"||Rs(i))&&(s=js(e)),zt(e)){const c=wr(e,!0);a.x=c.x+e.clientLeft,a.y=c.y+e.clientTop}else i&&(a.x=Om(i));return{x:o.left+s.scrollLeft-a.x,y:o.top+s.scrollTop-a.y,width:o.width,height:o.height}}function Gs(t){return Ft(t)==="html"?t:t.assignedSlot||t.parentNode||(Nm(t)?t.host:null)||cn(t)}function Bm(t){return!zt(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function P6(t){let e=Gs(t);for(;zt(e)&&!["html","body"].includes(Ft(e));){if(Lm(e))return e;e=e.parentNode}return null}function bl(t){const e=an(t);let n=Bm(t);for(;n&&k6(n)&&getComputedStyle(n).position==="static";)n=Bm(n);return n&&(Ft(n)==="html"||Ft(n)==="body"&&getComputedStyle(n).position==="static"&&!Lm(n))?e:n||P6(t)||e}function Pm(t){return{width:t.offsetWidth,height:t.offsetHeight}}function F6(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=zt(n),o=cn(n);if(n===o)return e;let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if((i||!i&&r!=="fixed")&&((Ft(n)!=="body"||Rs(o))&&(s=js(n)),zt(n))){const c=wr(n,!0);a.x=c.x+n.clientLeft,a.y=c.y+n.clientTop}return F(T({},e),{x:e.x-s.scrollLeft+a.x,y:e.y-s.scrollTop+a.y})}function z6(t){const e=an(t),n=cn(t),r=e.visualViewport;let i=n.clientWidth,o=n.clientHeight,s=0,a=0;return r&&(i=r.width,o=r.height,Math.abs(e.innerWidth/r.scale-r.width)<.01&&(s=r.offsetLeft,a=r.offsetTop)),{width:i,height:o,x:s,y:a}}function R6(t){var e;const n=cn(t),r=js(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Vi(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=Vi(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let a=-r.scrollLeft+Om(t);const c=-r.scrollTop;return Fs(i||n).direction==="rtl"&&(a+=Vi(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:c}}function Fm(t){return["html","body","#document"].includes(Ft(t))?t.ownerDocument.body:zt(t)&&Rs(t)?t:Fm(Gs(t))}function zm(t,e){var n;e===void 0&&(e=[]);const r=Fm(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=an(r),s=i?[o].concat(o.visualViewport||[],Rs(r)?r:[]):r,a=e.concat(s);return i?a:a.concat(zm(Gs(s)))}function U6(t,e){const n=e.getRootNode==null?void 0:e.getRootNode();if(t.contains(e))return!0;if(n&&Nm(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function j6(t){const e=wr(t),n=e.top+t.clientTop,r=e.left+t.clientLeft;return{top:n,left:r,x:r,y:n,right:r+t.clientWidth,bottom:n+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function Rm(t,e){return e==="viewport"?yl(z6(t)):zs(e)?j6(e):yl(R6(cn(t)))}function G6(t){const e=zm(Gs(t)),r=["absolute","fixed"].includes(Fs(t).position)&&zt(t)?bl(t):t;return zs(r)?e.filter(i=>zs(i)&&U6(i,r)&&Ft(i)!=="body"):[]}function H6(t){let{element:e,boundary:n,rootBoundary:r}=t;const o=[...n==="clippingParents"?G6(e):[].concat(n),r],s=o[0],a=o.reduce((c,u)=>{const f=Rm(e,u);return c.top=Vi(f.top,c.top),c.right=km(f.right,c.right),c.bottom=km(f.bottom,c.bottom),c.left=Vi(f.left,c.left),c},Rm(e,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}const Q6={getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:B6(e,bl(n),r),floating:F(T({},Pm(n)),{x:0,y:0})}},convertOffsetParentRelativeRectToViewportRelativeRect:t=>F6(t),getOffsetParent:t=>{let{element:e}=t;return bl(e)},isElement:t=>zs(t),getDocumentElement:t=>{let{element:e}=t;return cn(e)},getClippingClientRect:t=>H6(t),getDimensions:t=>{let{element:e}=t;return Pm(e)},getClientRects:t=>{let{element:e}=t;return e.getClientRects()}},V6=(t,e,n)=>w6(t,e,T({platform:Q6},n));let Et;const _i=[],xl=Is(t=>t(),150,!1);function Yi(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}Et&&(Et.remove(),Et=void 0,document.body.classList.remove(En))}function Um(t){var e;if(!(t<1)){for(let n=t;n<_i.length;n++)(e=_i[n])==null||e.remove(),_i[n]=void 0;for(const n of _i[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const _6=()=>M`<li class="menu-divider"></li>`,Y6=t=>M`<li class="menu-header">${t.label||"-"}</li>`,W6=(t,e)=>M`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>xl(()=>{const r=n.target.closest("li");Z6(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>xl(()=>Um(e+1))}"><span>${t.label}</span></a></li>`,X6=t=>M`<li><a @mouseup="${()=>{Yi(),t.callback()}}">${t.icon?te(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?M`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${te(o8).node[0]}</a>`:R}</li>`,q6=t=>M`<li><span class="disabled-item">${t.icon?te(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function jm(t,e=1){switch(t.type){case"divider":return _6();case"header":return Y6(t);default:return t.submenu?W6(t,e):t.callback?X6(t):q6(t)}}function Z6(t,e,n){Gm(t,e,n,"right-start"),e.classList.add("active")}function Gm(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{xl(()=>{})}),Xe(t.map(o=>jm(o,n)),i),Et.appendChild(i),Um(n),_i[n]=i,V6(e,i,{placement:r!=null?r:"right-start",middleware:[N6()]}).then(({x:o,y:s})=>{const a=i.querySelector(":scope > li");a&&(s-=a.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${s}px`})}function Hm(t,e,n){n!=null||(n="bottom-start"),Yi();const r=performance.now(),i=document.body;Et=document.createElement("div"),Et.classList.add("gs-context-menu-backdrop"),Et.addEventListener("click",Yi),Et.addEventListener("contextmenu",Yi),Et.addEventListener("mouseup",()=>{performance.now()-r>500&&Yi()},{once:!0}),i.appendChild(Et),document.body.classList.add(En),Gm(t.items,e,0,n)}function Qm(t,e){Hm(t,K6(e),"right-start"),e.preventDefault()}function K6(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const vl={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Hs="SAMPLE_ATTRIBUTE",Vm="SAMPLE_NAME",J6=/^attribute-(.*)$/;class _m extends yr{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(Hs,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(Vm,n=>Ym),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)}),pe([...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,F(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:ug,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(...dl(M`Attribute: <strong>${s.name}</strong>`,s,a,this.sampleView))}else o.push(...dl(M`Sample: <strong>${i.displayName}</strong>`,Ym,i.id,this.sampleView));Qm({items:o},r)}_setSamples(e){if(this.children.length)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;kg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Pe){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(e5());for(const e of this._getAttributeNames()){const n=this.addChildBySpec(this._createAttributeViewSpec(e));n.opacityFunction=r=>r*this._getAttributeOpacity(e)}Bg(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($f(i.map(o=>o.attributes[e]))){case"integer":case"number":r=vl.QUANTITATIVE;break;default:r=vl.NOMINAL}}return $6(e,F(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e.name.match(J6);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Hs,specifier:i},accessor:(o,s)=>s.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:M`<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)=>t5(c)?this.getAttributeInfo(a).scale(c):"transparent",s=M`<table class="attributes">${Object.entries(i.attributes).map(([a,c])=>M`<tr class="${e8({hovered:a==r})}"><th>${a}</th><td>${jg(c)}</td><td class="color" .style="background-color: ${o(a,c)}"></td></tr>`)}</table>`;return M`<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==Fu||i.type==zu)&&this.sampleView.getSamples().find(s=>s.attributes[i.name]==n)){const s=this.sampleView.actions.filterByNominal({attribute:{type:Hs,specifier:r},values:[n]}),a=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(a)&&!a.payload.remove&&a.payload.attribute.type==Hs&&a.payload.attribute.specifier==r&&a.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[sn.ActionCreators.undo(),s]:s),!0}}return!1}isPickingSupported(){return!1}}function $6(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==vl.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale}),r}function e5(){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 t5(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const Ym=Object.freeze({name:"sample",attribute:{type:Vm},accessor:t=>t,type:"identifier",scale:void 0});class n5 extends Ri{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:ho(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(),pe([...this.getAncestors()]).visit(s=>ki(s,"size"))}}function at(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 un(t){return!!t&&!!t[ne]}function ln(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)===f5}(t)||Array.isArray(t)||!!t[n1]||!!t.constructor[n1]||wl(t)||El(t))}function zn(t,e,n){n===void 0&&(n=!1),Er(t)===0?(n?Object.keys:Cr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function Er(t){var e=t[ne];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:wl(t)?2:El(t)?3:0}function Sr(t,e){return Er(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function r5(t,e){return Er(t)===2?t.get(e):t[e]}function Wm(t,e,n){var r=Er(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function Xm(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function wl(t){return u5&&t instanceof Map}function El(t){return l5&&t instanceof Set}function Rn(t){return t.o||t.t}function Sl(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=r1(t);delete e[ne];for(var n=Cr(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 Cl(t,e){return e===void 0&&(e=!1),Dl(t)||un(t)||!ln(t)||(Er(t)>1&&(t.set=t.add=t.clear=t.delete=i5),Object.freeze(t),e&&zn(t,function(n,r){return Cl(r,!0)},!0)),t}function i5(){at(2)}function Dl(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Rt(t){var e=Pl[t];return e||at(18,t),e}function o5(t,e){Pl[t]||(Pl[t]=e)}function Ml(){return Wi}function Il(t,e){e&&(Rt("Patches"),t.u=[],t.s=[],t.v=e)}function Qs(t){Tl(t),t.p.forEach(s5),t.p=null}function Tl(t){t===Wi&&(Wi=t.l)}function qm(t){return Wi={p:[],l:Wi,h:t,m:!0,_:0}}function s5(t){var e=t[ne];e.i===0||e.i===1?e.j():e.O=!0}function Nl(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Rt("ES5").S(e,t,r),r?(n[ne].P&&(Qs(e),at(4)),ln(t)&&(t=Vs(e,t),e.l||_s(e,t)),e.u&&Rt("Patches").M(n[ne],t,e.u,e.s)):t=Vs(e,n,[]),Qs(e),e.u&&e.v(e.u,e.s),t!==t1?t:void 0}function Vs(t,e,n){if(Dl(e))return e;var r=e[ne];if(!r)return zn(e,function(o,s){return Zm(t,r,e,o,s,n)},!0),e;if(r.A!==t)return e;if(!r.P)return _s(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=Sl(r.k):r.o;zn(r.i===3?new Set(i):i,function(o,s){return Zm(t,r,i,o,s,n)}),_s(t,i,!1),n&&t.u&&Rt("Patches").R(r,n,t.u,t.s)}return r.o}function Zm(t,e,n,r,i,o){if(un(i)){var s=Vs(t,i,o&&e&&e.i!==3&&!Sr(e.D,r)?o.concat(r):void 0);if(Wm(n,r,s),!un(s))return;t.m=!1}if(ln(i)&&!Dl(i)){if(!t.h.F&&t._<1)return;Vs(t,i),e&&e.A.l||_s(t,i)}}function _s(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Cl(e,n)}function Ll(t,e){var n=t[ne];return(n?Rn(n):t)[e]}function Km(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 fn(t){t.P||(t.P=!0,t.l&&fn(t.l))}function kl(t){t.o||(t.o=Sl(t.t))}function Ol(t,e,n){var r=wl(e)?Rt("MapSet").N(e,n):El(e)?Rt("MapSet").T(e,n):t.g?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Ml(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=a,u=Dr;s&&(c=[a],u=Ys);var f=Proxy.revocable(c,u),l=f.revoke,h=f.proxy;return a.k=h,a.j=l,h}(e,n):Rt("ES5").J(e,n);return(n?n.A:Ml()).p.push(r),r}function a5(t){return un(t)||at(22,t),function e(n){if(!ln(n))return n;var r,i=n[ne],o=Er(n);if(i){if(!i.P&&(i.i<4||!Rt("ES5").K(i)))return i.t;i.I=!0,r=Jm(n,o),i.I=!1}else r=Jm(n,o);return zn(r,function(s,a){i&&r5(i.t,s)===a||Wm(r,s,e(a))}),o===3?new Set(r):r}(t)}function Jm(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return Sl(t)}function c5(){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[ne];return Dr.get(c,o)},set:function(c){var u=this[ne];Dr.set(u,o,c)}},a}function e(o){for(var s=o.length-1;s>=0;s--){var a=o[s][ne];if(!a.P)switch(a.i){case 5:r(a)&&fn(a);break;case 4:n(a)&&fn(a)}}}function n(o){for(var s=o.t,a=o.k,c=Cr(a),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ne){var l=s[f];if(l===void 0&&!Sr(s,f))return!0;var h=a[f],d=h&&h[ne];if(d?d.t!==l:!Xm(h,l))return!0}}var p=!!s[ne];return c.length!==Cr(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={};o5("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=r1(l);delete p[ne];for(var g=Cr(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:Ml(),P:!1,I:!1,D:{},l:s,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ne,{value:u,writable:!0}),c},S:function(o,s,a){a?un(s)&&s[ne].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ne];if(f){var l=f.t,h=f.k,d=f.D,p=f.i;if(p===4)zn(h,function(v){v!==ne&&(l[v]!==void 0||Sr(l,v)?d[v]||c(h[v]):(d[v]=!0,fn(f)))}),zn(l,function(v){h[v]!==void 0||Sr(h,v)||(d[v]=!1,fn(f))});else if(p===5){if(r(f)&&(fn(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),x=0;x<y;x++)d[x]===void 0&&c(h[x])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var $m,Wi,Bl=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",u5=typeof Map!="undefined",l5=typeof Set!="undefined",e1=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",t1=Bl?Symbol.for("immer-nothing"):(($m={})["immer-nothing"]=!0,$m),n1=Bl?Symbol.for("immer-draftable"):"__$immer_draftable",ne=Bl?Symbol.for("immer-state"):"__$immer_state",f5=""+Object.prototype.constructor,Cr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,r1=Object.getOwnPropertyDescriptors||function(t){var e={};return Cr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Pl={},Dr={get:function(t,e){if(e===ne)return t;var n=Rn(t);if(!Sr(n,e))return function(i,o,s){var a,c=Km(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||!ln(r)?r:r===Ll(t.t,e)?(kl(t),t.o[e]=Ol(t.A.h,r,t)):r},has:function(t,e){return e in Rn(t)},ownKeys:function(t){return Reflect.ownKeys(Rn(t))},set:function(t,e,n){var r=Km(Rn(t),e);if(r==null?void 0:r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=Ll(Rn(t),e),o=i==null?void 0:i[ne];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(Xm(n,i)&&(n!==void 0||Sr(t.t,e)))return!0;kl(t),fn(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 Ll(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,kl(t),fn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=Rn(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){at(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){at(12)}},Ys={};zn(Dr,function(t,e){Ys[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Ys.deleteProperty=function(t,e){return Dr.deleteProperty.call(this,t[0],e)},Ys.set=function(t,e,n){return Dr.set.call(this,t[0],e,n,t[0])};var h5=function(){function t(n){var r=this;this.g=e1,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(x){var v;return(v=o).call.apply(v,[p,x].concat(m))})}}var u;if(typeof o!="function"&&at(6),s!==void 0&&typeof s!="function"&&at(7),ln(i)){var f=qm(r),l=Ol(r,i,void 0),h=!0;try{u=o(l),h=!1}finally{h?Qs(f):Tl(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(d){return Il(f,s),Nl(d,f)},function(d){throw Qs(f),d}):(Il(f,s),Nl(u,f))}if(!i||typeof i!="object")return(u=o(i))===t1?void 0:(u===void 0&&(u=i),r.F&&Cl(u,!0),u);at(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){ln(n)||at(8),un(n)&&(n=a5(n));var r=qm(this),i=Ol(this,n,void 0);return i[ne].C=!0,Tl(r),i},e.finishDraft=function(n,r){var i=n&&n[ne],o=i.A;return Il(o,r),Nl(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!e1&&at(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=Rt("Patches").$;return un(n)?s(n,r):this.produce(n,function(a){return s(a,r.slice(i+1))})},t}(),je=new h5,d5=je.produce;je.produceWithPatches.bind(je),je.setAutoFreeze.bind(je),je.setUseProxies.bind(je),je.applyPatches.bind(je),je.createDraft.bind(je),je.finishDraft.bind(je);var i1=d5;function p5(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o1(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 s1(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?o1(Object(n),!0).forEach(function(r){p5(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o1(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ce(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 a1=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Fl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Ws={INIT:"@@redux/INIT"+Fl(),REPLACE:"@@redux/REPLACE"+Fl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Fl()}};function g5(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 c1(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ce(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Ce(1));return n(c1)(t,e)}if(typeof t!="function")throw new Error(Ce(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(Ce(3));return o}function l(g){if(typeof g!="function")throw new Error(Ce(4));if(c)throw new Error(Ce(5));var m=!0;return u(),a.push(g),function(){if(!!m){if(c)throw new Error(Ce(6));m=!1,u();var x=a.indexOf(g);a.splice(x,1),s=null}}}function h(g){if(!g5(g))throw new Error(Ce(7));if(typeof g.type=="undefined")throw new Error(Ce(8));if(c)throw new Error(Ce(9));try{c=!0,o=i(o,g)}finally{c=!1}for(var m=s=a,y=0;y<m.length;y++){var x=m[y];x()}return g}function d(g){if(typeof g!="function")throw new Error(Ce(10));i=g,h({type:Ws.REPLACE})}function p(){var g,m=l;return g={subscribe:function(x){if(typeof x!="object"||x===null)throw new Error(Ce(11));function v(){x.next&&x.next(f())}v();var S=m(v);return{unsubscribe:S}}},g[a1]=function(){return this},g}return h({type:Ws.INIT}),r={dispatch:h,subscribe:l,getState:f,replaceReducer:d},r[a1]=p,r}function m5(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Ws.INIT});if(typeof r=="undefined")throw new Error(Ce(12));if(typeof n(void 0,{type:Ws.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Ce(13))})}function zl(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{m5(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(Ce(14));l[d]=m,f=f||m!==g}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Xs(){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 y5(){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(Ce(15))},s={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},a=e.map(function(c){return c(s)});return o=Xs.apply(void 0,a)(i.dispatch),s1(s1({},i),{},{dispatch:o})}}}function A5(t,e){return t===e}function b5(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 x5(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:A5,n=null,r=null;return function(){return b5(e,n,arguments)||(r=t.apply(null,arguments)),n=arguments,r}}function v5(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 w5(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=v5(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 E5=w5(x5);function u1(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 Rl=u1();Rl.withExtraArgument=u1;var S5=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 qs=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},C5=Object.defineProperty,l1=Object.getOwnPropertySymbols,D5=Object.prototype.hasOwnProperty,M5=Object.prototype.propertyIsEnumerable,f1=function(t,e,n){return e in t?C5(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Xi=function(t,e){for(var n in e||(e={}))D5.call(e,n)&&f1(t,n,e[n]);if(l1)for(var r=0,i=l1(e);r<i.length;r++){var n=i[r];M5.call(e,n)&&f1(t,n,e[n])}return t},I5=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Xs:Xs.apply(null,arguments)};function T5(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 N5=function(t){S5(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,qs([void 0],n[0].concat(this)))):new(e.bind.apply(e,qs([void 0],n.concat(this))))},e}(Array);function L5(t){return typeof t=="boolean"}function k5(){return function(e){return O5(e)}}function O5(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new N5;return n&&(L5(n)?r.push(Rl):r.push(Rl.withExtraArgument(n.extraArgument))),r}var B5=!0;function P5(t){var e=k5(),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(T5(i))d=zl(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=y5.apply(void 0,p),m=Xs;c&&(m=I5(Xi({trace:!B5},typeof c=="object"&&c)));var y=[g];Array.isArray(h)?y=qs([g],h):typeof h=="function"&&(y=h(y));var x=m.apply(void 0,y);return c1(d,f,x)}function h1(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 Xi(Xi({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 d1(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 F5(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?d1(e):[e,n,r],o=i[0],s=i[1],a=i[2],c=i1(t,function(){});return function(u,f){u===void 0&&(u=c);var l=qs([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(un(h)){var p=h,g=d(p,f);return typeof g=="undefined"?h:g}else{if(ln(h))return i1(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 z5(t,e){return t+"/"+e}function p1(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"?d1(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 x=r[y],v=z5(e,y),S,b;"reducer"in x?(S=x.reducer,b=x.prepare):S=x,h[y]=S,d[v]=S,p[y]=b?h1(v,b):h1(v)});var g=Xi(Xi({},s),d),m=F5(n,g,c,f);return{name:e,reducer:m,actions:p,caseReducers:h}}c5();function g1(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=eA(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 R5(t,e){const n=Qn(".3~r"),r=G5(j5(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=ho(r.length-1).reverse();g1(t,U5(e,r.slice(1,r.length-1)),o,o.map(i))}function U5(t,e){return r=>{const i=t(r);if(!(!ae(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(i<e[o])return o;return e.length}}}function j5(t,e,n){const r=rA(t.map(e).filter(i=>ae(i)&&!isNaN(i)));return n.map(i=>yf(r,i))}function G5(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 H5(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var Q5=[].forEach;function V5(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],s=[];Q5.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=H5),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 _5(t,e){const n=i=>i.copy().range(ho(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>ae(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 Y5(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 W5(t,e,n=!1){return V5(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const X5={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 q5(t,e,n,r){const i=X5[n];return t.filter(o=>i(e(o),r))}function Z5(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 K5(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const m1="setSamples",y1="sortBy",A1="retainFirstOfEach",b1="filterByNominal",x1="filterByQuantitative",v1="removeUndefined",w1="groupByNominal",E1="groupToQuartiles",Mr="sampleView";function J5(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function $5(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return p1({name:Mr,initialState:J5(),reducers:{[m1]:(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)=>F(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}},[y1]:(n,r)=>{qi(n,i=>W5(i,_5(e(r.payload,n),t(r.payload.attribute)),!1))},[A1]:(n,r)=>{qi(n,i=>Y5(i,e(r.payload,n)))},[x1]:(n,r)=>{qi(n,i=>q5(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[b1]:(n,r)=>{qi(n,i=>Z5(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[v1]:(n,r)=>{qi(n,i=>K5(i,e(r.payload,n)))},[w1]:(n,r)=>{S1(n,i=>g1(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[E1]:(n,r)=>{S1(n,i=>R5(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function qi(t,e){for(const n of C1(t))n.samples=e(n.samples)}function S1(t,e){for(const n of C1(t))e(n)}function C1(t){return D1(t).map(e=>pe(e))}function Ul(t){return t.provenance.present[Mr]}function D1(t){const e=[],n=[],r=i=>{if(e.push(i),I1(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function M1(t){return"samples"in t}function I1(t){return"groups"in t}function*T1(t){if(yield[t],I1(t))for(const e of t.groups)for(const n of T1(e))yield[t,...n]}const eI=Qn(".4"),tI={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function nI(t,e){if(!t.type.startsWith(Mr))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)||M`<em>${i}</em>`,s={attributeName:i};switch(t.type.substring(Mr.length+1)){case m1:return F(T({},s),{title:"The initial state",icon:n8});case y1:return F(T({},s),{title:"Sort by",provenanceTitle:M`Sort by ${o}`,icon:d8});case A1:return F(T({},s),{title:M`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:M`Retain first sample of each unique ${o}`,icon:c8});case b1:{const c=n.values,u=c.length>1?M`{${c.map((l,h)=>M`${h>0?", ":""}<strong>${l}</strong>`)}}`:M`<strong>${c[0]}</strong>`,f=l=>M`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?M`undefined ${l}`:M`${l} ${c.length>1?"in":M`<span class="operator">=</span>`} ${u}`}`;return F(T({},s),{title:f(M`<em>${i}</em>`),provenanceTitle:f(o),icon:n.remove?rl:Hi})}case x1:{const c=u=>M`Retain samples having ${u} <span class="operator">${tI[n.operator]}</span> <strong>${eI(n.operand)}</strong>`;return F(T({},s),{title:c(M`<em>${i}</em>`),provenanceTitle:c(o),icon:Hi})}case v1:return F(T({},s),{title:"Remove samples having missing attribute",provenanceTitle:M`Remove samples having missing ${o}`,icon:rl});case w1:return F(T({},s),{title:"Group by",provenanceTitle:M`Group by ${o}`,icon:Kg});case E1:return F(T({},s),{title:"Group to quartiles",provenanceTitle:M`Group to quartiles by ${o}`,icon:Kg});default:return F(T({},s),{title:JSON.stringify(t),icon:qg})}}class rI{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 Zs(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function N1(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=>pe(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=[];Es(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;Es(g.map(m=>p),Math.max(0,c[h].locSize.size-i),{offset:c[h].locSize.location+i}).forEach((m,y)=>{const{size:x,location:v}=m,S=x*.1*gg(15,22,x);m.location=v+S,m.size=x-2*S,u.push({key:g[y],locSize:m})})}function*f(){const h=[];for(const d of c){const p=d.key,g=pe(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 iI(t,e){return e.find(n=>Wp(n.locSize,t))}const L1="VALUE_AT_LOCUS",k1=10;class jl extends At{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 rI,this.child=n.createView(e.spec,this,"sample-facets"),this.summaryViews=new yr({vconcat:[]},n,this,"sampleSummaries"),this.child.visit(f=>{f instanceof Pe&&this.summaryViews.children.push(...f.sampleAggregateViews)}),this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new yr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},n,this,"sample-sidebar"),this.groupPanel=new n5(this),this.peripheryView.addChild(this.groupPanel),this.attributePanel=new _m(this),this.peripheryView.addChild(this.attributePanel),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Zs(f=>Ul(f).rootGroup,f=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Zs(f=>Ul(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(L1,f=>{const l=f.specifier,h=this.findDescendantByPath(l.path);let d;if(ae(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:M`<em class="attribute">${l.field}</em> <span class="viewTitle">(${h.spec.title||h.name})</span> at <span class="locus">${O1(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=Tu(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=$5(s);this.provenance.addReducer(a.name,a.reducer),this.provenance.addActionInfoSource(f=>nI(f,s)),this.actions=a.actions;const c=E5(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+k1:0,n=this.child.getEffectivePadding();return this.getPadding().add(new Je(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}=pM(Tg(this.spec.samples.data,this.getBaseUrl()),new oI);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()[Mr]}getLocations(){var e,n,r;if(!this._locations){if(!this._coords)return;const i=this.sampleHierarchy,o=D1(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=N1(o,{viewHeight:this._coords.height,groupSpacing:5,summaryHeight:a}),u=N1(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 x=0;x<g.length;x++){const v=g[x].key;y.push({key:v,locSize:DC(g[x].locSize,MC(m[x].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?oe(y)?g.key.attributeLabel=y:(Xe(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=iI(e,this.getLocations().samples);if(n)return this.sampleHierarchy.sampleData.entities[n.key]}getSummaryAt(e){const n=this.getLocations().summaries,r=n.findIndex(i=>Wp(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,F(T({},r),{sampleFacetRenderingOptions:{locSize:IC(a.locSize,o)},facetId:[a.key],clipRect:s}))}renderSummaries(e,n,r={}){r=F(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+Tu(-c,0,s.locSize.size-i):u};this.summaryViews.render(e,n.modify({y:a,height:i}),F(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=Es([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],n.width,{spacing:k1}),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=Bi(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(F(T({},n),{to:1,duration:500,easingFunction:fD}));else{const a=c=>(1-Math.pow(c*2-1,2))*.5;Ms(F(T({},n),{from:0,to:1,duration:300,easingFunction:a}))}}else Ms(F(T({},n),{to:0,duration:400,easingFunction:uD}))}_handleContextMenu(e,n){const r=n.uiEvent,i=e.normalizePoint(n.point.x,n.point.y).x,o=this.getScaleResolution("x").invertToComplex(i),s=vM(this.child).filter(u=>!["sample","x","x2"].includes(u.channel)).filter(u=>["rect","rule"].includes(u.view.getMarkType()));let a=[{label:`Locus: ${O1(o)}`,type:"header"},{type:"divider"}],c="";for(const[u,f]of s.entries()){let l=[...f.view.getAncestors()];l=l.slice(0,l.findIndex(g=>g===this));const h={path:l.map(g=>g.name).reverse(),field:f.field,locus:o},d=this.compositeAttributeInfoSource.getAttributeInfo({type:L1,specifier:h}),p=f.view.spec.title||f.view.spec.name;p!=c&&(u>0&&a.push({type:"divider"}),a.push({label:p,type:"header"}),c=p),a.push({label:f.field,submenu:dl(null,d,void 0,this)})}Qm({items:a},r)}getSampleFacetTexture(){return this.facetTexture}getDefaultResolution(e,n){switch(e){case"x":case"sample":return"shared";default:return"independent"}}}function O1(t){return!ae(t)&&"chrom"in t?tD(t):""+t}class oI extends se{constructor(){super();this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:sI(e)})}}function sI(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function aI(t){return"samples"in t&&ze(t.samples)&&"spec"in t&&ze(t.spec)}const cI=(t,e)=>e.some(n=>t instanceof n);let B1,P1;function uI(){return B1||(B1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function lI(){return P1||(P1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const F1=new WeakMap,Gl=new WeakMap,z1=new WeakMap,Hl=new WeakMap,Ql=new WeakMap;function fI(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",s)},o=()=>{n(hn(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&F1.set(n,t)}).catch(()=>{}),Ql.set(e,t),e}function hI(t){if(Gl.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)});Gl.set(t,e)}let Vl={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Gl.get(t);if(e==="objectStoreNames")return t.objectStoreNames||z1.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return hn(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 dI(t){Vl=t(Vl)}function pI(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(_l(this),e,...n);return z1.set(r,e.sort?e.sort():[e]),hn(r)}:lI().includes(t)?function(...e){return t.apply(_l(this),e),hn(F1.get(this))}:function(...e){return hn(t.apply(_l(this),e))}}function gI(t){return typeof t=="function"?pI(t):(t instanceof IDBTransaction&&hI(t),cI(t,uI())?new Proxy(t,Vl):t)}function hn(t){if(t instanceof IDBRequest)return fI(t);if(Hl.has(t))return Hl.get(t);const e=gI(t);return e!==t&&(Hl.set(t,e),Ql.set(e,t)),e}const _l=t=>Ql.get(t);function mI(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const s=indexedDB.open(t,e),a=hn(s);return r&&s.addEventListener("upgradeneeded",c=>{r(hn(s.result),c.oldVersion,c.newVersion,hn(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),a.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),a}const yI=["get","getKey","getAll","getAllKeys","count"],AI=["put","add","delete","clear"],Yl=new Map;function R1(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Yl.get(e))return Yl.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=AI.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||yI.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 Yl.set(e,o),o}dI(t=>F(T({},t),{get:(e,n,r)=>R1(e,n)||t.get(e,n,r),has:(e,n)=>!!R1(e,n)||t.has(e,n)}));class U1{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const Zi="bookmarks";class bI extends U1{constructor(e){super();this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=mI(e,1,{upgrade(n,r,i,o){n.createObjectStore(Zi,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(Zi,"readwrite");try{n?(await i.store.delete(n),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(Zi,e)}async getNames(){return(await this._getDB()).getAllKeys(Zi)}async get(e){return(await this._getDB()).get(Zi,e)}}/**
1832
+ */const UM=Cr(class extends ji{constructor(t){var e;if(super(t),t.type!==Nt.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.ct===void 0){this.ct=new Set;for(const r in e)this.ct.add(r);return this.render(e)}this.ct.forEach(r=>{e[r]==null&&(this.ct.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ct.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return be}}),Yg="close-dialog";function GM(){return new CustomEvent(Yg,{bubbles:!0})}function Er(t="default"){const e=document.createElement("div");e.classList.add("gs-modal"),t!="default"&&e.classList.add(t);const n=i=>{var o;switch(i.key){case"Escape":{e.querySelector(".btn-cancel").click(),i.stopPropagation();break}case"Enter":{if(((o=i.target)==null?void 0:o.tagName)=="TEXTAREA")return;e.querySelector(".btn-primary").click(),i.stopPropagation();break}}};e.addEventListener("keydown",n),Fe(D`<div class="backdrop"></div><div class="content"></div>`,e);const r=()=>{e.querySelector(".backdrop").addEventListener("transitionend",()=>e.remove()),e.classList.remove("visible"),document.body.classList.remove(Dn)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(Yg,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(Dn),{content:e.querySelector(".content"),close:r}}function ot(t,e={}){var i;const n=Er(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,s)=>{const a=()=>{n.close(),o(!0)},c=D`${r?D`<div class="modal-title">${r}</div>`:z}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?D`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:z} <button @click="${a}">${e.okLabel}</button></div>`;Fe(c,n.content)})}function HM(t,e){var n,r;Wt((n=t.scale)==null?void 0:n.type)?QM(t,e):tt((r=t.scale)==null?void 0:r.type)?VM(t,e):ot("Not implemented (yet).")}function QM(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Er(),o=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=new Set,a=p=>{n(e.actions.filterByNominal({values:r.domain().filter(d=>s.has(d)),attribute:t.attribute,remove:p})),i.close()},c=p=>{const d=p.target;d.checked?s.add(d.value):s.delete(d.value),h()},u=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!s.size}" @click="${()=>a(!1)}">${$(Ui).node[0]} Retain</button> <button ?disabled="${!s.size}" @click="${()=>a(!0)}">${$(Gu).node[0]} Remove</button></div>`,f=r,l=D`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(p=>D`<li><label class="checkbox"><span class="color" style="${UM({backgroundColor:f(p).toString()})}"></span> <input type="checkbox" .value="${p}"> ${p}</label></li>`)}</ul>`;function h(){Fe(D`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}h(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function VM(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Er(),s=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=p=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>a()}">${$(Ui).node[0]} Retain</button></div>`,u=p=>{r=p.target.value,h()},f=p=>{const d=p.target.value;i=d.length>0?+d:void 0,h()},l=D`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(YM).map(([p,d])=>D`<option .value="${p}">${d}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function h(){Fe(D`${s}<div class="modal-body">${l}</div>${c()}`,o.content)}h(),o.content.querySelector("select").focus()}const YM={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function WM(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[{operand:void 0,operator:"lt"}],i=Er(),o=D`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,s=h=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},a=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn-primary" ?disabled="${!_M(r)}" @click="${()=>s()}">${$(Gi).node[0]} Group</button></div>`,c=h=>{const p=h.target.value;r[0].operator=p,l()},u=h=>{const p=h.target.value;r[0].operand=p.length>0?+p:void 0,l()},f=D`<div class="gs-form-group"><label>Split into 2 groups using the threshold:</label><div class="threshold-flex"><select .value="${r[0].operator}" @change="${c}"><option value="lt">${"<"}</option><option value="lte">${"\u2264"}</option></select> <input .value="${""+r[0].operand}" type="number" placeholder="Numeric value" @input="${u}"></div></div>`;function l(){Fe(D`${o}<div class="modal-body">${f}</div>${a()}`,i.content)}l(),i.content.querySelector("select").focus()}function _M(t){return t[0].operator&&typeof t[0].operand=="number"}function Ku(t,e,n,r){var l;const i=r.actions,o=e.attribute,s=r.provenance.storeHelper.getDispatcher(),a=[];t&&a.push({label:t,type:"header"});const c=h=>{const p=r.provenance.getActionInfo(h);return{label:p.title,icon:p.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})),a.push({icon:Gi,label:"Group by thresholds...",callback:()=>WM(e,r)}),XM(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:Ui,label:"Advanced filter...",callback:()=>HM(e,r)}),a}function XM(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function ZM(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var rn={},jn={};Object.defineProperty(jn,"__esModule",{value:!0}),jn.ActionCreators=jn.ActionTypes=void 0;var Un={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"};jn.ActionTypes=Un;var qM={undo:function(){return{type:Un.UNDO}},redo:function(){return{type:Un.REDO}},jumpToFuture:function(e){return{type:Un.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:Un.JUMP_TO_PAST,index:e}},jump:function(e){return{type:Un.JUMP,index:e}},clearHistory:function(){return{type:Un.CLEAR_HISTORY}}};jn.ActionCreators=qM;var yt={};Object.defineProperty(yt,"__esModule",{value:!0}),yt.parseActions=Ts,yt.isHistory=KM,yt.includeAction=JM,yt.excludeAction=$M,yt.combineFilters=e8,yt.groupByActionTypes=t8,yt.newHistory=n8;function Ts(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function KM(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function JM(t){var e=Ts(t);return function(n){return e.indexOf(n.type)>=0}}function $M(t){var e=Ts(t);return function(n){return e.indexOf(n.type)<0}}function e8(){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 t8(t){var e=Ts(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function n8(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 Wg={},Dr={};Object.defineProperty(Dr,"__esModule",{value:!0}),Dr.set=f8,Dr.start=c8,Dr.end=u8,Dr.log=l8;function At(t){return o8(t)||i8(t)||r8()}function r8(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function i8(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function o8(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 Is,qe,Ju={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function s8(){qe={header:[],prev:[],action:[],next:[],msgs:[]}}function a8(){var t=qe,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,At(e)),(a=console).log.apply(a,At(n)),(c=console).log.apply(c,At(i)),(u=console).log.apply(u,At(r)),(f=console).log.apply(f,At(o)),console.groupEnd()}else{var l,h,p,d,g;(l=console).log.apply(l,At(e)),(h=console).log.apply(h,At(n)),(p=console).log.apply(p,At(i)),(d=console).log.apply(d,At(r)),(g=console).log.apply(g,At(o))}}function $u(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function c8(t,e){s8(),Is&&(console.group?(qe.header=["%credux-undo","font-style: italic","action",t.type],qe.action=$u("action",Ju.action,t),qe.prev=$u("prev history",Ju.prevState,e)):(qe.header=["redux-undo action",t.type],qe.action=["action",t],qe.prev=["prev history",e]))}function u8(t){Is&&(console.group?qe.next=$u("next history",Ju.nextState,t):qe.next=["next history",t],a8())}function l8(){if(Is){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];qe.msgs=qe.msgs.concat([].concat(e,[`
1833
+ `]))}}function f8(t){Is=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=C;var n=s(Dr),r=jn,i=yt;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 N in b)if(Object.prototype.hasOwnProperty.call(b,N)){var L=E?Object.getOwnPropertyDescriptor(b,N):null;L&&(L.get||L.set)?Object.defineProperty(x,N,L):x[N]=b[N]}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(N){return Object.getOwnPropertyDescriptor(b,N).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 p(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 p(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 d(b,A){var x=(0,i.newHistory)([],b,[]);return A&&(x._latestUnfiltered=null),x}function g(b,A,x,E){var N=b.past.length+1;n.log("inserting",A),n.log("new free: ",x-N);var L=b.past,I=b._latestUnfiltered,O=x&&x<=N,q=L.slice(O?1:0),Z=I!=null?[].concat(f(q),[I]):q;return(0,i.newHistory)(Z,A,[],E)}function m(b,A){if(A<0||A>=b.future.length)return b;var x=b.past,E=b.future,N=b._latestUnfiltered,L=[].concat(f(x),[N],f(E.slice(0,A))),I=E[A],O=E.slice(A+1);return(0,i.newHistory)(L,I,O)}function y(b,A){if(A<0||A>=b.past.length)return b;var x=b.past,E=b.future,N=b._latestUnfiltered,L=x.slice(0,A),I=[].concat(f(x.slice(A+1)),[N],f(E)),O=x[A];return(0,i.newHistory)(L,O,I)}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 C(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(L,I){for(var O=arguments.length,q=new Array(O>2?O-2:0),Z=2;Z<O;Z++)q[Z-2]=arguments[Z];return c({},L,{present:b.apply(void 0,[L.present,I].concat(q))})}:function(L){return L},N;return function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:N,I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(I,L);for(var O=L,q=arguments.length,Z=new Array(q>2?q-2:0),ye=2;ye<q;ye++)Z[ye-2]=arguments[ye];if(!N)if(n.log("history is uninitialized"),L===void 0){var Ke={type:"@@redux-undo/CREATE_HISTORY"},fn=b.apply(void 0,[L,Ke].concat(Z));return O=d(fn,x.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(O),O}else(0,i.isHistory)(L)?(O=N=x.ignoreInitialState?L:(0,i.newHistory)(L.past,L.present,L.future),n.log("initialHistory initialized: initialState is a history",N)):(O=N=d(L,x.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",N));var G;switch(I.type){case void 0:return O;case x.undoType:return G=v(O,-1),n.log("perform undo"),n.end(G),E.apply(void 0,[G,I].concat(Z));case x.redoType:return G=v(O,1),n.log("perform redo"),n.end(G),E.apply(void 0,[G,I].concat(Z));case x.jumpToPastType:return G=y(O,I.index),n.log("perform jumpToPast to ".concat(I.index)),n.end(G),E.apply(void 0,[G,I].concat(Z));case x.jumpToFutureType:return G=m(O,I.index),n.log("perform jumpToFuture to ".concat(I.index)),n.end(G),E.apply(void 0,[G,I].concat(Z));case x.jumpType:return G=v(O,I.index),n.log("perform jump to ".concat(I.index)),n.end(G),E.apply(void 0,[G,I].concat(Z));case w(I.type,x.clearHistoryType):return G=d(O.present,x.ignoreInitialState),n.log("perform clearHistory"),n.end(G),E.apply(void 0,[G,I].concat(Z));default:if(G=b.apply(void 0,[O.present,I].concat(Z)),x.initTypes.some(function(jl){return jl===I.type}))return n.log("reset history due to init action"),n.end(N),N;if(O._latestUnfiltered===G)return O;var je=typeof x.filter=="function"&&!x.filter(I,G,O);if(je){var to=(0,i.newHistory)(O.past,G,O.future,O.group);return x.syncFilter||(to._latestUnfiltered=O._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(to),to}var no=x.groupBy(I,G,O);if(no!=null&&no===O.group){var qs=(0,i.newHistory)(O.past,G,O.future,O.group);return n.log("groupBy grouped the action with the previous action"),n.end(qs),qs}return O=g(O,G,x.limit,no),n.log("inserted new state into history"),n.end(O),O}}}})(Wg),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=jn,n=yt,r=i(Wg);function i(o){return o&&o.__esModule?o:{default:o}}}(rn);var h8=ZM(rn);function el(t){return t.split("-")[0]}function _g(t){return t.split("-")[1]}function Xg(t){return["top","bottom"].includes(el(t))?"x":"y"}function Zg(t){return t==="y"?"height":"width"}function qg(t){let{reference:e,floating:n,placement:r}=t;const i=e.x+e.width/2-n.width/2,o=e.y+e.height/2-n.height/2;let s;switch(el(r)){case"top":s={x:i,y:e.y-n.height};break;case"bottom":s={x:i,y:e.y+e.height};break;case"right":s={x:e.x+e.width,y:o};break;case"left":s={x:e.x-n.width,y:o};break;default:s={x:e.x,y:e.y}}const a=Xg(r),c=Zg(a);switch(_g(r)){case"start":s[a]=s[a]-(e[c]/2-n[c]/2);break;case"end":s[a]=s[a]+(e[c]/2-n[c]/2);break}return s}const d8=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:s}=n;let a=await s.getElementRects({reference:t,floating:e,strategy:i}),{x:c,y:u}=qg(F(T({},a),{placement:r})),f=r,l={};for(let h=0;h<o.length;h++){const{name:p,fn:d}=o[h],{x:g,y:m,data:y,reset:v}=await d({x:c,y:u,initialPlacement:r,placement:f,strategy:i,middlewareData:l,rects:a,platform:s,elements:{reference:t,floating:e}});if(c=g!=null?g:c,u=m!=null?m:u,l=F(T({},l),{[p]:y!=null?y:{}}),v){typeof v=="object"&&(v.placement&&(f=v.placement),v.rects&&(a=v.rects===!0?await s.getElementRects({reference:t,floating:e,strategy:i}):v.rects),{x:c,y:u}=qg(F(T({},a),{placement:f}))),h=-1;continue}}return{x:c,y:u,placement:f,strategy:i,middlewareData:l}};function p8(t){return T({top:0,right:0,bottom:0,left:0},t)}function g8(t){return typeof t!="number"?p8(t):{top:t,right:t,bottom:t,left:t}}function tl(t){return F(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function m8(t,e){e===void 0&&(e={});const{x:n,y:r,platform:i,rects:o,elements:s,strategy:a}=t,{boundary:c="clippingParents",rootBoundary:u="viewport",elementContext:f="floating",altBoundary:l=!1,padding:h=0}=e,p=g8(h),g=s[l?f==="floating"?"reference":"floating":f],m=await i.getClippingClientRect({element:await i.isElement(g)?g:g.contextElement||await i.getDocumentElement({element:s.floating}),boundary:c,rootBoundary:u}),y=tl(await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:f==="floating"?F(T({},o.floating),{x:n,y:r}):o.reference,offsetParent:await i.getOffsetParent({element:s.floating}),strategy:a}));return{top:m.top-y.top+p.top,bottom:y.bottom-m.bottom+p.bottom,left:m.left-y.left+p.left,right:y.right-m.right+p.right}}const y8={left:"right",right:"left",bottom:"top",top:"bottom"};function Ns(t){return t.replace(/left|right|bottom|top/g,e=>y8[e])}function A8(t,e){const n=_g(t)==="start",r=Xg(t),i=Zg(r);let o=r==="x"?n?"right":"left":n?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=Ns(o)),{main:o,cross:Ns(o)}}const b8={start:"end",end:"start"};function Kg(t){return t.replace(/start|end/g,e=>b8[e])}function v8(t){const e=Ns(t);return[Kg(t),e,Kg(e)]}const x8=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n,r;const{placement:i,middlewareData:o,rects:s,initialPlacement:a}=e;if((n=o.flip)!=null&&n.skip)return{};const E=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:f,fallbackStrategy:l="bestFit",flipAlignment:h=!0}=E,p=F1(E,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),d=el(i),m=f||(d===a||!h?[Ns(a)]:v8(a)),y=[a,...m],v=await m8(e,p),w=[];let C=((r=o.flip)==null?void 0:r.overflows)||[];if(c&&w.push(v[d]),u){const{main:N,cross:L}=A8(i,s);w.push(v[N],v[L])}if(C=[...C,{placement:i,overflows:w}],!w.every(N=>N<=0)){var b,A;const N=((b=(A=o.flip)==null?void 0:A.index)!=null?b:0)+1,L=y[N];if(L)return{data:{index:N,overflows:C},reset:{placement:L}};let I="bottom";switch(l){case"bestFit":{var x;const O=(x=C.slice().sort((q,Z)=>q.overflows.filter(ye=>ye>0).reduce((ye,Ke)=>ye+Ke,0)-Z.overflows.filter(ye=>ye>0).reduce((ye,Ke)=>ye+Ke,0))[0])==null?void 0:x.placement;O&&(I=O);break}case"initialPlacement":I=a;break}return{data:{skip:!0},reset:{placement:I}}}return{}}}};function nl(t){return(t==null?void 0:t.toString())==="[object Window]"}function on(t){if(t==null)return window;if(!nl(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function ks(t){return on(t).getComputedStyle(t)}function Lt(t){return nl(t)?"":t?(t.nodeName||"").toLowerCase():""}function Ot(t){return t instanceof on(t).HTMLElement}function Bs(t){return t instanceof on(t).Element}function w8(t){return t instanceof on(t).Node}function Jg(t){const e=on(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Ls(t){const{overflow:e,overflowX:n,overflowY:r}=ks(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function C8(t){return["table","td","th"].includes(Lt(t))}function $g(t){const e=navigator.userAgent.toLowerCase().includes("firefox"),n=ks(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}const em=Math.min,Hi=Math.max,Os=Math.round;function Mr(t,e){e===void 0&&(e=!1);const n=t.getBoundingClientRect();let r=1,i=1;return e&&Ot(t)&&(r=t.offsetWidth>0&&Os(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&Os(n.height)/t.offsetHeight||1),{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function sn(t){return((w8(t)?t.ownerDocument:t.document)||window.document).documentElement}function Ps(t){return nl(t)?{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function tm(t){return Mr(sn(t)).left+Ps(t).scrollLeft}function S8(t){const e=Mr(t);return Os(e.width)!==t.offsetWidth||Os(e.height)!==t.offsetHeight}function E8(t,e,n){const r=Ot(e),i=sn(e),o=Mr(t,r&&S8(e));let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(r||!r&&n!=="fixed")if((Lt(e)!=="body"||Ls(i))&&(s=Ps(e)),Ot(e)){const c=Mr(e,!0);a.x=c.x+e.clientLeft,a.y=c.y+e.clientTop}else i&&(a.x=tm(i));return{x:o.left+s.scrollLeft-a.x,y:o.top+s.scrollTop-a.y,width:o.width,height:o.height}}function Fs(t){return Lt(t)==="html"?t:t.assignedSlot||t.parentNode||(Jg(t)?t.host:null)||sn(t)}function nm(t){return!Ot(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function D8(t){let e=Fs(t);for(;Ot(e)&&!["html","body"].includes(Lt(e));){if($g(e))return e;e=e.parentNode}return null}function rl(t){const e=on(t);let n=nm(t);for(;n&&C8(n)&&getComputedStyle(n).position==="static";)n=nm(n);return n&&(Lt(n)==="html"||Lt(n)==="body"&&getComputedStyle(n).position==="static"&&!$g(n))?e:n||D8(t)||e}function rm(t){return{width:t.offsetWidth,height:t.offsetHeight}}function M8(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=Ot(n),o=sn(n);if(n===o)return e;let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if((i||!i&&r!=="fixed")&&((Lt(n)!=="body"||Ls(o))&&(s=Ps(n)),Ot(n))){const c=Mr(n,!0);a.x=c.x+n.clientLeft,a.y=c.y+n.clientTop}return F(T({},e),{x:e.x-s.scrollLeft+a.x,y:e.y-s.scrollTop+a.y})}function T8(t){const e=on(t),n=sn(t),r=e.visualViewport;let i=n.clientWidth,o=n.clientHeight,s=0,a=0;return r&&(i=r.width,o=r.height,Math.abs(e.innerWidth/r.scale-r.width)<.01&&(s=r.offsetLeft,a=r.offsetTop)),{width:i,height:o,x:s,y:a}}function I8(t){var e;const n=sn(t),r=Ps(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Hi(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=Hi(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let a=-r.scrollLeft+tm(t);const c=-r.scrollTop;return ks(i||n).direction==="rtl"&&(a+=Hi(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:c}}function im(t){return["html","body","#document"].includes(Lt(t))?t.ownerDocument.body:Ot(t)&&Ls(t)?t:im(Fs(t))}function om(t,e){var n;e===void 0&&(e=[]);const r=im(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=on(r),s=i?[o].concat(o.visualViewport||[],Ls(r)?r:[]):r,a=e.concat(s);return i?a:a.concat(om(Fs(s)))}function N8(t,e){const n=e.getRootNode==null?void 0:e.getRootNode();if(t.contains(e))return!0;if(n&&Jg(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function k8(t){const e=Mr(t),n=e.top+t.clientTop,r=e.left+t.clientLeft;return{top:n,left:r,x:r,y:n,right:r+t.clientWidth,bottom:n+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function sm(t,e){return e==="viewport"?tl(T8(t)):Bs(e)?k8(e):tl(I8(sn(t)))}function B8(t){const e=om(Fs(t)),r=["absolute","fixed"].includes(ks(t).position)&&Ot(t)?rl(t):t;return Bs(r)?e.filter(i=>Bs(i)&&N8(i,r)&&Lt(i)!=="body"):[]}function L8(t){let{element:e,boundary:n,rootBoundary:r}=t;const o=[...n==="clippingParents"?B8(e):[].concat(n),r],s=o[0],a=o.reduce((c,u)=>{const f=sm(e,u);return c.top=Hi(f.top,c.top),c.right=em(f.right,c.right),c.bottom=em(f.bottom,c.bottom),c.left=Hi(f.left,c.left),c},sm(e,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}const O8={getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:E8(e,rl(n),r),floating:F(T({},rm(n)),{x:0,y:0})}},convertOffsetParentRelativeRectToViewportRelativeRect:t=>M8(t),getOffsetParent:t=>{let{element:e}=t;return rl(e)},isElement:t=>Bs(t),getDocumentElement:t=>{let{element:e}=t;return sn(e)},getClippingClientRect:t=>L8(t),getDimensions:t=>{let{element:e}=t;return rm(e)},getClientRects:t=>{let{element:e}=t;return e.getClientRects()}},P8=(t,e,n)=>d8(t,e,T({platform:O8},n));let bt;const Qi=[],il=Cs(t=>t(),150,!1);function Vi(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}bt&&(bt.remove(),bt=void 0,document.body.classList.remove(Dn))}function am(t){var e;if(!(t<1)){for(let n=t;n<Qi.length;n++)(e=Qi[n])==null||e.remove(),Qi[n]=void 0;for(const n of Qi[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const F8=()=>D`<li class="menu-divider"></li>`,z8=t=>D`<li class="menu-header">${t.label||"-"}</li>`,R8=(t,e)=>D`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>il(()=>{const r=n.target.closest("li");G8(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>il(()=>am(e+1))}"><span>${t.label}</span></a></li>`,j8=t=>D`<li><a @mouseup="${()=>{Vi(),t.callback()}}">${t.icon?$(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${$(XD).node[0]}</a>`:z}</li>`,U8=t=>D`<li><span class="disabled-item">${t.icon?$(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function cm(t,e=1){switch(t.type){case"divider":return F8();case"header":return z8(t);default:return t.submenu?R8(t,e):t.callback?j8(t):U8(t)}}function G8(t,e,n){um(t,e,n,"right-start"),e.classList.add("active")}function um(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{il(()=>{})}),Fe(t.map(o=>cm(o,n)),i),bt.appendChild(i),am(n),Qi[n]=i,P8(e,i,{placement:r!=null?r:"right-start",middleware:[x8()]}).then(({x:o,y:s})=>{const a=i.querySelector(":scope > li");a&&(s-=a.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${s}px`})}function lm(t,e,n){n!=null||(n="bottom-start"),Vi();const r=performance.now(),i=document.body;bt=document.createElement("div"),bt.classList.add("gs-context-menu-backdrop"),bt.addEventListener("click",Vi),bt.addEventListener("contextmenu",Vi),bt.addEventListener("mouseup",()=>{performance.now()-r>500&&Vi()},{once:!0}),i.appendChild(bt),document.body.classList.add(Dn),um(t.items,e,0,n)}function fm(t,e){lm(t,H8(e),"right-start"),e.preventDefault()}function H8(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const ol={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},zs="SAMPLE_ATTRIBUTE",hm="SAMPLE_NAME",Q8=/^attribute-(.*)$/;class dm extends vr{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(zs,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(hm,n=>pm),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)}),le([...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,F(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:Np,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(...Ku(D`Attribute: <strong>${s.name}</strong>`,s,a,this.sampleView))}else o.push(...Ku(D`Sample: <strong>${i.displayName}</strong>`,pm,i.id,this.sampleView));fm({items:o},r)}_setSamples(e){if(this.children.length)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;eg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Le){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(Y8());for(const e of this._getAttributeNames()){const n=this.addChildBySpec(this._createAttributeViewSpec(e));n.opacityFunction=r=>r*this._getAttributeOpacity(e)}ng(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(zf(i.map(o=>o.attributes[e]))){case"integer":case"number":r=ol.QUANTITATIVE;break;default:r=ol.NOMINAL}}return V8(e,F(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e.name.match(Q8);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:zs,specifier:i},accessor:(o,s)=>s.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:D`<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)=>W8(c)?this.getAttributeInfo(a).scale(c):"transparent",s=D`<table class="attributes">${Object.entries(i.attributes).map(([a,c])=>D`<tr class="${QD({hovered:a==r})}"><th>${a}</th><td>${cg(c)}</td><td class="color" .style="background-color: ${o(a,c)}"></td></tr>`)}</table>`;return D`<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==xu||i.type==wu)&&this.sampleView.getSamples().find(s=>s.attributes[i.name]==n)){const s=this.sampleView.actions.filterByNominal({attribute:{type:zs,specifier:r},values:[n]}),a=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(a)&&!a.payload.remove&&a.payload.attribute.type==zs&&a.payload.attribute.specifier==r&&a.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[rn.ActionCreators.undo(),s]:s),!0}}return!1}isPickingSupported(){return!1}}function V8(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==ol.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale}),r}function Y8(){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 W8(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const pm=Object.freeze({name:"sample",attribute:{type:hm},accessor:t=>t,type:"identifier",scale:void 0});class _8 extends zi{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:Ft(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&&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(),le([...this.getAncestors()]).visit(s=>ki(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 an(t){return!!t&&!!t[ne]}function cn(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)===n6}(t)||Array.isArray(t)||!!t[Sm]||!!t.constructor[Sm]||sl(t)||al(t))}function Gn(t,e,n){n===void 0&&(n=!1),Tr(t)===0?(n?Object.keys:Nr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function Tr(t){var e=t[ne];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:sl(t)?2:al(t)?3:0}function Ir(t,e){return Tr(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function X8(t,e){return Tr(t)===2?t.get(e):t[e]}function gm(t,e,n){var r=Tr(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function mm(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function sl(t){return e6&&t instanceof Map}function al(t){return t6&&t instanceof Set}function Hn(t){return t.o||t.t}function cl(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=Em(t);delete e[ne];for(var n=Nr(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 ul(t,e){return e===void 0&&(e=!1),ll(t)||an(t)||!cn(t)||(Tr(t)>1&&(t.set=t.add=t.clear=t.delete=Z8),Object.freeze(t),e&&Gn(t,function(n,r){return ul(r,!0)},!0)),t}function Z8(){st(2)}function ll(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function vt(t){var e=bl[t];return e||st(18,t),e}function q8(t,e){bl[t]||(bl[t]=e)}function fl(){return Yi}function hl(t,e){e&&(vt("Patches"),t.u=[],t.s=[],t.v=e)}function Rs(t){dl(t),t.p.forEach(K8),t.p=null}function dl(t){t===Yi&&(Yi=t.l)}function ym(t){return Yi={p:[],l:Yi,h:t,m:!0,_:0}}function K8(t){var e=t[ne];e.i===0||e.i===1?e.j():e.O=!0}function pl(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||vt("ES5").S(e,t,r),r?(n[ne].P&&(Rs(e),st(4)),cn(t)&&(t=js(e,t),e.l||Us(e,t)),e.u&&vt("Patches").M(n[ne].t,t,e.u,e.s)):t=js(e,n,[]),Rs(e),e.u&&e.v(e.u,e.s),t!==Cm?t:void 0}function js(t,e,n){if(ll(e))return e;var r=e[ne];if(!r)return Gn(e,function(o,s){return Am(t,r,e,o,s,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Us(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=cl(r.k):r.o;Gn(r.i===3?new Set(i):i,function(o,s){return Am(t,r,i,o,s,n)}),Us(t,i,!1),n&&t.u&&vt("Patches").R(r,n,t.u,t.s)}return r.o}function Am(t,e,n,r,i,o){if(an(i)){var s=js(t,i,o&&e&&e.i!==3&&!Ir(e.D,r)?o.concat(r):void 0);if(gm(n,r,s),!an(s))return;t.m=!1}if(cn(i)&&!ll(i)){if(!t.h.F&&t._<1)return;js(t,i),e&&e.A.l||Us(t,i)}}function Us(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&ul(e,n)}function gl(t,e){var n=t[ne];return(n?Hn(n):t)[e]}function bm(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 un(t){t.P||(t.P=!0,t.l&&un(t.l))}function ml(t){t.o||(t.o=cl(t.t))}function yl(t,e,n){var r=sl(e)?vt("MapSet").N(e,n):al(e)?vt("MapSet").T(e,n):t.g?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:fl(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=a,u=Wi;s&&(c=[a],u=_i);var f=Proxy.revocable(c,u),l=f.revoke,h=f.proxy;return a.k=h,a.j=l,h}(e,n):vt("ES5").J(e,n);return(n?n.A:fl()).p.push(r),r}function J8(t){return an(t)||st(22,t),function e(n){if(!cn(n))return n;var r,i=n[ne],o=Tr(n);if(i){if(!i.P&&(i.i<4||!vt("ES5").K(i)))return i.t;i.I=!0,r=vm(n,o),i.I=!1}else r=vm(n,o);return Gn(r,function(s,a){i&&X8(i.t,s)===a||gm(r,s,e(a))}),o===3?new Set(r):r}(t)}function vm(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return cl(t)}function $8(){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[ne];return Wi.get(c,o)},set:function(c){var u=this[ne];Wi.set(u,o,c)}},a}function e(o){for(var s=o.length-1;s>=0;s--){var a=o[s][ne];if(!a.P)switch(a.i){case 5:r(a)&&un(a);break;case 4:n(a)&&un(a)}}}function n(o){for(var s=o.t,a=o.k,c=Nr(a),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ne){var l=s[f];if(l===void 0&&!Ir(s,f))return!0;var h=a[f],p=h&&h[ne];if(p?p.t!==l:!mm(h,l))return!0}}var d=!!s[ne];return c.length!==Nr(s).length+(d?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);if(a&&!a.get)return!0;for(var c=0;c<s.length;c++)if(!s.hasOwnProperty(c))return!0;return!1}var i={};q8("ES5",{J:function(o,s){var a=Array.isArray(o),c=function(f,l){if(f){for(var h=Array(l.length),p=0;p<l.length;p++)Object.defineProperty(h,""+p,t(p,!0));return h}var d=Em(l);delete d[ne];for(var g=Nr(d),m=0;m<g.length;m++){var y=g[m];d[y]=t(y,f||!!d[y].enumerable)}return Object.create(Object.getPrototypeOf(l),d)}(a,o),u={i:a?5:4,A:s?s.A:fl(),P:!1,I:!1,D:{},l:s,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ne,{value:u,writable:!0}),c},S:function(o,s,a){a?an(s)&&s[ne].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ne];if(f){var l=f.t,h=f.k,p=f.D,d=f.i;if(d===4)Gn(h,function(w){w!==ne&&(l[w]!==void 0||Ir(l,w)?p[w]||c(h[w]):(p[w]=!0,un(f)))}),Gn(l,function(w){h[w]!==void 0||Ir(h,w)||(p[w]=!1,un(f))});else if(d===5){if(r(f)&&(un(f),p.length=!0),h.length<l.length)for(var g=h.length;g<l.length;g++)p[g]=!1;else for(var m=l.length;m<h.length;m++)p[m]=!0;for(var y=Math.min(h.length,l.length),v=0;v<y;v++)h.hasOwnProperty(v)||(p[v]=!0),p[v]===void 0&&c(h[v])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var xm,Yi,Al=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",e6=typeof Map!="undefined",t6=typeof Set!="undefined",wm=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",Cm=Al?Symbol.for("immer-nothing"):((xm={})["immer-nothing"]=!0,xm),Sm=Al?Symbol.for("immer-draftable"):"__$immer_draftable",ne=Al?Symbol.for("immer-state"):"__$immer_state",n6=""+Object.prototype.constructor,Nr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,Em=Object.getOwnPropertyDescriptors||function(t){var e={};return Nr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},bl={},Wi={get:function(t,e){if(e===ne)return t;var n=Hn(t);if(!Ir(n,e))return function(i,o,s){var a,c=bm(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||!cn(r)?r:r===gl(t.t,e)?(ml(t),t.o[e]=yl(t.A.h,r,t)):r},has:function(t,e){return e in Hn(t)},ownKeys:function(t){return Reflect.ownKeys(Hn(t))},set:function(t,e,n){var r=bm(Hn(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=gl(Hn(t),e),o=i==null?void 0:i[ne];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(mm(n,i)&&(n!==void 0||Ir(t.t,e)))return!0;ml(t),un(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 gl(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,ml(t),un(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=Hn(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)}},_i={};Gn(Wi,function(t,e){_i[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),_i.deleteProperty=function(t,e){return _i.set.call(this,t,e,void 0)},_i.set=function(t,e,n){return Wi.set.call(this,t[0],e,n,t[0])};var r6=function(){function t(n){var r=this;this.g=wm,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(g){var m=this;g===void 0&&(g=a);for(var y=arguments.length,v=Array(y>1?y-1:0),w=1;w<y;w++)v[w-1]=arguments[w];return c.produce(g,function(C){var b;return(b=o).call.apply(b,[m,C].concat(v))})}}var u;if(typeof o!="function"&&st(6),s!==void 0&&typeof s!="function"&&st(7),cn(i)){var f=ym(r),l=yl(r,i,void 0),h=!0;try{u=o(l),h=!1}finally{h?Rs(f):dl(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(g){return hl(f,s),pl(g,f)},function(g){throw Rs(f),g}):(hl(f,s),pl(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===Cm&&(u=void 0),r.F&&ul(u,!0),s){var p=[],d=[];vt("Patches").M(i,u,p,d),s(p,d)}return u}st(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),h=1;h<f;h++)l[h-1]=arguments[h];return r.produceWithPatches(u,function(p){return i.apply(void 0,[p].concat(l))})};var s,a,c=r.produce(i,o,function(u,f){s=u,a=f});return typeof Promise!="undefined"&&c instanceof Promise?c.then(function(u){return[u,s,a]}):[c,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){cn(n)||st(8),an(n)&&(n=J8(n));var r=ym(this),i=yl(this,n,void 0);return i[ne].C=!0,dl(r),i},e.finishDraft=function(n,r){var i=n&&n[ne],o=i.A;return hl(o,r),pl(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!wm&&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}}i>-1&&(r=r.slice(i+1));var s=vt("Patches").$;return an(n)?s(n,r):this.produce(n,function(a){return s(a,r)})},t}(),Re=new r6,i6=Re.produce;Re.produceWithPatches.bind(Re),Re.setAutoFreeze.bind(Re),Re.setUseProxies.bind(Re),Re.applyPatches.bind(Re),Re.createDraft.bind(Re),Re.finishDraft.bind(Re);var Gs=i6;function o6(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 Mm(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){o6(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 Se(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 Tm=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),vl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Hs={INIT:"@@redux/INIT"+vl(),REPLACE:"@@redux/REPLACE"+vl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+vl()}};function s6(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 Im(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Se(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Se(1));return n(Im)(t,e)}if(typeof t!="function")throw new Error(Se(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(Se(3));return o}function l(g){if(typeof g!="function")throw new Error(Se(4));if(c)throw new Error(Se(5));var m=!0;return u(),a.push(g),function(){if(!!m){if(c)throw new Error(Se(6));m=!1,u();var v=a.indexOf(g);a.splice(v,1),s=null}}}function h(g){if(!s6(g))throw new Error(Se(7));if(typeof g.type=="undefined")throw new Error(Se(8));if(c)throw new Error(Se(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 p(g){if(typeof g!="function")throw new Error(Se(10));i=g,h({type:Hs.REPLACE})}function d(){var g,m=l;return g={subscribe:function(v){if(typeof v!="object"||v===null)throw new Error(Se(11));function w(){v.next&&v.next(f())}w();var C=m(w);return{unsubscribe:C}}},g[Tm]=function(){return this},g}return h({type:Hs.INIT}),r={dispatch:h,subscribe:l,getState:f,replaceReducer:p},r[Tm]=d,r}function a6(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Hs.INIT});if(typeof r=="undefined")throw new Error(Se(12));if(typeof n(void 0,{type:Hs.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Se(13))})}function xl(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{a6(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 p=o[h],d=n[p],g=c[p],m=d(g,u);if(typeof m=="undefined")throw u&&u.type,new Error(Se(14));l[p]=m,f=f||m!==g}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Qs(){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 c6(){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(Se(15))},s={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},a=e.map(function(c){return c(s)});return o=Qs.apply(void 0,a)(i.dispatch),Mm(Mm({},i),{},{dispatch:o})}}}var Vs="NOT_FOUND";function u6(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Vs},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function l6(t,e){var n=[];function r(a){var c=n.findIndex(function(f){return e(a,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Vs}function i(a,c){r(a)===Vs&&(n.unshift({key:a,value:c}),n.length>t&&n.pop())}function o(){return n}function s(){n=[]}return{get:r,put:i,getEntries:o,clear:s}}var f6=function(e,n){return e===n};function h6(t){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o<i;o++)if(!t(n[o],r[o]))return!1;return!0}}function d6(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?f6:r,o=n.maxSize,s=o===void 0?1:o,a=n.resultEqualityCheck,c=h6(i),u=s===1?u6(c):l6(s,c);function f(){var l=u.get(arguments);if(l===Vs){if(l=t.apply(null,arguments),a){var h=u.getEntries(),p=h.find(function(d){return a(d.value,l)});p&&(l=p.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function p6(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=="function"?"function "+(r.name||"unnamed")+"()":typeof r}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return e}function g6(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=function(){for(var s=arguments.length,a=new Array(s),c=0;c<s;c++)a[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},h=a.pop();if(typeof h=="object"&&(l=h,h=a.pop()),typeof h!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof h+"]");var p=l,d=p.memoizeOptions,g=d===void 0?n:d,m=Array.isArray(g)?g:[g],y=p6(a),v=t.apply(void 0,[function(){return u++,h.apply(null,arguments)}].concat(m)),w=t(function(){for(var C=[],b=y.length,A=0;A<b;A++)C.push(y[A].apply(null,arguments));return f=v.apply(null,C),f});return Object.assign(w,{resultFunc:h,memoizedResultFunc:v,dependencies:y,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),w};return i}var m6=g6(d6);function Nm(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(s){return function(a){return typeof a=="function"?a(i,o,t):s(a)}}};return e}var km=Nm();km.withExtraArgument=Nm;var Bm=km,y6=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 Ys=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},A6=Object.defineProperty,Lm=Object.getOwnPropertySymbols,b6=Object.prototype.hasOwnProperty,v6=Object.prototype.propertyIsEnumerable,Om=function(t,e,n){return e in t?A6(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Xi=function(t,e){for(var n in e||(e={}))b6.call(e,n)&&Om(t,n,e[n]);if(Lm)for(var r=0,i=Lm(e);r<i.length;r++){var n=i[r];v6.call(e,n)&&Om(t,n,e[n])}return t},x6=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Qs:Qs.apply(null,arguments)};function w6(t){if(typeof t!="object"||t===null)return!1;var e=Object.getPrototypeOf(t);if(e===null)return!0;for(var n=e;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return e===n}var C6=function(t){y6(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,Ys([void 0],n[0].concat(this)))):new(e.bind.apply(e,Ys([void 0],n.concat(this))))},e}(Array);function S6(t){return typeof t=="boolean"}function E6(){return function(e){return D6(e)}}function D6(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new C6;return n&&(S6(n)?r.push(Bm):r.push(Bm.withExtraArgument(n.extraArgument))),r}var M6=!0;function T6(t){var e=E6(),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,p;if(typeof i=="function")p=i;else if(w6(i))p=xl(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 d=s;typeof d=="function"&&(d=d(e));var g=c6.apply(void 0,d),m=Qs;c&&(m=x6(Xi({trace:!M6},typeof c=="object"&&c)));var y=[g];Array.isArray(h)?y=Ys([g],h):typeof h=="function"&&(y=h(y));var v=m.apply(void 0,y);return Im(p,f,v)}function Zi(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 Xi(Xi({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 Pm(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 I6(t){return typeof t=="function"}function N6(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?Pm(e):[e,n,r],o=i[0],s=i[1],a=i[2],c;if(I6(t))c=function(){return Gs(t(),function(){})};else{var u=Gs(t,function(){});c=function(){return u}}function f(l,h){l===void 0&&(l=c());var p=Ys([o[h.type]],s.filter(function(d){var g=d.matcher;return g(h)}).map(function(d){var g=d.reducer;return g}));return p.filter(function(d){return!!d}).length===0&&(p=[a]),p.reduce(function(d,g){if(g)if(an(d)){var m=d,y=g(m,h);return typeof y=="undefined"?d:y}else{if(cn(d))return Gs(d,function(v){return g(v,h)});var y=g(d,h);if(typeof y=="undefined"){if(d===null)return d;throw Error("A case reducer on a non-draftable value must not return undefined")}return y}return d},l)}return f.getInitialState=c,f}function k6(t,e){return t+"/"+e}function Fm(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");var n=typeof t.initialState=="function"?t.initialState:Gs(t.initialState,function(){}),r=t.reducers||{},i=Object.keys(r),o={},s={},a={};i.forEach(function(f){var l=r[f],h=k6(e,f),p,d;"reducer"in l?(p=l.reducer,d=l.prepare):p=l,o[f]=p,s[h]=p,a[f]=d?Zi(h,d):Zi(h)});function c(){var f=typeof t.extraReducers=="function"?Pm(t.extraReducers):[t.extraReducers],l=f[0],h=l===void 0?{}:l,p=f[1],d=p===void 0?[]:p,g=f[2],m=g===void 0?void 0:g,y=Xi(Xi({},h),s);return N6(n,y,d,m)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:a,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var wl="listenerMiddleware";Zi(wl+"/add"),Zi(wl+"/removeAll"),Zi(wl+"/remove"),$8();function zm(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=Pr(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 Rm(t,e,n){const r=ce(".3~r"),i=s=>`${n[s].operator=="lt"?"[":"("}${r(n[s].operand)}, ${r(n[s+1].operand)}${n[s+1].operator=="lte"?"]":")"}`,o=Ft(n.length-1).reverse();zm(t,O6(e,n.slice(1,n.length-1)),o,o.map(i))}function B6(t,e,n){Rm(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function L6(t,e){const n=F6(P6(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),Rm(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function O6(t,e){return r=>{const i=t(r);if(!(!se(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(e[o].operator=="lt"){if(i<e[o].operand)return o}else if(i<=e[o].operand)return o;return e.length}}}function P6(t,e,n){const r=My(t.map(e).filter(i=>se(i)&&!isNaN(i)));return n.map(i=>fa(r,i))}function F6(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 z6(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var R6=[].forEach;function j6(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],s=[];R6.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=z6),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(Ft(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 G6(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 H6(t,e,n=!1){return j6(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const Q6={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 V6(t,e,n,r){const i=Q6[n];return t.filter(o=>i(e(o),r))}function Y6(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 W6(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const jm="setSamples",Um="sortBy",Gm="retainFirstOfEach",Hm="filterByNominal",Qm="filterByQuantitative",Vm="removeUndefined",Ym="groupByNominal",Wm="groupToQuartiles",_m="groupByThresholds",kr="sampleView";function _6(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function X6(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return Fm({name:kr,initialState:_6(),reducers:{[jm]:(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)=>F(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}},[Um]:(n,r)=>{qi(n,i=>H6(i,U6(e(r.payload,n),t(r.payload.attribute)),!1))},[Gm]:(n,r)=>{qi(n,i=>G6(i,e(r.payload,n)))},[Qm]:(n,r)=>{qi(n,i=>V6(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Hm]:(n,r)=>{qi(n,i=>Y6(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Vm]:(n,r)=>{qi(n,i=>W6(i,e(r.payload,n)))},[Ym]:(n,r)=>{Cl(n,i=>zm(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Wm]:(n,r)=>{Cl(n,i=>L6(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[_m]:(n,r)=>{Cl(n,i=>B6(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function qi(t,e){for(const n of Xm(t))n.samples=e(n.samples)}function Cl(t,e){for(const n of Xm(t))e(n)}function Xm(t){return Zm(t).map(e=>le(e))}function Sl(t){return t.provenance.present[kr]}function Zm(t){const e=[],n=[],r=i=>{if(e.push(i),Km(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function qm(t){return"samples"in t}function Km(t){return"groups"in t}function*Jm(t){if(yield[t],Km(t))for(const e of t.groups)for(const n of Jm(e))yield[t,...n]}const Z6=ce(".4"),$m={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function e1(t){return t.length>1?D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`:D`<strong>${t[0]}</strong>`}function q6(t,e){if(!t.type.startsWith(kr))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)||D`<em>${i}</em>`,s={attributeName:i};switch(t.type.substring(kr.length+1)){case jm:return F(T({},s),{title:"The initial state",icon:YD});case Um:return F(T({},s),{title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:nM});case Gm:return F(T({},s),{title:D`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:D`Retain first sample of each unique ${o}`,icon:KD});case Hm:{const c=n.values,u=f=>D`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?D`undefined ${f}`:D`${f} ${c.length>1?"in":D`<span class="operator">=</span>`} ${e1(c)}`}`;return F(T({},s),{title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Gu:Ui})}case Qm:{const c=u=>D`Retain samples having ${u} <span class="operator">${$m[n.operator]}</span> <strong>${Z6(n.operand)}</strong>`;return F(T({},s),{title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:Ui})}case Vm:return F(T({},s),{title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Gu});case Ym:return F(T({},s),{title:"Group by",provenanceTitle:D`Group by ${o}`,icon:Gi});case Wm:return F(T({},s),{title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:Gi});case _m:return F(T({},s),{title:"Group by thresholds",provenanceTitle:D`Group by thresholds {${e1(n.thresholds.map(c=>`${$m[c.operator]} ${c.operand}`))}} on ${o}`,icon:Gi});default:return F(T({},s),{title:JSON.stringify(t),icon:Ag})}}class K6{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 Ws(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function t1(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=>le(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=[];As(s.map(h=>a(h.samples)),e,{spacing:r}).forEach((h,p)=>{c.push({key:s[p].path,locSize:h})});const u=[];for(const[h,p]of s.entries()){const d={grow:1},g=p.samples;As(g.map(m=>d),Math.max(0,c[h].locSize.size-i),{offset:c[h].locSize.location+i}).forEach((m,y)=>{const{size:v,location:w}=m,C=v*.1*zp(15,22,v);m.location=w+C,m.size=v-2*C,u.push({key:g[y],locSize:m})})}function*f(){const h=[];for(const p of c){const d=p.key,g=le(d);for(;h.length<=d.length&&h.length&&d[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=p.locSize.location-y.locSize.location+p.locSize.size}for(let m=h.length;m<d.length;m++)h.push({group:d[m],locSize:T({},p.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,p)=>h.depth-p.depth).map((h,p)=>({key:{index:p,group:h.group,depth:h.depth,n:h.n,attributeLabel:void 0},locSize:h.locSize}));return{samples:u,summaries:c,groups:l}}function J6(t,e){return e.find(n=>pp(n.locSize,t))}const n1="VALUE_AT_LOCUS",r1=10;class El extends pt{constructor(e,n,r,i,o){var u;super(e,n,r,i),this.provenance=o,this.spec=e,this.stickySummaries=(u=e.stickySummaries)!=null?u:!0,this.compositeAttributeInfoSource=new K6,this.child=n.createView(e.spec,this,"sample-facets"),this.summaryViews=new vr({vconcat:[]},n,this,"sampleSummaries"),this.child.visit(f=>{f instanceof Le&&this.summaryViews.children.push(...f.sampleAggregateViews)}),this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new vr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},n,this,"sample-sidebar"),this.groupPanel=new _8(this),this.peripheryView.addChild(this.groupPanel),this.attributePanel=new dm(this),this.peripheryView.addChild(this.attributePanel),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Ws(f=>Sl(f).rootGroup,f=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Ws(f=>Sl(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(n1,f=>{var w;const l=f.specifier,h=this.findDescendantByPath(l.path);let p;if(se(l.locus))p=l.locus;else{const C=this.getScaleResolution("x").getGenome();if(C)p=C.toContinuous(l.locus.chrom,l.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const d=C=>{var b;return(b=h.mark.findDatumAt(C,p))==null?void 0:b[l.field]},[g,m]=Object.entries(h.getEncoding()).find(([C,b])=>"field"in b&&b.field==l.field),y=g?(w=h.getScaleResolution(g))==null?void 0:w.getScale():void 0;return{name:l.field,attribute:f,title:D`<em class="attribute">${l.field}</em> <span class="viewTitle">(${h.spec.title||h.name})</span> at <span class="locus">${i1(l.locus)}</span>`,accessor:d,type:"type"in m?m.type:void 0,scale:y}}),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=pu(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=X6(s);this.provenance.addReducer(a.name,a.reducer),this.provenance.addActionInfoSource(f=>q6(f,s)),this.actions=a.actions;const c=m6(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+r1:0,n=this.child.getEffectivePadding();return this.getPadding().add(new Ze(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}=nD(Kp(this.spec.samples.data,this.getBaseUrl()),new $6);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()[kr]}getLocations(){var e,n,r;if(!this._locations){if(!this._coords)return;const i=this.sampleHierarchy,o=Zm(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=t1(o,{viewHeight:this._coords.height,groupSpacing:5,summaryHeight:a}),u=t1(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:pS(g[v].locSize,gS(m[v].locSize,f),l)})}return y},p=h(c.groups,u.groups),d=document.createElement("div");p.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:(Fe(y,d),g.key.attributeLabel=d.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:h(c.samples,u.samples),summaries:h(c.summaries,u.summaries),groups:p}}return this._locations}getSampleAt(e){const n=J6(e,this.getLocations().samples);if(n)return this.sampleHierarchy.sampleData.entities[n.key]}getSummaryAt(e){const n=this.getLocations().summaries,r=n.findIndex(i=>pp(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,F(T({},r),{sampleFacetRenderingOptions:{locSize:mS(a.locSize,o)},facetId:[a.key],clipRect:s}))}renderSummaries(e,n,r={}){r=F(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+pu(-c,0,s.locSize.size-i):u};this.summaryViews.render(e,n.modify({y:a,height:i}),F(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=As([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],n.width,{spacing:r1}),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=Li(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)ws(F(T({},n),{to:1,duration:500,easingFunction:$S}));else{const a=c=>(1-Math.pow(c*2-1,2))*.5;ws(F(T({},n),{from:0,to:1,duration:300,easingFunction:a}))}}else ws(F(T({},n),{to:0,duration:400,easingFunction:KS}))}_handleContextMenu(e,n){const r=n.uiEvent,i=e.normalizePoint(n.point.x,n.point.y).x,o=this.getScaleResolution("x").invertToComplex(i),s=uD(this.child).filter(u=>!["sample","x","x2"].includes(u.channel)).filter(u=>["rect","rule"].includes(u.view.getMarkType()));let a=[{label:`Locus: ${i1(o)}`,type:"header"},{type:"divider"}],c="";for(const[u,f]of s.entries()){let l=[...f.view.getAncestors()];l=l.slice(0,l.findIndex(g=>g===this));const h={path:l.map(g=>g.name).reverse(),field:f.field,locus:o},p=this.compositeAttributeInfoSource.getAttributeInfo({type:n1,specifier:h}),d=f.view.spec.title||f.view.spec.name;d!=c&&(u>0&&a.push({type:"divider"}),a.push({label:d,type:"header"}),c=d),a.push({label:f.field,submenu:Ku(null,p,void 0,this)})}fm({items:a},r)}getSampleFacetTexture(){return this.facetTexture}getDefaultResolution(e,n){switch(e){case"x":case"sample":return"shared";default:return"independent"}}}function i1(t){return!se(t)&&"chrom"in t?QS(t):""+t}class $6 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:e5(e)})}}function e5(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function t5(t){return"samples"in t&&Pe(t.samples)&&"spec"in t&&Pe(t.spec)}const n5=(t,e)=>e.some(n=>t instanceof n);let o1,s1;function r5(){return o1||(o1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function i5(){return s1||(s1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const a1=new WeakMap,Dl=new WeakMap,c1=new WeakMap,Ml=new WeakMap,Tl=new WeakMap;function o5(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",s)},o=()=>{n(ln(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&a1.set(n,t)}).catch(()=>{}),Tl.set(e,t),e}function s5(t){if(Dl.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)});Dl.set(t,e)}let Il={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Dl.get(t);if(e==="objectStoreNames")return t.objectStoreNames||c1.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return ln(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 a5(t){Il=t(Il)}function c5(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Nl(this),e,...n);return c1.set(r,e.sort?e.sort():[e]),ln(r)}:i5().includes(t)?function(...e){return t.apply(Nl(this),e),ln(a1.get(this))}:function(...e){return ln(t.apply(Nl(this),e))}}function u5(t){return typeof t=="function"?c5(t):(t instanceof IDBTransaction&&s5(t),n5(t,r5())?new Proxy(t,Il):t)}function ln(t){if(t instanceof IDBRequest)return o5(t);if(Ml.has(t))return Ml.get(t);const e=u5(t);return e!==t&&(Ml.set(t,e),Tl.set(e,t)),e}const Nl=t=>Tl.get(t);function l5(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const s=indexedDB.open(t,e),a=ln(s);return r&&s.addEventListener("upgradeneeded",c=>{r(ln(s.result),c.oldVersion,c.newVersion,ln(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),a.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),a}const f5=["get","getKey","getAll","getAllKeys","count"],h5=["put","add","delete","clear"],kl=new Map;function u1(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(kl.get(e))return kl.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=h5.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||f5.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 kl.set(e,o),o}a5(t=>F(T({},t),{get:(e,n,r)=>u1(e,n)||t.get(e,n,r),has:(e,n)=>!!u1(e,n)||t.has(e,n)}));class l1{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const Ki="bookmarks";class d5 extends l1{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=l5(e,1,{upgrade(n,r,i,o){n.createObjectStore(Ki,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(Ki,"readwrite");try{n?(await i.store.delete(n),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(Ki,e)}async getNames(){return(await this._getDB()).getAllKeys(Ki)}async get(e){return(await this._getDB()).get(Ki,e)}}/**
2038
1834
  * @license
2039
1835
  * Copyright 2020 Google LLC
2040
1836
  * SPDX-License-Identifier: BSD-3-Clause
2041
- */const xI=t=>t===null||typeof t!="object"&&typeof t!="function",j1=t=>t.strings===void 0,vI={},wI=(t,e=vI)=>t._$AH=e;/**
1837
+ */const p5=t=>t===null||typeof t!="object"&&typeof t!="function",f1=t=>t.strings===void 0,g5={},m5=(t,e=g5)=>t._$AH=e;/**
2042
1838
  * @license
2043
1839
  * Copyright 2017 Google LLC
2044
1840
  * SPDX-License-Identifier: BSD-3-Clause
2045
- */const Ki=(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),Ki(o,e);return!0},Ks=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)},G1=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),CI(e)}};function EI(t){this._$AN!==void 0?(Ks(this),this._$AM=t,G1(this)):this._$AM=t}function SI(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++)Ki(r[o],!1),Ks(r[o]);else r!=null&&(Ki(r,!1),Ks(r));else Ki(this,t)}const CI=t=>{var e,n,r,i;t.type==Ot.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=SI),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=EI))};class H1 extends Gi{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),G1(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&&(Ki(this,e),Ks(this))}setValue(e){if(j1(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(){}}/**
1841
+ */const Ji=(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),Ji(o,e);return!0},_s=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)},h1=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),b5(e)}};function y5(t){this._$AN!==void 0?(_s(this),this._$AM=t,h1(this)):this._$AM=t}function A5(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++)Ji(r[o],!1),_s(r[o]);else r!=null&&(Ji(r,!1),_s(r));else Ji(this,t)}const b5=t=>{var e,n,r,i;t.type==Nt.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=A5),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=y5))};class d1 extends ji{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),h1(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&&(Ji(this,e),_s(this))}setValue(e){if(f1(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(){}}/**
2046
1842
  * @license
2047
1843
  * Copyright 2020 Google LLC
2048
1844
  * SPDX-License-Identifier: BSD-3-Clause
2049
- */const Q1=()=>new DI;class DI{}const Wl=new WeakMap,V1=br(class extends H1{render(t){return R}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)),R}nt(t){typeof this.U=="function"?(Wl.get(this.U)!==void 0&&this.U.call(this.ht,void 0),Wl.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"?Wl.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)}});/**
1845
+ */const p1=()=>new v5;class v5{}const Bl=new WeakMap,g1=Cr(class extends d1{render(t){return z}update(t,[e]){var n;const r=e!==this.U;return r&&this.U!==void 0&&this.ot(void 0),(r||this.rt!==this.lt)&&(this.U=e,this.ht=(n=t.options)===null||n===void 0?void 0:n.host,this.ot(this.lt=t.element)),z}ot(t){typeof this.U=="function"?(Bl.get(this.U)!==void 0&&this.U.call(this.ht,void 0),Bl.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"?Bl.get(this.U):(t=this.U)===null||t===void 0?void 0:t.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});/**
2050
1846
  * @license
2051
1847
  * Copyright 2018 Google LLC
2052
1848
  * SPDX-License-Identifier: BSD-3-Clause
2053
- */const MI={},II=br(class extends Gi{constructor(){super(...arguments),this.ot=MI}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 xe}else if(this.ot===e)return xe;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class TI extends kt{constructor(){super();this.inputRef=Q1(),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=_1(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",Is(()=>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=so([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 _m&&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){NI(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var n,r;const e=[];e.push(M`<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=Vp(3,i.getCollector().getData(),s);e.push(M`<p>Search <em>${o}</em> (${a}). Examples:</p><ul>${c.map(u=>M`<li>${u}</li>`)}</ul>`)}return M`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return M`<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}" ${V1(this.inputRef)}> ${II([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",TI);function NI(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 _1(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,kn}}),e}var Y1="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
1849
+ */const x5={},w5=Cr(class extends ji{constructor(){super(...arguments),this.nt=x5}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.nt)&&this.nt.length===e.length&&e.every((r,i)=>r===this.nt[i]))return be}else if(this.nt===e)return be;return this.nt=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class C5 extends It{constructor(){super(),this.inputRef=p1(),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=m1(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",Cs(()=>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&&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=ao([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 dm&&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){S5(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var n,r;const e=[];e.push(D`<p>Focus to a specific range. Examples:</p><ul><li>chr8</li><li>chr8:21,445,873</li><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=fp(3,i.getCollector().getData(),s);e.push(D`<p>Search <em>${o}</em> (${a}). Examples:</p><ul>${c.map(u=>D`<li>${u}</li>`)}</ul>`)}return D`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return D`<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}" ${g1(this.inputRef)}> ${w5([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",C5);function S5(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 m1(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,Fn}}),e}var y1="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
2054
1850
  * @license
2055
1851
  * Copyright 2020 Google LLC
2056
1852
  * SPDX-License-Identifier: BSD-3-Clause
2057
- */const LI=br(class extends Gi{constructor(t){if(super(t),t.type!==Ot.PROPERTY&&t.type!==Ot.ATTRIBUTE&&t.type!==Ot.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!j1(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===xe||e===R)return e;const n=t.element,r=t.name;if(t.type===Ot.PROPERTY){if(e===n[r])return xe}else if(t.type===Ot.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return xe}else if(t.type===Ot.ATTRIBUTE&&n.getAttribute(r)===e+"")return xe;return wI(t),e}});function W1(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function kI(t){if(!(t==null?void 0:t.length))throw new Error("Can't nest an empty array!");const e=X1(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=X1(i),r.children.push(o)),r=o}}return e.children[0]}const X1=t=>({item:t,children:[]}),Xl=new Set;function ql(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Xl)i.classList.remove("show"),document.body.classList.remove(En);return Xl.clear(),t.stopPropagation(),r?(Xl.add(n),n.classList.add("show"),document.body.classList.add(En),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(En),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Zl={visibilities:{}},Ji=p1({name:"viewSettings",initialState:Zl,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Zl,setViewSettings:(t,e)=>T(T({},Zl),e.payload?e.payload:{})}});class OI extends kt{constructor(){super();this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=Zs(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(W1("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){ql(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 Vu)return gr;n.push(i)});const r=n.filter(i=>!(i instanceof Yu)&&CM(i.name)&&q1(i)).map(i=>[...i.getAncestors()].filter(o=>!(o instanceof Yu)).reverse());this.nestedPaths=kI(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=SM(n);var i=(s,a=!0)=>s.length?M`<ul class="${a?null:"unchecked"}">${s.map(o)}</ul>`:R,o=s=>{var u,f;const a=s.item,c=(u=e[a.name])!=null?u:a.isVisibleInSpec();return M`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(a.name)||!q1(a)}" .checked="${LI(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 M`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${te(h8).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?M`<span class="disabled-item">Restore defaults</span>`:M`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():R}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const q1=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof Ri)};customElements.define("genome-spy-view-visibility",OI);class BI extends kt{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?M`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${te((s=o.icon)!=null?s:qg).node[0]} ${(a=o.provenanceTitle)!=null?a:o.title}</a></li>`:R},n=()=>M`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${ql}">${te(i8).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return M`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${te(y8).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${te(f8).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",BI);/**
1853
+ */const E5=Cr(class extends ji{constructor(t){if(super(t),t.type!==Nt.PROPERTY&&t.type!==Nt.ATTRIBUTE&&t.type!==Nt.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!f1(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===be||e===z)return e;const n=t.element,r=t.name;if(t.type===Nt.PROPERTY){if(e===n[r])return be}else if(t.type===Nt.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return be}else if(t.type===Nt.ATTRIBUTE&&n.getAttribute(r)===e+"")return be;return m5(t),e}});function A1(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function D5(t){if(!(t!=null&&t.length))throw new Error("Can't nest an empty array!");const e=b1(null);for(const n of t){if(!(n!=null&&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=b1(i),r.children.push(o)),r=o}}return e.children[0]}const b1=t=>({item:t,children:[]}),Ll=new Set;function Ol(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Ll)i.classList.remove("show"),document.body.classList.remove(Dn);return Ll.clear(),t.stopPropagation(),r?(Ll.add(n),n.classList.add("show"),document.body.classList.add(Dn),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(Dn),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Pl={visibilities:{}},$i=Fm({name:"viewSettings",initialState:Pl,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Pl,setViewSettings:(t,e)=>T(T({},Pl),e.payload?e.payload:{})}});class M5 extends It{constructor(){super(),this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=Ws(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(A1("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){Ol(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?$i.actions.setVisibility({name:n.name,visibility:r}):$i.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch($i.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof Tu)return Ar;n.push(i)});const r=n.filter(i=>!(i instanceof Nu)&&dD(i.name)&&v1(i)).map(i=>[...i.getAncestors()].filter(o=>!(o instanceof Nu)).reverse());this.nestedPaths=D5(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=hD(n);var i=(s,a=!0)=>s.length?D`<ul class="${a?null:"unchecked"}">${s.map(o)}</ul>`:z,o=s=>{var u,f;const a=s.item,c=(u=e[a.name])!=null?u:a.isVisibleInSpec();return D`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(a.name)||!v1(a)}" .checked="${E5(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 D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${$(tM).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?D`<span class="disabled-item">Restore defaults</span>`:D`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():z}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const v1=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof zi)};customElements.define("genome-spy-view-visibility",M5);class T5 extends It{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?D`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${$((s=o.icon)!=null?s:Ag).node[0]} ${(a=o.provenanceTitle)!=null?a:o.title}</a></li>`:z},n=()=>D`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${Ol}">${$(_D).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return D`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${$(sM).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${$(eM).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",T5);/**
2058
1854
  * @license
2059
1855
  * Copyright 2021 Google LLC
2060
1856
  * SPDX-License-Identifier: BSD-3-Clause
2061
- */class PI{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class FI{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}}/**
1857
+ */class I5{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class N5{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}}/**
2062
1858
  * @license
2063
1859
  * Copyright 2017 Google LLC
2064
1860
  * SPDX-License-Identifier: BSD-3-Clause
2065
- */const Z1=t=>!xI(t)&&typeof t.then=="function";class zI extends H1{constructor(){super(...arguments),this._$Cft=1073741823,this._$Cwt=[],this._$CG=new PI(this),this._$CK=new FI}render(...e){var n;return(n=e.find(r=>!Z1(r)))!==null&&n!==void 0?n:xe}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(!Z1(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 xe}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const RI=br(zI);var UI={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function K1(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function $i(t){return(t+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Kl(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=UI[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()+'"':"")+">"+K1($i(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Kl(K1(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="'+$i(i[8])+'" alt="'+$i(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+$i(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))+">"+Kl(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+$i(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 J1(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function jI(t,e={}){const n=Kl(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),$1(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",J1(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",J1(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function $1(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--;)$1(t.childNodes[e])}}function GI(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),s=[...r.children].findIndex(a=>a==n);for(const a of r.children)a.classList.remove("active-tab");for(const a of o.children)a.classList.remove("active-tab");r.children.item(s).classList.add("active-tab"),o.children.item(s).classList.add("active-tab")}var Jl={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="",x=2,v=3,S=2,b=[],A=0,w=0,E;for(E=0;E<c.length;E+=1)if(g=c.charAt(E),Object.prototype.hasOwnProperty.call(d,g)||(d[g]=v++,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,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete p[y]}else for(h=d[y],l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;x--,x==0&&(x=Math.pow(2,S),S++),d[m]=v++,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,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(h=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}else{for(h=1,l=0;l<S;l++)A=A<<1|h,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=0;for(h=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete p[y]}else for(h=d[y],l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;x--,x==0&&(x=Math.pow(2,S),S++)}for(h=2,l=0;l<S;l++)A=A<<1|h&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,h=h>>1;for(;;)if(A=A<<1,w==u-1){b.push(f(A));break}else w++;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,x,v,S,b,A,w,E={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(v=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++)),v|=(S>0?1:0)*A,A<<=1;switch(v){case 0:for(v=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++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 1:for(v=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++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 2:return""}for(l[3]=w,x=w,m.push(w);;){if(E.index>c)return"";for(v=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++)),v|=(S>0?1:0)*A,A<<=1;switch(w=v){case 0:for(v=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++)),v|=(S>0?1:0)*A,A<<=1;l[d++]=n(v),w=d-1,h--;break;case 1:for(v=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++)),v|=(S>0?1:0)*A,A<<=1;l[d++]=n(v),w=d-1,h--;break;case 2:return m.join("")}if(h==0&&(h=Math.pow(2,p),p++),l[w])g=l[w];else if(w===d)g=x+x.charAt(0);else return null;m.push(g),l[d++]=x+g.charAt(0),h--,x=g,h==0&&(h=Math.pow(2,p),p++)}}};return a}();t!=null&&(t.exports=e)})(Jl);function HI(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Js;function QI(){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 VI(t){Js!=null||(Js=QI());let e=-1;const n=HI().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Js[(e^n[r])&255];return(e^-1)>>>0}function ey(t){return("00000000"+VI(t).toString(16)).slice(-8)}function ty(t){const e=Jl.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+ey(e)}function _I(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(ey(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Jl.exports.decompressFromEncodedURIComponent(e))}let Ut;async function ny(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(Ji.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const s=e.genomeSpy.getNamedScaleResolutions().get(i);s?r.push(s.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),st(M`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function $s(t,e,n={}){await ny(t,e),(Ut||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await YI(t,e,n)}async function YI(t,e,n={}){Ut!=null||(Ut=Qi("tour")),await WI(t,e,n)}async function WI(t,e,n){var g;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),s=r?` ${o+1} of ${i.length}`:"",a=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${s}: ${(g=t.name)!=null?g:"Unnamed"}`,c=t.notes?jI(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):M`<span class="no-notes">No notes provided</span>`,u=()=>{Ut==null||Ut.close(),Ut=void 0},f=async m=>{const y=await r.get(i[m]);$s(y,e,n)},l=async()=>{if(await $l(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),st(`Cannot import bookmark: ${m}`)}},h=M`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?M`<button @click="${l}">${te(Xg).node[0]} Import bookmark</button>`:R} ${r?M`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${te(p8).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${te(g8).node[0]}</button>`:R}`,p=M`<button title="Collapse" class="collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${te(r8).node[0]}</button><div class="modal-title">${a}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${h}</div>`;Xe(p,Ut.content)}function ry(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+ty(t);st(M`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${GI}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${r}"> <button @click="${o=>navigator.clipboard.writeText(r).then(()=>o.target.dispatchEvent(J8())).catch(()=>st("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 link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
2066
- ${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function $l(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return M`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?M`<div class="gs-alert warning">${te(s8).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:R} ${n=="share"?M`<div class="gs-alert info">${te(Zg).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:R}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${h=>{e.name=iy(h.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${h=>{e.notes=iy(h.target.value)}}"></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="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?M`${te(nl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,s=()=>!!e.name,a=Qi();return new Promise(c=>{const u=()=>{a.close(),c(!1)},f=async()=>{if(!s()){st("Name is missing!",{title:"Error"});return}let h=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(h=await st(M`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),h&&(a.close(),c(!0))},l=()=>{a.close(),c(!0)};Xe(i(u,n=="share"?l:f),a.content),a.content.querySelector("#bookmark-title").focus()})}function iy(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class XI extends kt{constructor(){super();this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(W1("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await $l(void 0,e,"share")&&ry(e)}async _addBookmark(e,n){var s,a;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((s=o.name)!=null||(o.name=r==null?void 0:r.name),(a=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await $l(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){st(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&$s(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");Hm({items:[{label:"Edit and replace...",icon:u8,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:m8,callback:()=>st(M`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async a=>{a&&(await e.delete(n),this.requestUpdate())})},{label:"Share...",icon:nl,callback:async()=>ry(await e.get(n))}]},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:e.isReadonly()?void 0:s=>this._createContextMenu(e,o,s)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>jm(o)):R}_getBookmarks(){const e=(n,r)=>n?RI(this._makeBookmarkMenuItems(n,r),M`Loading...`):R;return[e(this.app.globalBookmarkDatabase,"Global bookmarks"),e(this.app.localBookmarkDatabase,"Local bookmarks")]}render(){const e=this.app.localBookmarkDatabase,n=e?M`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:R,r=e||this.app.globalBookmarkDatabase?M`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{ql(i)&&this.requestUpdate()}}">${te(Xg).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:R;return M`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${te(nl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",XI);class qI extends kt{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(M`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(M`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(M`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${te(t8).node[0]}</button>`),r.push(M`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?qe(this.app.config.description):[];return i.length>1&&r.push(M`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>st(M`${i.slice(1).map(o=>M`<p>${o}</p>`)}`,{title:i[0]})}">${te(Zg).node[0]}</button>`),i.length>0&&r.push(M`<span class="vis-title">${i[0]}</span>`),r.push(M`<span class="spacer"></span> ${this.app.appContainer.requestFullscreen?M`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${te(a8).node[0]}</button>`:R} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${te(l8).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return M`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${Y1}"> </a>${this.appInitialized&&_1(e.viewRoot)?M`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:R} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",qI);class ZI{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=v6(zl(F(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()?[sn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(sn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(sn.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(sn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(sn.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*KI(t,e=n=>+n){const n=t.length,r=new ji,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 JI="sampleCount";class $I extends se{constructor(e,n){super();this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof jl&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Ul(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(Mn(e))this.xAccessor=Z(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ui)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[Mr]),super.complete()}_mergeAndPropagate(e){const n=[...T1(e.rootGroup)].filter(r=>M1(pe(r)));for(const[r,i]of n.entries()){const o=pe(i);if(M1(o)){this.contextObject[JI]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=KI(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 Pe&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var eT="BATCHING_REDUCER.BATCH";function tT(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:eT;return{type:e,meta:{batch:!0},payload:t}}function nT(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class rT{constructor(e){this._reducers=e!=null?e:{},this.store=P5({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(nT(zl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(tT(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class iT extends U1{constructor(e){super();this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}Ig.mergeFacets=$I;class oy{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new rT,this.storeHelper.addReducer("viewSettings",Ji.reducer),this.provenance=new ZI(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Q1(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new bI(n.specId):void 0,this.globalBookmarkDatabase=void 0,Xe(M`<div class="genome-spy-app"><genome-spy-toolbar ${V1(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(aI,(a,c,u,f)=>new jl(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 s,a;const e=((s=this.config.bookmarks)==null?void 0:s.remote)?_r({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(Zs(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,h;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(h=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||h._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new iT(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}await this._restoreStateFromUrlOrBookmark(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const r=Is(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=qe((a=this.genomeSpy.spec.description)!=null?a:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=this._restoreStateFromUrl(),n=(i=this.config.bookmarks)==null?void 0:i.remote,r=this.globalBookmarkDatabase;if(!e&&n&&r){const s=(o=n.initialBookmark)!=null?o:n.tour&&(await r.getNames())[0];if(s){const a=await r.get(s);if(!a)throw new Error(`No such bookmark: ${s}`);n.tour?await $s(a,this,{mode:"tour",database:r}):await ny(a,this)}}}_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);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?ty(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=_I(e);return $s(n,this,{mode:"shared"}),!0}catch(n){console.error(n),st(M`<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",oT(ZM)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)==null?void 0:n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof jl)return e=r,kn}),e}}function oT(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function sT(t,e,n={}){var o,s,a;let r;if(oe(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=ze(e)?e:await sy(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(s=c.width)!=null||(c.width="container"),(a=c.padding)!=null||(c.padding=10);const u=new oy(r,c,n);i=u.genomeSpy,aT(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 aT(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function sy(t){let e;try{e=JSON.parse(await _r().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}Y.GenomeSpy=Gg,Y.GenomeSpyApp=oy,Y.embed=sT,Y.html=M,Y.icon=Y1,Y.loadSpec=sy,Object.defineProperty(Y,"__esModule",{value:!0}),Y[Symbol.toStringTag]="Module"});
1861
+ */const x1=t=>!p5(t)&&typeof t.then=="function";class k5 extends d1{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CG=new I5(this),this._$CK=new N5}render(...e){var n;return(n=e.find(r=>!x1(r)))!==null&&n!==void 0?n:be}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CG,s=this._$CK;this.isConnected||this.disconnected();for(let a=0;a<n.length&&!(a>this._$Cwt);a++){const c=n[a];if(!x1(c))return this._$Cwt=a,c;a<i&&c===r[a]||(this._$Cwt=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._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return be}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const B5=Cr(k5);var L5={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function w1(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function eo(t){return(t+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Fl(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(d){var g=L5[d[1]||""],m=c[c.length-1]==d;return g?g[1]?(m?c.pop():c.push(d),g[0|m]):g[0]:d}function p(){for(var d="";c.length;)d+=h(c[c.length-1]);return d}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(d,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()+'"':"")+">"+w1(eo(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Fl(w1(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="'+eo(i[8])+'" alt="'+eo(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+eo(i[11]||f[r.toLowerCase()])+'">'),n=p()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(s="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Fl(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+eo(i[16])+"</code>":(i[17]||i[1])&&(n=h(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+p()).replace(/^\n+|\n+$/g,"")}function C1(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function O5(t,e={}){const n=Fl(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),S1(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",C1(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",C1(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function S1(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--;)S1(t.childNodes[e])}}function P5(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),s=[...r.children].findIndex(a=>a==n);for(const a of r.children)a.classList.remove("active-tab");for(const a of o.children)a.classList.remove("active-tab");r.children.item(s).classList.add("active-tab"),o.children.item(s).classList.add("active-tab")}var zl={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 p=u.charCodeAt(l);f[l*2]=p>>>8,f[l*2+1]=p%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(p){h.push(n(p))}),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,p={},d={},g="",m="",y="",v=2,w=3,C=2,b=[],A=0,x=0,E;for(E=0;E<c.length;E+=1)if(g=c.charAt(E),Object.prototype.hasOwnProperty.call(p,g)||(p[g]=w++,d[g]=!0),m=y+g,Object.prototype.hasOwnProperty.call(p,m))y=m;else{if(Object.prototype.hasOwnProperty.call(d,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;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<C;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,C),C++),delete d[y]}else for(h=p[y],l=0;l<C;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,C),C++),p[m]=w++,y=String(g)}if(y!==""){if(Object.prototype.hasOwnProperty.call(d,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;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<C;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,C),C++),delete d[y]}else for(h=p[y],l=0;l<C;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,C),C++)}for(h=2,l=0;l<C;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,p=4,d=3,g="",m=[],y,v,w,C,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;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;switch(w){case 0:for(w=0,b=Math.pow(2,8),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;x=n(w);break;case 1:for(w=0,b=Math.pow(2,16),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>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,d),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;switch(x=w){case 0:for(w=0,b=Math.pow(2,8),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;l[p++]=n(w),x=p-1,h--;break;case 1:for(w=0,b=Math.pow(2,16),A=1;A!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),w|=(C>0?1:0)*A,A<<=1;l[p++]=n(w),x=p-1,h--;break;case 2:return m.join("")}if(h==0&&(h=Math.pow(2,d),d++),l[x])g=l[x];else if(x===p)g=v+v.charAt(0);else return null;m.push(g),l[p++]=v+g.charAt(0),h--,v=g,h==0&&(h=Math.pow(2,d),d++)}}};return a}();t!=null&&(t.exports=e)})(zl);function F5(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Xs;function z5(){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 R5(t){Xs!=null||(Xs=z5());let e=-1;const n=F5().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Xs[(e^n[r])&255];return(e^-1)>>>0}function E1(t){return("00000000"+R5(t).toString(16)).slice(-8)}function D1(t){const e=zl.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+E1(e)}function j5(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(E1(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(zl.exports.decompressFromEncodedURIComponent(e))}let Pt;async function M1(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch($i.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const s=e.genomeSpy.getNamedScaleResolutions().get(i);s?r.push(s.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),ot(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function Zs(t,e,n={}){await M1(t,e),(Pt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await U5(t,e,n)}async function U5(t,e,n={}){Pt!=null||(Pt=Er("tour")),await G5(t,e,n)}async function G5(t,e,n){var g;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),s=r?` ${o+1} of ${i.length}`:"",a=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${s}: ${(g=t.name)!=null?g:"Unnamed"}`,c=t.notes?O5(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):D`<span class="no-notes">No notes provided</span>`,u=()=>{Pt==null||Pt.close(),Pt=void 0},f=async m=>{const y=await r.get(i[m]);Zs(y,e,n)},l=async()=>{if(await Rl(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),ot(`Cannot import bookmark: ${m}`)}},h=D`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button @click="${l}">${$(yg).node[0]} Import bookmark</button>`:z} ${r?D`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${$(rM).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${$(iM).node[0]}</button>`:z}`,d=D`<button title="Collapse" class="collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${$(WD).node[0]}</button><div class="modal-title">${a}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${h}</div>`;Fe(d,Pt.content)}function T1(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+D1(t);ot(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${P5}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${r}"> <button @click="${o=>navigator.clipboard.writeText(r).then(()=>o.target.dispatchEvent(GM())).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 link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
1862
+ ${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function Rl(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return D`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?D`<div class="gs-alert warning">${$(ZD).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:z} ${n=="share"?D`<div class="gs-alert info">${$(bg).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:z}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${h=>{e.name=I1(h.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${h=>{e.notes=I1(h.target.value)}}"></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="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?D`${$(Uu).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,s=()=>!!e.name,a=Er();return new Promise(c=>{const u=()=>{a.close(),c(!1)},f=async()=>{if(!s()){ot("Name is missing!",{title:"Error"});return}let h=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(h=await ot(D`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),h&&(a.close(),c(!0))},l=()=>{a.close(),c(!0)};Fe(i(u,n=="share"?l:f),a.content),a.content.querySelector("#bookmark-title").focus()})}function I1(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class H5 extends It{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(A1("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await Rl(void 0,e,"share")&&T1(e)}async _addBookmark(e,n){var s,a;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((s=o.name)!=null||(o.name=r==null?void 0:r.name),(a=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await Rl(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){ot(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Zs(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");lm({items:[{label:"Edit and replace...",icon:JD,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:oM,callback:()=>ot(D`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async a=>{a&&(await e.delete(n),this.requestUpdate())})},{label:"Share...",icon:Uu,callback:async()=>T1(await e.get(n))}]},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:e.isReadonly()?void 0:s=>this._createContextMenu(e,o,s)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>cm(o)):z}_getBookmarks(){const e=(n,r)=>n?B5(this._makeBookmarkMenuItems(n,r),D`Loading...`):z;return[e(this.app.globalBookmarkDatabase,"Global bookmarks"),e(this.app.localBookmarkDatabase,"Local bookmarks")]}render(){const e=this.app.localBookmarkDatabase,n=e?D`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:z,r=e||this.app.globalBookmarkDatabase?D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Ol(i)&&this.requestUpdate()}}">${$(yg).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:z;return D`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${$(Uu).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",H5);class Q5 extends It{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(D`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(D`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(D`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${$(VD).node[0]}</button>`),r.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?We(this.app.config.description):[];return i.length>1&&r.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>ot(D`${i.slice(1).map(o=>D`<p>${o}</p>`)}`,{title:i[0]})}">${$(bg).node[0]}</button>`),i.length>0&&r.push(D`<span class="vis-title">${i[0]}</span>`),r.push(D`<span class="spacer"></span> ${this.app.appContainer.requestFullscreen?D`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${$(qD).node[0]}</button>`:z} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${$($D).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return D`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${y1}"> </a>${this.appInitialized&&m1(e.viewRoot)?D`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:z} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",Q5);class V5{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=h8(xl(F(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()?[rn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(rn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(rn.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(rn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(rn.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*Y5(t,e=n=>+n){const n=t.length,r=new Ri,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 W5="sampleCount";class _5 extends oe{constructor(e,n){super(),this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof El&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Sl(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.getEncoding().x;if(Nn(e))this.xAccessor=X(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof xr)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[kr]),super.complete()}_mergeAndPropagate(e){const n=[...Jm(e.rootGroup)].filter(r=>qm(le(r)));for(const[r,i]of n.entries()){const o=le(i);if(qm(o)){this.contextObject[W5]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=Y5(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 Le&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var X5="BATCHING_REDUCER.BATCH";function Z5(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:X5;return{type:e,meta:{batch:!0},payload:t}}function q5(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class K5{constructor(e){this._reducers=e!=null?e:{},this.store=T6({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(q5(xl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(Z5(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class J5 extends l1{constructor(e){super(),this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}qp.mergeFacets=_5;class N1{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new K5,this.storeHelper.addReducer("viewSettings",$i.reducer),this.provenance=new V5(this.storeHelper),this._initializationListeners=[],this.toolbarRef=p1(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new d5(n.specId):void 0,this.globalBookmarkDatabase=void 0,Fe(D`<div class="genome-spy-app"><genome-spy-toolbar ${g1(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 ug(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(t5,(a,c,u,f)=>new El(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 s,a;const e=(s=this.config.bookmarks)!=null&&s.remote?qr({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(Ws(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,h;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(h=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||h._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new J5(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}await this._restoreStateFromUrlOrBookmark(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const r=Cs(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=We((a=this.genomeSpy.spec.description)!=null?a:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=this._restoreStateFromUrl(),n=(i=this.config.bookmarks)==null?void 0:i.remote,r=this.globalBookmarkDatabase;if(!e&&n&&r){const s=(o=n.initialBookmark)!=null?o:n.tour&&(await r.getNames())[0];if(s){const a=await r.get(s);if(!a)throw new Error(`No such bookmark: ${s}`);n.tour?await Zs(a,this,{mode:"tour",database:r}):await M1(a,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&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);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?D1(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=j5(e);return Zs(n,this,{mode:"shared"}),!0}catch(n){console.error(n),ot(D`<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",$5(RD)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)!=null&&n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof El)return e=r,Fn}),e}}function $5(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function eT(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=Pe(e)?e:await k1(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(s=c.width)!=null||(c.width="container"),(a=c.padding)!=null||(c.padding=10);const u=new N1(r,c,n);i=u.genomeSpy,tT(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 tT(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function k1(t){let e;try{e=JSON.parse(await qr().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}Y.GenomeSpy=ug,Y.GenomeSpyApp=N1,Y.embed=eT,Y.html=D,Y.icon=y1,Y.loadSpec=k1,Object.defineProperties(Y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});