@genome-spy/core 0.28.3 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,21 +1,21 @@
1
- (function(P,I){typeof exports=="object"&&typeof module<"u"?I(exports):typeof define=="function"&&define.amd?define(["exports"],I):(P=typeof globalThis<"u"?globalThis:P||self,I(P.genomeSpyEmbed={}))})(this,function(P){var qr,lu,Gn,Un,Re,Hn,Jr,fu,$e,Ft,Bo,nd,Fo,rd,rn,ni,_r,hu,$r,du,ei,pu,Mo,id,ti;"use strict";var xE=Object.defineProperty;var yE=(P,I,Z)=>I in P?xE(P,I,{enumerable:!0,configurable:!0,writable:!0,value:Z}):P[I]=Z;var $h=(P,I,Z)=>(yE(P,typeof I!="symbol"?I+"":I,Z),Z),cu=(P,I,Z)=>{if(!I.has(P))throw TypeError("Cannot "+Z)};var Q=(P,I,Z)=>(cu(P,I,"read from private field"),Z?Z.call(P):I.get(P)),he=(P,I,Z)=>{if(I.has(P))throw TypeError("Cannot add the same private member more than once");I instanceof WeakSet?I.add(P):I.set(P,Z)},Yn=(P,I,Z,Mt)=>(cu(P,I,"write to private field"),Mt?Mt.call(P,Z):I.set(P,Z),Z),ed=(P,I,Z,Mt)=>({set _(Io){Yn(P,I,Io,Z)},get _(){return Q(P,I,Mt)}}),ue=(P,I,Z)=>(cu(P,I,"access private method"),Z);function I(t,e,n){return t.fields=e||[],t.fname=n,t}function Z(t){return t==null?null:t.fname}function Mt(t){return t==null?null:t.fields}function Io(t){return t.length===1?od(t[0]):sd(t)}const od=t=>function(e){return e[t]},sd=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function Y(t){throw Error(t)}function ad(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,u;t=t+"";function c(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(u=t[a],u==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(u===r)c(),r=null,i=-1;else{if(r)continue;s===i&&u==='"'||s===i&&u==="'"?(s=a+1,r=u):u==="."&&!i?a>s?c():s=a+1:u==="["?(a>s&&c(),i=s=a+1):u==="]"&&(i||Y("Access path missing open bracket: "+t),i>0&&c(),i=0,s=a+1)}return i&&Y("Access path missing closing bracket: "+t),r&&Y("Access path missing closing quote: "+t),a>s&&(a++,c()),e}function ri(t,e,n){const r=ad(t);return t=r.length===1?r[0]:t,I((n&&n.get||Io)(r),[t],e||t)}ri("id");const ii=I(t=>t,[],"identity");I(()=>0,[],"zero"),I(()=>1,[],"one"),I(()=>!0,[],"true"),I(()=>!1,[],"false");var Fe=Array.isArray;function Le(t){return t===Object(t)}function ke(t){return t[t.length-1]}function Wn(t){return t==null||t===""?null:+t}const gu=t=>e=>t*Math.exp(e),mu=t=>e=>Math.log(t*e),ud=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),cd=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,oi=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function To(t,e,n,r){const i=n(t[0]),o=n(ke(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function ld(t,e){return To(t,e,Wn,ii)}function fd(t,e){var n=Math.sign(t[0]);return To(t,e,mu(n),gu(n))}function hd(t,e,n){return To(t,e,oi(n),oi(1/n))}function si(t,e,n,r,i){const o=r(t[0]),s=r(ke(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function Au(t,e,n){return si(t,e,n,Wn,ii)}function xu(t,e,n){const r=Math.sign(t[0]);return si(t,e,n,mu(r),gu(r))}function Po(t,e,n,r){return si(t,e,n,oi(r),oi(1/r))}function dd(t,e,n,r){return si(t,e,n,ud(r),cd(r))}function Ro(t){return t!=null?Fe(t)?t:[t]:[]}function pd(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 ge(t){return typeof t=="function"}const gd="descending";function yu(t,e,n){n=n||{},e=Ro(e)||[];const r=[],i=[],o={},s=n.comparator||md;return Ro(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===gd?-1:1),i.push(a=ge(a)?a:ri(a,null,n)),(Mt(a)||[]).forEach(c=>o[c]=1))}),i.length===0?null:I(s(i,r),Object.keys(o))}const bu=(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),md=(t,e)=>t.length===1?Ad(t[0],e[0]):xd(t,e,t.length),Ad=(t,e)=>function(n,r){return bu(t(n),t(r))*e},xd=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=bu(o(r),o(i));return s*e[a]});function yd(t){return ge(t)?t:()=>t}function Lo(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 bd=Object.prototype.hasOwnProperty;function It(t,e){return bd.call(t,e)}function ai(t){return typeof t=="boolean"}function wd(t){return Object.prototype.toString.call(t)==="[object Date]"}function vd(t){return t&&ge(t[Symbol.iterator])}function me(t){return typeof t=="number"}function W(t){return typeof t=="string"}function Cd(t,e){const n=t[0],r=ke(t),i=+e;return i?i===1?r:n+i*(r-n):n}function ui(t){return t&&ke(t)-t[0]||0}function ci(t){return Fe(t)?"["+t.map(ci)+"]":Le(t)||W(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function Ed(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const Sd=t=>me(t)||wd(t)?t:Date.parse(t);function Dd(t,e){return e=e||Sd,t==null||t===""?null:e(t)}function Bd(t){return t==null||t===""?null:t+""}function li(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var wu={},ko={},No=34,Xn=10,zo=13;function vu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Fd(t,e){var n=vu(t);return function(r,i){return e(n(r),i,t)}}function Cu(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 Ae(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Md(t){return t<0?"-"+Ae(-t,6):t>9999?"+"+Ae(t,6):Ae(t,4)}function Id(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Md(t.getUTCFullYear())+"-"+Ae(t.getUTCMonth()+1,2)+"-"+Ae(t.getUTCDate(),2)+(i?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"."+Ae(i,3)+"Z":r?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"Z":n||e?"T"+Ae(e,2)+":"+Ae(n,2)+"Z":"")}function Eu(t){var e=new RegExp('["'+t+`
2
- \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(m,A){if(p)return p(m,A-1);d=m,p=h?Fd(m,h):vu(m)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,m=0,A,y=d<=0,b=!1;l.charCodeAt(d-1)===Xn&&--d,l.charCodeAt(d-1)===zo&&--d;function C(){if(y)return ko;if(b)return b=!1,wu;var E,w=g,X;if(l.charCodeAt(w)===No){for(;g++<d&&l.charCodeAt(g)!==No||l.charCodeAt(++g)===No;);return(E=g)>=d?y=!0:(X=l.charCodeAt(g++))===Xn?b=!0:X===zo&&(b=!0,l.charCodeAt(g)===Xn&&++g),l.slice(w+1,E-1).replace(/""/g,'"')}for(;g<d;){if((X=l.charCodeAt(E=g++))===Xn)b=!0;else if(X===zo)b=!0,l.charCodeAt(g)===Xn&&++g;else if(X!==n)continue;return l.slice(w,E)}return y=!0,l.slice(w,d)}for(;(A=C())!==ko;){for(var B=[];A!==wu&&A!==ko;)B.push(A),A=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=Cu(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
1
+ (function(P,I){typeof exports=="object"&&typeof module<"u"?I(exports):typeof define=="function"&&define.amd?define(["exports"],I):(P=typeof globalThis<"u"?globalThis:P||self,I(P.genomeSpyEmbed={}))})(this,function(P){var qr,lu,Gn,Un,Re,Hn,Jr,fu,$e,Ft,Bo,rd,Fo,id,rn,ni,_r,hu,$r,du,ei,pu,Mo,od,ti;"use strict";var wE=Object.defineProperty;var vE=(P,I,Z)=>I in P?wE(P,I,{enumerable:!0,configurable:!0,writable:!0,value:Z}):P[I]=Z;var ed=(P,I,Z)=>(vE(P,typeof I!="symbol"?I+"":I,Z),Z),cu=(P,I,Z)=>{if(!I.has(P))throw TypeError("Cannot "+Z)};var Q=(P,I,Z)=>(cu(P,I,"read from private field"),Z?Z.call(P):I.get(P)),he=(P,I,Z)=>{if(I.has(P))throw TypeError("Cannot add the same private member more than once");I instanceof WeakSet?I.add(P):I.set(P,Z)},Yn=(P,I,Z,Mt)=>(cu(P,I,"write to private field"),Mt?Mt.call(P,Z):I.set(P,Z),Z),td=(P,I,Z,Mt)=>({set _(Io){Yn(P,I,Io,Z)},get _(){return Q(P,I,Mt)}}),ue=(P,I,Z)=>(cu(P,I,"access private method"),Z);function I(t,e,n){return t.fields=e||[],t.fname=n,t}function Z(t){return t==null?null:t.fname}function Mt(t){return t==null?null:t.fields}function Io(t){return t.length===1?sd(t[0]):ad(t)}const sd=t=>function(e){return e[t]},ad=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function Y(t){throw Error(t)}function ud(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,u;t=t+"";function c(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(u=t[a],u==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(u===r)c(),r=null,i=-1;else{if(r)continue;s===i&&u==='"'||s===i&&u==="'"?(s=a+1,r=u):u==="."&&!i?a>s?c():s=a+1:u==="["?(a>s&&c(),i=s=a+1):u==="]"&&(i||Y("Access path missing open bracket: "+t),i>0&&c(),i=0,s=a+1)}return i&&Y("Access path missing closing bracket: "+t),r&&Y("Access path missing closing quote: "+t),a>s&&(a++,c()),e}function ri(t,e,n){const r=ud(t);return t=r.length===1?r[0]:t,I((n&&n.get||Io)(r),[t],e||t)}ri("id");const ii=I(t=>t,[],"identity");I(()=>0,[],"zero"),I(()=>1,[],"one"),I(()=>!0,[],"true"),I(()=>!1,[],"false");var Me=Array.isArray;function Le(t){return t===Object(t)}function ke(t){return t[t.length-1]}function Wn(t){return t==null||t===""?null:+t}const gu=t=>e=>t*Math.exp(e),mu=t=>e=>Math.log(t*e),cd=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),ld=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,oi=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function To(t,e,n,r){const i=n(t[0]),o=n(ke(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function fd(t,e){return To(t,e,Wn,ii)}function hd(t,e){var n=Math.sign(t[0]);return To(t,e,mu(n),gu(n))}function dd(t,e,n){return To(t,e,oi(n),oi(1/n))}function si(t,e,n,r,i){const o=r(t[0]),s=r(ke(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function Au(t,e,n){return si(t,e,n,Wn,ii)}function xu(t,e,n){const r=Math.sign(t[0]);return si(t,e,n,mu(r),gu(r))}function Po(t,e,n,r){return si(t,e,n,oi(r),oi(1/r))}function pd(t,e,n,r){return si(t,e,n,cd(r),ld(r))}function Ro(t){return t!=null?Me(t)?t:[t]:[]}function gd(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 ge(t){return typeof t=="function"}const md="descending";function yu(t,e,n){n=n||{},e=Ro(e)||[];const r=[],i=[],o={},s=n.comparator||Ad;return Ro(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===md?-1:1),i.push(a=ge(a)?a:ri(a,null,n)),(Mt(a)||[]).forEach(c=>o[c]=1))}),i.length===0?null:I(s(i,r),Object.keys(o))}const bu=(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),Ad=(t,e)=>t.length===1?xd(t[0],e[0]):yd(t,e,t.length),xd=(t,e)=>function(n,r){return bu(t(n),t(r))*e},yd=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=bu(o(r),o(i));return s*e[a]});function bd(t){return ge(t)?t:()=>t}function Lo(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 wd=Object.prototype.hasOwnProperty;function It(t,e){return wd.call(t,e)}function ai(t){return typeof t=="boolean"}function vd(t){return Object.prototype.toString.call(t)==="[object Date]"}function Cd(t){return t&&ge(t[Symbol.iterator])}function me(t){return typeof t=="number"}function W(t){return typeof t=="string"}function Ed(t,e){const n=t[0],r=ke(t),i=+e;return i?i===1?r:n+i*(r-n):n}function ui(t){return t&&ke(t)-t[0]||0}function ci(t){return Me(t)?"["+t.map(ci)+"]":Le(t)||W(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function Sd(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const Dd=t=>me(t)||vd(t)?t:Date.parse(t);function Bd(t,e){return e=e||Dd,t==null||t===""?null:e(t)}function Fd(t){return t==null||t===""?null:t+""}function li(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var wu={},ko={},No=34,Xn=10,zo=13;function vu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Md(t,e){var n=vu(t);return function(r,i){return e(n(r),i,t)}}function Cu(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 Ae(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Id(t){return t<0?"-"+Ae(-t,6):t>9999?"+"+Ae(t,6):Ae(t,4)}function Td(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Id(t.getUTCFullYear())+"-"+Ae(t.getUTCMonth()+1,2)+"-"+Ae(t.getUTCDate(),2)+(i?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"."+Ae(i,3)+"Z":r?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"Z":n||e?"T"+Ae(e,2)+":"+Ae(n,2)+"Z":"")}function Eu(t){var e=new RegExp('["'+t+`
2
+ \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(m,A){if(p)return p(m,A-1);d=m,p=h?Md(m,h):vu(m)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,m=0,A,y=d<=0,b=!1;l.charCodeAt(d-1)===Xn&&--d,l.charCodeAt(d-1)===zo&&--d;function C(){if(y)return ko;if(b)return b=!1,wu;var E,w=g,X;if(l.charCodeAt(w)===No){for(;g++<d&&l.charCodeAt(g)!==No||l.charCodeAt(++g)===No;);return(E=g)>=d?y=!0:(X=l.charCodeAt(g++))===Xn?b=!0:X===zo&&(b=!0,l.charCodeAt(g)===Xn&&++g),l.slice(w+1,E-1).replace(/""/g,'"')}for(;g<d;){if((X=l.charCodeAt(E=g++))===Xn)b=!0;else if(X===zo)b=!0,l.charCodeAt(g)===Xn&&++g;else if(X!==n)continue;return l.slice(w,E)}return y=!0,l.slice(w,d)}for(;(A=C())!==ko;){for(var B=[];A!==wu&&A!==ko;)B.push(A),A=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=Cu(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
3
  `)}function a(l,h){return h==null&&(h=Cu(l)),o(l,h).join(`
4
4
  `)}function u(l){return l.map(c).join(`
5
- `)}function c(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?Id(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:u,formatRow:c,formatValue:f}}var Td=Eu(" "),Pd=Td.parseRows;function Rd(t){return t}function Ld(t){if(t==null)return Rd;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,u){u||(e=n=0);var c=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;c<f;)l[c]=a[c],++c;return l}}function kd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Nd(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Su(t,n)})}:Su(t,e)}function Su(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Du(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 Du(t,e){var n=Ld(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&&kd(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 u(f){return f.map(a)}function c(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(c)};case"Point":h=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=u(f.arcs);break;case"MultiPolygon":h=f.arcs.map(u);break;default:return null}return{type:l,coordinates:h}}return c(e)}function zd(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(c,f){var l=t.arcs[c<0?~c:c],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=c,e[f]=h)}),e.forEach(function(c){var f=a(c),l=f[0],h=f[1],p,d;if(p=i[l])if(delete i[p.end],p.push(c),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(c),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=[c],r[p.start=l]=i[p.end=h]=p});function a(c){var f=t.arcs[c<0?~c:c],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],c<0?[h,l]:[l,h]}function u(c,f){for(var l in c){var h=c[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(p){n[p<0?~p:p]=1}),o.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||o.push([c])}),o}function Od(t){return Du(t,Gd.apply(this,arguments))}function Gd(t,e,n){var r,i,o;if(arguments.length>1)r=Ud(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:zd(t,r)}}function Ud(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 u(l){l.forEach(a)}function c(l){l.forEach(u)}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":u(l.arcs);break;case"MultiPolygon":c(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Zn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Hd(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function fi(t){let e,n,r;t.length!==2?(e=Zn,n=(a,u)=>Zn(t(a),u),r=(a,u)=>t(a)-u):(e=t===Zn||t===Hd?t:Qd,n=t,r=t);function i(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<0?c=l+1:f=l}while(c<f)}return c}function o(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function s(a,u,c=0,f=a.length){const l=i(a,u,c,f-1);return l>c&&r(a[l-1],u)>-r(a[l],u)?l-1:l}return{left:i,center:s,right:o}}function Qd(){return 0}function Bu(t){return t===null?NaN:+t}const Fu=fi(Zn),Oo=Fu.right;Fu.left,fi(Bu).center;const sn=Oo;function jd(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 Tt extends Map{constructor(e,n=Wd){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(Mu(this,e))}has(e){return super.has(Mu(this,e))}set(e,n){return super.set(Vd(this,e),n)}delete(e){return super.delete(Yd(this,e))}}function Mu({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Vd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Yd({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Wd(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Go(t){return t}function hi(t,...e){return Iu(t,Go,Go,e)}function Xd(t,...e){return Iu(t,Array.from,Go,e)}function Iu(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Tt,u=r[s++];let c=-1;for(const f of o){const l=u(f,++c,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 Uo=Math.sqrt(50),Ho=Math.sqrt(10),Qo=Math.sqrt(2);function di(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=Tu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)/a}return r&&s.reverse(),s}function Tu(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>=Uo?10:o>=Ho?5:o>=Qo?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Uo?10:o>=Ho?5:o>=Qo?2:1)}function Pt(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>=Uo?i*=10:o>=Ho?i*=5:o>=Qo&&(i*=2),e<t?-i:i}function Pu(t,e,n=Bu){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 Kn(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 pi(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Zd(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function gi(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 an(t){return t=gi(Math.abs(t)),t?t[1]:NaN}function Kd(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),o.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function qd(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Jd=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function lt(t){if(!(e=Jd.exec(t)))throw new Error("invalid format: "+t);var e;return new jo({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]})}lt.prototype=jo.prototype;function jo(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+""}jo.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 _d(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 Ru;function $d(t,e){var n=gi(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Ru=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")+gi(t,Math.max(0,e+o-1))[0]}function Lu(t,e){var n=gi(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const ku={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Zd,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)=>Lu(t*100,e),r:Lu,s:$d,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Nu(t){return t}var zu=Array.prototype.map,Ou=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ep(t){var e=t.grouping===void 0||t.thousands===void 0?Nu:Kd(zu.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?Nu:qd(zu.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"−":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=lt(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,A=l.width,y=l.comma,b=l.precision,C=l.trim,B=l.type;B==="n"?(y=!0,B="g"):ku[B]||(b===void 0&&(b=12),C=!0,B="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var E=g==="$"?n:g==="#"&&/[boxX]/.test(B)?"0"+B.toLowerCase():"",w=g==="$"?r:/[%p]/.test(B)?s:"",X=ku[B],H=/[defgprs%]/.test(B);b=b===void 0?6:/[gprs]/.test(B)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function ae(M){var Se=E,_=w,ve,je,Qn;if(B==="c")_=X(M)+_,M="";else{M=+M;var jn=M<0||1/M<0;if(M=isNaN(M)?u:X(Math.abs(M),b),C&&(M=_d(M)),jn&&+M==0&&d!=="+"&&(jn=!1),Se=(jn?d==="("?d:a:d==="-"||d==="("?"":d)+Se,_=(B==="s"?Ou[8+Ru/3]:"")+_+(jn&&d==="("?")":""),H){for(ve=-1,je=M.length;++ve<je;)if(Qn=M.charCodeAt(ve),48>Qn||Qn>57){_=(Qn===46?i+M.slice(ve+1):M.slice(ve))+_,M=M.slice(0,ve);break}}}y&&!m&&(M=e(M,1/0));var Vn=Se.length+M.length+_.length,Ve=Vn<A?new Array(A-Vn+1).join(h):"";switch(y&&m&&(M=e(Ve+M,Ve.length?A-_.length:1/0),Ve=""),p){case"<":M=Se+M+_+Ve;break;case"=":M=Se+Ve+M+_;break;case"^":M=Ve.slice(0,Vn=Ve.length>>1)+Se+M+_+Ve.slice(Vn);break;default:M=Ve+Se+M+_;break}return o(M)}return ae.toString=function(){return l+""},ae}function f(l,h){var p=c((l=lt(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(an(h)/3)))*3,g=Math.pow(10,-d),m=Ou[8+d/3];return function(A){return p(g*A)+m}}return{format:c,formatPrefix:f}}var mi,oe,Vo;tp({thousands:",",grouping:[3],currency:["$",""]});function tp(t){return mi=ep(t),oe=mi.format,Vo=mi.formatPrefix,mi}function Gu(t){return Math.max(0,-an(Math.abs(t)))}function Uu(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(an(e)/3)))*3-an(Math.abs(t)))}function Hu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,an(e)-an(t))+1}var Yo=new Date,Wo=new Date;function $(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 u=[],c;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return u;do u.push(c=new Date(+o)),e(o,a),t(o);while(c<o&&o<s);return u},i.filter=function(o){return $(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 Yo.setTime(+o),Wo.setTime(+s),t(Yo),t(Wo),Math.floor(n(Yo,Wo))},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 Ai=$(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Ai.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?$(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Ai};const Xo=Ai;Ai.range;const et=1e3,Me=et*60,tt=Me*60,Rt=tt*24,Zo=Rt*7,Qu=Rt*30,Ko=Rt*365;var ju=$(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*et)},function(t,e){return(e-t)/et},function(t){return t.getUTCSeconds()});const ft=ju;ju.range;var Vu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*et)},function(t,e){t.setTime(+t+e*Me)},function(t,e){return(e-t)/Me},function(t){return t.getMinutes()});const qo=Vu;Vu.range;var Yu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*et-t.getMinutes()*Me)},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getHours()});const Jo=Yu;Yu.range;var Wu=$(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Me)/Rt,t=>t.getDate()-1);const Lt=Wu;Wu.range;function kt(t){return $(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Me)/Zo})}var qn=kt(0),xi=kt(1),np=kt(2),rp=kt(3),un=kt(4),ip=kt(5),op=kt(6);qn.range,xi.range,np.range,rp.range,un.range,ip.range,op.range;var Xu=$(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const yi=Xu;Xu.range;var _o=$(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()});_o.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const ht=_o;_o.range;var Zu=$(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Me)},function(t,e){return(e-t)/Me},function(t){return t.getUTCMinutes()});const $o=Zu;Zu.range;var Ku=$(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getUTCHours()});const es=Ku;Ku.range;var qu=$(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Rt},function(t){return t.getUTCDate()-1});const Nt=qu;qu.range;function zt(t){return $(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Zo})}var Jn=zt(0),bi=zt(1),sp=zt(2),ap=zt(3),cn=zt(4),up=zt(5),cp=zt(6);Jn.range,bi.range,sp.range,ap.range,cn.range,up.range,cp.range;var Ju=$(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const wi=Ju;Ju.range;var ts=$(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()});ts.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const dt=ts;ts.range;function _u(t,e,n,r,i,o){const s=[[ft,1,et],[ft,5,5*et],[ft,15,15*et],[ft,30,30*et],[o,1,Me],[o,5,5*Me],[o,15,15*Me],[o,30,30*Me],[i,1,tt],[i,3,3*tt],[i,6,6*tt],[i,12,12*tt],[r,1,Rt],[r,2,2*Rt],[n,1,Zo],[e,1,Qu],[e,3,3*Qu],[t,1,Ko]];function a(c,f,l){const h=f<c;h&&([c,f]=[f,c]);const p=l&&typeof l.range=="function"?l:u(c,f,l),d=p?p.range(c,+f+1):[];return h?d.reverse():d}function u(c,f,l){const h=Math.abs(f-c)/l,p=fi(([,,m])=>m).right(s,h);if(p===s.length)return t.every(Pt(c/Ko,f/Ko,l));if(p===0)return Xo.every(Math.max(Pt(c,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,u]}const[lp,fp]=_u(dt,wi,Jn,Nt,es,$o),[hp,dp]=_u(ht,yi,qn,Lt,Jo,qo),_n="year",$n="quarter",er="month",tr="week",nr="date",vi="day",ns="dayofyear",rr="hours",ir="minutes",or="seconds",Ci="milliseconds";[_n,$n,er,tr,nr,vi,ns,rr,ir,or,Ci].reduce((t,e,n)=>(t[e]=1+n,t),{});const pp={[_n]:ht,[$n]:yi.every(3),[er]:yi,[tr]:qn,[nr]:Lt,[vi]:Lt,[ns]:Lt,[rr]:Jo,[ir]:qo,[or]:ft,[Ci]:Xo},gp={[_n]:dt,[$n]:wi.every(3),[er]:wi,[tr]:Jn,[nr]:Nt,[vi]:Nt,[ns]:Nt,[rr]:es,[ir]:$o,[or]:ft,[Ci]:Xo};function mp(t){return pp[t]}function Ap(t){return gp[t]}function rs(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 is(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 sr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function $u(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,u=t.shortMonths,c=ar(i),f=ur(i),l=ar(o),h=ur(o),p=ar(s),d=ur(s),g=ar(a),m=ur(a),A=ar(u),y=ur(u),b={a:jn,A:Vn,b:Ve,B:cE,c:null,d:oc,e:oc,f:Up,g:qp,G:_p,H:zp,I:Op,j:Gp,L:sc,m:Hp,M:Qp,p:lE,q:fE,Q:hc,s:dc,S:jp,u:Vp,U:Yp,V:Wp,w:Xp,W:Zp,x:null,X:null,y:Kp,Y:Jp,Z:$p,"%":fc},C={a:hE,A:dE,b:pE,B:gE,c:null,d:uc,e:uc,f:rg,g:dg,G:gg,H:eg,I:tg,j:ng,L:cc,m:ig,M:og,p:mE,q:AE,Q:hc,s:dc,S:sg,u:ag,U:ug,V:cg,w:lg,W:fg,x:null,X:null,y:hg,Y:pg,Z:mg,"%":fc},B={a:ae,A:M,b:Se,B:_,c:ve,d:rc,e:rc,f:Rp,g:nc,G:tc,H:ic,I:ic,j:Mp,L:Pp,m:Fp,M:Ip,p:H,q:Bp,Q:kp,s:Np,S:Tp,u:vp,U:Cp,V:Ep,w:wp,W:Sp,x:je,X:Qn,y:nc,Y:tc,Z:Dp,"%":Lp};b.x=E(n,b),b.X=E(r,b),b.c=E(e,b),C.x=E(n,C),C.X=E(r,C),C.c=E(e,C);function E(D,T){return function(k){var v=[],Ce=-1,G=0,De=D.length,Be,on,_h;for(k instanceof Date||(k=new Date(+k));++Ce<De;)D.charCodeAt(Ce)===37&&(v.push(D.slice(G,Ce)),(on=ec[Be=D.charAt(++Ce)])!=null?Be=D.charAt(++Ce):on=Be==="e"?" ":"0",(_h=T[Be])&&(Be=_h(k,on)),v.push(Be),G=Ce+1);return v.push(D.slice(G,Ce)),v.join("")}}function w(D,T){return function(k){var v=sr(1900,void 0,1),Ce=X(v,D,k+="",0),G,De;if(Ce!=k.length)return null;if("Q"in v)return new Date(v.Q);if("s"in v)return new Date(v.s*1e3+("L"in v?v.L:0));if(T&&!("Z"in v)&&(v.Z=0),"p"in v&&(v.H=v.H%12+v.p*12),v.m===void 0&&(v.m="q"in v?v.q:0),"V"in v){if(v.V<1||v.V>53)return null;"w"in v||(v.w=1),"Z"in v?(G=is(sr(v.y,0,1)),De=G.getUTCDay(),G=De>4||De===0?bi.ceil(G):bi(G),G=Nt.offset(G,(v.V-1)*7),v.y=G.getUTCFullYear(),v.m=G.getUTCMonth(),v.d=G.getUTCDate()+(v.w+6)%7):(G=rs(sr(v.y,0,1)),De=G.getDay(),G=De>4||De===0?xi.ceil(G):xi(G),G=Lt.offset(G,(v.V-1)*7),v.y=G.getFullYear(),v.m=G.getMonth(),v.d=G.getDate()+(v.w+6)%7)}else("W"in v||"U"in v)&&("w"in v||(v.w="u"in v?v.u%7:"W"in v?1:0),De="Z"in v?is(sr(v.y,0,1)).getUTCDay():rs(sr(v.y,0,1)).getDay(),v.m=0,v.d="W"in v?(v.w+6)%7+v.W*7-(De+5)%7:v.w+v.U*7-(De+6)%7);return"Z"in v?(v.H+=v.Z/100|0,v.M+=v.Z%100,is(v)):rs(v)}}function X(D,T,k,v){for(var Ce=0,G=T.length,De=k.length,Be,on;Ce<G;){if(v>=De)return-1;if(Be=T.charCodeAt(Ce++),Be===37){if(Be=T.charAt(Ce++),on=B[Be in ec?T.charAt(Ce++):Be],!on||(v=on(D,k,v))<0)return-1}else if(Be!=k.charCodeAt(v++))return-1}return v}function H(D,T,k){var v=c.exec(T.slice(k));return v?(D.p=f.get(v[0].toLowerCase()),k+v[0].length):-1}function ae(D,T,k){var v=p.exec(T.slice(k));return v?(D.w=d.get(v[0].toLowerCase()),k+v[0].length):-1}function M(D,T,k){var v=l.exec(T.slice(k));return v?(D.w=h.get(v[0].toLowerCase()),k+v[0].length):-1}function Se(D,T,k){var v=A.exec(T.slice(k));return v?(D.m=y.get(v[0].toLowerCase()),k+v[0].length):-1}function _(D,T,k){var v=g.exec(T.slice(k));return v?(D.m=m.get(v[0].toLowerCase()),k+v[0].length):-1}function ve(D,T,k){return X(D,e,T,k)}function je(D,T,k){return X(D,n,T,k)}function Qn(D,T,k){return X(D,r,T,k)}function jn(D){return s[D.getDay()]}function Vn(D){return o[D.getDay()]}function Ve(D){return u[D.getMonth()]}function cE(D){return a[D.getMonth()]}function lE(D){return i[+(D.getHours()>=12)]}function fE(D){return 1+~~(D.getMonth()/3)}function hE(D){return s[D.getUTCDay()]}function dE(D){return o[D.getUTCDay()]}function pE(D){return u[D.getUTCMonth()]}function gE(D){return a[D.getUTCMonth()]}function mE(D){return i[+(D.getUTCHours()>=12)]}function AE(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var T=E(D+="",b);return T.toString=function(){return D},T},parse:function(D){var T=w(D+="",!1);return T.toString=function(){return D},T},utcFormat:function(D){var T=E(D+="",C);return T.toString=function(){return D},T},utcParse:function(D){var T=w(D+="",!0);return T.toString=function(){return D},T}}}var ec={"-":"",_:" ",0:"0"},ee=/^\s*\d+/,xp=/^%/,yp=/[\\^$*+?|[\]().{}]/g;function R(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 bp(t){return t.replace(yp,"\\$&")}function ar(t){return new RegExp("^(?:"+t.map(bp).join("|")+")","i")}function ur(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function wp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function vp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Cp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Ep(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Sp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function tc(t,e,n){var r=ee.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function nc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Dp(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 Bp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Fp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function rc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Mp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function ic(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Ip(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Tp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Pp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Rp(t,e,n){var r=ee.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Lp(t,e,n){var r=xp.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function kp(t,e,n){var r=ee.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Np(t,e,n){var r=ee.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function oc(t,e){return R(t.getDate(),e,2)}function zp(t,e){return R(t.getHours(),e,2)}function Op(t,e){return R(t.getHours()%12||12,e,2)}function Gp(t,e){return R(1+Lt.count(ht(t),t),e,3)}function sc(t,e){return R(t.getMilliseconds(),e,3)}function Up(t,e){return sc(t,e)+"000"}function Hp(t,e){return R(t.getMonth()+1,e,2)}function Qp(t,e){return R(t.getMinutes(),e,2)}function jp(t,e){return R(t.getSeconds(),e,2)}function Vp(t){var e=t.getDay();return e===0?7:e}function Yp(t,e){return R(qn.count(ht(t)-1,t),e,2)}function ac(t){var e=t.getDay();return e>=4||e===0?un(t):un.ceil(t)}function Wp(t,e){return t=ac(t),R(un.count(ht(t),t)+(ht(t).getDay()===4),e,2)}function Xp(t){return t.getDay()}function Zp(t,e){return R(xi.count(ht(t)-1,t),e,2)}function Kp(t,e){return R(t.getFullYear()%100,e,2)}function qp(t,e){return t=ac(t),R(t.getFullYear()%100,e,2)}function Jp(t,e){return R(t.getFullYear()%1e4,e,4)}function _p(t,e){var n=t.getDay();return t=n>=4||n===0?un(t):un.ceil(t),R(t.getFullYear()%1e4,e,4)}function $p(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+R(e/60|0,"0",2)+R(e%60,"0",2)}function uc(t,e){return R(t.getUTCDate(),e,2)}function eg(t,e){return R(t.getUTCHours(),e,2)}function tg(t,e){return R(t.getUTCHours()%12||12,e,2)}function ng(t,e){return R(1+Nt.count(dt(t),t),e,3)}function cc(t,e){return R(t.getUTCMilliseconds(),e,3)}function rg(t,e){return cc(t,e)+"000"}function ig(t,e){return R(t.getUTCMonth()+1,e,2)}function og(t,e){return R(t.getUTCMinutes(),e,2)}function sg(t,e){return R(t.getUTCSeconds(),e,2)}function ag(t){var e=t.getUTCDay();return e===0?7:e}function ug(t,e){return R(Jn.count(dt(t)-1,t),e,2)}function lc(t){var e=t.getUTCDay();return e>=4||e===0?cn(t):cn.ceil(t)}function cg(t,e){return t=lc(t),R(cn.count(dt(t),t)+(dt(t).getUTCDay()===4),e,2)}function lg(t){return t.getUTCDay()}function fg(t,e){return R(bi.count(dt(t)-1,t),e,2)}function hg(t,e){return R(t.getUTCFullYear()%100,e,2)}function dg(t,e){return t=lc(t),R(t.getUTCFullYear()%100,e,2)}function pg(t,e){return R(t.getUTCFullYear()%1e4,e,4)}function gg(t,e){var n=t.getUTCDay();return t=n>=4||n===0?cn(t):cn.ceil(t),R(t.getUTCFullYear()%1e4,e,4)}function mg(){return"+0000"}function fc(){return"%"}function hc(t){return+t}function dc(t){return Math.floor(+t/1e3)}var ln,os,pc,ss,gc;Ag({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 Ag(t){return ln=$u(t),os=ln.format,pc=ln.parse,ss=ln.utcFormat,gc=ln.utcParse,ln}function cr(t){const e={};return n=>e[n]||(e[n]=t(n))}function xg(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=yg(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 yg(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 bg(t){const e=cr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=lt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return xg(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=lt(s??",f");const a=Pt(r,i,o),u=Math.max(Math.abs(r),Math.abs(i));let c;if(s.precision==null)switch(s.type){case"s":return isNaN(c=Uu(a,u))||(s.precision=c),n(s,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Hu(a,u))||(s.precision=c-(s.type==="e"));break}case"f":case"%":{isNaN(c=Gu(a))||(s.precision=c-(s.type==="%")*2);break}}return e(s)}}}wg();function wg(){return bg({format:oe,formatPrefix:Vo})}function mc(t,e,n){n=n||{},Le(n)||Y("Invalid time multi-format specifier: ".concat(n));const r=e(or),i=e(ir),o=e(rr),s=e(nr),a=e(tr),u=e(er),c=e($n),f=e(_n),l=t(n[Ci]||".%L"),h=t(n[or]||":%S"),p=t(n[ir]||"%I:%M"),d=t(n[rr]||"%I %p"),g=t(n[nr]||n[vi]||"%a %d"),m=t(n[tr]||"%b %d"),A=t(n[er]||"%B"),y=t(n[$n]||"%B"),b=t(n[_n]||"%Y");return C=>(r(C)<C?l:i(C)<C?h:o(C)<C?p:s(C)<C?d:u(C)<C?a(C)<C?g:m:f(C)<C?c(C)<C?A:y:b)(C)}function Ac(t){const e=cr(t.format),n=cr(t.utcFormat);return{timeFormat:r=>W(r)?e(r):mc(e,mp,r),utcFormat:r=>W(r)?n(r):mc(n,Ap,r),timeParse:cr(t.parse),utcParse:cr(t.utcParse)}}let as;vg();function vg(){return as=Ac({format:os,parse:pc,utcFormat:ss,utcParse:gc})}function Cg(t){return Ac($u(t))}function Eg(t){return arguments.length?as=Cg(t):as}const Sg=/^(data:|([A-Za-z]+:)?\/\/)/,Dg=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Bg=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,xc="file://";function Fg(t,e){return n=>({options:n||{},sanitize:Ig,load:Mg,fileAccess:!!e,file:Tg(e),http:Rg(t)})}async function Mg(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Ig(t,e){e=Lo({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=Dg.test(t.replace(Bg,""));(t==null||typeof t!="string"||!a)&&Y("Sanitize failure, invalid URI: "+ci(t));const u=Sg.test(t);return(s=e.baseURL)&&!u&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(xc))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(xc.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 Tg(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Pg}async function Pg(){Y("No file system access.")}function Rg(t){return t?async function(e,n){const r=Lo({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ge(o[i])?o[i]():o.text():Y(o.status+""+o.statusText)}:Lg}async function Lg(){Y("No HTTP fetch method available.")}const kg=t=>t!=null&&t===t,Ng=t=>t==="true"||t==="false"||t===!0||t===!1,zg=t=>!Number.isNaN(Date.parse(t)),yc=t=>!Number.isNaN(+t)&&!(t instanceof Date),Og=t=>yc(t)&&Number.isInteger(+t),bc={boolean:Ed,integer:Wn,number:Wn,date:Dd,string:Bd,unknown:ii},Ei=[Ng,Og,yc,zg],Gg=["boolean","integer","number","date"];function Ug(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Ei.length,i=Ei.map((o,s)=>s+1);for(let o=0,s=0,a,u;o<n;++o)for(u=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&kg(u)&&!Ei[a](u)&&(i[a]=0,++s,s===Ei.length))return"string";return Gg[i.reduce((o,s)=>o===0?s:o,0)-1]}function Hg(t,e){return e.reduce((n,r)=>(n[r]=Ug(t,r),n),{})}function wc(t){const e=function(n,r){const i={delimiter:t};return us(n,r?Lo(r,i):i)};return e.responseType="text",e}function us(t,e){return e.header&&(t=e.header.map(ci).join(e.delimiter)+`
6
- `+t),Eu(e.delimiter).parse(t+"")}us.responseType="text";function Qg(t){return typeof Buffer=="function"&&ge(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function cs(t,e){const n=e&&e.property?ri(e.property):ii;return Le(t)&&!Qg(t)?jg(n(t),e):n(JSON.parse(t))}cs.responseType="json";function jg(t,e){return!Fe(t)&&vd(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Vg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function vc(t,e){let n,r,i,o;return t=cs(t,e),e&&e.feature?(n=Nd,i=e.feature):e&&e.mesh?(n=Od,i=e.mesh,o=Vg[e.filter]):Y("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):Y("Invalid TopoJSON object: "+i),r&&r.features||[r]}vc.responseType="json";const ls={dsv:us,csv:wc(","),tsv:wc(" "),json:cs,topojson:vc};function Cc(t,e){return arguments.length>1?(ls[t]=e,this):It(ls,t)?ls[t]:null}function Ec(t,e,n,r){e=e||{};const i=Cc(e.type||"json");return i||Y("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Yg(t,e.parse,n,r),It(t,"columns")&&delete t.columns,t}function Yg(t,e,n,r){if(!t.length)return;const i=Eg();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,u,c,f,l;e==="auto"&&(e=Hg(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(!bc[d])throw Error("Illegal format pattern: "+p+":"+d);return bc[d]});for(u=0,f=t.length,l=o.length;u<f;++u)for(s=t[u],c=0;c<l;++c)a=o[c],s[a]=h[c](s[a])}const Si=Fg(typeof fetch<"u"&&fetch,null);/**
5
+ `)}function c(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?Td(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:u,formatRow:c,formatValue:f}}var Pd=Eu(" "),Rd=Pd.parseRows;function Ld(t){return t}function kd(t){if(t==null)return Ld;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,u){u||(e=n=0);var c=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;c<f;)l[c]=a[c],++c;return l}}function Nd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function zd(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Su(t,n)})}:Su(t,e)}function Su(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Du(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 Du(t,e){var n=kd(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&&Nd(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 u(f){return f.map(a)}function c(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(c)};case"Point":h=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=u(f.arcs);break;case"MultiPolygon":h=f.arcs.map(u);break;default:return null}return{type:l,coordinates:h}}return c(e)}function Od(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(c,f){var l=t.arcs[c<0?~c:c],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=c,e[f]=h)}),e.forEach(function(c){var f=a(c),l=f[0],h=f[1],p,d;if(p=i[l])if(delete i[p.end],p.push(c),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(c),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=[c],r[p.start=l]=i[p.end=h]=p});function a(c){var f=t.arcs[c<0?~c:c],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],c<0?[h,l]:[l,h]}function u(c,f){for(var l in c){var h=c[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(p){n[p<0?~p:p]=1}),o.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||o.push([c])}),o}function Gd(t){return Du(t,Ud.apply(this,arguments))}function Ud(t,e,n){var r,i,o;if(arguments.length>1)r=Hd(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Od(t,r)}}function Hd(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 u(l){l.forEach(a)}function c(l){l.forEach(u)}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":u(l.arcs);break;case"MultiPolygon":c(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Zn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Qd(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function fi(t){let e,n,r;t.length!==2?(e=Zn,n=(a,u)=>Zn(t(a),u),r=(a,u)=>t(a)-u):(e=t===Zn||t===Qd?t:jd,n=t,r=t);function i(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<0?c=l+1:f=l}while(c<f)}return c}function o(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function s(a,u,c=0,f=a.length){const l=i(a,u,c,f-1);return l>c&&r(a[l-1],u)>-r(a[l],u)?l-1:l}return{left:i,center:s,right:o}}function jd(){return 0}function Bu(t){return t===null?NaN:+t}const Fu=fi(Zn),Oo=Fu.right;Fu.left,fi(Bu).center;const sn=Oo;function Vd(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 Tt extends Map{constructor(e,n=Xd){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(Mu(this,e))}has(e){return super.has(Mu(this,e))}set(e,n){return super.set(Yd(this,e),n)}delete(e){return super.delete(Wd(this,e))}}function Mu({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Yd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Wd({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Xd(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Go(t){return t}function hi(t,...e){return Iu(t,Go,Go,e)}function Zd(t,...e){return Iu(t,Array.from,Go,e)}function Iu(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Tt,u=r[s++];let c=-1;for(const f of o){const l=u(f,++c,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 Uo=Math.sqrt(50),Ho=Math.sqrt(10),Qo=Math.sqrt(2);function di(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=Tu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)/a}return r&&s.reverse(),s}function Tu(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>=Uo?10:o>=Ho?5:o>=Qo?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Uo?10:o>=Ho?5:o>=Qo?2:1)}function Pt(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>=Uo?i*=10:o>=Ho?i*=5:o>=Qo&&(i*=2),e<t?-i:i}function Pu(t,e,n=Bu){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 Kn(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 pi(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Kd(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function gi(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 an(t){return t=gi(Math.abs(t)),t?t[1]:NaN}function qd(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),o.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function Jd(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var _d=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function lt(t){if(!(e=_d.exec(t)))throw new Error("invalid format: "+t);var e;return new jo({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]})}lt.prototype=jo.prototype;function jo(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+""}jo.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 $d(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 Ru;function ep(t,e){var n=gi(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Ru=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")+gi(t,Math.max(0,e+o-1))[0]}function Lu(t,e){var n=gi(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const ku={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Kd,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)=>Lu(t*100,e),r:Lu,s:ep,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Nu(t){return t}var zu=Array.prototype.map,Ou=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function tp(t){var e=t.grouping===void 0||t.thousands===void 0?Nu:qd(zu.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?Nu:Jd(zu.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"−":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=lt(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,m=l.zero,A=l.width,y=l.comma,b=l.precision,C=l.trim,B=l.type;B==="n"?(y=!0,B="g"):ku[B]||(b===void 0&&(b=12),C=!0,B="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var E=g==="$"?n:g==="#"&&/[boxX]/.test(B)?"0"+B.toLowerCase():"",w=g==="$"?r:/[%p]/.test(B)?s:"",X=ku[B],H=/[defgprs%]/.test(B);b=b===void 0?6:/[gprs]/.test(B)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function ae(M){var De=E,_=w,ve,je,Qn;if(B==="c")_=X(M)+_,M="";else{M=+M;var jn=M<0||1/M<0;if(M=isNaN(M)?u:X(Math.abs(M),b),C&&(M=$d(M)),jn&&+M==0&&d!=="+"&&(jn=!1),De=(jn?d==="("?d:a:d==="-"||d==="("?"":d)+De,_=(B==="s"?Ou[8+Ru/3]:"")+_+(jn&&d==="("?")":""),H){for(ve=-1,je=M.length;++ve<je;)if(Qn=M.charCodeAt(ve),48>Qn||Qn>57){_=(Qn===46?i+M.slice(ve+1):M.slice(ve))+_,M=M.slice(0,ve);break}}}y&&!m&&(M=e(M,1/0));var Vn=De.length+M.length+_.length,Ve=Vn<A?new Array(A-Vn+1).join(h):"";switch(y&&m&&(M=e(Ve+M,Ve.length?A-_.length:1/0),Ve=""),p){case"<":M=De+M+_+Ve;break;case"=":M=De+Ve+M+_;break;case"^":M=Ve.slice(0,Vn=Ve.length>>1)+De+M+_+Ve.slice(Vn);break;default:M=Ve+De+M+_;break}return o(M)}return ae.toString=function(){return l+""},ae}function f(l,h){var p=c((l=lt(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(an(h)/3)))*3,g=Math.pow(10,-d),m=Ou[8+d/3];return function(A){return p(g*A)+m}}return{format:c,formatPrefix:f}}var mi,oe,Vo;np({thousands:",",grouping:[3],currency:["$",""]});function np(t){return mi=tp(t),oe=mi.format,Vo=mi.formatPrefix,mi}function Gu(t){return Math.max(0,-an(Math.abs(t)))}function Uu(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(an(e)/3)))*3-an(Math.abs(t)))}function Hu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,an(e)-an(t))+1}var Yo=new Date,Wo=new Date;function $(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 u=[],c;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return u;do u.push(c=new Date(+o)),e(o,a),t(o);while(c<o&&o<s);return u},i.filter=function(o){return $(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 Yo.setTime(+o),Wo.setTime(+s),t(Yo),t(Wo),Math.floor(n(Yo,Wo))},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 Ai=$(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Ai.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?$(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Ai};const Xo=Ai;Ai.range;const et=1e3,Ie=et*60,tt=Ie*60,Rt=tt*24,Zo=Rt*7,Qu=Rt*30,Ko=Rt*365;var ju=$(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*et)},function(t,e){return(e-t)/et},function(t){return t.getUTCSeconds()});const ft=ju;ju.range;var Vu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*et)},function(t,e){t.setTime(+t+e*Ie)},function(t,e){return(e-t)/Ie},function(t){return t.getMinutes()});const qo=Vu;Vu.range;var Yu=$(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*et-t.getMinutes()*Ie)},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getHours()});const Jo=Yu;Yu.range;var Wu=$(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ie)/Rt,t=>t.getDate()-1);const Lt=Wu;Wu.range;function kt(t){return $(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Ie)/Zo})}var qn=kt(0),xi=kt(1),rp=kt(2),ip=kt(3),un=kt(4),op=kt(5),sp=kt(6);qn.range,xi.range,rp.range,ip.range,un.range,op.range,sp.range;var Xu=$(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const yi=Xu;Xu.range;var _o=$(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()});_o.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const ht=_o;_o.range;var Zu=$(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Ie)},function(t,e){return(e-t)/Ie},function(t){return t.getUTCMinutes()});const $o=Zu;Zu.range;var Ku=$(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*tt)},function(t,e){return(e-t)/tt},function(t){return t.getUTCHours()});const es=Ku;Ku.range;var qu=$(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Rt},function(t){return t.getUTCDate()-1});const Nt=qu;qu.range;function zt(t){return $(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Zo})}var Jn=zt(0),bi=zt(1),ap=zt(2),up=zt(3),cn=zt(4),cp=zt(5),lp=zt(6);Jn.range,bi.range,ap.range,up.range,cn.range,cp.range,lp.range;var Ju=$(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const wi=Ju;Ju.range;var ts=$(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()});ts.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:$(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const dt=ts;ts.range;function _u(t,e,n,r,i,o){const s=[[ft,1,et],[ft,5,5*et],[ft,15,15*et],[ft,30,30*et],[o,1,Ie],[o,5,5*Ie],[o,15,15*Ie],[o,30,30*Ie],[i,1,tt],[i,3,3*tt],[i,6,6*tt],[i,12,12*tt],[r,1,Rt],[r,2,2*Rt],[n,1,Zo],[e,1,Qu],[e,3,3*Qu],[t,1,Ko]];function a(c,f,l){const h=f<c;h&&([c,f]=[f,c]);const p=l&&typeof l.range=="function"?l:u(c,f,l),d=p?p.range(c,+f+1):[];return h?d.reverse():d}function u(c,f,l){const h=Math.abs(f-c)/l,p=fi(([,,m])=>m).right(s,h);if(p===s.length)return t.every(Pt(c/Ko,f/Ko,l));if(p===0)return Xo.every(Math.max(Pt(c,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,u]}const[fp,hp]=_u(dt,wi,Jn,Nt,es,$o),[dp,pp]=_u(ht,yi,qn,Lt,Jo,qo),_n="year",$n="quarter",er="month",tr="week",nr="date",vi="day",ns="dayofyear",rr="hours",ir="minutes",or="seconds",Ci="milliseconds";[_n,$n,er,tr,nr,vi,ns,rr,ir,or,Ci].reduce((t,e,n)=>(t[e]=1+n,t),{});const gp={[_n]:ht,[$n]:yi.every(3),[er]:yi,[tr]:qn,[nr]:Lt,[vi]:Lt,[ns]:Lt,[rr]:Jo,[ir]:qo,[or]:ft,[Ci]:Xo},mp={[_n]:dt,[$n]:wi.every(3),[er]:wi,[tr]:Jn,[nr]:Nt,[vi]:Nt,[ns]:Nt,[rr]:es,[ir]:$o,[or]:ft,[Ci]:Xo};function Ap(t){return gp[t]}function xp(t){return mp[t]}function rs(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 is(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 sr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function $u(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,u=t.shortMonths,c=ar(i),f=ur(i),l=ar(o),h=ur(o),p=ar(s),d=ur(s),g=ar(a),m=ur(a),A=ar(u),y=ur(u),b={a:jn,A:Vn,b:Ve,B:hE,c:null,d:oc,e:oc,f:Hp,g:Jp,G:$p,H:Op,I:Gp,j:Up,L:sc,m:Qp,M:jp,p:dE,q:pE,Q:hc,s:dc,S:Vp,u:Yp,U:Wp,V:Xp,w:Zp,W:Kp,x:null,X:null,y:qp,Y:_p,Z:eg,"%":fc},C={a:gE,A:mE,b:AE,B:xE,c:null,d:uc,e:uc,f:ig,g:pg,G:mg,H:tg,I:ng,j:rg,L:cc,m:og,M:sg,p:yE,q:bE,Q:hc,s:dc,S:ag,u:ug,U:cg,V:lg,w:fg,W:hg,x:null,X:null,y:dg,Y:gg,Z:Ag,"%":fc},B={a:ae,A:M,b:De,B:_,c:ve,d:rc,e:rc,f:Lp,g:nc,G:tc,H:ic,I:ic,j:Ip,L:Rp,m:Mp,M:Tp,p:H,q:Fp,Q:Np,s:zp,S:Pp,u:Cp,U:Ep,V:Sp,w:vp,W:Dp,x:je,X:Qn,y:nc,Y:tc,Z:Bp,"%":kp};b.x=E(n,b),b.X=E(r,b),b.c=E(e,b),C.x=E(n,C),C.X=E(r,C),C.c=E(e,C);function E(D,T){return function(k){var v=[],Ce=-1,G=0,Be=D.length,Fe,on,$h;for(k instanceof Date||(k=new Date(+k));++Ce<Be;)D.charCodeAt(Ce)===37&&(v.push(D.slice(G,Ce)),(on=ec[Fe=D.charAt(++Ce)])!=null?Fe=D.charAt(++Ce):on=Fe==="e"?" ":"0",($h=T[Fe])&&(Fe=$h(k,on)),v.push(Fe),G=Ce+1);return v.push(D.slice(G,Ce)),v.join("")}}function w(D,T){return function(k){var v=sr(1900,void 0,1),Ce=X(v,D,k+="",0),G,Be;if(Ce!=k.length)return null;if("Q"in v)return new Date(v.Q);if("s"in v)return new Date(v.s*1e3+("L"in v?v.L:0));if(T&&!("Z"in v)&&(v.Z=0),"p"in v&&(v.H=v.H%12+v.p*12),v.m===void 0&&(v.m="q"in v?v.q:0),"V"in v){if(v.V<1||v.V>53)return null;"w"in v||(v.w=1),"Z"in v?(G=is(sr(v.y,0,1)),Be=G.getUTCDay(),G=Be>4||Be===0?bi.ceil(G):bi(G),G=Nt.offset(G,(v.V-1)*7),v.y=G.getUTCFullYear(),v.m=G.getUTCMonth(),v.d=G.getUTCDate()+(v.w+6)%7):(G=rs(sr(v.y,0,1)),Be=G.getDay(),G=Be>4||Be===0?xi.ceil(G):xi(G),G=Lt.offset(G,(v.V-1)*7),v.y=G.getFullYear(),v.m=G.getMonth(),v.d=G.getDate()+(v.w+6)%7)}else("W"in v||"U"in v)&&("w"in v||(v.w="u"in v?v.u%7:"W"in v?1:0),Be="Z"in v?is(sr(v.y,0,1)).getUTCDay():rs(sr(v.y,0,1)).getDay(),v.m=0,v.d="W"in v?(v.w+6)%7+v.W*7-(Be+5)%7:v.w+v.U*7-(Be+6)%7);return"Z"in v?(v.H+=v.Z/100|0,v.M+=v.Z%100,is(v)):rs(v)}}function X(D,T,k,v){for(var Ce=0,G=T.length,Be=k.length,Fe,on;Ce<G;){if(v>=Be)return-1;if(Fe=T.charCodeAt(Ce++),Fe===37){if(Fe=T.charAt(Ce++),on=B[Fe in ec?T.charAt(Ce++):Fe],!on||(v=on(D,k,v))<0)return-1}else if(Fe!=k.charCodeAt(v++))return-1}return v}function H(D,T,k){var v=c.exec(T.slice(k));return v?(D.p=f.get(v[0].toLowerCase()),k+v[0].length):-1}function ae(D,T,k){var v=p.exec(T.slice(k));return v?(D.w=d.get(v[0].toLowerCase()),k+v[0].length):-1}function M(D,T,k){var v=l.exec(T.slice(k));return v?(D.w=h.get(v[0].toLowerCase()),k+v[0].length):-1}function De(D,T,k){var v=A.exec(T.slice(k));return v?(D.m=y.get(v[0].toLowerCase()),k+v[0].length):-1}function _(D,T,k){var v=g.exec(T.slice(k));return v?(D.m=m.get(v[0].toLowerCase()),k+v[0].length):-1}function ve(D,T,k){return X(D,e,T,k)}function je(D,T,k){return X(D,n,T,k)}function Qn(D,T,k){return X(D,r,T,k)}function jn(D){return s[D.getDay()]}function Vn(D){return o[D.getDay()]}function Ve(D){return u[D.getMonth()]}function hE(D){return a[D.getMonth()]}function dE(D){return i[+(D.getHours()>=12)]}function pE(D){return 1+~~(D.getMonth()/3)}function gE(D){return s[D.getUTCDay()]}function mE(D){return o[D.getUTCDay()]}function AE(D){return u[D.getUTCMonth()]}function xE(D){return a[D.getUTCMonth()]}function yE(D){return i[+(D.getUTCHours()>=12)]}function bE(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var T=E(D+="",b);return T.toString=function(){return D},T},parse:function(D){var T=w(D+="",!1);return T.toString=function(){return D},T},utcFormat:function(D){var T=E(D+="",C);return T.toString=function(){return D},T},utcParse:function(D){var T=w(D+="",!0);return T.toString=function(){return D},T}}}var ec={"-":"",_:" ",0:"0"},ee=/^\s*\d+/,yp=/^%/,bp=/[\\^$*+?|[\]().{}]/g;function R(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 wp(t){return t.replace(bp,"\\$&")}function ar(t){return new RegExp("^(?:"+t.map(wp).join("|")+")","i")}function ur(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function vp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Cp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Ep(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Sp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Dp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function tc(t,e,n){var r=ee.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function nc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Bp(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 Fp(t,e,n){var r=ee.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Mp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function rc(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Ip(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function ic(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Tp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Pp(t,e,n){var r=ee.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Rp(t,e,n){var r=ee.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Lp(t,e,n){var r=ee.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function kp(t,e,n){var r=yp.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Np(t,e,n){var r=ee.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function zp(t,e,n){var r=ee.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function oc(t,e){return R(t.getDate(),e,2)}function Op(t,e){return R(t.getHours(),e,2)}function Gp(t,e){return R(t.getHours()%12||12,e,2)}function Up(t,e){return R(1+Lt.count(ht(t),t),e,3)}function sc(t,e){return R(t.getMilliseconds(),e,3)}function Hp(t,e){return sc(t,e)+"000"}function Qp(t,e){return R(t.getMonth()+1,e,2)}function jp(t,e){return R(t.getMinutes(),e,2)}function Vp(t,e){return R(t.getSeconds(),e,2)}function Yp(t){var e=t.getDay();return e===0?7:e}function Wp(t,e){return R(qn.count(ht(t)-1,t),e,2)}function ac(t){var e=t.getDay();return e>=4||e===0?un(t):un.ceil(t)}function Xp(t,e){return t=ac(t),R(un.count(ht(t),t)+(ht(t).getDay()===4),e,2)}function Zp(t){return t.getDay()}function Kp(t,e){return R(xi.count(ht(t)-1,t),e,2)}function qp(t,e){return R(t.getFullYear()%100,e,2)}function Jp(t,e){return t=ac(t),R(t.getFullYear()%100,e,2)}function _p(t,e){return R(t.getFullYear()%1e4,e,4)}function $p(t,e){var n=t.getDay();return t=n>=4||n===0?un(t):un.ceil(t),R(t.getFullYear()%1e4,e,4)}function eg(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+R(e/60|0,"0",2)+R(e%60,"0",2)}function uc(t,e){return R(t.getUTCDate(),e,2)}function tg(t,e){return R(t.getUTCHours(),e,2)}function ng(t,e){return R(t.getUTCHours()%12||12,e,2)}function rg(t,e){return R(1+Nt.count(dt(t),t),e,3)}function cc(t,e){return R(t.getUTCMilliseconds(),e,3)}function ig(t,e){return cc(t,e)+"000"}function og(t,e){return R(t.getUTCMonth()+1,e,2)}function sg(t,e){return R(t.getUTCMinutes(),e,2)}function ag(t,e){return R(t.getUTCSeconds(),e,2)}function ug(t){var e=t.getUTCDay();return e===0?7:e}function cg(t,e){return R(Jn.count(dt(t)-1,t),e,2)}function lc(t){var e=t.getUTCDay();return e>=4||e===0?cn(t):cn.ceil(t)}function lg(t,e){return t=lc(t),R(cn.count(dt(t),t)+(dt(t).getUTCDay()===4),e,2)}function fg(t){return t.getUTCDay()}function hg(t,e){return R(bi.count(dt(t)-1,t),e,2)}function dg(t,e){return R(t.getUTCFullYear()%100,e,2)}function pg(t,e){return t=lc(t),R(t.getUTCFullYear()%100,e,2)}function gg(t,e){return R(t.getUTCFullYear()%1e4,e,4)}function mg(t,e){var n=t.getUTCDay();return t=n>=4||n===0?cn(t):cn.ceil(t),R(t.getUTCFullYear()%1e4,e,4)}function Ag(){return"+0000"}function fc(){return"%"}function hc(t){return+t}function dc(t){return Math.floor(+t/1e3)}var ln,os,pc,ss,gc;xg({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 xg(t){return ln=$u(t),os=ln.format,pc=ln.parse,ss=ln.utcFormat,gc=ln.utcParse,ln}function cr(t){const e={};return n=>e[n]||(e[n]=t(n))}function yg(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=bg(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 bg(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 wg(t){const e=cr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=lt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return yg(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=lt(s??",f");const a=Pt(r,i,o),u=Math.max(Math.abs(r),Math.abs(i));let c;if(s.precision==null)switch(s.type){case"s":return isNaN(c=Uu(a,u))||(s.precision=c),n(s,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Hu(a,u))||(s.precision=c-(s.type==="e"));break}case"f":case"%":{isNaN(c=Gu(a))||(s.precision=c-(s.type==="%")*2);break}}return e(s)}}}vg();function vg(){return wg({format:oe,formatPrefix:Vo})}function mc(t,e,n){n=n||{},Le(n)||Y("Invalid time multi-format specifier: ".concat(n));const r=e(or),i=e(ir),o=e(rr),s=e(nr),a=e(tr),u=e(er),c=e($n),f=e(_n),l=t(n[Ci]||".%L"),h=t(n[or]||":%S"),p=t(n[ir]||"%I:%M"),d=t(n[rr]||"%I %p"),g=t(n[nr]||n[vi]||"%a %d"),m=t(n[tr]||"%b %d"),A=t(n[er]||"%B"),y=t(n[$n]||"%B"),b=t(n[_n]||"%Y");return C=>(r(C)<C?l:i(C)<C?h:o(C)<C?p:s(C)<C?d:u(C)<C?a(C)<C?g:m:f(C)<C?c(C)<C?A:y:b)(C)}function Ac(t){const e=cr(t.format),n=cr(t.utcFormat);return{timeFormat:r=>W(r)?e(r):mc(e,Ap,r),utcFormat:r=>W(r)?n(r):mc(n,xp,r),timeParse:cr(t.parse),utcParse:cr(t.utcParse)}}let as;Cg();function Cg(){return as=Ac({format:os,parse:pc,utcFormat:ss,utcParse:gc})}function Eg(t){return Ac($u(t))}function Sg(t){return arguments.length?as=Eg(t):as}const Dg=/^(data:|([A-Za-z]+:)?\/\/)/,Bg=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Fg=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,xc="file://";function Mg(t,e){return n=>({options:n||{},sanitize:Tg,load:Ig,fileAccess:!!e,file:Pg(e),http:Lg(t)})}async function Ig(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Tg(t,e){e=Lo({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=Bg.test(t.replace(Fg,""));(t==null||typeof t!="string"||!a)&&Y("Sanitize failure, invalid URI: "+ci(t));const u=Dg.test(t);return(s=e.baseURL)&&!u&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(xc))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(xc.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 Pg(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Rg}async function Rg(){Y("No file system access.")}function Lg(t){return t?async function(e,n){const r=Lo({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ge(o[i])?o[i]():o.text():Y(o.status+""+o.statusText)}:kg}async function kg(){Y("No HTTP fetch method available.")}const Ng=t=>t!=null&&t===t,zg=t=>t==="true"||t==="false"||t===!0||t===!1,Og=t=>!Number.isNaN(Date.parse(t)),yc=t=>!Number.isNaN(+t)&&!(t instanceof Date),Gg=t=>yc(t)&&Number.isInteger(+t),bc={boolean:Sd,integer:Wn,number:Wn,date:Bd,string:Fd,unknown:ii},Ei=[zg,Gg,yc,Og],Ug=["boolean","integer","number","date"];function Hg(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Ei.length,i=Ei.map((o,s)=>s+1);for(let o=0,s=0,a,u;o<n;++o)for(u=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&Ng(u)&&!Ei[a](u)&&(i[a]=0,++s,s===Ei.length))return"string";return Ug[i.reduce((o,s)=>o===0?s:o,0)-1]}function Qg(t,e){return e.reduce((n,r)=>(n[r]=Hg(t,r),n),{})}function wc(t){const e=function(n,r){const i={delimiter:t};return us(n,r?Lo(r,i):i)};return e.responseType="text",e}function us(t,e){return e.header&&(t=e.header.map(ci).join(e.delimiter)+`
6
+ `+t),Eu(e.delimiter).parse(t+"")}us.responseType="text";function jg(t){return typeof Buffer=="function"&&ge(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function cs(t,e){const n=e&&e.property?ri(e.property):ii;return Le(t)&&!jg(t)?Vg(n(t),e):n(JSON.parse(t))}cs.responseType="json";function Vg(t,e){return!Me(t)&&Cd(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Yg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function vc(t,e){let n,r,i,o;return t=cs(t,e),e&&e.feature?(n=zd,i=e.feature):e&&e.mesh?(n=Gd,i=e.mesh,o=Yg[e.filter]):Y("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):Y("Invalid TopoJSON object: "+i),r&&r.features||[r]}vc.responseType="json";const ls={dsv:us,csv:wc(","),tsv:wc(" "),json:cs,topojson:vc};function Cc(t,e){return arguments.length>1?(ls[t]=e,this):It(ls,t)?ls[t]:null}function Ec(t,e,n,r){e=e||{};const i=Cc(e.type||"json");return i||Y("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Wg(t,e.parse,n,r),It(t,"columns")&&delete t.columns,t}function Wg(t,e,n,r){if(!t.length)return;const i=Sg();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,u,c,f,l;e==="auto"&&(e=Qg(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(!bc[d])throw Error("Illegal format pattern: "+p+":"+d);return bc[d]});for(u=0,f=t.length,l=o.length;u<f;++u)for(s=t[u],c=0;c<l;++c)a=o[c],s[a]=h[c](s[a])}const Si=Mg(typeof fetch<"u"&&fetch,null);/**
7
7
  * @license
8
8
  * Copyright 2017 Google LLC
9
9
  * SPDX-License-Identifier: BSD-3-Clause
10
- */var fs;const Di=window,fn=Di.trustedTypes,Sc=fn?fn.createPolicy("lit-html",{createHTML:t=>t}):void 0,pt=`lit$${(Math.random()+"").slice(9)}$`,Dc="?"+pt,Wg=`<${Dc}>`,hn=document,lr=(t="")=>hn.createComment(t),fr=t=>t===null||typeof t!="object"&&typeof t!="function",Bc=Array.isArray,Xg=t=>Bc(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",hr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Fc=/-->/g,Mc=/>/g,Ot=RegExp(`>|[
10
+ */var fs;const Di=window,fn=Di.trustedTypes,Sc=fn?fn.createPolicy("lit-html",{createHTML:t=>t}):void 0,pt=`lit$${(Math.random()+"").slice(9)}$`,Dc="?"+pt,Xg=`<${Dc}>`,hn=document,lr=(t="")=>hn.createComment(t),fr=t=>t===null||typeof t!="object"&&typeof t!="function",Bc=Array.isArray,Zg=t=>Bc(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",hr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Fc=/-->/g,Mc=/>/g,Ot=RegExp(`>|[
11
11
  \f\r](?:([^\\s"'>=/]+)([
12
12
  \f\r]*=[
13
13
  \f\r]*(?:[^
14
- \f\r"'\`<>=]|("|')|))|$)`,"g"),Ic=/'/g,Tc=/"/g,Pc=/^(?:script|style|textarea|title)$/i,Zg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),nt=Zg(1),dr=Symbol.for("lit-noChange"),te=Symbol.for("lit-nothing"),Rc=new WeakMap,dn=hn.createTreeWalker(hn,129,null,!1),Kg=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=hr;for(let u=0;u<n;u++){const c=t[u];let f,l,h=-1,p=0;for(;p<c.length&&(s.lastIndex=p,l=s.exec(c),l!==null);)p=s.lastIndex,s===hr?l[1]==="!--"?s=Fc:l[1]!==void 0?s=Mc:l[2]!==void 0?(Pc.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=Ot):l[3]!==void 0&&(s=Ot):s===Ot?l[0]===">"?(s=i??hr,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?Ot:l[3]==='"'?Tc:Ic):s===Tc||s===Ic?s=Ot:s===Fc||s===Mc?s=hr:(s=Ot,i=void 0);const d=s===Ot&&t[u+1].startsWith("/>")?" ":"";o+=s===hr?c+Wg:h>=0?(r.push(f),c.slice(0,h)+"$lit$"+c.slice(h)+pt+d):c+pt+(h===-2?(r.push(void 0),u):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Sc!==void 0?Sc.createHTML(a):a,r]};let hs=class td{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,u=this.parts,[c,f]=Kg(e,n);if(this.el=td.createElement(c,r),dn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=dn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(pt)){const p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(pt),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?Jg:g[1]==="?"?$g:g[1]==="@"?em:Bi})}else u.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(Pc.test(i.tagName)){const l=i.textContent.split(pt),h=l.length-1;if(h>0){i.textContent=fn?fn.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],lr()),dn.nextNode(),u.push({type:2,index:++o});i.append(l[h],lr())}}}else if(i.nodeType===8)if(i.data===Dc)u.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(pt,l+1))!==-1;)u.push({type:7,index:o}),l+=pt.length-1}o++}}static createElement(e,n){const r=hn.createElement("template");return r.innerHTML=e,r}};function pn(t,e,n=t,r){var i,o,s,a;if(e===dr)return e;let u=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const c=fr(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((o=u==null?void 0:u._$AO)===null||o===void 0||o.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Co)!==null&&s!==void 0?s:a._$Co=[])[r]=u:n._$Cl=u),u!==void 0&&(e=pn(t,u._$AS(t,e.values),u,r)),e}class qg{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:hn).importNode(r,!0);dn.currentNode=o;let s=dn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let f;c.type===2?f=new pr(s,s.nextSibling,this,e):c.type===1?f=new c.ctor(s,c.name,c.strings,this,e):c.type===6&&(f=new tm(s,this,e)),this.u.push(f),c=i[++u]}a!==(c==null?void 0:c.index)&&(s=dn.nextNode(),a++)}return o}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class pr{constructor(e,n,r,i){var o;this.type=2,this._$AH=te,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(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._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=pn(this,e,n),fr(e)?e===te||e==null||e===""?(this._$AH!==te&&this._$AR(),this._$AH=te):e!==this._$AH&&e!==dr&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Xg(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==te&&fr(this._$AH)?this._$AA.nextSibling.data=e:this.T(hn.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=hs.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.p(r);else{const s=new qg(o,this),a=s.v(this.options);s.p(r),this.T(a),this._$AH=s}}_$AC(e){let n=Rc.get(e.strings);return n===void 0&&Rc.set(e.strings,n=new hs(e)),n}k(e){Bc(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 pr(this.O(lr()),this.O(lr()),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._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Bi{constructor(e,n,r,i,o){this.type=1,this._$AH=te,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=te}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=pn(this,e,n,0),s=!fr(e)||e!==this._$AH&&e!==dr,s&&(this._$AH=e);else{const a=e;let u,c;for(e=o[0],u=0;u<o.length-1;u++)c=pn(this,a[r+u],n,u),c===dr&&(c=this._$AH[u]),s||(s=!fr(c)||c!==this._$AH[u]),c===te?e=te:e!==te&&(e+=(c??"")+o[u+1]),this._$AH[u]=c}s&&!i&&this.j(e)}j(e){e===te?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class Jg extends Bi{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===te?void 0:e}}const _g=fn?fn.emptyScript:"";class $g extends Bi{constructor(){super(...arguments),this.type=4}j(e){e&&e!==te?this.element.setAttribute(this.name,_g):this.element.removeAttribute(this.name)}}class em extends Bi{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=pn(this,e,n,0))!==null&&r!==void 0?r:te)===dr)return;const i=this._$AH,o=e===te&&i!==te||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==te&&(i===te||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 tm{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){pn(this,e)}}const Lc=Di.litHtmlPolyfillSupport;Lc==null||Lc(hs,pr),((fs=Di.litHtmlVersions)!==null&&fs!==void 0?fs:Di.litHtmlVersions=[]).push("2.4.0");const kc=(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 pr(e.insertBefore(lr(),a),a,void 0,n??{})}return s._$AI(t),s},Nc=1;function ds(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const c=f=>(f+s-t[0])/n*r+e[0];return c.invert=f=>(f-e[0])/r*n+t[0]-s,c.domain=function(f){if(arguments.length){if(t=jd(f),n=t[1]-t[0],n<Nc){n=Nc;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return c}else return t},c.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],c):e},c.numberingOffset=function(f){return arguments.length?(a=f,c):a},c.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),c):i},c.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),c):i},c.paddingOuter=function(f){return arguments.length?(o=f,c):o},c.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),c):s},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=f=>{const l=c.align(),h=c.numberingOffset();return di(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},c.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=Pt(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?oe(","):oe(".3s");return d=>p(d+a)},c.copy=()=>ds().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),c}function nm(){const t=ds().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)),u=Math.max(1,Pt(i[0],i[1],r)),c=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+u,i[0]-(i[0]-l.continuousStart)%u),p=Math.min(l.continuousEnd-u/4,i[1]+1);for(let d=h;d<=p;d+=u){const g=d-o;g>=i[0]&&g<i[1]&&c.push(g)}}return c},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(),c=Pt(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?oe(","):oe(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>c(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function rm(t){return t.type=="locus"}function Ye(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 ps=Symbol("implicit");function gs(){var t=new Tt,e=[],n=[],r=ps;function i(o){let s=t.get(o);if(s===void 0){if(r!==ps)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 Tt;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 gs(e,n).unknown(r)},Ye.apply(i,arguments),i}function gn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function gr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function mt(){}var Gt=.7,mn=1/Gt,An="\\s*([+-]?\\d+)\\s*",mr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",We="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",im=/^#([0-9a-f]{3,8})$/,om=new RegExp(`^rgb\\(${An},${An},${An}\\)$`),sm=new RegExp(`^rgb\\(${We},${We},${We}\\)$`),am=new RegExp(`^rgba\\(${An},${An},${An},${mr}\\)$`),um=new RegExp(`^rgba\\(${We},${We},${We},${mr}\\)$`),cm=new RegExp(`^hsl\\(${mr},${We},${We}\\)$`),lm=new RegExp(`^hsla\\(${mr},${We},${We},${mr}\\)$`),zc={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};gn(mt,Ut,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Oc,formatHex:Oc,formatHex8:fm,formatHsl:hm,formatRgb:Gc,toString:Gc});function Oc(){return this.rgb().formatHex()}function fm(){return this.rgb().formatHex8()}function hm(){return Vc(this).formatHsl()}function Gc(){return this.rgb().formatRgb()}function Ut(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=im.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Uc(e):n===3?new ne(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Fi(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Fi(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=om.exec(t))?new ne(e[1],e[2],e[3],1):(e=sm.exec(t))?new ne(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=am.exec(t))?Fi(e[1],e[2],e[3],e[4]):(e=um.exec(t))?Fi(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=cm.exec(t))?jc(e[1],e[2]/100,e[3]/100,1):(e=lm.exec(t))?jc(e[1],e[2]/100,e[3]/100,e[4]):zc.hasOwnProperty(t)?Uc(zc[t]):t==="transparent"?new ne(NaN,NaN,NaN,0):null}function Uc(t){return new ne(t>>16&255,t>>8&255,t&255,1)}function Fi(t,e,n,r){return r<=0&&(t=e=n=NaN),new ne(t,e,n,r)}function ms(t){return t instanceof mt||(t=Ut(t)),t?(t=t.rgb(),new ne(t.r,t.g,t.b,t.opacity)):new ne}function Mi(t,e,n,r){return arguments.length===1?ms(t):new ne(t,e,n,r??1)}function ne(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}gn(ne,Mi,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ne(Ht(this.r),Ht(this.g),Ht(this.b),Ii(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:Hc,formatHex:Hc,formatHex8:dm,formatRgb:Qc,toString:Qc}));function Hc(){return`#${Qt(this.r)}${Qt(this.g)}${Qt(this.b)}`}function dm(){return`#${Qt(this.r)}${Qt(this.g)}${Qt(this.b)}${Qt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Qc(){const t=Ii(this.opacity);return`${t===1?"rgb(":"rgba("}${Ht(this.r)}, ${Ht(this.g)}, ${Ht(this.b)}${t===1?")":`, ${t})`}`}function Ii(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ht(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Qt(t){return t=Ht(t),(t<16?"0":"")+t.toString(16)}function jc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ne(t,e,n,r)}function Vc(t){if(t instanceof Ne)return new Ne(t.h,t.s,t.l,t.opacity);if(t instanceof mt||(t=Ut(t)),!t)return new Ne;if(t instanceof Ne)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,u=(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/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new Ne(s,a,u,t.opacity)}function As(t,e,n,r){return arguments.length===1?Vc(t):new Ne(t,e,n,r??1)}function Ne(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}gn(Ne,As,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new Ne(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new Ne(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new ne(xs(t>=240?t-240:t+120,i,r),xs(t,i,r),xs(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Ne(Yc(this.h),Ti(this.s),Ti(this.l),Ii(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=Ii(this.opacity);return`${t===1?"hsl(":"hsla("}${Yc(this.h)}, ${Ti(this.s)*100}%, ${Ti(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Yc(t){return t=(t||0)%360,t<0?t+360:t}function Ti(t){return Math.max(0,Math.min(1,t||0))}function xs(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 Wc=Math.PI/180,Xc=180/Math.PI,Pi=18,Zc=.96422,Kc=1,qc=.82521,Jc=4/29,xn=6/29,_c=3*xn*xn,pm=xn*xn*xn;function $c(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof rt)return el(t);t instanceof ne||(t=ms(t));var e=Cs(t.r),n=Cs(t.g),r=Cs(t.b),i=bs((.2225045*e+.7168786*n+.0606169*r)/Kc),o,s;return e===n&&n===r?o=s=i:(o=bs((.4360747*e+.3850649*n+.1430804*r)/Zc),s=bs((.0139322*e+.0971045*n+.7141733*r)/qc)),new Xe(116*i-16,500*(o-i),200*(i-s),t.opacity)}function ys(t,e,n,r){return arguments.length===1?$c(t):new Xe(t,e,n,r??1)}function Xe(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}gn(Xe,ys,gr(mt,{brighter(t){return new Xe(this.l+Pi*(t??1),this.a,this.b,this.opacity)},darker(t){return new Xe(this.l-Pi*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Zc*ws(e),t=Kc*ws(t),n=qc*ws(n),new ne(vs(3.1338561*e-1.6168667*t-.4906146*n),vs(-.9787684*e+1.9161415*t+.033454*n),vs(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function bs(t){return t>pm?Math.pow(t,1/3):t/_c+Jc}function ws(t){return t>xn?t*t*t:_c*(t-Jc)}function vs(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Cs(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function gm(t){if(t instanceof rt)return new rt(t.h,t.c,t.l,t.opacity);if(t instanceof Xe||(t=$c(t)),t.a===0&&t.b===0)return new rt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Xc;return new rt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Es(t,e,n,r){return arguments.length===1?gm(t):new rt(t,e,n,r??1)}function rt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function el(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Wc;return new Xe(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}gn(rt,Es,gr(mt,{brighter(t){return new rt(this.h,this.c,this.l+Pi*(t??1),this.opacity)},darker(t){return new rt(this.h,this.c,this.l-Pi*(t??1),this.opacity)},rgb(){return el(this).rgb()}}));var tl=-.14861,Ss=1.78277,Ds=-.29227,Ri=-.90649,Ar=1.97294,nl=Ar*Ri,rl=Ar*Ss,il=Ss*Ds-Ri*tl;function mm(t){if(t instanceof jt)return new jt(t.h,t.s,t.l,t.opacity);t instanceof ne||(t=ms(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(il*r+nl*e-rl*n)/(il+nl-rl),o=r-i,s=(Ar*(n-i)-Ds*o)/Ri,a=Math.sqrt(s*s+o*o)/(Ar*i*(1-i)),u=a?Math.atan2(s,o)*Xc-120:NaN;return new jt(u<0?u+360:u,a,i,t.opacity)}function Bs(t,e,n,r){return arguments.length===1?mm(t):new jt(t,e,n,r??1)}function jt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}gn(jt,Bs,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new jt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new jt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Wc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ne(255*(e+n*(tl*r+Ss*i)),255*(e+n*(Ds*r+Ri*i)),255*(e+n*(Ar*r)),this.opacity)}}));function ol(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 sl(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 ol((n-r/e)*e,s,i,o,a)}}function al(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 ol((n-r/e)*e,i,o,s,a)}}const Li=t=>()=>t;function ul(t,e){return function(n){return t+n*e}}function Am(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 ki(t,e){var n=e-t;return n?ul(t,n>180||n<-180?n-360*Math.round(n/360):n):Li(isNaN(t)?e:t)}function xm(t){return(t=+t)==1?re:function(e,n){return n-e?Am(e,n,t):Li(isNaN(e)?n:e)}}function re(t,e){var n=e-t;return n?ul(t,n):Li(isNaN(t)?e:t)}const Fs=function t(e){var n=xm(e);function r(i,o){var s=n((i=Mi(i)).r,(o=Mi(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=re(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r}(1);function cl(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=Mi(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(u){return a.r=r(u),a.g=i(u),a.b=o(u),a+""}}}var ym=cl(sl),bm=cl(al);function Ms(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 ll(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function wm(t,e){return(ll(e)?Ms:fl)(t,e)}function fl(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]=At(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 hl(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function ze(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function dl(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]=At(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Is=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ts=new RegExp(Is.source,"g");function vm(t){return function(){return t}}function Cm(t){return function(e){return t(e)+""}}function pl(t,e){var n=Is.lastIndex=Ts.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Is.exec(t))&&(i=Ts.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,u.push({i:s,x:ze(r,i)})),n=Ts.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?Cm(u[0].x):vm(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)a[(l=u[f]).i]=l.x(c);return a.join("")})}function At(t,e){var n=typeof e,r;return e==null||n==="boolean"?Li(e):(n==="number"?ze:n==="string"?(r=Ut(e))?(e=r,Fs):pl:e instanceof Ut?Fs:e instanceof Date?hl:ll(e)?Ms:Array.isArray(e)?fl:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?dl:ze)(t,e)}function Em(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Sm(t,e){var n=ki(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function xr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var gl=180/Math.PI,Ps={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ml(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*gl,skewX:Math.atan(u)*gl,scaleX:s,scaleY:a}}var Ni;function Dm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ps:ml(e.a,e.b,e.c,e.d,e.e,e.f)}function Bm(t){return t==null||(Ni||(Ni=document.createElementNS("http://www.w3.org/2000/svg","g")),Ni.setAttribute("transform",t),!(t=Ni.transform.baseVal.consolidate()))?Ps:(t=t.matrix,ml(t.a,t.b,t.c,t.d,t.e,t.f))}function Al(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:ze(c,l)},{i:g-2,x:ze(f,h)})}else(l||h)&&p.push("translate("+l+e+h+n)}function s(c,f,l,h){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:ze(c,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(c,f,l,h){c!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:ze(c,f)}):f&&l.push(i(l)+"skewX("+f+r)}function u(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:ze(c,l)},{i:g-2,x:ze(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(c,f){var l=[],h=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,l,h),s(c.rotate,f.rotate,l,h),a(c.skewX,f.skewX,l,h),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,l,h),c=f=null,function(p){for(var d=-1,g=h.length,m;++d<g;)l[(m=h[d]).i]=m.x(p);return l.join("")}}}var Fm=Al(Dm,"px, ","px)","deg)"),Mm=Al(Bm,", ",")",")"),Im=1e-12;function xl(t){return((t=Math.exp(t))+1/t)/2}function Tm(t){return((t=Math.exp(t))-1/t)/2}function Pm(t){return((t=Math.exp(2*t))-1)/(t+1)}const yl=function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-u,g=p*p+d*d,m,A;if(g<Im)A=Math.log(h/c)/e,m=function(w){return[a+w*p,u+w*d,c*Math.exp(e*w*A)]};else{var y=Math.sqrt(g),b=(h*h-c*c+r*g)/(2*c*n*y),C=(h*h-c*c-r*g)/(2*h*n*y),B=Math.log(Math.sqrt(b*b+1)-b),E=Math.log(Math.sqrt(C*C+1)-C);A=(E-B)/e,m=function(w){var X=w*A,H=xl(B),ae=c/(n*y)*(H*Pm(e*X+B)-Tm(B));return[a+ae*p,u+ae*d,c*H/xl(e*X+B)]}}return m.duration=A*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i}(Math.SQRT2,2,4);function bl(t){return function(e,n){var r=t((e=As(e)).h,(n=As(n)).h),i=re(e.s,n.s),o=re(e.l,n.l),s=re(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+""}}}const Rm=bl(ki);var Lm=bl(re);function km(t,e){var n=re((t=ys(t)).l,(e=ys(e)).l),r=re(t.a,e.a),i=re(t.b,e.b),o=re(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 wl(t){return function(e,n){var r=t((e=Es(e)).h,(n=Es(n)).h),i=re(e.c,n.c),o=re(e.l,n.l),s=re(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+""}}}const Nm=wl(ki);var zm=wl(re);function vl(t){return function e(n){n=+n;function r(i,o){var s=t((i=Bs(i)).h,(o=Bs(o)).h),a=re(i.s,o.s),u=re(i.l,o.l),c=re(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=u(Math.pow(f,n)),i.opacity=c(f),i+""}}return r.gamma=e,r}(1)}const Om=vl(ki);var Gm=vl(re);function Rs(t,e){e===void 0&&(e=t,t=At);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 Um(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Hm=Object.freeze(Object.defineProperty({__proto__:null,interpolate:At,interpolateArray:wm,interpolateBasis:sl,interpolateBasisClosed:al,interpolateCubehelix:Om,interpolateCubehelixLong:Gm,interpolateDate:hl,interpolateDiscrete:Em,interpolateHcl:Nm,interpolateHclLong:zm,interpolateHsl:Rm,interpolateHslLong:Lm,interpolateHue:Sm,interpolateLab:km,interpolateNumber:ze,interpolateNumberArray:Ms,interpolateObject:dl,interpolateRgb:Fs,interpolateRgbBasis:ym,interpolateRgbBasisClosed:bm,interpolateRound:xr,interpolateString:pl,interpolateTransformCss:Fm,interpolateTransformSvg:Mm,interpolateZoom:yl,piecewise:Rs,quantize:Um},Symbol.toStringTag,{value:"Module"}));function Qm(t){return function(){return t}}function Ls(t){return+t}var Cl=[0,1];function xe(t){return t}function ks(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Qm(isNaN(e)?NaN:.5)}function jm(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Vm(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=ks(i,r),o=n(s,o)):(r=ks(r,i),o=n(o,s)),function(a){return o(r(a))}}function Ym(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]=ks(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var u=sn(t,a,1,r)-1;return o[u](i[u](a))}}function yr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function zi(){var t=Cl,e=Cl,n=At,r,i,o,s=xe,a,u,c;function f(){var h=Math.min(t.length,e.length);return s!==xe&&(s=jm(t[0],t[h-1])),a=h>2?Ym:Vm,u=c=null,l}function l(h){return h==null||isNaN(h=+h)?o:(u||(u=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((c||(c=a(e,t.map(r),ze)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,Ls),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=xr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:xe,f()):s!==xe},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 El(){return zi()(xe,xe)}function Sl(t,e,n,r){var i=Pt(t,e,n),o;switch(r=lt(r??",f"),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Uu(i,s))&&(r.precision=o),Vo(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Hu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Gu(i))&&(r.precision=o-(r.type==="%")*2);break}}return oe(r)}function Vt(t){var e=t.domain;return t.ticks=function(n){var r=e();return di(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return Sl(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],u,c,f=10;for(a<s&&(c=s,s=a,a=c,c=i,i=o,o=c);f-- >0;){if(c=Tu(s,a,n),c===u)return r[i]=s,r[o]=a,e(r);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function Dl(){var t=El();return t.copy=function(){return yr(t,Dl())},Ye.apply(t,arguments),Vt(t)}function Bl(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,Ls),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Bl(t).unknown(e)},t=arguments.length?Array.from(t,Ls):[0,1],Vt(n)}function Fl(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 Ml(t){return Math.log(t)}function Il(t){return Math.exp(t)}function Wm(t){return-Math.log(-t)}function Xm(t){return-Math.exp(-t)}function Zm(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Km(t){return t===10?Zm:t===Math.E?Math.exp:e=>Math.pow(t,e)}function qm(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 Tl(t){return(e,n)=>-t(-e,n)}function Ns(t){const e=t(Ml,Il),n=e.domain;let r=10,i,o;function s(){return i=qm(r),o=Km(r),n()[0]<0?(i=Tl(i),o=Tl(o),t(Wm,Xm)):t(Ml,Il),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 u=n();let c=u[0],f=u[u.length-1];const l=f<c;l&&([c,f]=[f,c]);let h=i(c),p=i(f),d,g;const m=a==null?10:+a;let A=[];if(!(r%1)&&p-h<m){if(h=Math.floor(h),p=Math.ceil(p),c>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;A.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<c)){if(g>f)break;A.push(g)}A.length*2<m&&(A=di(c,f,m))}else A=di(h,p,Math.min(p-h,m)).map(o);return l?A.reverse():A},e.tickFormat=(a,u)=>{if(a==null&&(a=10),u==null&&(u=r===10?"s":","),typeof u!="function"&&(!(r%1)&&(u=lt(u)).precision==null&&(u.trim=!0),u=oe(u)),a===1/0)return u;const c=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<=c?u(f):""}},e.nice=()=>n(Fl(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function zs(){const t=Ns(zi()).domain([1,10]);return t.copy=()=>yr(t,zs()).base(t.base()),Ye.apply(t,arguments),t}function Pl(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Rl(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Os(t){var e=1,n=t(Pl(e),Rl(e));return n.constant=function(r){return arguments.length?t(Pl(e=+r),Rl(e)):e},Vt(n)}function Ll(){var t=Os(zi());return t.copy=function(){return yr(t,Ll()).constant(t.constant())},Ye.apply(t,arguments)}function kl(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Jm(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function _m(t){return t<0?-t*t:t*t}function Gs(t){var e=t(xe,xe),n=1;function r(){return n===1?t(xe,xe):n===.5?t(Jm,_m):t(kl(n),kl(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Vt(e)}function Us(){var t=Gs(zi());return t.copy=function(){return yr(t,Us()).exponent(t.exponent())},Ye.apply(t,arguments),t}function $m(){return Us.apply(null,arguments).exponent(.5)}function Nl(){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]=Pu(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[sn(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(Zn),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 Nl().domain(t).range(e).unknown(r)},Ye.apply(o,arguments)}function zl(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(u){return u!=null&&u<=u?i[sn(r,u,0,n)]:o}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return s}return s.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},s.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},s.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},s.unknown=function(u){return arguments.length&&(o=u),s},s.thresholds=function(){return r.slice()},s.copy=function(){return zl().domain([t,e]).range(i).unknown(o)},Ye.apply(Vt(s),arguments)}function Ol(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[sn(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 Ol().domain(t).range(e).unknown(n)},Ye.apply(i,arguments)}function eA(t){return new Date(t)}function tA(t){return t instanceof Date?+t:+new Date(+t)}function Hs(t,e,n,r,i,o,s,a,u,c){var f=El(),l=f.invert,h=f.domain,p=c(".%L"),d=c(":%S"),g=c("%I:%M"),m=c("%I %p"),A=c("%a %d"),y=c("%b %d"),b=c("%B"),C=c("%Y");function B(E){return(u(E)<E?p:a(E)<E?d:s(E)<E?g:o(E)<E?m:r(E)<E?i(E)<E?A:y:n(E)<E?b:C)(E)}return f.invert=function(E){return new Date(l(E))},f.domain=function(E){return arguments.length?h(Array.from(E,tA)):h().map(eA)},f.ticks=function(E){var w=h();return t(w[0],w[w.length-1],E??10)},f.tickFormat=function(E,w){return w==null?B:c(w)},f.nice=function(E){var w=h();return(!E||typeof E.range!="function")&&(E=e(w[0],w[w.length-1],E??10)),E?h(Fl(w,E)):f},f.copy=function(){return yr(f,Hs(t,e,n,r,i,o,s,a,u,c))},f}function nA(){return Ye.apply(Hs(hp,dp,ht,yi,qn,Lt,Jo,qo,ft,os).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function rA(){return Ye.apply(Hs(lp,fp,dt,wi,Jn,Nt,es,$o,ft,ss).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Oi(){var t=0,e=1,n,r,i,o,s=xe,a=!1,u;function c(l){return l==null||isNaN(l=+l)?u:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}c.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(l){return arguments.length?(a=!!l,c):a},c.interpolator=function(l){return arguments.length?(s=l,c):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),c):[s(0),s(1)]}}return c.range=f(At),c.rangeRound=f(xr),c.unknown=function(l){return arguments.length?(u=l,c):u},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),c}}function xt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Qs(){var t=Vt(Oi()(xe));return t.copy=function(){return xt(t,Qs())},gt.apply(t,arguments)}function Gl(){var t=Ns(Oi()).domain([1,10]);return t.copy=function(){return xt(t,Gl()).base(t.base())},gt.apply(t,arguments)}function Ul(){var t=Os(Oi());return t.copy=function(){return xt(t,Ul()).constant(t.constant())},gt.apply(t,arguments)}function js(){var t=Gs(Oi());return t.copy=function(){return xt(t,js()).exponent(t.exponent())},gt.apply(t,arguments)}function iA(){return js.apply(null,arguments).exponent(.5)}function Gi(){var t=0,e=.5,n=1,r=1,i,o,s,a,u,c=xe,f,l=!1,h;function p(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:u),c(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),u=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?(c=g,p):c};function d(g){return function(m){var A,y,b;return arguments.length?([A,y,b]=m,c=Rs(g,[A,y,b]),p):[c(0),c(.5),c(1)]}}return p.range=d(At),p.rangeRound=d(xr),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),u=o===s?0:.5/(s-o),r=o<i?-1:1,p}}function Hl(){var t=Vt(Gi()(xe));return t.copy=function(){return xt(t,Hl())},gt.apply(t,arguments)}function Ql(){var t=Ns(Gi()).domain([.1,1,10]);return t.copy=function(){return xt(t,Ql()).base(t.base())},gt.apply(t,arguments)}function jl(){var t=Os(Gi());return t.copy=function(){return xt(t,jl()).constant(t.constant())},gt.apply(t,arguments)}function Vs(){var t=Gs(Gi());return t.copy=function(){return xt(t,Vs()).exponent(t.exponent())},gt.apply(t,arguments)}function oA(){return Vs.apply(null,arguments).exponent(.5)}function Ys(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const sA="identity",yn="linear",yt="log",br="pow",wr="sqrt",Ui="symlog",Vl="time",Yl="utc",Ze="sequential",bn="diverging",Ws="quantile",Wl="quantize",Xl="threshold",Xs="ordinal",Zs="point",Zl="band",Ks="bin-ordinal",J="continuous",vr="discrete",Cr="discretizing",Ie="interpolating",Kl="temporal";function aA(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 uA(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(o<0&&(o=u),s=u);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 qs(){const t=gs().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,u=0,c=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=Ys(l,a,u);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*c,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=Kn(l).map(A=>g+i*A);return n(h?m.reverse():m)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],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?(u=Math.max(0,Math.min(1,l)),a=u,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.align=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],m=+l[1],A,y,b;if(!(g!==g||m!==m)&&(m<g&&(b=g,g=m,m=b),!(m<p[0]||g>r[1-h])))return A=Math.max(0,Oo(p,g)-1),y=g===m?A:Oo(p,m)-1,g-p[A]>o+1e-10&&++A,h&&(b=A,A=d-y,y=d-b),A>y?void 0:e().slice(A,y+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return qs().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(u).align(c)},f()}function ql(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return ql(e())},t}function cA(){return ql(qs().paddingInner(1))}var lA=Array.prototype.map;function fA(t){return lA.call(t,Wn)}const hA=Array.prototype.slice;function Jl(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(sn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=fA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=hA.call(r),n):e.slice()},n.tickFormat=function(r,i){return Sl(t[0],ke(t),r??10,i)},n.copy=function(){return Jl().domain(n.domain()).range(n.range())},n}const Hi={};function dA(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?aA(o):o.invertExtent?uA(o):void 0),o.type=t,o};return r.metadata=li(Ro(n)),r}function N(t,e,n){return arguments.length>1?(Hi[t]=dA(t,e,n),this):pA(t)?Hi[t]:void 0}N(sA,Bl),N(yn,Dl,J),N(yt,zs,[J,yt]),N(br,Us,J),N(wr,$m,J),N(Ui,Ll,J),N(Vl,nA,[J,Kl]),N(Yl,rA,[J,Kl]),N(Ze,Qs,[J,Ie]),N("".concat(Ze,"-").concat(yn),Qs,[J,Ie]),N("".concat(Ze,"-").concat(yt),Gl,[J,Ie,yt]),N("".concat(Ze,"-").concat(br),js,[J,Ie]),N("".concat(Ze,"-").concat(wr),iA,[J,Ie]),N("".concat(Ze,"-").concat(Ui),Ul,[J,Ie]),N("".concat(bn,"-").concat(yn),Hl,[J,Ie]),N("".concat(bn,"-").concat(yt),Ql,[J,Ie,yt]),N("".concat(bn,"-").concat(br),Vs,[J,Ie]),N("".concat(bn,"-").concat(wr),oA,[J,Ie]),N("".concat(bn,"-").concat(Ui),jl,[J,Ie]),N(Ws,Nl,[Cr,Ws]),N(Wl,zl,Cr),N(Xl,Ol,Cr),N(Ks,Jl,[vr,Cr]),N(Xs,gs,vr),N(Zl,qs,vr),N(Zs,cA,vr);function pA(t){return It(Hi,t)}function Er(t,e){const n=Hi[t];return n&&n.metadata[e]}function Te(t){return Er(t,J)}function Yt(t){return Er(t,vr)}function wn(t){return Er(t,Cr)}function _l(t){return Er(t,yt)}function Qi(t){return Er(t,Ie)}function gA(t,e){const n=e[0],r=ke(e)-n;return function(i){return t(n+i*r)}}function ji(t,e,n){return Rs($l(e||"rgb",n),t)}function mA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function $l(t,e){const n=Hm[AA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function AA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const xA={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"},yA={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 ef(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 tf(t,e){for(const n in t)Js(n,e(t[n]))}const nf={};tf(yA,ef),tf(xA,t=>ji(ef(t)));function Js(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(nf[t]=e,this):nf[t]}const wE="";function bA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function rf(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function wA(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ke(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function vn(t){return t[t.length-1]}class vA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){return vn(this.enabledStack)??!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=bA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&CA(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&&(kc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}kc(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(nt`${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 CA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const EA="RawCode",SA="Literal",DA="Property",BA="Identifier",FA="ArrayExpression",MA="BinaryExpression",IA="CallExpression",TA="ConditionalExpression",PA="LogicalExpression",RA="MemberExpression",LA="ObjectExpression",kA="UnaryExpression";function Oe(t){this.type=t}Oe.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=NA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function NA(t){switch(t.type){case FA:return t.elements;case MA:case PA:return[t.left,t.right];case IA:return[t.callee].concat(t.arguments);case TA:return[t.test,t.consequent,t.alternate];case RA:return[t.object,t.property];case LA:return t.properties;case DA:return[t.key,t.value];case kA:return[t.argument];case BA:case SA:case EA:default:return[]}}var qe,S,x,ce,z,Vi=1,Sr=2,Wt=3,bt=4,Yi=5,Xt=6,ye=7,Dr=8,zA=9;qe={},qe[Vi]="Boolean",qe[Sr]="<end>",qe[Wt]="Identifier",qe[bt]="Keyword",qe[Yi]="Null",qe[Xt]="Numeric",qe[ye]="Punctuator",qe[Dr]="String",qe[zA]="RegularExpression";var OA="ArrayExpression",GA="BinaryExpression",UA="CallExpression",HA="ConditionalExpression",of="Identifier",QA="Literal",jA="LogicalExpression",VA="MemberExpression",YA="ObjectExpression",WA="Property",XA="UnaryExpression",ie="Unexpected token %0",ZA="Unexpected number",KA="Unexpected string",qA="Unexpected identifier",JA="Unexpected reserved word",_A="Unexpected end of input",_s="Invalid regular expression",$s="Invalid regular expression: missing /",sf="Octal literals are not allowed in strict mode.",$A="Duplicate data property in object literal not allowed in strict mode",se="ILLEGAL",Br="Disabled.",e1=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]"),t1=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 Wi(t,e){if(!t)throw new Error("ASSERT: "+e)}function it(t){return t>=48&&t<=57}function ea(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Fr(t){return"01234567".indexOf(t)>=0}function n1(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 Mr(t){return t===10||t===13||t===8232||t===8233}function Ir(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&e1.test(String.fromCharCode(t))}function Xi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&t1.test(String.fromCharCode(t))}const r1={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 af(){for(;x<ce;){const t=S.charCodeAt(x);if(n1(t)||Mr(t))++x;else break}}function ta(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<ce&&ea(S[x])?(r=S[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):L({},ie,se);return String.fromCharCode(i)}function i1(){var t,e,n,r;for(t=S[x],e=0,t==="}"&&L({},ie,se);x<ce&&(t=S[x++],!!ea(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&L({},ie,se),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function uf(){var t,e;for(t=S.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(S.charCodeAt(x)!==117&&L({},ie,se),++x,t=ta("u"),(!t||t==="\\"||!Ir(t.charCodeAt(0)))&&L({},ie,se),e=t);x<ce&&(t=S.charCodeAt(x),!!Xi(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),S.charCodeAt(x)!==117&&L({},ie,se),++x,t=ta("u"),(!t||t==="\\"||!Xi(t.charCodeAt(0)))&&L({},ie,se),e+=t);return e}function o1(){var t,e;for(t=x++;x<ce;){if(e=S.charCodeAt(x),e===92)return x=t,uf();if(Xi(e))++x;else break}return S.slice(t,x)}function s1(){var t,e,n;return t=x,e=S.charCodeAt(x)===92?uf():o1(),e.length===1?n=Wt:r1.hasOwnProperty(e)?n=bt:e==="null"?n=Yi:e==="true"||e==="false"?n=Vi:n=Wt,{type:n,value:e,start:t,end:x}}function na(){var t=x,e=S.charCodeAt(x),n,r=S[x],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++x,{type:ye,value:String.fromCharCode(e),start:t,end:x};default:if(n=S.charCodeAt(x+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 x+=2,{type:ye,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:x};case 33:case 61:return x+=2,S.charCodeAt(x)===61&&++x,{type:ye,value:S.slice(t,x),start:t,end:x}}}if(s=S.substr(x,4),s===">>>=")return x+=4,{type:ye,value:s,start:t,end:x};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return x+=3,{type:ye,value:o,start:t,end:x};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return x+=2,{type:ye,value:i,start:t,end:x};if(i==="//"&&L({},ie,se),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:ye,value:r,start:t,end:x};L({},ie,se)}function a1(t){let e="";for(;x<ce&&ea(S[x]);)e+=S[x++];return e.length===0&&L({},ie,se),Ir(S.charCodeAt(x))&&L({},ie,se),{type:Xt,value:parseInt("0x"+e,16),start:t,end:x}}function u1(t){let e="0"+S[x++];for(;x<ce&&Fr(S[x]);)e+=S[x++];return(Ir(S.charCodeAt(x))||it(S.charCodeAt(x)))&&L({},ie,se),{type:Xt,value:parseInt(e,8),octal:!0,start:t,end:x}}function cf(){var t,e,n;if(n=S[x],Wi(it(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=x,t="",n!=="."){if(t=S[x++],n=S[x],t==="0"){if(n==="x"||n==="X")return++x,a1(e);if(Fr(n))return u1(e);n&&it(n.charCodeAt(0))&&L({},ie,se)}for(;it(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="."){for(t+=S[x++];it(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="e"||n==="E")if(t+=S[x++],n=S[x],(n==="+"||n==="-")&&(t+=S[x++]),it(S.charCodeAt(x)))for(;it(S.charCodeAt(x));)t+=S[x++];else L({},ie,se);return Ir(S.charCodeAt(x))&&L({},ie,se),{type:Xt,value:parseFloat(t),start:e,end:x}}function c1(){var t="",e,n,r,i,o=!1;for(e=S[x],Wi(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<ce;)if(r=S[x++],r===e){e="";break}else if(r==="\\")if(r=S[x++],!r||!Mr(r.charCodeAt(0)))switch(r){case"u":case"x":S[x]==="{"?(++x,t+=i1()):t+=ta(r);break;case"n":t+=`
14
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),Ic=/'/g,Tc=/"/g,Pc=/^(?:script|style|textarea|title)$/i,Kg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),nt=Kg(1),dr=Symbol.for("lit-noChange"),te=Symbol.for("lit-nothing"),Rc=new WeakMap,dn=hn.createTreeWalker(hn,129,null,!1),qg=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=hr;for(let u=0;u<n;u++){const c=t[u];let f,l,h=-1,p=0;for(;p<c.length&&(s.lastIndex=p,l=s.exec(c),l!==null);)p=s.lastIndex,s===hr?l[1]==="!--"?s=Fc:l[1]!==void 0?s=Mc:l[2]!==void 0?(Pc.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=Ot):l[3]!==void 0&&(s=Ot):s===Ot?l[0]===">"?(s=i??hr,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?Ot:l[3]==='"'?Tc:Ic):s===Tc||s===Ic?s=Ot:s===Fc||s===Mc?s=hr:(s=Ot,i=void 0);const d=s===Ot&&t[u+1].startsWith("/>")?" ":"";o+=s===hr?c+Xg:h>=0?(r.push(f),c.slice(0,h)+"$lit$"+c.slice(h)+pt+d):c+pt+(h===-2?(r.push(void 0),u):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Sc!==void 0?Sc.createHTML(a):a,r]};let hs=class nd{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,u=this.parts,[c,f]=qg(e,n);if(this.el=nd.createElement(c,r),dn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=dn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(pt)){const p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(pt),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?_g:g[1]==="?"?em:g[1]==="@"?tm:Bi})}else u.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(Pc.test(i.tagName)){const l=i.textContent.split(pt),h=l.length-1;if(h>0){i.textContent=fn?fn.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],lr()),dn.nextNode(),u.push({type:2,index:++o});i.append(l[h],lr())}}}else if(i.nodeType===8)if(i.data===Dc)u.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(pt,l+1))!==-1;)u.push({type:7,index:o}),l+=pt.length-1}o++}}static createElement(e,n){const r=hn.createElement("template");return r.innerHTML=e,r}};function pn(t,e,n=t,r){var i,o,s,a;if(e===dr)return e;let u=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const c=fr(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((o=u==null?void 0:u._$AO)===null||o===void 0||o.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Co)!==null&&s!==void 0?s:a._$Co=[])[r]=u:n._$Cl=u),u!==void 0&&(e=pn(t,u._$AS(t,e.values),u,r)),e}class Jg{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:hn).importNode(r,!0);dn.currentNode=o;let s=dn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let f;c.type===2?f=new pr(s,s.nextSibling,this,e):c.type===1?f=new c.ctor(s,c.name,c.strings,this,e):c.type===6&&(f=new nm(s,this,e)),this.u.push(f),c=i[++u]}a!==(c==null?void 0:c.index)&&(s=dn.nextNode(),a++)}return o}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class pr{constructor(e,n,r,i){var o;this.type=2,this._$AH=te,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(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._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=pn(this,e,n),fr(e)?e===te||e==null||e===""?(this._$AH!==te&&this._$AR(),this._$AH=te):e!==this._$AH&&e!==dr&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Zg(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==te&&fr(this._$AH)?this._$AA.nextSibling.data=e:this.T(hn.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=hs.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.p(r);else{const s=new Jg(o,this),a=s.v(this.options);s.p(r),this.T(a),this._$AH=s}}_$AC(e){let n=Rc.get(e.strings);return n===void 0&&Rc.set(e.strings,n=new hs(e)),n}k(e){Bc(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 pr(this.O(lr()),this.O(lr()),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._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Bi{constructor(e,n,r,i,o){this.type=1,this._$AH=te,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=te}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=pn(this,e,n,0),s=!fr(e)||e!==this._$AH&&e!==dr,s&&(this._$AH=e);else{const a=e;let u,c;for(e=o[0],u=0;u<o.length-1;u++)c=pn(this,a[r+u],n,u),c===dr&&(c=this._$AH[u]),s||(s=!fr(c)||c!==this._$AH[u]),c===te?e=te:e!==te&&(e+=(c??"")+o[u+1]),this._$AH[u]=c}s&&!i&&this.j(e)}j(e){e===te?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class _g extends Bi{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===te?void 0:e}}const $g=fn?fn.emptyScript:"";class em extends Bi{constructor(){super(...arguments),this.type=4}j(e){e&&e!==te?this.element.setAttribute(this.name,$g):this.element.removeAttribute(this.name)}}class tm extends Bi{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=pn(this,e,n,0))!==null&&r!==void 0?r:te)===dr)return;const i=this._$AH,o=e===te&&i!==te||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==te&&(i===te||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 nm{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){pn(this,e)}}const Lc=Di.litHtmlPolyfillSupport;Lc==null||Lc(hs,pr),((fs=Di.litHtmlVersions)!==null&&fs!==void 0?fs:Di.litHtmlVersions=[]).push("2.4.0");const kc=(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 pr(e.insertBefore(lr(),a),a,void 0,n??{})}return s._$AI(t),s},Nc=1;function ds(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const c=f=>(f+s-t[0])/n*r+e[0];return c.invert=f=>(f-e[0])/r*n+t[0]-s,c.domain=function(f){if(arguments.length){if(t=Vd(f),n=t[1]-t[0],n<Nc){n=Nc;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return c}else return t},c.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],c):e},c.numberingOffset=function(f){return arguments.length?(a=f,c):a},c.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),c):i},c.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),c):i},c.paddingOuter=function(f){return arguments.length?(o=f,c):o},c.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),c):s},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=f=>{const l=c.align(),h=c.numberingOffset();return di(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},c.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=Pt(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?oe(","):oe(".3s");return d=>p(d+a)},c.copy=()=>ds().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),c}function rm(){const t=ds().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)),u=Math.max(1,Pt(i[0],i[1],r)),c=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+u,i[0]-(i[0]-l.continuousStart)%u),p=Math.min(l.continuousEnd-u/4,i[1]+1);for(let d=h;d<=p;d+=u){const g=d-o;g>=i[0]&&g<i[1]&&c.push(g)}}return c},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(),c=Pt(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?oe(","):oe(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>c(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function im(t){return t.type=="locus"}function Ye(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 ps=Symbol("implicit");function gs(){var t=new Tt,e=[],n=[],r=ps;function i(o){let s=t.get(o);if(s===void 0){if(r!==ps)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 Tt;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 gs(e,n).unknown(r)},Ye.apply(i,arguments),i}function gn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function gr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function mt(){}var Gt=.7,mn=1/Gt,An="\\s*([+-]?\\d+)\\s*",mr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",We="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",om=/^#([0-9a-f]{3,8})$/,sm=new RegExp(`^rgb\\(${An},${An},${An}\\)$`),am=new RegExp(`^rgb\\(${We},${We},${We}\\)$`),um=new RegExp(`^rgba\\(${An},${An},${An},${mr}\\)$`),cm=new RegExp(`^rgba\\(${We},${We},${We},${mr}\\)$`),lm=new RegExp(`^hsl\\(${mr},${We},${We}\\)$`),fm=new RegExp(`^hsla\\(${mr},${We},${We},${mr}\\)$`),zc={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};gn(mt,Ut,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Oc,formatHex:Oc,formatHex8:hm,formatHsl:dm,formatRgb:Gc,toString:Gc});function Oc(){return this.rgb().formatHex()}function hm(){return this.rgb().formatHex8()}function dm(){return Vc(this).formatHsl()}function Gc(){return this.rgb().formatRgb()}function Ut(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=om.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Uc(e):n===3?new ne(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Fi(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Fi(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=sm.exec(t))?new ne(e[1],e[2],e[3],1):(e=am.exec(t))?new ne(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=um.exec(t))?Fi(e[1],e[2],e[3],e[4]):(e=cm.exec(t))?Fi(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=lm.exec(t))?jc(e[1],e[2]/100,e[3]/100,1):(e=fm.exec(t))?jc(e[1],e[2]/100,e[3]/100,e[4]):zc.hasOwnProperty(t)?Uc(zc[t]):t==="transparent"?new ne(NaN,NaN,NaN,0):null}function Uc(t){return new ne(t>>16&255,t>>8&255,t&255,1)}function Fi(t,e,n,r){return r<=0&&(t=e=n=NaN),new ne(t,e,n,r)}function ms(t){return t instanceof mt||(t=Ut(t)),t?(t=t.rgb(),new ne(t.r,t.g,t.b,t.opacity)):new ne}function Mi(t,e,n,r){return arguments.length===1?ms(t):new ne(t,e,n,r??1)}function ne(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}gn(ne,Mi,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new ne(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ne(Ht(this.r),Ht(this.g),Ht(this.b),Ii(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:Hc,formatHex:Hc,formatHex8:pm,formatRgb:Qc,toString:Qc}));function Hc(){return`#${Qt(this.r)}${Qt(this.g)}${Qt(this.b)}`}function pm(){return`#${Qt(this.r)}${Qt(this.g)}${Qt(this.b)}${Qt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Qc(){const t=Ii(this.opacity);return`${t===1?"rgb(":"rgba("}${Ht(this.r)}, ${Ht(this.g)}, ${Ht(this.b)}${t===1?")":`, ${t})`}`}function Ii(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ht(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Qt(t){return t=Ht(t),(t<16?"0":"")+t.toString(16)}function jc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ne(t,e,n,r)}function Vc(t){if(t instanceof Ne)return new Ne(t.h,t.s,t.l,t.opacity);if(t instanceof mt||(t=Ut(t)),!t)return new Ne;if(t instanceof Ne)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,u=(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/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new Ne(s,a,u,t.opacity)}function As(t,e,n,r){return arguments.length===1?Vc(t):new Ne(t,e,n,r??1)}function Ne(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}gn(Ne,As,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new Ne(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new Ne(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new ne(xs(t>=240?t-240:t+120,i,r),xs(t,i,r),xs(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Ne(Yc(this.h),Ti(this.s),Ti(this.l),Ii(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=Ii(this.opacity);return`${t===1?"hsl(":"hsla("}${Yc(this.h)}, ${Ti(this.s)*100}%, ${Ti(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Yc(t){return t=(t||0)%360,t<0?t+360:t}function Ti(t){return Math.max(0,Math.min(1,t||0))}function xs(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 Wc=Math.PI/180,Xc=180/Math.PI,Pi=18,Zc=.96422,Kc=1,qc=.82521,Jc=4/29,xn=6/29,_c=3*xn*xn,gm=xn*xn*xn;function $c(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof rt)return el(t);t instanceof ne||(t=ms(t));var e=Cs(t.r),n=Cs(t.g),r=Cs(t.b),i=bs((.2225045*e+.7168786*n+.0606169*r)/Kc),o,s;return e===n&&n===r?o=s=i:(o=bs((.4360747*e+.3850649*n+.1430804*r)/Zc),s=bs((.0139322*e+.0971045*n+.7141733*r)/qc)),new Xe(116*i-16,500*(o-i),200*(i-s),t.opacity)}function ys(t,e,n,r){return arguments.length===1?$c(t):new Xe(t,e,n,r??1)}function Xe(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}gn(Xe,ys,gr(mt,{brighter(t){return new Xe(this.l+Pi*(t??1),this.a,this.b,this.opacity)},darker(t){return new Xe(this.l-Pi*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Zc*ws(e),t=Kc*ws(t),n=qc*ws(n),new ne(vs(3.1338561*e-1.6168667*t-.4906146*n),vs(-.9787684*e+1.9161415*t+.033454*n),vs(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function bs(t){return t>gm?Math.pow(t,1/3):t/_c+Jc}function ws(t){return t>xn?t*t*t:_c*(t-Jc)}function vs(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Cs(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function mm(t){if(t instanceof rt)return new rt(t.h,t.c,t.l,t.opacity);if(t instanceof Xe||(t=$c(t)),t.a===0&&t.b===0)return new rt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Xc;return new rt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Es(t,e,n,r){return arguments.length===1?mm(t):new rt(t,e,n,r??1)}function rt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function el(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Wc;return new Xe(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}gn(rt,Es,gr(mt,{brighter(t){return new rt(this.h,this.c,this.l+Pi*(t??1),this.opacity)},darker(t){return new rt(this.h,this.c,this.l-Pi*(t??1),this.opacity)},rgb(){return el(this).rgb()}}));var tl=-.14861,Ss=1.78277,Ds=-.29227,Ri=-.90649,Ar=1.97294,nl=Ar*Ri,rl=Ar*Ss,il=Ss*Ds-Ri*tl;function Am(t){if(t instanceof jt)return new jt(t.h,t.s,t.l,t.opacity);t instanceof ne||(t=ms(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(il*r+nl*e-rl*n)/(il+nl-rl),o=r-i,s=(Ar*(n-i)-Ds*o)/Ri,a=Math.sqrt(s*s+o*o)/(Ar*i*(1-i)),u=a?Math.atan2(s,o)*Xc-120:NaN;return new jt(u<0?u+360:u,a,i,t.opacity)}function Bs(t,e,n,r){return arguments.length===1?Am(t):new jt(t,e,n,r??1)}function jt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}gn(jt,Bs,gr(mt,{brighter(t){return t=t==null?mn:Math.pow(mn,t),new jt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Gt:Math.pow(Gt,t),new jt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Wc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ne(255*(e+n*(tl*r+Ss*i)),255*(e+n*(Ds*r+Ri*i)),255*(e+n*(Ar*r)),this.opacity)}}));function ol(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 sl(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 ol((n-r/e)*e,s,i,o,a)}}function al(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 ol((n-r/e)*e,i,o,s,a)}}const Li=t=>()=>t;function ul(t,e){return function(n){return t+n*e}}function xm(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 ki(t,e){var n=e-t;return n?ul(t,n>180||n<-180?n-360*Math.round(n/360):n):Li(isNaN(t)?e:t)}function ym(t){return(t=+t)==1?re:function(e,n){return n-e?xm(e,n,t):Li(isNaN(e)?n:e)}}function re(t,e){var n=e-t;return n?ul(t,n):Li(isNaN(t)?e:t)}const Fs=function t(e){var n=ym(e);function r(i,o){var s=n((i=Mi(i)).r,(o=Mi(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=re(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r}(1);function cl(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=Mi(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(u){return a.r=r(u),a.g=i(u),a.b=o(u),a+""}}}var bm=cl(sl),wm=cl(al);function Ms(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 ll(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function vm(t,e){return(ll(e)?Ms:fl)(t,e)}function fl(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]=At(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 hl(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function ze(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function dl(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]=At(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Is=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ts=new RegExp(Is.source,"g");function Cm(t){return function(){return t}}function Em(t){return function(e){return t(e)+""}}function pl(t,e){var n=Is.lastIndex=Ts.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Is.exec(t))&&(i=Ts.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,u.push({i:s,x:ze(r,i)})),n=Ts.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?Em(u[0].x):Cm(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)a[(l=u[f]).i]=l.x(c);return a.join("")})}function At(t,e){var n=typeof e,r;return e==null||n==="boolean"?Li(e):(n==="number"?ze:n==="string"?(r=Ut(e))?(e=r,Fs):pl:e instanceof Ut?Fs:e instanceof Date?hl:ll(e)?Ms:Array.isArray(e)?fl:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?dl:ze)(t,e)}function Sm(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Dm(t,e){var n=ki(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function xr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var gl=180/Math.PI,Ps={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ml(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*gl,skewX:Math.atan(u)*gl,scaleX:s,scaleY:a}}var Ni;function Bm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ps:ml(e.a,e.b,e.c,e.d,e.e,e.f)}function Fm(t){return t==null||(Ni||(Ni=document.createElementNS("http://www.w3.org/2000/svg","g")),Ni.setAttribute("transform",t),!(t=Ni.transform.baseVal.consolidate()))?Ps:(t=t.matrix,ml(t.a,t.b,t.c,t.d,t.e,t.f))}function Al(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:ze(c,l)},{i:g-2,x:ze(f,h)})}else(l||h)&&p.push("translate("+l+e+h+n)}function s(c,f,l,h){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:ze(c,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(c,f,l,h){c!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:ze(c,f)}):f&&l.push(i(l)+"skewX("+f+r)}function u(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:ze(c,l)},{i:g-2,x:ze(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(c,f){var l=[],h=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,l,h),s(c.rotate,f.rotate,l,h),a(c.skewX,f.skewX,l,h),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,l,h),c=f=null,function(p){for(var d=-1,g=h.length,m;++d<g;)l[(m=h[d]).i]=m.x(p);return l.join("")}}}var Mm=Al(Bm,"px, ","px)","deg)"),Im=Al(Fm,", ",")",")"),Tm=1e-12;function xl(t){return((t=Math.exp(t))+1/t)/2}function Pm(t){return((t=Math.exp(t))-1/t)/2}function Rm(t){return((t=Math.exp(2*t))-1)/(t+1)}const yl=function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-u,g=p*p+d*d,m,A;if(g<Tm)A=Math.log(h/c)/e,m=function(w){return[a+w*p,u+w*d,c*Math.exp(e*w*A)]};else{var y=Math.sqrt(g),b=(h*h-c*c+r*g)/(2*c*n*y),C=(h*h-c*c-r*g)/(2*h*n*y),B=Math.log(Math.sqrt(b*b+1)-b),E=Math.log(Math.sqrt(C*C+1)-C);A=(E-B)/e,m=function(w){var X=w*A,H=xl(B),ae=c/(n*y)*(H*Rm(e*X+B)-Pm(B));return[a+ae*p,u+ae*d,c*H/xl(e*X+B)]}}return m.duration=A*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i}(Math.SQRT2,2,4);function bl(t){return function(e,n){var r=t((e=As(e)).h,(n=As(n)).h),i=re(e.s,n.s),o=re(e.l,n.l),s=re(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+""}}}const Lm=bl(ki);var km=bl(re);function Nm(t,e){var n=re((t=ys(t)).l,(e=ys(e)).l),r=re(t.a,e.a),i=re(t.b,e.b),o=re(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 wl(t){return function(e,n){var r=t((e=Es(e)).h,(n=Es(n)).h),i=re(e.c,n.c),o=re(e.l,n.l),s=re(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+""}}}const zm=wl(ki);var Om=wl(re);function vl(t){return function e(n){n=+n;function r(i,o){var s=t((i=Bs(i)).h,(o=Bs(o)).h),a=re(i.s,o.s),u=re(i.l,o.l),c=re(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=u(Math.pow(f,n)),i.opacity=c(f),i+""}}return r.gamma=e,r}(1)}const Gm=vl(ki);var Um=vl(re);function Rs(t,e){e===void 0&&(e=t,t=At);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 Hm(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Qm=Object.freeze(Object.defineProperty({__proto__:null,interpolate:At,interpolateArray:vm,interpolateBasis:sl,interpolateBasisClosed:al,interpolateCubehelix:Gm,interpolateCubehelixLong:Um,interpolateDate:hl,interpolateDiscrete:Sm,interpolateHcl:zm,interpolateHclLong:Om,interpolateHsl:Lm,interpolateHslLong:km,interpolateHue:Dm,interpolateLab:Nm,interpolateNumber:ze,interpolateNumberArray:Ms,interpolateObject:dl,interpolateRgb:Fs,interpolateRgbBasis:bm,interpolateRgbBasisClosed:wm,interpolateRound:xr,interpolateString:pl,interpolateTransformCss:Mm,interpolateTransformSvg:Im,interpolateZoom:yl,piecewise:Rs,quantize:Hm},Symbol.toStringTag,{value:"Module"}));function jm(t){return function(){return t}}function Ls(t){return+t}var Cl=[0,1];function xe(t){return t}function ks(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:jm(isNaN(e)?NaN:.5)}function Vm(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Ym(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=ks(i,r),o=n(s,o)):(r=ks(r,i),o=n(o,s)),function(a){return o(r(a))}}function Wm(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]=ks(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var u=sn(t,a,1,r)-1;return o[u](i[u](a))}}function yr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function zi(){var t=Cl,e=Cl,n=At,r,i,o,s=xe,a,u,c;function f(){var h=Math.min(t.length,e.length);return s!==xe&&(s=Vm(t[0],t[h-1])),a=h>2?Wm:Ym,u=c=null,l}function l(h){return h==null||isNaN(h=+h)?o:(u||(u=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((c||(c=a(e,t.map(r),ze)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,Ls),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=xr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:xe,f()):s!==xe},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 El(){return zi()(xe,xe)}function Sl(t,e,n,r){var i=Pt(t,e,n),o;switch(r=lt(r??",f"),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Uu(i,s))&&(r.precision=o),Vo(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Hu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Gu(i))&&(r.precision=o-(r.type==="%")*2);break}}return oe(r)}function Vt(t){var e=t.domain;return t.ticks=function(n){var r=e();return di(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return Sl(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],u,c,f=10;for(a<s&&(c=s,s=a,a=c,c=i,i=o,o=c);f-- >0;){if(c=Tu(s,a,n),c===u)return r[i]=s,r[o]=a,e(r);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function Dl(){var t=El();return t.copy=function(){return yr(t,Dl())},Ye.apply(t,arguments),Vt(t)}function Bl(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,Ls),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return Bl(t).unknown(e)},t=arguments.length?Array.from(t,Ls):[0,1],Vt(n)}function Fl(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 Ml(t){return Math.log(t)}function Il(t){return Math.exp(t)}function Xm(t){return-Math.log(-t)}function Zm(t){return-Math.exp(-t)}function Km(t){return isFinite(t)?+("1e"+t):t<0?0:t}function qm(t){return t===10?Km:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Jm(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 Tl(t){return(e,n)=>-t(-e,n)}function Ns(t){const e=t(Ml,Il),n=e.domain;let r=10,i,o;function s(){return i=Jm(r),o=qm(r),n()[0]<0?(i=Tl(i),o=Tl(o),t(Xm,Zm)):t(Ml,Il),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 u=n();let c=u[0],f=u[u.length-1];const l=f<c;l&&([c,f]=[f,c]);let h=i(c),p=i(f),d,g;const m=a==null?10:+a;let A=[];if(!(r%1)&&p-h<m){if(h=Math.floor(h),p=Math.ceil(p),c>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;A.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<c)){if(g>f)break;A.push(g)}A.length*2<m&&(A=di(c,f,m))}else A=di(h,p,Math.min(p-h,m)).map(o);return l?A.reverse():A},e.tickFormat=(a,u)=>{if(a==null&&(a=10),u==null&&(u=r===10?"s":","),typeof u!="function"&&(!(r%1)&&(u=lt(u)).precision==null&&(u.trim=!0),u=oe(u)),a===1/0)return u;const c=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<=c?u(f):""}},e.nice=()=>n(Fl(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function zs(){const t=Ns(zi()).domain([1,10]);return t.copy=()=>yr(t,zs()).base(t.base()),Ye.apply(t,arguments),t}function Pl(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Rl(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Os(t){var e=1,n=t(Pl(e),Rl(e));return n.constant=function(r){return arguments.length?t(Pl(e=+r),Rl(e)):e},Vt(n)}function Ll(){var t=Os(zi());return t.copy=function(){return yr(t,Ll()).constant(t.constant())},Ye.apply(t,arguments)}function kl(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function _m(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function $m(t){return t<0?-t*t:t*t}function Gs(t){var e=t(xe,xe),n=1;function r(){return n===1?t(xe,xe):n===.5?t(_m,$m):t(kl(n),kl(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Vt(e)}function Us(){var t=Gs(zi());return t.copy=function(){return yr(t,Us()).exponent(t.exponent())},Ye.apply(t,arguments),t}function eA(){return Us.apply(null,arguments).exponent(.5)}function Nl(){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]=Pu(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[sn(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(Zn),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 Nl().domain(t).range(e).unknown(r)},Ye.apply(o,arguments)}function zl(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(u){return u!=null&&u<=u?i[sn(r,u,0,n)]:o}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return s}return s.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},s.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},s.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},s.unknown=function(u){return arguments.length&&(o=u),s},s.thresholds=function(){return r.slice()},s.copy=function(){return zl().domain([t,e]).range(i).unknown(o)},Ye.apply(Vt(s),arguments)}function Ol(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[sn(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 Ol().domain(t).range(e).unknown(n)},Ye.apply(i,arguments)}function tA(t){return new Date(t)}function nA(t){return t instanceof Date?+t:+new Date(+t)}function Hs(t,e,n,r,i,o,s,a,u,c){var f=El(),l=f.invert,h=f.domain,p=c(".%L"),d=c(":%S"),g=c("%I:%M"),m=c("%I %p"),A=c("%a %d"),y=c("%b %d"),b=c("%B"),C=c("%Y");function B(E){return(u(E)<E?p:a(E)<E?d:s(E)<E?g:o(E)<E?m:r(E)<E?i(E)<E?A:y:n(E)<E?b:C)(E)}return f.invert=function(E){return new Date(l(E))},f.domain=function(E){return arguments.length?h(Array.from(E,nA)):h().map(tA)},f.ticks=function(E){var w=h();return t(w[0],w[w.length-1],E??10)},f.tickFormat=function(E,w){return w==null?B:c(w)},f.nice=function(E){var w=h();return(!E||typeof E.range!="function")&&(E=e(w[0],w[w.length-1],E??10)),E?h(Fl(w,E)):f},f.copy=function(){return yr(f,Hs(t,e,n,r,i,o,s,a,u,c))},f}function rA(){return Ye.apply(Hs(dp,pp,ht,yi,qn,Lt,Jo,qo,ft,os).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function iA(){return Ye.apply(Hs(fp,hp,dt,wi,Jn,Nt,es,$o,ft,ss).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Oi(){var t=0,e=1,n,r,i,o,s=xe,a=!1,u;function c(l){return l==null||isNaN(l=+l)?u:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}c.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(l){return arguments.length?(a=!!l,c):a},c.interpolator=function(l){return arguments.length?(s=l,c):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),c):[s(0),s(1)]}}return c.range=f(At),c.rangeRound=f(xr),c.unknown=function(l){return arguments.length?(u=l,c):u},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),c}}function xt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Qs(){var t=Vt(Oi()(xe));return t.copy=function(){return xt(t,Qs())},gt.apply(t,arguments)}function Gl(){var t=Ns(Oi()).domain([1,10]);return t.copy=function(){return xt(t,Gl()).base(t.base())},gt.apply(t,arguments)}function Ul(){var t=Os(Oi());return t.copy=function(){return xt(t,Ul()).constant(t.constant())},gt.apply(t,arguments)}function js(){var t=Gs(Oi());return t.copy=function(){return xt(t,js()).exponent(t.exponent())},gt.apply(t,arguments)}function oA(){return js.apply(null,arguments).exponent(.5)}function Gi(){var t=0,e=.5,n=1,r=1,i,o,s,a,u,c=xe,f,l=!1,h;function p(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:u),c(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),u=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?(c=g,p):c};function d(g){return function(m){var A,y,b;return arguments.length?([A,y,b]=m,c=Rs(g,[A,y,b]),p):[c(0),c(.5),c(1)]}}return p.range=d(At),p.rangeRound=d(xr),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),u=o===s?0:.5/(s-o),r=o<i?-1:1,p}}function Hl(){var t=Vt(Gi()(xe));return t.copy=function(){return xt(t,Hl())},gt.apply(t,arguments)}function Ql(){var t=Ns(Gi()).domain([.1,1,10]);return t.copy=function(){return xt(t,Ql()).base(t.base())},gt.apply(t,arguments)}function jl(){var t=Os(Gi());return t.copy=function(){return xt(t,jl()).constant(t.constant())},gt.apply(t,arguments)}function Vs(){var t=Gs(Gi());return t.copy=function(){return xt(t,Vs()).exponent(t.exponent())},gt.apply(t,arguments)}function sA(){return Vs.apply(null,arguments).exponent(.5)}function Ys(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const aA="identity",yn="linear",yt="log",br="pow",wr="sqrt",Ui="symlog",Vl="time",Yl="utc",Ze="sequential",bn="diverging",Ws="quantile",Wl="quantize",Xl="threshold",Xs="ordinal",Zs="point",Zl="band",Ks="bin-ordinal",J="continuous",vr="discrete",Cr="discretizing",Te="interpolating",Kl="temporal";function uA(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 cA(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(o<0&&(o=u),s=u);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 qs(){const t=gs().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,u=0,c=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=Ys(l,a,u);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*c,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=Kn(l).map(A=>g+i*A);return n(h?m.reverse():m)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],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?(u=Math.max(0,Math.min(1,l)),a=u,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.align=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],m=+l[1],A,y,b;if(!(g!==g||m!==m)&&(m<g&&(b=g,g=m,m=b),!(m<p[0]||g>r[1-h])))return A=Math.max(0,Oo(p,g)-1),y=g===m?A:Oo(p,m)-1,g-p[A]>o+1e-10&&++A,h&&(b=A,A=d-y,y=d-b),A>y?void 0:e().slice(A,y+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return qs().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(u).align(c)},f()}function ql(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return ql(e())},t}function lA(){return ql(qs().paddingInner(1))}var fA=Array.prototype.map;function hA(t){return fA.call(t,Wn)}const dA=Array.prototype.slice;function Jl(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(sn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=hA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=dA.call(r),n):e.slice()},n.tickFormat=function(r,i){return Sl(t[0],ke(t),r??10,i)},n.copy=function(){return Jl().domain(n.domain()).range(n.range())},n}const Hi={};function pA(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?uA(o):o.invertExtent?cA(o):void 0),o.type=t,o};return r.metadata=li(Ro(n)),r}function N(t,e,n){return arguments.length>1?(Hi[t]=pA(t,e,n),this):gA(t)?Hi[t]:void 0}N(aA,Bl),N(yn,Dl,J),N(yt,zs,[J,yt]),N(br,Us,J),N(wr,eA,J),N(Ui,Ll,J),N(Vl,rA,[J,Kl]),N(Yl,iA,[J,Kl]),N(Ze,Qs,[J,Te]),N("".concat(Ze,"-").concat(yn),Qs,[J,Te]),N("".concat(Ze,"-").concat(yt),Gl,[J,Te,yt]),N("".concat(Ze,"-").concat(br),js,[J,Te]),N("".concat(Ze,"-").concat(wr),oA,[J,Te]),N("".concat(Ze,"-").concat(Ui),Ul,[J,Te]),N("".concat(bn,"-").concat(yn),Hl,[J,Te]),N("".concat(bn,"-").concat(yt),Ql,[J,Te,yt]),N("".concat(bn,"-").concat(br),Vs,[J,Te]),N("".concat(bn,"-").concat(wr),sA,[J,Te]),N("".concat(bn,"-").concat(Ui),jl,[J,Te]),N(Ws,Nl,[Cr,Ws]),N(Wl,zl,Cr),N(Xl,Ol,Cr),N(Ks,Jl,[vr,Cr]),N(Xs,gs,vr),N(Zl,qs,vr),N(Zs,lA,vr);function gA(t){return It(Hi,t)}function Er(t,e){const n=Hi[t];return n&&n.metadata[e]}function Ee(t){return Er(t,J)}function Yt(t){return Er(t,vr)}function wn(t){return Er(t,Cr)}function _l(t){return Er(t,yt)}function Qi(t){return Er(t,Te)}function mA(t,e){const n=e[0],r=ke(e)-n;return function(i){return t(n+i*r)}}function ji(t,e,n){return Rs($l(e||"rgb",n),t)}function AA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function $l(t,e){const n=Qm[xA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function xA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const yA={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"},bA={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 ef(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 tf(t,e){for(const n in t)Js(n,e(t[n]))}const nf={};tf(bA,ef),tf(yA,t=>ji(ef(t)));function Js(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(nf[t]=e,this):nf[t]}const EE="";function wA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function rf(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function vA(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ke(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function vn(t){return t[t.length-1]}class CA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){return vn(this.enabledStack)??!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=wA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&EA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(kc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}kc(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(nt`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function EA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const SA="RawCode",DA="Literal",BA="Property",FA="Identifier",MA="ArrayExpression",IA="BinaryExpression",TA="CallExpression",PA="ConditionalExpression",RA="LogicalExpression",LA="MemberExpression",kA="ObjectExpression",NA="UnaryExpression";function Oe(t){this.type=t}Oe.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=zA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function zA(t){switch(t.type){case MA:return t.elements;case IA:case RA:return[t.left,t.right];case TA:return[t.callee].concat(t.arguments);case PA:return[t.test,t.consequent,t.alternate];case LA:return[t.object,t.property];case kA:return t.properties;case BA:return[t.key,t.value];case NA:return[t.argument];case FA:case DA:case SA:default:return[]}}var qe,S,x,ce,z,Vi=1,Sr=2,Wt=3,bt=4,Yi=5,Xt=6,ye=7,Dr=8,OA=9;qe={},qe[Vi]="Boolean",qe[Sr]="<end>",qe[Wt]="Identifier",qe[bt]="Keyword",qe[Yi]="Null",qe[Xt]="Numeric",qe[ye]="Punctuator",qe[Dr]="String",qe[OA]="RegularExpression";var GA="ArrayExpression",UA="BinaryExpression",HA="CallExpression",QA="ConditionalExpression",of="Identifier",jA="Literal",VA="LogicalExpression",YA="MemberExpression",WA="ObjectExpression",XA="Property",ZA="UnaryExpression",ie="Unexpected token %0",KA="Unexpected number",qA="Unexpected string",JA="Unexpected identifier",_A="Unexpected reserved word",$A="Unexpected end of input",_s="Invalid regular expression",$s="Invalid regular expression: missing /",sf="Octal literals are not allowed in strict mode.",e1="Duplicate data property in object literal not allowed in strict mode",se="ILLEGAL",Br="Disabled.",t1=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]"),n1=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 Wi(t,e){if(!t)throw new Error("ASSERT: "+e)}function it(t){return t>=48&&t<=57}function ea(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Fr(t){return"01234567".indexOf(t)>=0}function r1(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 Mr(t){return t===10||t===13||t===8232||t===8233}function Ir(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&t1.test(String.fromCharCode(t))}function Xi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&n1.test(String.fromCharCode(t))}const i1={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 af(){for(;x<ce;){const t=S.charCodeAt(x);if(r1(t)||Mr(t))++x;else break}}function ta(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<ce&&ea(S[x])?(r=S[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):L({},ie,se);return String.fromCharCode(i)}function o1(){var t,e,n,r;for(t=S[x],e=0,t==="}"&&L({},ie,se);x<ce&&(t=S[x++],!!ea(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&L({},ie,se),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function uf(){var t,e;for(t=S.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(S.charCodeAt(x)!==117&&L({},ie,se),++x,t=ta("u"),(!t||t==="\\"||!Ir(t.charCodeAt(0)))&&L({},ie,se),e=t);x<ce&&(t=S.charCodeAt(x),!!Xi(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),S.charCodeAt(x)!==117&&L({},ie,se),++x,t=ta("u"),(!t||t==="\\"||!Xi(t.charCodeAt(0)))&&L({},ie,se),e+=t);return e}function s1(){var t,e;for(t=x++;x<ce;){if(e=S.charCodeAt(x),e===92)return x=t,uf();if(Xi(e))++x;else break}return S.slice(t,x)}function a1(){var t,e,n;return t=x,e=S.charCodeAt(x)===92?uf():s1(),e.length===1?n=Wt:i1.hasOwnProperty(e)?n=bt:e==="null"?n=Yi:e==="true"||e==="false"?n=Vi:n=Wt,{type:n,value:e,start:t,end:x}}function na(){var t=x,e=S.charCodeAt(x),n,r=S[x],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++x,{type:ye,value:String.fromCharCode(e),start:t,end:x};default:if(n=S.charCodeAt(x+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 x+=2,{type:ye,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:x};case 33:case 61:return x+=2,S.charCodeAt(x)===61&&++x,{type:ye,value:S.slice(t,x),start:t,end:x}}}if(s=S.substr(x,4),s===">>>=")return x+=4,{type:ye,value:s,start:t,end:x};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return x+=3,{type:ye,value:o,start:t,end:x};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return x+=2,{type:ye,value:i,start:t,end:x};if(i==="//"&&L({},ie,se),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:ye,value:r,start:t,end:x};L({},ie,se)}function u1(t){let e="";for(;x<ce&&ea(S[x]);)e+=S[x++];return e.length===0&&L({},ie,se),Ir(S.charCodeAt(x))&&L({},ie,se),{type:Xt,value:parseInt("0x"+e,16),start:t,end:x}}function c1(t){let e="0"+S[x++];for(;x<ce&&Fr(S[x]);)e+=S[x++];return(Ir(S.charCodeAt(x))||it(S.charCodeAt(x)))&&L({},ie,se),{type:Xt,value:parseInt(e,8),octal:!0,start:t,end:x}}function cf(){var t,e,n;if(n=S[x],Wi(it(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=x,t="",n!=="."){if(t=S[x++],n=S[x],t==="0"){if(n==="x"||n==="X")return++x,u1(e);if(Fr(n))return c1(e);n&&it(n.charCodeAt(0))&&L({},ie,se)}for(;it(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="."){for(t+=S[x++];it(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="e"||n==="E")if(t+=S[x++],n=S[x],(n==="+"||n==="-")&&(t+=S[x++]),it(S.charCodeAt(x)))for(;it(S.charCodeAt(x));)t+=S[x++];else L({},ie,se);return Ir(S.charCodeAt(x))&&L({},ie,se),{type:Xt,value:parseFloat(t),start:e,end:x}}function l1(){var t="",e,n,r,i,o=!1;for(e=S[x],Wi(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<ce;)if(r=S[x++],r===e){e="";break}else if(r==="\\")if(r=S[x++],!r||!Mr(r.charCodeAt(0)))switch(r){case"u":case"x":S[x]==="{"?(++x,t+=o1()):t+=ta(r);break;case"n":t+=`
15
15
  `;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:Fr(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),x<ce&&Fr(S[x])&&(o=!0,i=i*8+"01234567".indexOf(S[x++]),"0123".indexOf(r)>=0&&x<ce&&Fr(S[x])&&(i=i*8+"01234567".indexOf(S[x++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&S[x]===`
16
- `&&++x;else{if(Mr(r.charCodeAt(0)))break;t+=r}return e!==""&&L({},ie,se),{type:Dr,value:t,octal:o,start:n,end:x}}function l1(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";L({},_s)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{L({},_s)}try{return new RegExp(t,e)}catch{return null}}function f1(){var t,e,n,r,i;for(t=S[x],Wi(t==="/","Regular expression literal must start with a slash"),e=S[x++],n=!1,r=!1;x<ce;)if(t=S[x++],e+=t,t==="\\")t=S[x++],Mr(t.charCodeAt(0))&&L({},$s),e+=t;else if(Mr(t.charCodeAt(0)))L({},$s);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||L({},$s),i=e.substr(1,e.length-2),{value:i,literal:e}}function h1(){var t,e,n;for(e="",n="";x<ce&&(t=S[x],!!Xi(t.charCodeAt(0)));)++x,t==="\\"&&x<ce?L({},ie,se):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&L({},_s,n),{value:n,literal:e}}function d1(){var t,e,n,r;return z=null,af(),t=x,e=f1(),n=h1(),r=l1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function p1(t){return t.type===Wt||t.type===bt||t.type===Vi||t.type===Yi}function lf(){if(af(),x>=ce)return{type:Sr,start:x,end:x};const t=S.charCodeAt(x);return Ir(t)?s1():t===40||t===41||t===59?na():t===39||t===34?c1():t===46?it(S.charCodeAt(x+1))?cf():na():it(t)?cf():na()}function be(){const t=z;return x=t.end,z=lf(),x=t.end,t}function ff(){const t=x;z=lf(),x=t}function g1(t){const e=new Oe(OA);return e.elements=t,e}function hf(t,e,n){const r=new Oe(t==="||"||t==="&&"?jA:GA);return r.operator=t,r.left=e,r.right=n,r}function m1(t,e){const n=new Oe(UA);return n.callee=t,n.arguments=e,n}function A1(t,e,n){const r=new Oe(HA);return r.test=t,r.consequent=e,r.alternate=n,r}function ra(t){const e=new Oe(of);return e.name=t,e}function Tr(t){const e=new Oe(QA);return e.value=t.value,e.raw=S.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function df(t,e,n){const r=new Oe(VA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function x1(t){const e=new Oe(YA);return e.properties=t,e}function pf(t,e,n){const r=new Oe(WA);return r.key=e,r.value=n,r.kind=t,r}function y1(t,e){const n=new Oe(XA);return n.operator=t,n.argument=e,n.prefix=!0,n}function L(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Wi(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=x,n.description=i,n}function Zi(t){t.type===Sr&&L(t,_A),t.type===Xt&&L(t,ZA),t.type===Dr&&L(t,KA),t.type===Wt&&L(t,qA),t.type===bt&&L(t,JA),L(t,ie,t.value)}function le(t){const e=be();(e.type!==ye||e.value!==t)&&Zi(e)}function U(t){return z.type===ye&&z.value===t}function ia(t){return z.type===bt&&z.value===t}function b1(){const t=[];for(x=z.start,le("[");!U("]");)U(",")?(be(),t.push(null)):(t.push(Zt()),U("]")||le(","));return be(),g1(t)}function gf(){x=z.start;const t=be();return t.type===Dr||t.type===Xt?(t.octal&&L(t,sf),Tr(t)):ra(t.value)}function w1(){var t,e,n,r;if(x=z.start,t=z,t.type===Wt)return n=gf(),le(":"),r=Zt(),pf("init",n,r);if(t.type===Sr||t.type===ye)Zi(t);else return e=gf(),le(":"),r=Zt(),pf("init",e,r)}function v1(){var t=[],e,n,r,i={},o=String;for(x=z.start,le("{");!U("}");)e=w1(),e.key.type===of?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?L({},$A):i[r]=!0,t.push(e),U("}")||le(",");return le("}"),x1(t)}function C1(){le("(");const t=oa();return le(")"),t}const E1={if:1};function S1(){var t,e,n;if(U("("))return C1();if(U("["))return b1();if(U("{"))return v1();if(t=z.type,x=z.start,t===Wt||E1[z.value])n=ra(be().value);else if(t===Dr||t===Xt)z.octal&&L(z,sf),n=Tr(be());else{if(t===bt)throw new Error(Br);t===Vi?(e=be(),e.value=e.value==="true",n=Tr(e)):t===Yi?(e=be(),e.value=null,n=Tr(e)):U("/")||U("/=")?(n=Tr(d1()),ff()):Zi(be())}return n}function D1(){const t=[];if(le("("),!U(")"))for(;x<ce&&(t.push(Zt()),!U(")"));)le(",");return le(")"),t}function B1(){x=z.start;const t=be();return p1(t)||Zi(t),ra(t.value)}function F1(){return le("."),B1()}function M1(){le("[");const t=oa();return le("]"),t}function I1(){var t,e,n;for(t=S1();;)if(U("."))n=F1(),t=df(".",t,n);else if(U("("))e=D1(),t=m1(t,e);else if(U("["))n=M1(),t=df("[",t,n);else break;return t}function mf(){const t=I1();if(z.type===ye&&(U("++")||U("--")))throw new Error(Br);return t}function Ki(){var t,e;if(z.type!==ye&&z.type!==bt)e=mf();else{if(U("++")||U("--"))throw new Error(Br);if(U("+")||U("-")||U("~")||U("!"))t=be(),e=Ki(),e=y1(t.value,e);else{if(ia("delete")||ia("void")||ia("typeof"))throw new Error(Br);e=mf()}}return e}function Af(t){let e=0;if(t.type!==ye&&t.type!==bt)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function T1(){var t,e,n,r,i,o,s,a,u,c;if(t=z,u=Ki(),r=z,i=Af(r),i===0)return u;for(r.prec=i,be(),e=[t,z],s=Ki(),o=[u,r,s];(i=Af(z))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,u=o.pop(),e.pop(),n=hf(a,u,s),o.push(n);r=be(),r.prec=i,o.push(r),e.push(z),n=Ki(),o.push(n)}for(c=o.length-1,n=o[c],e.pop();c>1;)e.pop(),n=hf(o[c-1].value,o[c-2],n),c-=2;return n}function Zt(){var t,e,n;return t=T1(),U("?")&&(be(),e=Zt(),le(":"),n=Zt(),t=A1(t,e,n)),t}function oa(){const t=Zt();if(U(","))throw new Error(Br);return t}function P1(t){S=t,x=0,ce=S.length,z=null,ff();const e=oa();if(z.type!==Sr)throw new Error("Unexpect token after expression.");return e}var R1={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 L1(t){function e(s,a,u,c){let f=t(a[0]);return u&&(f=u+"("+f+")",u.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,u){return c=>e(s,c,a,u)}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&&Y("Missing arguments to clamp function."),s.length>3&&Y("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&&Y("Missing arguments to if function."),s.length>3&&Y("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function k1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function N1(t){t=t||{};const e=t.allowed?li(t.allowed):{},n=t.forbidden?li(t.forbidden):{},r=t.constants||R1,i=(t.functions||L1)(l),o=t.globalvar,s=t.fieldvar,a=ge(o)?o:d=>`${o}["${d}"]`;let u={},c={},f=0;function l(d){if(W(d))return d;const g=h[d.type];return g==null&&Y("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:It(n,g)?Y("Illegal identifier: "+g):It(r,g)?r[g]:It(e,g)?g:(u[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,m=l(d.object);g&&(f+=1);const A=l(d.property);return m===s&&(c[k1(A)]=1),g&&(f-=1),m+(g?"."+A:"["+A+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&Y("Illegal callee type: "+d.callee.type);const g=d.callee.name,m=d.arguments,A=It(i,g)&&i[g];return A||Y("Unrecognized function: "+g),ge(A)?A(m):A+"("+m.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},g}return p.functions=i,p.constants=r,p}function sa(t,e={}){const n=N1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=P1(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 z1(){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 O1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Pe(i)&&i.resolutionChannel||r);n[r]=G1(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function G1(t,e,n,r){let i;if(Ge(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)),Yt(e.type)){const o=z1();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 Ge(t){return t&&"value"in t}function Pr(t){return t&&"field"in t}function Rr(t){return t&&"datum"in t}function Pe(t){return Pr(t)||Rr(t)||ua(t)||xf(t)}function aa(t,e){const n=t.mark.encoding[e];if(Pe(n))return n;throw new Error("Not a channel def with scale!")}function xf(t){return t&&"chrom"in t}function ua(t){return t&&"expr"in t}const Lr=["x","y"],U1=["x2","y2"],H1=[...Lr,...U1];function yf(t){return Lr.includes(t)}function kr(t){return H1.includes(t)}const ca={x:"x2",y:"y2"},bf=Object.fromEntries(Object.entries(ca).map(t=>[t[1],t[0]]));function Nr(t){return t in bf}function Q1(t){const e=ca[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Cn(t){return bf[t]??t}function Kt(t){return["color","fill","stroke"].includes(Cn(t))}function qi(t){return["shape","squeeze"].includes(t)}function wf(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function vf(t){if(!qi(t))throw new Error("Not a discrete channel: "+t);const e=new Map(wf(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 O(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return I(n,[t],e)}else return ri(t)}class j1{constructor(){this.accessorCreators=[],this.register(e=>{if(Pr(e))try{const n=O(e.field);return n.constant=!1,n.fields=Mt(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>ua(e)?V1(e.expr):void 0),this.register(e=>{if(Rr(e)){const r=yd(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 V1(t){const e=sa(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
16
+ `&&++x;else{if(Mr(r.charCodeAt(0)))break;t+=r}return e!==""&&L({},ie,se),{type:Dr,value:t,octal:o,start:n,end:x}}function f1(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";L({},_s)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{L({},_s)}try{return new RegExp(t,e)}catch{return null}}function h1(){var t,e,n,r,i;for(t=S[x],Wi(t==="/","Regular expression literal must start with a slash"),e=S[x++],n=!1,r=!1;x<ce;)if(t=S[x++],e+=t,t==="\\")t=S[x++],Mr(t.charCodeAt(0))&&L({},$s),e+=t;else if(Mr(t.charCodeAt(0)))L({},$s);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||L({},$s),i=e.substr(1,e.length-2),{value:i,literal:e}}function d1(){var t,e,n;for(e="",n="";x<ce&&(t=S[x],!!Xi(t.charCodeAt(0)));)++x,t==="\\"&&x<ce?L({},ie,se):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&L({},_s,n),{value:n,literal:e}}function p1(){var t,e,n,r;return z=null,af(),t=x,e=h1(),n=d1(),r=f1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function g1(t){return t.type===Wt||t.type===bt||t.type===Vi||t.type===Yi}function lf(){if(af(),x>=ce)return{type:Sr,start:x,end:x};const t=S.charCodeAt(x);return Ir(t)?a1():t===40||t===41||t===59?na():t===39||t===34?l1():t===46?it(S.charCodeAt(x+1))?cf():na():it(t)?cf():na()}function be(){const t=z;return x=t.end,z=lf(),x=t.end,t}function ff(){const t=x;z=lf(),x=t}function m1(t){const e=new Oe(GA);return e.elements=t,e}function hf(t,e,n){const r=new Oe(t==="||"||t==="&&"?VA:UA);return r.operator=t,r.left=e,r.right=n,r}function A1(t,e){const n=new Oe(HA);return n.callee=t,n.arguments=e,n}function x1(t,e,n){const r=new Oe(QA);return r.test=t,r.consequent=e,r.alternate=n,r}function ra(t){const e=new Oe(of);return e.name=t,e}function Tr(t){const e=new Oe(jA);return e.value=t.value,e.raw=S.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function df(t,e,n){const r=new Oe(YA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function y1(t){const e=new Oe(WA);return e.properties=t,e}function pf(t,e,n){const r=new Oe(XA);return r.key=e,r.value=n,r.kind=t,r}function b1(t,e){const n=new Oe(ZA);return n.operator=t,n.argument=e,n.prefix=!0,n}function L(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(Wi(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=x,n.description=i,n}function Zi(t){t.type===Sr&&L(t,$A),t.type===Xt&&L(t,KA),t.type===Dr&&L(t,qA),t.type===Wt&&L(t,JA),t.type===bt&&L(t,_A),L(t,ie,t.value)}function le(t){const e=be();(e.type!==ye||e.value!==t)&&Zi(e)}function U(t){return z.type===ye&&z.value===t}function ia(t){return z.type===bt&&z.value===t}function w1(){const t=[];for(x=z.start,le("[");!U("]");)U(",")?(be(),t.push(null)):(t.push(Zt()),U("]")||le(","));return be(),m1(t)}function gf(){x=z.start;const t=be();return t.type===Dr||t.type===Xt?(t.octal&&L(t,sf),Tr(t)):ra(t.value)}function v1(){var t,e,n,r;if(x=z.start,t=z,t.type===Wt)return n=gf(),le(":"),r=Zt(),pf("init",n,r);if(t.type===Sr||t.type===ye)Zi(t);else return e=gf(),le(":"),r=Zt(),pf("init",e,r)}function C1(){var t=[],e,n,r,i={},o=String;for(x=z.start,le("{");!U("}");)e=v1(),e.key.type===of?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?L({},e1):i[r]=!0,t.push(e),U("}")||le(",");return le("}"),y1(t)}function E1(){le("(");const t=oa();return le(")"),t}const S1={if:1};function D1(){var t,e,n;if(U("("))return E1();if(U("["))return w1();if(U("{"))return C1();if(t=z.type,x=z.start,t===Wt||S1[z.value])n=ra(be().value);else if(t===Dr||t===Xt)z.octal&&L(z,sf),n=Tr(be());else{if(t===bt)throw new Error(Br);t===Vi?(e=be(),e.value=e.value==="true",n=Tr(e)):t===Yi?(e=be(),e.value=null,n=Tr(e)):U("/")||U("/=")?(n=Tr(p1()),ff()):Zi(be())}return n}function B1(){const t=[];if(le("("),!U(")"))for(;x<ce&&(t.push(Zt()),!U(")"));)le(",");return le(")"),t}function F1(){x=z.start;const t=be();return g1(t)||Zi(t),ra(t.value)}function M1(){return le("."),F1()}function I1(){le("[");const t=oa();return le("]"),t}function T1(){var t,e,n;for(t=D1();;)if(U("."))n=M1(),t=df(".",t,n);else if(U("("))e=B1(),t=A1(t,e);else if(U("["))n=I1(),t=df("[",t,n);else break;return t}function mf(){const t=T1();if(z.type===ye&&(U("++")||U("--")))throw new Error(Br);return t}function Ki(){var t,e;if(z.type!==ye&&z.type!==bt)e=mf();else{if(U("++")||U("--"))throw new Error(Br);if(U("+")||U("-")||U("~")||U("!"))t=be(),e=Ki(),e=b1(t.value,e);else{if(ia("delete")||ia("void")||ia("typeof"))throw new Error(Br);e=mf()}}return e}function Af(t){let e=0;if(t.type!==ye&&t.type!==bt)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function P1(){var t,e,n,r,i,o,s,a,u,c;if(t=z,u=Ki(),r=z,i=Af(r),i===0)return u;for(r.prec=i,be(),e=[t,z],s=Ki(),o=[u,r,s];(i=Af(z))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,u=o.pop(),e.pop(),n=hf(a,u,s),o.push(n);r=be(),r.prec=i,o.push(r),e.push(z),n=Ki(),o.push(n)}for(c=o.length-1,n=o[c],e.pop();c>1;)e.pop(),n=hf(o[c-1].value,o[c-2],n),c-=2;return n}function Zt(){var t,e,n;return t=P1(),U("?")&&(be(),e=Zt(),le(":"),n=Zt(),t=x1(t,e,n)),t}function oa(){const t=Zt();if(U(","))throw new Error(Br);return t}function R1(t){S=t,x=0,ce=S.length,z=null,ff();const e=oa();if(z.type!==Sr)throw new Error("Unexpect token after expression.");return e}var L1={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function k1(t){function e(s,a,u,c){let f=t(a[0]);return u&&(f=u+"("+f+")",u.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,u){return c=>e(s,c,a,u)}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&&Y("Missing arguments to clamp function."),s.length>3&&Y("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&&Y("Missing arguments to if function."),s.length>3&&Y("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function N1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function z1(t){t=t||{};const e=t.allowed?li(t.allowed):{},n=t.forbidden?li(t.forbidden):{},r=t.constants||L1,i=(t.functions||k1)(l),o=t.globalvar,s=t.fieldvar,a=ge(o)?o:d=>`${o}["${d}"]`;let u={},c={},f=0;function l(d){if(W(d))return d;const g=h[d.type];return g==null&&Y("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:It(n,g)?Y("Illegal identifier: "+g):It(r,g)?r[g]:It(e,g)?g:(u[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,m=l(d.object);g&&(f+=1);const A=l(d.property);return m===s&&(c[N1(A)]=1),g&&(f-=1),m+(g?"."+A:"["+A+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&Y("Illegal callee type: "+d.callee.type);const g=d.callee.name,m=d.arguments,A=It(i,g)&&i[g];return A||Y("Unrecognized function: "+g),ge(A)?A(m):A+"("+m.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},g}return p.functions=i,p.constants=r,p}function sa(t,e={}){const n=z1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=R1(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 O1(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function G1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Pe(i)&&i.resolutionChannel||r);n[r]=U1(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function U1(t,e,n,r){let i;if(Ge(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)),Yt(e.type)){const o=O1();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 Ge(t){return t&&"value"in t}function Pr(t){return t&&"field"in t}function Rr(t){return t&&"datum"in t}function Pe(t){return Pr(t)||Rr(t)||ua(t)||xf(t)}function aa(t,e){const n=t.mark.encoding[e];if(Pe(n))return n;throw new Error("Not a channel def with scale!")}function xf(t){return t&&"chrom"in t}function ua(t){return t&&"expr"in t}const Lr=["x","y"],H1=["x2","y2"],Q1=[...Lr,...H1];function yf(t){return Lr.includes(t)}function kr(t){return Q1.includes(t)}const ca={x:"x2",y:"y2"},bf=Object.fromEntries(Object.entries(ca).map(t=>[t[1],t[0]]));function Nr(t){return t in bf}function j1(t){const e=ca[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Cn(t){return bf[t]??t}function Kt(t){return["color","fill","stroke"].includes(Cn(t))}function qi(t){return["shape","squeeze"].includes(t)}function wf(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function vf(t){if(!qi(t))throw new Error("Not a discrete channel: "+t);const e=new Map(wf(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 O(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return I(n,[t],e)}else return ri(t)}class V1{constructor(){this.accessorCreators=[],this.register(e=>{if(Pr(e))try{const n=O(e.field);return n.constant=!1,n.fields=Mt(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>ua(e)?Y1(e.expr):void 0),this.register(e=>{if(Rr(e)){const r=bd(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 Y1(t){const e=sa(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
17
17
  Available via the MIT license.
18
- see: http://github.com/greggman/twgl.js for details */const la=5120,zr=5121,fa=5122,ha=5123,da=5124,pa=5125,ga=5126,Y1=32819,W1=32820,X1=33635,Z1=5131,K1=33640,q1=35899,J1=35902,_1=36269,$1=34042,Cf={};{const t=Cf;t[la]=Int8Array,t[zr]=Uint8Array,t[fa]=Int16Array,t[ha]=Uint16Array,t[da]=Int32Array,t[pa]=Uint32Array,t[ga]=Float32Array,t[Y1]=Uint16Array,t[W1]=Uint16Array,t[X1]=Uint16Array,t[Z1]=Uint16Array,t[K1]=Uint32Array,t[q1]=Uint32Array,t[J1]=Uint32Array,t[_1]=Uint32Array,t[$1]=Uint32Array}function ma(t){if(t instanceof Int8Array)return la;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return zr;if(t instanceof Int16Array)return fa;if(t instanceof Uint16Array)return ha;if(t instanceof Int32Array)return da;if(t instanceof Uint32Array)return pa;if(t instanceof Float32Array)return ga;throw new Error("unsupported typed array type")}function ex(t){if(t===Int8Array)return la;if(t===Uint8Array||t===Uint8ClampedArray)return zr;if(t===Int16Array)return fa;if(t===Uint16Array)return ha;if(t===Int32Array)return da;if(t===Uint32Array)return pa;if(t===Float32Array)return ga;throw new Error("unsupported typed array type")}function tx(t){const e=Cf[t];if(!e)throw new Error("unknown gl type");return e}const Ji=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function nx(...t){console.error(...t)}function Ef(...t){console.warn(...t)}function rx(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function Sf(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function _i(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function ix(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Df=35044,Je=34962,ox=34963,sx=34660,ax=5120,ux=5121,cx=5122,lx=5123,fx=5124,hx=5125,dx=5126,Bf={attribPrefix:""};function Ff(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Df)}function Mf(t,e,n,r){if(rx(t,e))return e;n=n||Je;const i=t.createBuffer();return Ff(t,n,i,e,r),i}function If(t){return t==="indices"}function px(t){return t instanceof Int8Array||t instanceof Uint8Array}function gx(t){return t===Int8Array||t===Uint8Array}function mx(t){return t.length?t:t.data}const Ax=/coord|texture/i,xx=/color|colour/i;function Tf(t,e){let n;if(Ax.test(t)?n=2:xx.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 yx(t,e){return t.numComponents||t.size||Tf(e,mx(t).length)}function Aa(t,e){if(Ji(t))return t;if(Ji(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(If(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function bx(t,e){const n={};return Object.keys(e).forEach(function(r){if(!If(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Bf.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ji(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,h=f*l.BYTES_PER_ELEMENT;a=ex(l),u=i.normalize!==void 0?i.normalize:gx(l),c=i.numComponents||i.size||Tf(r,f),s=t.createBuffer(),t.bindBuffer(Je,s),t.bufferData(Je,h,i.drawType||Df)}else{const f=Aa(i,r);s=Mf(t,f,void 0,i.drawType),a=ma(f),u=i.normalize!==void 0?i.normalize:px(f),c=yx(i,r)}n[o]={buffer:s,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(Je,null),n}function wx(t,e,n,r){n=Aa(n),r!==void 0?(t.bindBuffer(Je,e.buffer),t.bufferSubData(Je,r,n)):Ff(t,Je,e.buffer,n,e.drawType)}function vx(t,e){return e===ax||e===ux?1:e===cx||e===lx?2:e===fx||e===hx||e===dx?4:0}const xa=["position","positions","a_position"];function Cx(t,e){let n,r;for(r=0;r<xa.length&&(n=xa[r],!(n in e||(n=Bf.attribPrefix+n,n in e)));++r);r===xa.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(Je,i.buffer);const o=t.getBufferParameter(Je,sx);t.bindBuffer(Je,null);const s=vx(t,i.type),a=o/s,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function Ex(t,e,n){const r=bx(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=Aa(o,"indices");i.indices=Mf(t,s,ox),i.numElements=s.length,i.elementType=ma(s)}else i.numElements||(i.numElements=Cx(t,i.attribs));return i}function En(t){return!!t.texStorage2D}const ya=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),wt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Sn=Ji,Pf=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Rf=6406,_e=6407,j=6408,Lf=6409,kf=6410,Or=6402,Nf=34041,$i=33071,Sx=9728,Dx=9729,ot=3553,st=34067,vt=32879,Ct=35866,eo=34069,Bx=34070,Fx=34071,Mx=34072,Ix=34073,Tx=34074,ba=10241,wa=10240,to=10242,no=10243,zf=32882,Px=33082,Rx=33083,Lx=33084,kx=33085,va=3317,Of=3314,Gf=32878,Uf=3316,Hf=3315,Qf=32877,Nx=37443,zx=37441,Ox=37440,Gx=33321,Ux=36756,Hx=33325,Qx=33326,jx=33330,Vx=33329,Yx=33338,Wx=33337,Xx=33340,Zx=33339,Kx=33323,qx=36757,Jx=33327,_x=33328,$x=33336,ey=33335,ty=33332,ny=33331,ry=33334,iy=33333,oy=32849,sy=35905,ay=36194,uy=36758,cy=35898,ly=35901,fy=34843,hy=34837,dy=36221,py=36239,gy=36215,my=36233,Ay=36209,xy=36227,yy=32856,by=35907,wy=36759,vy=32855,Cy=32854,Ey=32857,Sy=34842,Dy=34836,By=36220,Fy=36238,My=36975,Iy=36214,Ty=36232,Py=36226,Ry=36208,Ly=33189,ky=33190,Ny=36012,zy=36013,Oy=35056,Et=5120,V=5121,ro=5122,Dn=5123,io=5124,qt=5125,fe=5126,jf=32819,Vf=32820,Yf=33635,Ue=5131,Gr=36193,Ca=33640,Gy=35899,Uy=35902,Hy=36269,Qy=34042,oo=33319,Bn=33320,so=6403,Fn=36244,Mn=36248,Jt=36249;let Ea;function ao(t){if(!Ea){const e={};e[Rf]={textureFormat:Rf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[V,Ue,Gr,fe]},e[Lf]={textureFormat:Lf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[V,Ue,Gr,fe]},e[kf]={textureFormat:kf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[V,Ue,Gr,fe]},e[_e]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[V,Ue,Gr,fe,Yf]},e[j]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[V,Ue,Gr,fe,jf,Vf]},e[Or]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[qt,Dn]},e[Gx]={textureFormat:so,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[V]},e[Ux]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Et]},e[Hx]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[fe,Ue]},e[Qx]={textureFormat:so,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[jx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[V]},e[Vx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Et]},e[ty]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Dn]},e[ny]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ro]},e[ry]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qt]},e[iy]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[io]},e[Kx]={textureFormat:oo,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[V]},e[qx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Et]},e[Jx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[fe,Ue]},e[_x]={textureFormat:oo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[fe]},e[$x]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[V]},e[ey]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Et]},e[Yx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Dn]},e[Wx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ro]},e[Xx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[qt]},e[Zx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[io]},e[oy]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[V]},e[sy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[V]},e[ay]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[V,Yf]},e[uy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Et]},e[cy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,Ue,Gy]},e[ly]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,Ue,Uy]},e[fy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[fe,Ue]},e[hy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[fe]},e[dy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[V]},e[py]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Et]},e[gy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Dn]},e[my]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ro]},e[Ay]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[qt]},e[xy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[io]},e[yy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[V]},e[by]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[V]},e[wy]={textureFormat:j,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Et]},e[vy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[V,Vf,Ca]},e[Cy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[V,jf]},e[Ey]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Ca]},e[Sy]={textureFormat:j,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[fe,Ue]},e[Dy]={textureFormat:j,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[fe]},e[By]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[V]},e[Fy]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Et]},e[My]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ca]},e[Iy]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Dn]},e[Ty]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ro]},e[Py]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[io]},e[Ry]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[qt]},e[Ly]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Dn,qt]},e[ky]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qt]},e[Ny]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Oy]={textureFormat:Nf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Qy]},e[zy]={textureFormat:Nf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hy]},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})}),Ea=e}return Ea[t]}function jy(t,e){const n=ao(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function In(t){const e=ao(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Wf(t){return(t&t-1)===0}function Vy(t,e,n,r){if(!En(t))return Wf(e)&&Wf(n);const i=ao(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Yy(t){const e=ao(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Xf(t,e,n){return Sn(e)?ma(e):n||V}function uo(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===st?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 Tn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(Nx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(zx,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(Ox,e.flipY)}function Zf(t){t.pixelStorei(va,4),En(t)&&(t.pixelStorei(Of,0),t.pixelStorei(Gf,0),t.pixelStorei(Uf,0),t.pixelStorei(Hf,0),t.pixelStorei(Qf,0))}function Wy(t,e,n,r){r.minMag&&(n.call(t,e,ba,r.minMag),n.call(t,e,wa,r.minMag)),r.min&&n.call(t,e,ba,r.min),r.mag&&n.call(t,e,wa,r.mag),r.wrap&&(n.call(t,e,to,r.wrap),n.call(t,e,no,r.wrap),(e===vt||ix(t,e))&&n.call(t,e,zf,r.wrap)),r.wrapR&&n.call(t,e,zf,r.wrapR),r.wrapS&&n.call(t,e,to,r.wrapS),r.wrapT&&n.call(t,e,no,r.wrapT),r.minLod&&n.call(t,e,Px,r.minLod),r.maxLod&&n.call(t,e,Rx,r.maxLod),r.baseLevel&&n.call(t,e,Lx,r.baseLevel),r.maxLevel&&n.call(t,e,kx,r.maxLevel)}function Kf(t,e,n){const r=n.target||ot;t.bindTexture(r,e),Wy(t,r,t.texParameteri,n)}function Xy(t){return t=t||wt.textureColor,Sn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Sa(t,e,n,r,i,o){n=n||wt.textureOptions,o=o||j;const s=n.target||ot;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),Vy(t,r,i,o))t.generateMipmap(s);else{const a=Yy(o)?Dx:Sx;t.texParameteri(s,ba,a),t.texParameteri(s,wa,a),t.texParameteri(s,to,$i),t.texParameteri(s,no,$i)}}function Ur(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Da(t,e){return e=e||{},e.cubeFaceOrder||[eo,Bx,Fx,Mx,Ix,Tx]}function Ba(t,e){const r=Da(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function qf(t,e,n,r){r=r||wt.textureOptions;const i=r.target||ot,o=r.level||0;let s=n.width,a=n.height;const u=r.internalFormat||r.format||j,c=In(u),f=r.format||c.format,l=r.type||c.type;if(Tn(t,r),t.bindTexture(i,e),i===st){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=Pf();m?(m.canvas.width=d,m.canvas.height=d,s=d,a=d,Ba(t,r).forEach(function(A){const y=g[A.ndx*2+0]*d,b=g[A.ndx*2+1]*d;m.drawImage(n,y,b,d,d,0,0,d,d),t.texImage2D(A.face,o,u,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap<"u"&&(s=d,a=d,Ba(t,r).forEach(function(A){const y=g[A.ndx*2+0]*d,b=g[A.ndx*2+1]*d;t.texImage2D(A.face,o,u,d,d,0,f,l,null),createImageBitmap(n,y,b,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Tn(t,r),t.bindTexture(i,e),t.texImage2D(A.face,o,u,f,l,C),Ur(r)&&Sa(t,e,r,s,a,u)})}))}else if(i===vt||i===Ct){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(va,1),t.pixelStorei(Of,n.width),t.pixelStorei(Gf,0),t.pixelStorei(Qf,0),t.texImage3D(i,o,u,h,h,h,0,f,l,null);for(let A=0;A<d;++A){const y=A*h*g,b=A*h*m;t.pixelStorei(Uf,y),t.pixelStorei(Hf,b),t.texSubImage3D(i,o,0,0,A,h,h,1,f,l,n)}Zf(t)}else t.texImage2D(i,o,u,f,l,n);Ur(r)&&Sa(t,e,r,s,a,u),Kf(t,e,r)}function Hr(){}function Zy(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function Ky(t,e){return e===void 0&&!Zy(t)?"anonymous":e}function qy(t,e,n){n=n||Hr;let r;if(e=e!==void 0?e:wt.crossOrigin,e=Ky(t,e),typeof Image<"u"){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 u="couldn't load image: "+t;nx(u),n(u,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<"u"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){o=u,setTimeout(s)}).catch(function(u){i=u,setTimeout(s)}),r=null}return r}function Jf(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function Fa(t,e,n){return Jf(t)?(setTimeout(function(){n(null,t)}),t):qy(t,e,n)}function Ma(t,e,n){n=n||wt.textureOptions;const r=n.target||ot;if(t.bindTexture(r,e),n.color===!1)return;const i=Xy(n.color);if(r===st)for(let o=0;o<6;++o)t.texImage2D(eo+o,0,j,1,1,0,j,V,i);else r===vt||r===Ct?t.texImage3D(r,0,j,1,1,1,0,j,V,i):t.texImage2D(r,0,j,1,1,0,j,V,i)}function Jy(t,e,n,r){return r=r||Hr,n=n||wt.textureOptions,Ma(t,e,n),n=Object.assign({},n),Fa(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(qf(t,e,s,n),r(null,e,s))})}function _y(t,e,n,r){r=r||Hr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||j,a=In(s),u=n.format||a.format,c=n.type||V,f=n.target||ot;if(f!==st)throw"target must be TEXTURE_CUBE_MAP";Ma(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Da(t,n);let d;function g(m){return function(A,y){--l,A?h.push(A):y.width!==y.height?h.push("cubemap face img is not a square: "+y.src):(Tn(t,n),t.bindTexture(f,e),l===5?Da().forEach(function(b){t.texImage2D(b,o,s,u,c,y)}):t.texImage2D(m,o,s,u,c,y),Ur(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(m,A){return Fa(m,n.crossOrigin,g(p[A]))})}function $y(t,e,n,r){r=r||Hr;const i=n.src,o=n.internalFormat||n.format||j,s=In(o),a=n.format||s.format,u=n.type||V,c=n.target||Ct;if(c!==vt&&c!==Ct)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Ma(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 A=!0;function y(b){return function(C,B){if(--f,C)l.push(C);else{if(Tn(t,n),t.bindTexture(c,e),A){A=!1,d=n.width||B.width,g=n.height||B.height,t.texImage3D(c,p,o,d,g,m,0,a,u,null);for(let E=0;E<m;++E)t.texSubImage3D(c,p,0,0,E,d,g,1,a,u,B)}else{let E=B,w;(B.width!==d||B.height!==g)&&(w=Pf(),E=w.canvas,w.canvas.width=d,w.canvas.height=g,w.drawImage(B,0,0,d,g)),t.texSubImage3D(c,p,0,0,b,d,g,1,a,u,E),w&&E===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}Ur(n)&&t.generateMipmap(c)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(b,C){return Fa(b,n.crossOrigin,y(C))})}function _f(t,e,n,r){r=r||wt.textureOptions;const i=r.target||ot;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||j,f=In(c),l=r.format||f.format,h=r.type||Xf(t,n,f.type);if(Sn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=tx(h);n=new m(n)}const p=jy(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+ya(t,l);let g;if(i===vt||i===Ct)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=uo(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=uo(t,i,o,a,d/s),o=g.width,a=g.height):(g=uo(t,i,o,s,d/a),o=g.width,s=g.height);else g=uo(t,i,o,s,d),o=g.width,s=g.height;if(Zf(t),t.pixelStorei(va,r.unpackAlignment||1),Tn(t,r),i===st){const m=p/n.BYTES_PER_ELEMENT,A=d/6*m;Ba(t,r).forEach(y=>{const b=A*y.ndx,C=n.subarray(b,b+A);t.texImage2D(y.face,u,c,o,s,0,l,h,C)})}else i===vt||i===Ct?t.texImage3D(i,u,c,o,s,a,0,l,h,n):t.texImage2D(i,u,c,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function e2(t,e,n){const r=n.target||ot;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||j,s=In(o),a=n.format||s.format,u=n.type||s.type;if(Tn(t,n),r===st)for(let c=0;c<6;++c)t.texImage2D(eo+c,i,o,n.width,n.height,0,a,u,null);else r===vt||r===Ct?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,o,n.width,n.height,0,a,u,null)}function Qr(t,e,n){n=n||Hr,e=e||wt.textureOptions;const r=t.createTexture(),i=e.target||ot;let o=e.width||1,s=e.height||1;const a=e.internalFormat||j;t.bindTexture(i,r),i===st&&(t.texParameteri(i,to,$i),t.texParameteri(i,no,$i));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")Jy(t,r,e,n);else if(Sn(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||Sn(u[0]))){const c=_f(t,r,u,e);o=c.width,s=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||Jf(u[0]))?i===st?_y(t,r,e,n):$y(t,r,e,n):(qf(t,r,u,e),o=u.width,s=u.height);else e2(t,r,e);return Ur(e)&&Sa(t,r,e,o,s,a),Kf(t,r,e),r}function t2(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||ot;t.bindTexture(s,e);const a=n.level||0,u=n.internalFormat||n.format||j,c=In(u),f=n.format||c.format;let l;const h=n.src;if(h&&(Sn(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Xf(t,h,c.type):l=n.type||c.type,s===st)for(let p=0;p<6;++p)t.texImage2D(eo+p,a,u,r,i,0,f,l,null);else s===vt||s===Ct?t.texImage3D(s,a,u,r,i,o,0,f,l,null):t.texImage2D(s,a,u,r,i,0,f,l,null)}const n2=Ef,co=33984,r2=35048,lo=34962,i2=34963,Ia=35345,$f=35718,o2=35721,s2=35971,a2=35382,u2=35396,c2=35398,l2=35392,f2=35395,fo=5126,e0=35664,t0=35665,n0=35666,Ta=5124,r0=35667,i0=35668,o0=35669,s0=35670,a0=35671,u0=35672,c0=35673,l0=35674,f0=35675,h0=35676,h2=35678,d2=35680,p2=35679,g2=35682,m2=35685,A2=35686,x2=35687,y2=35688,b2=35689,w2=35690,v2=36289,C2=36292,E2=36293,Pa=5125,d0=36294,p0=36295,g0=36296,S2=36298,D2=36299,B2=36300,F2=36303,M2=36306,I2=36307,T2=36308,P2=36311,ho=3553,po=34067,Ra=32879,go=35866,F={};function m0(t,e){return F[e].bindPoint}function R2(t,e){return function(n){t.uniform1f(e,n)}}function L2(t,e){return function(n){t.uniform1fv(e,n)}}function k2(t,e){return function(n){t.uniform2fv(e,n)}}function N2(t,e){return function(n){t.uniform3fv(e,n)}}function z2(t,e){return function(n){t.uniform4fv(e,n)}}function A0(t,e){return function(n){t.uniform1i(e,n)}}function x0(t,e){return function(n){t.uniform1iv(e,n)}}function y0(t,e){return function(n){t.uniform2iv(e,n)}}function b0(t,e){return function(n){t.uniform3iv(e,n)}}function w0(t,e){return function(n){t.uniform4iv(e,n)}}function O2(t,e){return function(n){t.uniform1ui(e,n)}}function G2(t,e){return function(n){t.uniform1uiv(e,n)}}function U2(t,e){return function(n){t.uniform2uiv(e,n)}}function H2(t,e){return function(n){t.uniform3uiv(e,n)}}function Q2(t,e){return function(n){t.uniform4uiv(e,n)}}function j2(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function V2(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function Y2(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function W2(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function X2(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function Z2(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function K2(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function q2(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function J2(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function de(t,e,n,r){const i=m0(t,e);return En(t)?function(o){let s,a;_i(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(co+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(co+n),t.bindTexture(i,o)}}function pe(t,e,n,r,i){const o=m0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return En(t)?function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(co+s[c]);let f,l;_i(t,u)?(f=u,l=null):(f=u.texture,l=u.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(co+s[c]),t.bindTexture(o,u)})}}F[fo]={Type:Float32Array,size:4,setter:R2,arraySetter:L2},F[e0]={Type:Float32Array,size:8,setter:k2,cols:2},F[t0]={Type:Float32Array,size:12,setter:N2,cols:3},F[n0]={Type:Float32Array,size:16,setter:z2,cols:4},F[Ta]={Type:Int32Array,size:4,setter:A0,arraySetter:x0},F[r0]={Type:Int32Array,size:8,setter:y0,cols:2},F[i0]={Type:Int32Array,size:12,setter:b0,cols:3},F[o0]={Type:Int32Array,size:16,setter:w0,cols:4},F[Pa]={Type:Uint32Array,size:4,setter:O2,arraySetter:G2},F[d0]={Type:Uint32Array,size:8,setter:U2,cols:2},F[p0]={Type:Uint32Array,size:12,setter:H2,cols:3},F[g0]={Type:Uint32Array,size:16,setter:Q2,cols:4},F[s0]={Type:Uint32Array,size:4,setter:A0,arraySetter:x0},F[a0]={Type:Uint32Array,size:8,setter:y0,cols:2},F[u0]={Type:Uint32Array,size:12,setter:b0,cols:3},F[c0]={Type:Uint32Array,size:16,setter:w0,cols:4},F[l0]={Type:Float32Array,size:32,setter:j2,rows:2,cols:2},F[f0]={Type:Float32Array,size:48,setter:V2,rows:3,cols:3},F[h0]={Type:Float32Array,size:64,setter:Y2,rows:4,cols:4},F[m2]={Type:Float32Array,size:32,setter:W2,rows:2,cols:3},F[A2]={Type:Float32Array,size:32,setter:Z2,rows:2,cols:4},F[x2]={Type:Float32Array,size:48,setter:X2,rows:3,cols:2},F[y2]={Type:Float32Array,size:48,setter:q2,rows:3,cols:4},F[b2]={Type:Float32Array,size:64,setter:K2,rows:4,cols:2},F[w2]={Type:Float32Array,size:64,setter:J2,rows:4,cols:3},F[h2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[d2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[p2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[g2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[v2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[C2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[E2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[S2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[D2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[B2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[F2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[M2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[I2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[T2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[P2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go};function mo(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(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||fo,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function St(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(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ta,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ao(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(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Pa,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function La(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(lo,o.buffer);const s=o.size||o.numComponents||r,a=s/i,u=o.type||fo,f=F[u].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,u,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const K={};K[fo]={size:4,setter:mo},K[e0]={size:8,setter:mo},K[t0]={size:12,setter:mo},K[n0]={size:16,setter:mo},K[Ta]={size:4,setter:St},K[r0]={size:8,setter:St},K[i0]={size:12,setter:St},K[o0]={size:16,setter:St},K[Pa]={size:4,setter:Ao},K[d0]={size:8,setter:Ao},K[p0]={size:12,setter:Ao},K[g0]={size:16,setter:Ao},K[s0]={size:4,setter:St},K[a0]={size:8,setter:St},K[u0]={size:12,setter:St},K[c0]={size:16,setter:St},K[l0]={size:4,setter:La,count:2},K[f0]={size:9,setter:La,count:3},K[h0]={size:16,setter:La,count:4};function v0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const _2=/(\.|\[|]|\w+)/g,$2=t=>t>="0"&&t<="9";function C0(t,e,n,r){const i=t.split(_2).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const u=$2(a[0]),c=u?parseInt(a):a;if(u&&(s+=i[o++]),o===i.length){n[c]=e;break}else{const l=i[o++],h=l==="[",p=n[c]||(h?[]:{});n[c]=p,n=p,r[s]=r[s]||function(d){return function(g){F0(d,g)}}(p),s+=l}}}function eb(t,e){let n=0;function r(a,u,c){const f=u.name.endsWith("[0]"),l=u.type,h=F[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=u.size,f?p=h.arraySetter(t,l,d,c,u.size):p=h.setter(t,l,d,c,u.size)}else h.arraySetter&&f?p=h.arraySetter(t,c):p=h.setter(t,c);return p.location=c,p}const i={},o={},s=t.getProgramParameter(e,$f);for(let a=0;a<s;++a){const u=t.getActiveUniform(e,a);if(v0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const f=t.getUniformLocation(e,u.name);if(f){const l=r(e,u,f);i[c]=l,C0(c,l,o,i)}}return i}function tb(t,e){const n={},r=t.getProgramParameter(e,s2);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 nb(t,e){const n=t.getProgramParameter(e,$f),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(f,l){r[l][c]=f})});const o={},s=t.getProgramParameter(e,a2);for(let a=0;a<s;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,u2),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,c2),size:t.getActiveUniformBlockParameter(e,a,l2),uniformIndices:t.getActiveUniformBlockParameter(e,a,f2)};c.used=c.usedByVertexShader||c.usedByFragmentShader,o[u]=c}return{blockSpecs:o,uniformData:r}}const E0=/\[\d+\]\.$/,rb=(t,e)=>((t+(e-1))/e|0)*e;function ib(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,u=0;for(let c=0;c<o;++c){for(let f=0;f<r;++f)t[a++]=s[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function ob(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return n2("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),u=t.createBuffer(),c=s.index;t.bindBuffer(Ia,u),t.uniformBlockBinding(e,s.index,c);let f=r+".";E0.test(f)&&(f=f.replace(E0,"."));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 A=m.endsWith("[0]");A&&(m=m.substr(0,m.length-3));const y=F[g.type],b=y.Type,C=A?rb(y.size,16)*g.size:y.size*g.size,B=new b(a,g.offset,C/b.BYTES_PER_ELEMENT);l[m]=B;const E=ib(B,A,y.rows,y.cols);h[m]=E,C0(m,E,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:l,setters:h}}function S0(t,e,n){return ob(t,e.program,e.uniformBlockSpec,n)}function sb(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Ia,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function D0(t,e,n){sb(t,e,n)&&t.bufferData(Ia,n.array,r2)}function B0(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function F0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):F0(t[n],e[n])}}function Ee(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)Ee(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function ab(t,e){const n={},r=t.getProgramParameter(e,o2);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(v0(o))continue;const s=t.getAttribLocation(e,o.name),a=K[o.type],u=a.setter(t,s,a);u.location=s,n[o.name]=u}return n}function ub(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Pn(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(ub(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(i2,n.indices))}function cb(t,e){const n=eb(t,e),r=ab(t,e),i={program:e,uniformSetters:n,attribSetters:r};return En(t)&&(i.uniformBlockSpec=nb(t,e),i.transformFeedbackInfo=tb(t,e)),i}const lb=4,M0=5123;function jr(t,e,n,r,i,o){n=n===void 0?lb:n;const s=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,u,a===void 0?M0:e.elementType,i,o):t.drawElements(n,u,a===void 0?M0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,u,o):t.drawArrays(n,i,u)}const fb=36160,_t=36161,hb=3553,db=5121,pb=6402,gb=6408,mb=33190,Ab=36012,xb=35056,yb=36013,bb=32854,wb=32855,vb=36194,I0=33189,T0=6401,P0=36168,ka=34041,Cb=36064,xo=36096,R0=36128,Na=33306,za=33071,Oa=9729,L0=[{format:gb,type:db,min:Oa,wrap:za},{format:ka}],He={};He[ka]=Na,He[T0]=R0,He[P0]=R0,He[pb]=xo,He[I0]=xo,He[mb]=xo,He[Ab]=xo,He[xb]=Na,He[yb]=Na;function Eb(t,e){return He[t]||He[e]}const Dt={};Dt[bb]=!0,Dt[wb]=!0,Dt[vb]=!0,Dt[ka]=!0,Dt[I0]=!0,Dt[T0]=!0,Dt[P0]=!0;function Sb(t){return Dt[t]}function Db(t,e,n,r){const i=fb,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||L0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const f=u.samples,l=u.format;let h=u.attachmentPoint||Eb(l,u.internalFormat);if(h||(h=Cb+s++),!c)if(f!==void 0||Sb(l))c=t.createRenderbuffer(),t.bindRenderbuffer(_t,c),f>1?t.renderbufferStorageMultisample(_t,f,l,n,r):t.renderbufferStorage(_t,l,n,r);else{const p=Object.assign({},u);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||Oa,p.mag=p.mag||p.minMag||Oa,p.wrapS=p.wrapS||p.wrap||za,p.wrapT=p.wrapT||p.wrap||za),c=Qr(t,p)}if(Sf(t,c))t.framebufferRenderbuffer(i,h,_t,c);else if(_i(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,h,c,u.level||0,u.layer):t.framebufferTexture2D(i,h,u.target||hb,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function Bb(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||L0,n.forEach(function(o,s){const a=e.attachments[s],u=o.format,c=o.samples;if(c!==void 0||Sf(t,a))t.bindRenderbuffer(_t,a),c>1?t.renderbufferStorageMultisample(_t,c,u,r,i):t.renderbufferStorage(_t,u,r,i);else if(_i(t,a))t2(t,a,o,r,i);else throw new Error("unknown attachment type")})}function Fb(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Pn(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const Mb=/^(.*?)_/;function Ib(t,e){ya(t,0);const n=t.getExtension(e);if(n){const r={},i=Mb.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],u=typeof a=="function",c=u?i:o;let f=s;s.endsWith(c)&&(f=s.substring(0,s.length-c.length)),t[f]!==void 0?!u&&t[f]!==a&&Ef(f,t[f],a,s):u?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},ya(r,0)}return n}const k0=["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 N0(t){for(let e=0;e<k0.length;++e)Ib(t,k0[e])}function Tb(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){N0(r);break}return r}function Pb(t,e){return Tb(t,e)}const Rb=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out float vHalfStrokeWidth;out vec4 vCornerRadii;
18
+ see: http://github.com/greggman/twgl.js for details */const la=5120,zr=5121,fa=5122,ha=5123,da=5124,pa=5125,ga=5126,W1=32819,X1=32820,Z1=33635,K1=5131,q1=33640,J1=35899,_1=35902,$1=36269,ex=34042,Cf={};{const t=Cf;t[la]=Int8Array,t[zr]=Uint8Array,t[fa]=Int16Array,t[ha]=Uint16Array,t[da]=Int32Array,t[pa]=Uint32Array,t[ga]=Float32Array,t[W1]=Uint16Array,t[X1]=Uint16Array,t[Z1]=Uint16Array,t[K1]=Uint16Array,t[q1]=Uint32Array,t[J1]=Uint32Array,t[_1]=Uint32Array,t[$1]=Uint32Array,t[ex]=Uint32Array}function ma(t){if(t instanceof Int8Array)return la;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return zr;if(t instanceof Int16Array)return fa;if(t instanceof Uint16Array)return ha;if(t instanceof Int32Array)return da;if(t instanceof Uint32Array)return pa;if(t instanceof Float32Array)return ga;throw new Error("unsupported typed array type")}function tx(t){if(t===Int8Array)return la;if(t===Uint8Array||t===Uint8ClampedArray)return zr;if(t===Int16Array)return fa;if(t===Uint16Array)return ha;if(t===Int32Array)return da;if(t===Uint32Array)return pa;if(t===Float32Array)return ga;throw new Error("unsupported typed array type")}function nx(t){const e=Cf[t];if(!e)throw new Error("unknown gl type");return e}const Ji=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function rx(...t){console.error(...t)}function Ef(...t){console.warn(...t)}function ix(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function Sf(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function _i(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function ox(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Df=35044,Je=34962,sx=34963,ax=34660,ux=5120,cx=5121,lx=5122,fx=5123,hx=5124,dx=5125,px=5126,Bf={attribPrefix:""};function Ff(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Df)}function Mf(t,e,n,r){if(ix(t,e))return e;n=n||Je;const i=t.createBuffer();return Ff(t,n,i,e,r),i}function If(t){return t==="indices"}function gx(t){return t instanceof Int8Array||t instanceof Uint8Array}function mx(t){return t===Int8Array||t===Uint8Array}function Ax(t){return t.length?t:t.data}const xx=/coord|texture/i,yx=/color|colour/i;function Tf(t,e){let n;if(xx.test(t)?n=2:yx.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 bx(t,e){return t.numComponents||t.size||Tf(e,Ax(t).length)}function Aa(t,e){if(Ji(t))return t;if(Ji(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(If(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function wx(t,e){const n={};return Object.keys(e).forEach(function(r){if(!If(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Bf.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ji(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,h=f*l.BYTES_PER_ELEMENT;a=tx(l),u=i.normalize!==void 0?i.normalize:mx(l),c=i.numComponents||i.size||Tf(r,f),s=t.createBuffer(),t.bindBuffer(Je,s),t.bufferData(Je,h,i.drawType||Df)}else{const f=Aa(i,r);s=Mf(t,f,void 0,i.drawType),a=ma(f),u=i.normalize!==void 0?i.normalize:gx(f),c=bx(i,r)}n[o]={buffer:s,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(Je,null),n}function vx(t,e,n,r){n=Aa(n),r!==void 0?(t.bindBuffer(Je,e.buffer),t.bufferSubData(Je,r,n)):Ff(t,Je,e.buffer,n,e.drawType)}function Cx(t,e){return e===ux||e===cx?1:e===lx||e===fx?2:e===hx||e===dx||e===px?4:0}const xa=["position","positions","a_position"];function Ex(t,e){let n,r;for(r=0;r<xa.length&&(n=xa[r],!(n in e||(n=Bf.attribPrefix+n,n in e)));++r);r===xa.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(Je,i.buffer);const o=t.getBufferParameter(Je,ax);t.bindBuffer(Je,null);const s=Cx(t,i.type),a=o/s,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function Sx(t,e,n){const r=wx(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=Aa(o,"indices");i.indices=Mf(t,s,sx),i.numElements=s.length,i.elementType=ma(s)}else i.numElements||(i.numElements=Ex(t,i.attribs));return i}function En(t){return!!t.texStorage2D}const ya=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),wt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Sn=Ji,Pf=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Rf=6406,_e=6407,j=6408,Lf=6409,kf=6410,Or=6402,Nf=34041,$i=33071,Dx=9728,Bx=9729,ot=3553,st=34067,vt=32879,Ct=35866,eo=34069,Fx=34070,Mx=34071,Ix=34072,Tx=34073,Px=34074,ba=10241,wa=10240,to=10242,no=10243,zf=32882,Rx=33082,Lx=33083,kx=33084,Nx=33085,va=3317,Of=3314,Gf=32878,Uf=3316,Hf=3315,Qf=32877,zx=37443,Ox=37441,Gx=37440,Ux=33321,Hx=36756,Qx=33325,jx=33326,Vx=33330,Yx=33329,Wx=33338,Xx=33337,Zx=33340,Kx=33339,qx=33323,Jx=36757,_x=33327,$x=33328,ey=33336,ty=33335,ny=33332,ry=33331,iy=33334,oy=33333,sy=32849,ay=35905,uy=36194,cy=36758,ly=35898,fy=35901,hy=34843,dy=34837,py=36221,gy=36239,my=36215,Ay=36233,xy=36209,yy=36227,by=32856,wy=35907,vy=36759,Cy=32855,Ey=32854,Sy=32857,Dy=34842,By=34836,Fy=36220,My=36238,Iy=36975,Ty=36214,Py=36232,Ry=36226,Ly=36208,ky=33189,Ny=33190,zy=36012,Oy=36013,Gy=35056,Et=5120,V=5121,ro=5122,Dn=5123,io=5124,qt=5125,fe=5126,jf=32819,Vf=32820,Yf=33635,Ue=5131,Gr=36193,Ca=33640,Uy=35899,Hy=35902,Qy=36269,jy=34042,oo=33319,Bn=33320,so=6403,Fn=36244,Mn=36248,Jt=36249;let Ea;function ao(t){if(!Ea){const e={};e[Rf]={textureFormat:Rf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[V,Ue,Gr,fe]},e[Lf]={textureFormat:Lf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[V,Ue,Gr,fe]},e[kf]={textureFormat:kf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[V,Ue,Gr,fe]},e[_e]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[V,Ue,Gr,fe,Yf]},e[j]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[V,Ue,Gr,fe,jf,Vf]},e[Or]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[qt,Dn]},e[Ux]={textureFormat:so,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[V]},e[Hx]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Et]},e[Qx]={textureFormat:so,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[fe,Ue]},e[jx]={textureFormat:so,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Vx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[V]},e[Yx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Et]},e[ny]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Dn]},e[ry]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ro]},e[iy]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qt]},e[oy]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[io]},e[qx]={textureFormat:oo,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[V]},e[Jx]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Et]},e[_x]={textureFormat:oo,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[fe,Ue]},e[$x]={textureFormat:oo,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[fe]},e[ey]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[V]},e[ty]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Et]},e[Wx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Dn]},e[Xx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ro]},e[Zx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[qt]},e[Kx]={textureFormat:Bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[io]},e[sy]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[V]},e[ay]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[V]},e[uy]={textureFormat:_e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[V,Yf]},e[cy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Et]},e[ly]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,Ue,Uy]},e[fy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,Ue,Hy]},e[hy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[fe,Ue]},e[dy]={textureFormat:_e,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[fe]},e[py]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[V]},e[gy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Et]},e[my]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Dn]},e[Ay]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ro]},e[xy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[qt]},e[yy]={textureFormat:Mn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[io]},e[by]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[V]},e[wy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[V]},e[vy]={textureFormat:j,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Et]},e[Cy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[V,Vf,Ca]},e[Ey]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[V,jf]},e[Sy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Ca]},e[Dy]={textureFormat:j,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[fe,Ue]},e[By]={textureFormat:j,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[fe]},e[Fy]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[V]},e[My]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Et]},e[Iy]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ca]},e[Ty]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Dn]},e[Py]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ro]},e[Ry]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[io]},e[Ly]={textureFormat:Jt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[qt]},e[ky]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Dn,qt]},e[Ny]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qt]},e[zy]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Gy]={textureFormat:Nf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[jy]},e[Oy]={textureFormat:Nf,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Qy]},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})}),Ea=e}return Ea[t]}function Vy(t,e){const n=ao(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function In(t){const e=ao(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Wf(t){return(t&t-1)===0}function Yy(t,e,n,r){if(!En(t))return Wf(e)&&Wf(n);const i=ao(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Wy(t){const e=ao(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Xf(t,e,n){return Sn(e)?ma(e):n||V}function uo(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===st?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 Tn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(zx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Ox,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(Gx,e.flipY)}function Zf(t){t.pixelStorei(va,4),En(t)&&(t.pixelStorei(Of,0),t.pixelStorei(Gf,0),t.pixelStorei(Uf,0),t.pixelStorei(Hf,0),t.pixelStorei(Qf,0))}function Xy(t,e,n,r){r.minMag&&(n.call(t,e,ba,r.minMag),n.call(t,e,wa,r.minMag)),r.min&&n.call(t,e,ba,r.min),r.mag&&n.call(t,e,wa,r.mag),r.wrap&&(n.call(t,e,to,r.wrap),n.call(t,e,no,r.wrap),(e===vt||ox(t,e))&&n.call(t,e,zf,r.wrap)),r.wrapR&&n.call(t,e,zf,r.wrapR),r.wrapS&&n.call(t,e,to,r.wrapS),r.wrapT&&n.call(t,e,no,r.wrapT),r.minLod&&n.call(t,e,Rx,r.minLod),r.maxLod&&n.call(t,e,Lx,r.maxLod),r.baseLevel&&n.call(t,e,kx,r.baseLevel),r.maxLevel&&n.call(t,e,Nx,r.maxLevel)}function Kf(t,e,n){const r=n.target||ot;t.bindTexture(r,e),Xy(t,r,t.texParameteri,n)}function Zy(t){return t=t||wt.textureColor,Sn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Sa(t,e,n,r,i,o){n=n||wt.textureOptions,o=o||j;const s=n.target||ot;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),Yy(t,r,i,o))t.generateMipmap(s);else{const a=Wy(o)?Bx:Dx;t.texParameteri(s,ba,a),t.texParameteri(s,wa,a),t.texParameteri(s,to,$i),t.texParameteri(s,no,$i)}}function Ur(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Da(t,e){return e=e||{},e.cubeFaceOrder||[eo,Fx,Mx,Ix,Tx,Px]}function Ba(t,e){const r=Da(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function qf(t,e,n,r){r=r||wt.textureOptions;const i=r.target||ot,o=r.level||0;let s=n.width,a=n.height;const u=r.internalFormat||r.format||j,c=In(u),f=r.format||c.format,l=r.type||c.type;if(Tn(t,r),t.bindTexture(i,e),i===st){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=Pf();m?(m.canvas.width=d,m.canvas.height=d,s=d,a=d,Ba(t,r).forEach(function(A){const y=g[A.ndx*2+0]*d,b=g[A.ndx*2+1]*d;m.drawImage(n,y,b,d,d,0,0,d,d),t.texImage2D(A.face,o,u,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap<"u"&&(s=d,a=d,Ba(t,r).forEach(function(A){const y=g[A.ndx*2+0]*d,b=g[A.ndx*2+1]*d;t.texImage2D(A.face,o,u,d,d,0,f,l,null),createImageBitmap(n,y,b,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Tn(t,r),t.bindTexture(i,e),t.texImage2D(A.face,o,u,f,l,C),Ur(r)&&Sa(t,e,r,s,a,u)})}))}else if(i===vt||i===Ct){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(va,1),t.pixelStorei(Of,n.width),t.pixelStorei(Gf,0),t.pixelStorei(Qf,0),t.texImage3D(i,o,u,h,h,h,0,f,l,null);for(let A=0;A<d;++A){const y=A*h*g,b=A*h*m;t.pixelStorei(Uf,y),t.pixelStorei(Hf,b),t.texSubImage3D(i,o,0,0,A,h,h,1,f,l,n)}Zf(t)}else t.texImage2D(i,o,u,f,l,n);Ur(r)&&Sa(t,e,r,s,a,u),Kf(t,e,r)}function Hr(){}function Ky(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function qy(t,e){return e===void 0&&!Ky(t)?"anonymous":e}function Jy(t,e,n){n=n||Hr;let r;if(e=e!==void 0?e:wt.crossOrigin,e=qy(t,e),typeof Image<"u"){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 u="couldn't load image: "+t;rx(u),n(u,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<"u"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){o=u,setTimeout(s)}).catch(function(u){i=u,setTimeout(s)}),r=null}return r}function Jf(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function Fa(t,e,n){return Jf(t)?(setTimeout(function(){n(null,t)}),t):Jy(t,e,n)}function Ma(t,e,n){n=n||wt.textureOptions;const r=n.target||ot;if(t.bindTexture(r,e),n.color===!1)return;const i=Zy(n.color);if(r===st)for(let o=0;o<6;++o)t.texImage2D(eo+o,0,j,1,1,0,j,V,i);else r===vt||r===Ct?t.texImage3D(r,0,j,1,1,1,0,j,V,i):t.texImage2D(r,0,j,1,1,0,j,V,i)}function _y(t,e,n,r){return r=r||Hr,n=n||wt.textureOptions,Ma(t,e,n),n=Object.assign({},n),Fa(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(qf(t,e,s,n),r(null,e,s))})}function $y(t,e,n,r){r=r||Hr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||j,a=In(s),u=n.format||a.format,c=n.type||V,f=n.target||ot;if(f!==st)throw"target must be TEXTURE_CUBE_MAP";Ma(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Da(t,n);let d;function g(m){return function(A,y){--l,A?h.push(A):y.width!==y.height?h.push("cubemap face img is not a square: "+y.src):(Tn(t,n),t.bindTexture(f,e),l===5?Da().forEach(function(b){t.texImage2D(b,o,s,u,c,y)}):t.texImage2D(m,o,s,u,c,y),Ur(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(m,A){return Fa(m,n.crossOrigin,g(p[A]))})}function e2(t,e,n,r){r=r||Hr;const i=n.src,o=n.internalFormat||n.format||j,s=In(o),a=n.format||s.format,u=n.type||V,c=n.target||Ct;if(c!==vt&&c!==Ct)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Ma(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 A=!0;function y(b){return function(C,B){if(--f,C)l.push(C);else{if(Tn(t,n),t.bindTexture(c,e),A){A=!1,d=n.width||B.width,g=n.height||B.height,t.texImage3D(c,p,o,d,g,m,0,a,u,null);for(let E=0;E<m;++E)t.texSubImage3D(c,p,0,0,E,d,g,1,a,u,B)}else{let E=B,w;(B.width!==d||B.height!==g)&&(w=Pf(),E=w.canvas,w.canvas.width=d,w.canvas.height=g,w.drawImage(B,0,0,d,g)),t.texSubImage3D(c,p,0,0,b,d,g,1,a,u,E),w&&E===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}Ur(n)&&t.generateMipmap(c)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(b,C){return Fa(b,n.crossOrigin,y(C))})}function _f(t,e,n,r){r=r||wt.textureOptions;const i=r.target||ot;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||j,f=In(c),l=r.format||f.format,h=r.type||Xf(t,n,f.type);if(Sn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=nx(h);n=new m(n)}const p=Vy(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+ya(t,l);let g;if(i===vt||i===Ct)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=uo(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=uo(t,i,o,a,d/s),o=g.width,a=g.height):(g=uo(t,i,o,s,d/a),o=g.width,s=g.height);else g=uo(t,i,o,s,d),o=g.width,s=g.height;if(Zf(t),t.pixelStorei(va,r.unpackAlignment||1),Tn(t,r),i===st){const m=p/n.BYTES_PER_ELEMENT,A=d/6*m;Ba(t,r).forEach(y=>{const b=A*y.ndx,C=n.subarray(b,b+A);t.texImage2D(y.face,u,c,o,s,0,l,h,C)})}else i===vt||i===Ct?t.texImage3D(i,u,c,o,s,a,0,l,h,n):t.texImage2D(i,u,c,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function t2(t,e,n){const r=n.target||ot;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||j,s=In(o),a=n.format||s.format,u=n.type||s.type;if(Tn(t,n),r===st)for(let c=0;c<6;++c)t.texImage2D(eo+c,i,o,n.width,n.height,0,a,u,null);else r===vt||r===Ct?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,o,n.width,n.height,0,a,u,null)}function Qr(t,e,n){n=n||Hr,e=e||wt.textureOptions;const r=t.createTexture(),i=e.target||ot;let o=e.width||1,s=e.height||1;const a=e.internalFormat||j;t.bindTexture(i,r),i===st&&(t.texParameteri(i,to,$i),t.texParameteri(i,no,$i));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")_y(t,r,e,n);else if(Sn(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||Sn(u[0]))){const c=_f(t,r,u,e);o=c.width,s=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||Jf(u[0]))?i===st?$y(t,r,e,n):e2(t,r,e,n):(qf(t,r,u,e),o=u.width,s=u.height);else t2(t,r,e);return Ur(e)&&Sa(t,r,e,o,s,a),Kf(t,r,e),r}function n2(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||ot;t.bindTexture(s,e);const a=n.level||0,u=n.internalFormat||n.format||j,c=In(u),f=n.format||c.format;let l;const h=n.src;if(h&&(Sn(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Xf(t,h,c.type):l=n.type||c.type,s===st)for(let p=0;p<6;++p)t.texImage2D(eo+p,a,u,r,i,0,f,l,null);else s===vt||s===Ct?t.texImage3D(s,a,u,r,i,o,0,f,l,null):t.texImage2D(s,a,u,r,i,0,f,l,null)}const r2=Ef,co=33984,i2=35048,lo=34962,o2=34963,Ia=35345,$f=35718,s2=35721,a2=35971,u2=35382,c2=35396,l2=35398,f2=35392,h2=35395,fo=5126,e0=35664,t0=35665,n0=35666,Ta=5124,r0=35667,i0=35668,o0=35669,s0=35670,a0=35671,u0=35672,c0=35673,l0=35674,f0=35675,h0=35676,d2=35678,p2=35680,g2=35679,m2=35682,A2=35685,x2=35686,y2=35687,b2=35688,w2=35689,v2=35690,C2=36289,E2=36292,S2=36293,Pa=5125,d0=36294,p0=36295,g0=36296,D2=36298,B2=36299,F2=36300,M2=36303,I2=36306,T2=36307,P2=36308,R2=36311,ho=3553,po=34067,Ra=32879,go=35866,F={};function m0(t,e){return F[e].bindPoint}function L2(t,e){return function(n){t.uniform1f(e,n)}}function k2(t,e){return function(n){t.uniform1fv(e,n)}}function N2(t,e){return function(n){t.uniform2fv(e,n)}}function z2(t,e){return function(n){t.uniform3fv(e,n)}}function O2(t,e){return function(n){t.uniform4fv(e,n)}}function A0(t,e){return function(n){t.uniform1i(e,n)}}function x0(t,e){return function(n){t.uniform1iv(e,n)}}function y0(t,e){return function(n){t.uniform2iv(e,n)}}function b0(t,e){return function(n){t.uniform3iv(e,n)}}function w0(t,e){return function(n){t.uniform4iv(e,n)}}function G2(t,e){return function(n){t.uniform1ui(e,n)}}function U2(t,e){return function(n){t.uniform1uiv(e,n)}}function H2(t,e){return function(n){t.uniform2uiv(e,n)}}function Q2(t,e){return function(n){t.uniform3uiv(e,n)}}function j2(t,e){return function(n){t.uniform4uiv(e,n)}}function V2(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function Y2(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function W2(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function X2(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function Z2(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function K2(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function q2(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function J2(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function _2(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function de(t,e,n,r){const i=m0(t,e);return En(t)?function(o){let s,a;_i(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(co+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(co+n),t.bindTexture(i,o)}}function pe(t,e,n,r,i){const o=m0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return En(t)?function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(co+s[c]);let f,l;_i(t,u)?(f=u,l=null):(f=u.texture,l=u.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(co+s[c]),t.bindTexture(o,u)})}}F[fo]={Type:Float32Array,size:4,setter:L2,arraySetter:k2},F[e0]={Type:Float32Array,size:8,setter:N2,cols:2},F[t0]={Type:Float32Array,size:12,setter:z2,cols:3},F[n0]={Type:Float32Array,size:16,setter:O2,cols:4},F[Ta]={Type:Int32Array,size:4,setter:A0,arraySetter:x0},F[r0]={Type:Int32Array,size:8,setter:y0,cols:2},F[i0]={Type:Int32Array,size:12,setter:b0,cols:3},F[o0]={Type:Int32Array,size:16,setter:w0,cols:4},F[Pa]={Type:Uint32Array,size:4,setter:G2,arraySetter:U2},F[d0]={Type:Uint32Array,size:8,setter:H2,cols:2},F[p0]={Type:Uint32Array,size:12,setter:Q2,cols:3},F[g0]={Type:Uint32Array,size:16,setter:j2,cols:4},F[s0]={Type:Uint32Array,size:4,setter:A0,arraySetter:x0},F[a0]={Type:Uint32Array,size:8,setter:y0,cols:2},F[u0]={Type:Uint32Array,size:12,setter:b0,cols:3},F[c0]={Type:Uint32Array,size:16,setter:w0,cols:4},F[l0]={Type:Float32Array,size:32,setter:V2,rows:2,cols:2},F[f0]={Type:Float32Array,size:48,setter:Y2,rows:3,cols:3},F[h0]={Type:Float32Array,size:64,setter:W2,rows:4,cols:4},F[A2]={Type:Float32Array,size:32,setter:X2,rows:2,cols:3},F[x2]={Type:Float32Array,size:32,setter:K2,rows:2,cols:4},F[y2]={Type:Float32Array,size:48,setter:Z2,rows:3,cols:2},F[b2]={Type:Float32Array,size:48,setter:J2,rows:3,cols:4},F[w2]={Type:Float32Array,size:64,setter:q2,rows:4,cols:2},F[v2]={Type:Float32Array,size:64,setter:_2,rows:4,cols:3},F[d2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[p2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[g2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[m2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[C2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[E2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[S2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[D2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[B2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[F2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[M2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go},F[I2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:ho},F[T2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ra},F[P2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:po},F[R2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:go};function mo(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(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||fo,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function St(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(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ta,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ao(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(lo,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Pa,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function La(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(lo,o.buffer);const s=o.size||o.numComponents||r,a=s/i,u=o.type||fo,f=F[u].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,u,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const K={};K[fo]={size:4,setter:mo},K[e0]={size:8,setter:mo},K[t0]={size:12,setter:mo},K[n0]={size:16,setter:mo},K[Ta]={size:4,setter:St},K[r0]={size:8,setter:St},K[i0]={size:12,setter:St},K[o0]={size:16,setter:St},K[Pa]={size:4,setter:Ao},K[d0]={size:8,setter:Ao},K[p0]={size:12,setter:Ao},K[g0]={size:16,setter:Ao},K[s0]={size:4,setter:St},K[a0]={size:8,setter:St},K[u0]={size:12,setter:St},K[c0]={size:16,setter:St},K[l0]={size:4,setter:La,count:2},K[f0]={size:9,setter:La,count:3},K[h0]={size:16,setter:La,count:4};function v0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const $2=/(\.|\[|]|\w+)/g,eb=t=>t>="0"&&t<="9";function C0(t,e,n,r){const i=t.split($2).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const u=eb(a[0]),c=u?parseInt(a):a;if(u&&(s+=i[o++]),o===i.length){n[c]=e;break}else{const l=i[o++],h=l==="[",p=n[c]||(h?[]:{});n[c]=p,n=p,r[s]=r[s]||function(d){return function(g){F0(d,g)}}(p),s+=l}}}function tb(t,e){let n=0;function r(a,u,c){const f=u.name.endsWith("[0]"),l=u.type,h=F[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=u.size,f?p=h.arraySetter(t,l,d,c,u.size):p=h.setter(t,l,d,c,u.size)}else h.arraySetter&&f?p=h.arraySetter(t,c):p=h.setter(t,c);return p.location=c,p}const i={},o={},s=t.getProgramParameter(e,$f);for(let a=0;a<s;++a){const u=t.getActiveUniform(e,a);if(v0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const f=t.getUniformLocation(e,u.name);if(f){const l=r(e,u,f);i[c]=l,C0(c,l,o,i)}}return i}function nb(t,e){const n={},r=t.getProgramParameter(e,a2);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 rb(t,e){const n=t.getProgramParameter(e,$f),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(f,l){r[l][c]=f})});const o={},s=t.getProgramParameter(e,u2);for(let a=0;a<s;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,c2),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,l2),size:t.getActiveUniformBlockParameter(e,a,f2),uniformIndices:t.getActiveUniformBlockParameter(e,a,h2)};c.used=c.usedByVertexShader||c.usedByFragmentShader,o[u]=c}return{blockSpecs:o,uniformData:r}}const E0=/\[\d+\]\.$/,ib=(t,e)=>((t+(e-1))/e|0)*e;function ob(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,u=0;for(let c=0;c<o;++c){for(let f=0;f<r;++f)t[a++]=s[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function sb(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return r2("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),u=t.createBuffer(),c=s.index;t.bindBuffer(Ia,u),t.uniformBlockBinding(e,s.index,c);let f=r+".";E0.test(f)&&(f=f.replace(E0,"."));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 A=m.endsWith("[0]");A&&(m=m.substr(0,m.length-3));const y=F[g.type],b=y.Type,C=A?ib(y.size,16)*g.size:y.size*g.size,B=new b(a,g.offset,C/b.BYTES_PER_ELEMENT);l[m]=B;const E=ob(B,A,y.rows,y.cols);h[m]=E,C0(m,E,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:l,setters:h}}function S0(t,e,n){return sb(t,e.program,e.uniformBlockSpec,n)}function ab(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Ia,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function D0(t,e,n){ab(t,e,n)&&t.bufferData(Ia,n.array,i2)}function B0(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function F0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):F0(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 ub(t,e){const n={},r=t.getProgramParameter(e,s2);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(v0(o))continue;const s=t.getAttribLocation(e,o.name),a=K[o.type],u=a.setter(t,s,a);u.location=s,n[o.name]=u}return n}function cb(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Pn(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(cb(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(o2,n.indices))}function lb(t,e){const n=tb(t,e),r=ub(t,e),i={program:e,uniformSetters:n,attribSetters:r};return En(t)&&(i.uniformBlockSpec=rb(t,e),i.transformFeedbackInfo=nb(t,e)),i}const fb=4,M0=5123;function jr(t,e,n,r,i,o){n=n===void 0?fb:n;const s=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,u,a===void 0?M0:e.elementType,i,o):t.drawElements(n,u,a===void 0?M0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,u,o):t.drawArrays(n,i,u)}const hb=36160,_t=36161,db=3553,pb=5121,gb=6402,mb=6408,Ab=33190,xb=36012,yb=35056,bb=36013,wb=32854,vb=32855,Cb=36194,I0=33189,T0=6401,P0=36168,ka=34041,Eb=36064,xo=36096,R0=36128,Na=33306,za=33071,Oa=9729,L0=[{format:mb,type:pb,min:Oa,wrap:za},{format:ka}],He={};He[ka]=Na,He[T0]=R0,He[P0]=R0,He[gb]=xo,He[I0]=xo,He[Ab]=xo,He[xb]=xo,He[yb]=Na,He[bb]=Na;function Sb(t,e){return He[t]||He[e]}const Dt={};Dt[wb]=!0,Dt[vb]=!0,Dt[Cb]=!0,Dt[ka]=!0,Dt[I0]=!0,Dt[T0]=!0,Dt[P0]=!0;function Db(t){return Dt[t]}function Bb(t,e,n,r){const i=hb,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||L0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const f=u.samples,l=u.format;let h=u.attachmentPoint||Sb(l,u.internalFormat);if(h||(h=Eb+s++),!c)if(f!==void 0||Db(l))c=t.createRenderbuffer(),t.bindRenderbuffer(_t,c),f>1?t.renderbufferStorageMultisample(_t,f,l,n,r):t.renderbufferStorage(_t,l,n,r);else{const p=Object.assign({},u);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||Oa,p.mag=p.mag||p.minMag||Oa,p.wrapS=p.wrapS||p.wrap||za,p.wrapT=p.wrapT||p.wrap||za),c=Qr(t,p)}if(Sf(t,c))t.framebufferRenderbuffer(i,h,_t,c);else if(_i(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,h,c,u.level||0,u.layer):t.framebufferTexture2D(i,h,u.target||db,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function Fb(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||L0,n.forEach(function(o,s){const a=e.attachments[s],u=o.format,c=o.samples;if(c!==void 0||Sf(t,a))t.bindRenderbuffer(_t,a),c>1?t.renderbufferStorageMultisample(_t,c,u,r,i):t.renderbufferStorage(_t,u,r,i);else if(_i(t,a))n2(t,a,o,r,i);else throw new Error("unknown attachment type")})}function Mb(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Pn(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const Ib=/^(.*?)_/;function Tb(t,e){ya(t,0);const n=t.getExtension(e);if(n){const r={},i=Ib.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],u=typeof a=="function",c=u?i:o;let f=s;s.endsWith(c)&&(f=s.substring(0,s.length-c.length)),t[f]!==void 0?!u&&t[f]!==a&&Ef(f,t[f],a,s):u?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},ya(r,0)}return n}const k0=["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 N0(t){for(let e=0;e<k0.length;++e)Tb(t,k0[e])}function Pb(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){N0(r);break}return r}function Rb(t,e){return Pb(t,e)}const Lb=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out float vHalfStrokeWidth;out vec4 vCornerRadii;
19
19
  #if defined(ROUNDED_CORNERS) || defined(STROKED)
20
20
  out vec2 vPosInPixels;
21
21
  #endif
@@ -23,7 +23,7 @@ out vec2 vHalfSizeInPixels;/***Clamps the minimumSize and returns an opacity tha
23
23
  #if defined(ROUNDED_CORNERS) || defined(STROKED)
24
24
  float aaPadding=1.0/uDevicePixelRatio;float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(uCornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
25
25
  #endif
26
- gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,Lb=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
26
+ gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,kb=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
27
27
  in vec2 vPosInPixels;
28
28
  #endif
29
29
  in vec2 vHalfSizeInPixels;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in float vHalfStrokeWidth;in vec4 vCornerRadii;out lowp vec4 fragColor;float sdRoundedBox(vec2 p,vec2 b,vec4 r){r.xy=p.x>0.0 ? r.xy : r.zw;r.x=p.y>0.0 ? r.x : r.y;vec2 q=abs(p)-b+r.x;return min(max(q.x,q.y),0.0)+length(max(q,0.0))-r.x;}float sdSharpBox(vec2 p,vec2 b){vec2 q=abs(p)-b;return max(q.x,q.y);}void main(void){
@@ -37,12 +37,12 @@ fragColor=distanceToColor(d,vFillColor,vStrokeColor,vHalfStrokeWidth);if(fragCol
37
37
  #else
38
38
  fragColor=vFillColor;
39
39
  #endif
40
- if(uPickingEnabled){fragColor=vPickingColor;}}`,Ga="attr_",z0="uDomain_",kb="range_",O0="scale_",G0="getScaled_",Ua="uRangeTexture_",U0=3402823466e29;function Nb(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 zb(t,e){let n;if(qi(t))n=$t(vf(t)(e));else if(W(e))if(Kt(t))n=Gb(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ai(e))n=$t(e?1:0);else if(e===null)if(Kt(t))n=$t([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=$t(e);return`
40
+ if(uPickingEnabled){fragColor=vPickingColor;}}`,Ga="attr_",z0="uDomain_",Nb="range_",O0="scale_",G0="getScaled_",Ua="uRangeTexture_",U0=3402823466e29;function zb(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 Ob(t,e){let n;if(qi(t))n=$t(vf(t)(e));else if(W(e))if(Kt(t))n=Ub(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ai(e))n=$t(e?1:0);else if(e===null)if(Kt(t))n=$t([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=$t(e);return`
41
41
  #define ${t}_DEFINED
42
42
  ${n.type} ${G0}${t}() {
43
43
  // Constant value
44
44
  return ${n};
45
- }`}function Ob(t,e,n){if(Ge(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Cn(t),i=Ga+t,o=z0+r,s=kb+r,a=yo(e.type),u=a?"vec2":"float",c=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}=Nb(e.type),p=(w,...X)=>Ub.apply(null,[w,"value",...X]);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(),n.band??.5);break;case"point":case"band":d=p("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),n.band??.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=Qi(e.type)||Te(e.type)&&Kt(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(me)){const w=H0(g);l.push(`const ${w.type} ${s} = ${w};`)}const m=Kt(t)?"vec3":"float";let A;if(Kt(t)){const w=Ua+r;if(t==r&&l.push(`uniform sampler2D ${w};`),Te(e.type))A=`getInterpolatedColor(${w}, transformed)`;else if(Yt(e.type)||wn(e.type))A=`getDiscreteColor(${w}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||wn(e.type)){const w=Ua+r;t==r&&l.push(`uniform sampler2D ${w};`),A=`getDiscreteColor(${w}, int(transformed)).r`}Rr(n)?l.push(`uniform highp ${u} ${i};`):l.push(`in highp ${u} ${i};`);const y=[],b=Te(e.type)&&c>2,C=wn(e.type)||b;if(y.push("int slot = 0;"),C){const w=o;y.push(b?`while (slot < ${w}.length() - 2 && value >= ${w}[slot + 1]) { slot++; }`:`while (slot < ${w}.length() && value >= ${w}[slot]) { slot++; }`)}const B=Te(e.type)||wn(e.type)||["band","point"].includes(e.type);if(d){const w=o;B&&(a?y.push(`vec3 domain = ${w};`):y.push(`vec2 domain = vec2(${w}[slot], ${w}[slot + 1]);`)),y.push(`float transformed = ${d};`),b&&y.push(`transformed = (float(slot) + transformed) / (float(${w}.length()) - 1.0);`)}else y.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&y.push(`transformed = clampToRange(transformed, ${H0(g)});`),y.push(`return ${A??"transformed"};`),l.push(`
45
+ }`}function Gb(t,e,n){if(Ge(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Cn(t),i=Ga+t,o=z0+r,s=Nb+r,a=yo(e.type),u=a?"vec2":"float",c=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}=zb(e.type),p=(w,...X)=>Hb.apply(null,[w,"value",...X]);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(),n.band??.5);break;case"point":case"band":d=p("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),n.band??.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=Qi(e.type)||Ee(e.type)&&Kt(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(me)){const w=H0(g);l.push(`const ${w.type} ${s} = ${w};`)}const m=Kt(t)?"vec3":"float";let A;if(Kt(t)){const w=Ua+r;if(t==r&&l.push(`uniform sampler2D ${w};`),Ee(e.type))A=`getInterpolatedColor(${w}, transformed)`;else if(Yt(e.type)||wn(e.type))A=`getDiscreteColor(${w}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||wn(e.type)){const w=Ua+r;t==r&&l.push(`uniform sampler2D ${w};`),A=`getDiscreteColor(${w}, int(transformed)).r`}Rr(n)?l.push(`uniform highp ${u} ${i};`):l.push(`in highp ${u} ${i};`);const y=[],b=Ee(e.type)&&c>2,C=wn(e.type)||b;if(y.push("int slot = 0;"),C){const w=o;y.push(b?`while (slot < ${w}.length() - 2 && value >= ${w}[slot + 1]) { slot++; }`:`while (slot < ${w}.length() && value >= ${w}[slot]) { slot++; }`)}const B=Ee(e.type)||wn(e.type)||["band","point"].includes(e.type);if(d){const w=o;B&&(a?y.push(`vec3 domain = ${w};`):y.push(`vec2 domain = vec2(${w}[slot], ${w}[slot + 1]);`)),y.push(`float transformed = ${d};`),b&&y.push(`transformed = (float(slot) + transformed) / (float(${w}.length() - 1));`)}else y.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&y.push(`transformed = clampToRange(transformed, ${H0(g)});`),y.push(`return ${A??"transformed"};`),l.push(`
46
46
  ${m} ${O0}${t}(${u} value) {
47
47
  ${y.map(w=>` ${w}
48
48
  `).join("")}
@@ -50,7 +50,7 @@ ${y.map(w=>` ${w}
50
50
  ${m} ${G0}${t}() {
51
51
  return ${O0}${t}(${i});
52
52
  }`);const E=l.join(`
53
- `);if(B&&t==r){const w=Te(e.type)||wn(e.type)?c:2;f=a?`highp vec3 ${o};`:`mediump float ${o}[${w}];`}return{glsl:E,domainUniform:f}}function Ha(t){if(!me(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+U0;if(t==-1/0)return""+-U0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function $t(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(Ha).join(", ")})`):(n="float",r=Ha(t[0])),Object.assign(r,{type:n,numComponents:e})}function Gb(t){const e=Ut(t).rgb();return $t([e.r,e.g,e.b].map(n=>n/255))}function H0(t){return $t([t[0],vn(t)])}function Ub(t,...e){const n=[];for(const r of e)me(r)?n.push(Ha(r)):Fe(r)?n.push($t(r)):n.push(r);return`${t}(${n.join(", ")})`}function yo(t){return t=="index"||t=="locus"}function Qa(t,e){const r=t%2048,i=Math.round(t-r);return e??(e=[]),e[0]=i,e[1]=r,e}function Hb(t){return[...Qa(t[0]),t[1]-t[0]]}class Qb{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Ga+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(!me(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 u=0;const c=f=>{u=+f};i=()=>{a[s++]=u},o=c}else{let u=r??[0];const c=r?f=>{}:f=>{u=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=u[0],a[s++]=u[1]},o=c;break;case 3:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2]},o=c;break;case 4:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2],a[s++]=u[3]},o=c;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}];
53
+ `);if(B&&t==r){const w=Ee(e.type)||wn(e.type)?c:2;f=a?`highp vec3 ${o};`:`mediump float ${o}[${w}];`}return{glsl:E,domainUniform:f}}function Ha(t){if(!me(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+U0;if(t==-1/0)return""+-U0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function $t(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(Ha).join(", ")})`):(n="float",r=Ha(t[0])),Object.assign(r,{type:n,numComponents:e})}function Ub(t){const e=Ut(t).rgb();return $t([e.r,e.g,e.b].map(n=>n/255))}function H0(t){return $t([t[0],vn(t)])}function Hb(t,...e){const n=[];for(const r of e)me(r)?n.push(Ha(r)):Me(r)?n.push($t(r)):n.push(r);return`${t}(${n.join(", ")})`}function yo(t){return t=="index"||t=="locus"}const Q0=2**11,Qb=Q0-1;function j0(t,e=[]){const n=t&Qb,r=t-n;return e[0]=r,e[1]=n,e}function jb(t){const e=t%Q0;return[t-e,e]}function Vb(t){return[...jb(t[0]),t[1]-t[0]]}class Yb{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Ga+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(!me(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 u=0;const c=f=>{u=+f};i=()=>{a[s++]=u},o=c}else{let u=r??[0];const c=r?f=>{}:f=>{u=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=u[0],a[s++]=u[1]},o=c;break;case 3:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2]},o=c;break;case 4:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2],a[s++]=u[3]},o=c;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}];
54
54
  `,n+=`p${i}();
55
55
  `;const r=new Function("that",`${e}
56
56
 
@@ -58,8 +58,8 @@ ${m} ${G0}${t}() {
58
58
  ${n}
59
59
  that.vertexCount++;
60
60
  };
61
- `);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Rn=5,ja=127;function Va(t){const e=[];for(let d=0;d<=ja;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=ja?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<=ja?e[d]:n.get(d))||e[63]}function o(d){return i(d.charCodeAt(0))}const s=t.common.base,a=o("x"),u=o("X"),c=o("q"),f=a.height-Rn*2,l=u.height-Rn*2,h=c.height-a.height+c.yoffset-a.yoffset;function p(d,g=1){let m=0;for(let A=0;A<d.length;A++)m+=i(d.charCodeAt(A)).xadvance;return m/s*g}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function jb(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const Q0=2**31-1,Vb=-(2**31);function Yb(t,e,n,r=n){const i=new Int32Array(t);i.fill(Q0);let o=Vb,s=!1;const a=new Int32Array(t),u=e[0],f=(e[1]-e[0])/t,l=(m,A)=>{const y=(m-u)/f,b=Math.floor(y);return jb(A&&b==y?b-1:b,0,t-1)};function h(m,A,y){A>o?o=A:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const b=n(m),C=l(b,!1);i[C]>A&&(i[C]=A),a[C]<y&&(a[C]=y)}function p(m,A,y){A>o?o=A:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const b=n(m),C=r(m),B=l(b,!1),E=l(C,!0);for(let w=B;w<=E;w++)i[w]>A&&(i[w]=A),a[w]<y&&(a[w]=y)}const d=(m,A,y=[0,0])=>{const b=l(m,!1),C=l(A,!0),B=i[b],E=Math.max(a[C],B);return y[0]=B,y[1]=E,y},g=()=>{for(let A=1;A<a.length;A++)a[A]<a[A-1]&&(a[A]=a[A-1]);let m=!0;for(let A=i.length-1;A>0;A--)m&&i[A]==Q0?(i[A]=a[A],m=!1):i[A-1]>i[A]&&(i[A-1]=i[A]);return d};if(h.getIndex=g,p.getIndex=g,!s)return n==r?h:p}class Vr{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new Qb(n);for(const[i,o]of Object.entries(this.variableEncoders)){const s=o.accessor,a=[0,0],u=yo(o.scale.type),c=o.indexer,f=c?l=>c(s(l)):u?l=>Qa(s(l),a):s;this.variableBuilder.addConverter(i,{f,numComponents:u?2:1,arrayReference:u?a:void 0})}this.lastOffset=0,this.rangeMap=new Tt([],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){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.pushFromDatum(s),this.addToXIndex(s)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=u=>{var c;return u&&Te((c=u.scale)==null?void 0:c.type)&&u},s=o(this.variableEncoders.x),a=o(this.variableEncoders.x2);if(s){const u=s.accessor,c=a?a.accessor:u,f=[u(e[n]),c(e[r-1])];if(f[1]>f[0]){this.xIndexer=Yb(50,f,u,c);let l=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let p=this.variableBuilder.vertexCount;this.xIndexer(h,l,p),l=p}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class Wb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),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,u=h=>h.accessor||(p=>0),c=u(o.x),f=u(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const p=n[h];let d=c(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 A=0;A<=m;A++)l[0]=A/m,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class Xb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);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 u=0;u<=a;u++)this.updatePos(u/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class Zb extends Vr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class Kb extends Vr{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 qb extends Vr{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=e.text.channelDef;this.numberFormat=!Ge(a)&&a.format?oe(a.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){const o=this.properties.align||"left",s=this.properties.logoLetters??!1,a=this.metadata.common.base,u=this.metadata.common.scaleH;let c=-Rn;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=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,r,i);for(let p=r;p<i;p++){const d=n[p],g=this.numberFormat(f(d)),m=W(g)?g:g===null?"":""+g;if(m.length==0)continue;this.variableBuilder.updateFromDatum(d);const A=s?m.length:this.metrics.measureWidth(m);this.updateWidth(A);let y=o=="right"?-A:o=="center"?-A/2:0;if(!s){const E=this.metrics.getCharByCode(m.charCodeAt(0));y-=(E.width-E.xadvance)/a/2}let b=-.5,C=1,B=1;for(let E=0;E<m.length;E++){const w=this.metrics.getCharByCode(m.charCodeAt(E)),X=s?1:w.xadvance/a;if(w.id==32){y+=X;continue}s?(B=(w.width+Rn*2)/w.width,y=-B/2,C=(w.height+Rn*2)/w.height,b=-.5-Rn/w.height):(C=w.height/a,b=-(w.height+w.yoffset+c)/a,B=w.width/a);const H=w.x,ae=w.y;l[0]=y,l[1]=b+C,h[0]=H/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b+C,h[0]=(H+w.width)/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=b,h[0]=H/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b+C,h[0]=(H+w.width)/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=b,h[0]=H/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b,h[0]=(H+w.width)/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),y+=X}this.addToXIndex(d)}this.registerBatch(e)}}const j0=`#define PI 3.141593
62
- uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,Jb="const float inf=1.0/0.0;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}float scaleBandHp(vec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);float hi=max(value[0]-domainStart[0],-inf);float lo=max(value[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",_b=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
61
+ `);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Rn=5,Qa=127;function ja(t){const e=[];for(let d=0;d<=Qa;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=Qa?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<=Qa?e[d]:n.get(d))||e[63]}function o(d){return i(d.charCodeAt(0))}const s=t.common.base,a=o("x"),u=o("X"),c=o("q"),f=a.height-Rn*2,l=u.height-Rn*2,h=c.height-a.height+c.yoffset-a.yoffset;function p(d,g=1){let m=0;for(let A=0;A<d.length;A++)m+=i(d.charCodeAt(A)).xadvance;return m/s*g}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function Wb(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const V0=2**31-1,Xb=-(2**31);function Zb(t,e,n,r=n){const i=new Int32Array(t);i.fill(V0);let o=Xb,s=!1;const a=new Int32Array(t),u=e[0],f=(e[1]-e[0])/t,l=(m,A)=>{const y=(m-u)/f,b=Math.floor(y);return Wb(A&&b==y?b-1:b,0,t-1)};function h(m,A,y){A>o?o=A:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const b=n(m),C=l(b,!1);i[C]>A&&(i[C]=A),a[C]<y&&(a[C]=y)}function p(m,A,y){A>o?o=A:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const b=n(m),C=r(m),B=l(b,!1),E=l(C,!0);for(let w=B;w<=E;w++)i[w]>A&&(i[w]=A),a[w]<y&&(a[w]=y)}const d=(m,A,y=[0,0])=>{const b=l(m,!1),C=l(A,!0),B=i[b],E=Math.max(a[C],B);return y[0]=B,y[1]=E,y},g=()=>{for(let A=1;A<a.length;A++)a[A]<a[A-1]&&(a[A]=a[A-1]);let m=!0;for(let A=i.length-1;A>0;A--)m&&i[A]==V0?(i[A]=a[A],m=!1):i[A-1]>i[A]&&(i[A-1]=i[A]);return d};if(h.getIndex=g,p.getIndex=g,!s)return n==r?h:p}class Vr{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new Yb(n);for(const[i,o]of Object.entries(this.variableEncoders)){const s=o.accessor,a=[0,0],u=yo(o.scale.type),c=o.indexer,f=c?l=>c(s(l)):u?l=>j0(s(l),a):s;this.variableBuilder.addConverter(i,{f,numComponents:u?2:1,arrayReference:u?a:void 0})}this.lastOffset=0,this.rangeMap=new Tt([],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){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.pushFromDatum(s),this.addToXIndex(s)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=u=>{var c;return u&&Ee((c=u.scale)==null?void 0:c.type)&&u},s=o(this.variableEncoders.x),a=o(this.variableEncoders.x2);if(s){const u=s.accessor,c=a?a.accessor:u,f=[u(e[n]),c(e[r-1])];if(f[1]>f[0]){this.xIndexer=Zb(50,f,u,c);let l=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let p=this.variableBuilder.vertexCount;this.xIndexer(h,l,p),l=p}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class Kb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),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,u=h=>h.accessor||(p=>0),c=u(o.x),f=u(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const p=n[h];let d=c(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 A=0;A<=m;A++)l[0]=A/m,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class qb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);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 u=0;u<=a;u++)this.updatePos(u/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class Jb extends Vr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class _b extends Vr{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 $b extends Vr{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=e.text.channelDef;this.numberFormat=!Ge(a)&&a.format?oe(a.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){const o=this.properties.align||"left",s=this.properties.logoLetters??!1,a=this.metadata.common.base,u=this.metadata.common.scaleH;let c=-Rn;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=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,r,i);for(let p=r;p<i;p++){const d=n[p],g=this.numberFormat(f(d)),m=W(g)?g:g===null?"":""+g;if(m.length==0)continue;this.variableBuilder.updateFromDatum(d);const A=s?m.length:this.metrics.measureWidth(m);this.updateWidth(A);let y=o=="right"?-A:o=="center"?-A/2:0;if(!s){const E=this.metrics.getCharByCode(m.charCodeAt(0));y-=(E.width-E.xadvance)/a/2}let b=-.5,C=1,B=1;for(let E=0;E<m.length;E++){const w=this.metrics.getCharByCode(m.charCodeAt(E)),X=s?1:w.xadvance/a;if(w.id==32){y+=X;continue}s?(B=(w.width+Rn*2)/w.width,y=-B/2,C=(w.height+Rn*2)/w.height,b=-.5-Rn/w.height):(C=w.height/a,b=-(w.height+w.yoffset+c)/a,B=w.width/a);const H=w.x,ae=w.y;l[0]=y,l[1]=b+C,h[0]=H/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b+C,h[0]=(H+w.width)/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=b,h[0]=H/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b+C,h[0]=(H+w.width)/u,h[1]=ae/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=b,h[0]=H/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),l[0]=y+B,l[1]=b,h[0]=(H+w.width)/u,h[1]=(ae+w.height)/u,this.variableBuilder.pushAll(),y+=X}this.addToXIndex(d)}this.registerBatch(e)}}const Y0=`#define PI 3.141593
62
+ uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,ew="const float inf=1.0/0.0;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}float scaleBandHp(vec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);float hi=max(value[0]-domainStart[0],-inf);float lo=max(value[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",tw=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
63
63
  #if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
64
64
  SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
65
65
  #elif defined(SAMPLE_FACET_UNIFORM)
@@ -67,36 +67,36 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
67
67
  #elif defined(SAMPLE_FACET_TEXTURE)
68
68
  uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
69
69
  #endif
70
- bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,$b=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
70
+ bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,nw=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
71
71
  #ifdef uniqueId_DEFINED
72
72
  int id=int(getScaled_uniqueId());vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,0xFF)&0xFF)/float(0xFF);
73
73
  #else
74
74
  vPickingColor=vec4(1.0);
75
75
  #endif
76
- return true;}return false;}`,ew="in highp vec4 vPickingColor;",bo=Symbol("cacheMap");function Ln(t,e,n){let r=Yr(t).get(e);return r===void 0&&(r=n(e),Yr(t).set(e,r)),r}function V0(t,e){Yr(t).delete(e)}function wo(t,e){const n=Yr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Yr(t).delete(e)}function Y0(t){t[bo]=new Map}function Yr(t){return t[bo]||Y0(t),t[bo]}function tw(t,e,n,r){const i=W(t)?t:t.name,o=!W(t)&&t.extent||[0,1];if(n===void 0&&!W(t)&&(n=t.count),i){const s=Js(i);if(ge(s)){const a=X0(s,{extent:o,count:n});return vo(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Fe(s))return W0(s,e);throw new Error("Unknown scheme: "+i)}}}function nw(t,e="rgb",n,r){const i=ji(t,W(e)?e:e.type,W(e)?void 0:e.gamma),o=X0(i);return vo(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function rw(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 vo(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function W0(t,e,n,r){const i=Z0(t,n);return vo(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function X0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=vn(e)-i,s=Kn(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),Z0(s)}function Z0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ut(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 iw{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=Pb(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(!En(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");N0(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=Db(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;";Fe(n)&&(n=n.join(`
76
+ return true;}return false;}`,rw="in highp vec4 vPickingColor;",bo=Symbol("cacheMap");function Ln(t,e,n){let r=Yr(t).get(e);return r===void 0&&(r=n(e),Yr(t).set(e,r)),r}function W0(t,e){Yr(t).delete(e)}function wo(t,e){const n=Yr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Yr(t).delete(e)}function X0(t){t[bo]=new Map}function Yr(t){return t[bo]||X0(t),t[bo]}function iw(t,e,n,r){const i=W(t)?t:t.name,o=!W(t)&&t.extent||[0,1];if(n===void 0&&!W(t)&&(n=t.count),i){const s=Js(i);if(ge(s)){const a=Z0(s,{extent:o,count:n});return vo(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Me(s))return Va(s,e);throw new Error("Unknown scheme: "+i)}}}function ow(t,e="rgb",n,r){const i=ji(t,W(e)?e:e.type,W(e)?void 0:e.gamma),o=Z0(i);return vo(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function sw(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 vo(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Va(t,e,n,r){const i=K0(t,n);return vo(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function Z0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=vn(e)-i,s=Kn(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),K0(s)}function K0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Ut(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 aw{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=Rb(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(!En(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");N0(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=Bb(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;";Me(n)&&(n=n.join(`
77
77
 
78
78
  `));const o=this.gl,s=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(s);if(!a){const u=[r,i,n].join(`
79
79
 
80
- `);a=o.createShader(e),o.shaderSource(a,u),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,Bb(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;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=((o=this._sizeSource)==null?void 0:o.call(this))??{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=e.width??this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=e.height??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 Yt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s??4:s}const o=e.channel;if(Kt(o)){const s=e.getScaleProps(),a=e.getScale();let u;if(s.scheme){let c=W(s.scheme)?void 0:s.scheme.count;c=i(c,a),u=tw(s.scheme,this.gl,c,r)}else{const c=a.range();Qi(a.type)?u=nw(c,s.interpolate,this.gl,r):u=W0(c,this.gl,a.domain().length,r)}this.rangeTextures.set(e,u)}else{const s=e.getScale();if(s.type==="ordinal"||wn(s.type)){const a=qi(o)?vf(o):c=>c,u=e.getScale().range();this.rangeTextures.set(e,rw(u.map(a),this.gl,s.domain().length,r))}}}}function ow(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const u=parseInt(s[1]),c=i[a+1],f=c?c.index:e.length,l=e.substring(s.index,f);return[u-1,l]}));return t.split(`
80
+ `);a=o.createShader(e),o.shaderSource(a,u),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,Fb(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;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=((o=this._sizeSource)==null?void 0:o.call(this))??{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=e.width??this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=e.height??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 Yt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s??4:s}const o=e.channel;if(Kt(o)){const s=e.getScaleProps(),a=e.getScale(),u=a.range();let c;if(s.scheme)if(a.type=="threshold"&&u)c=Va(u,this.gl,a.domain().length,r);else{let f=W(s.scheme)?void 0:s.scheme.count;f=i(f,a),c=iw(s.scheme,this.gl,f,r)}else Qi(a.type)||Ee(a.type)&&u.length>2?c=ow(u,s.interpolate,this.gl,r):c=Va(u,this.gl,a.domain().length,r);this.rangeTextures.set(e,c)}else{const s=e.getScale();if(s.type==="ordinal"||wn(s.type)){const a=qi(o)?vf(o):c=>c,u=e.getScale().range();this.rangeTextures.set(e,sw(u.map(a),this.gl,s.domain().length,r))}}}}function uw(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const u=parseInt(s[1]),c=i[a+1],f=c?c.index:e.length,l=e.substring(s.index,f);return[u-1,l]}));return t.split(`
81
81
  `).map((s,a)=>{const u=o.get(a);return`${a+1+n}: ${s}${u?`
82
82
 
83
83
  ^^^ ${u}`:""}`}).join(`
84
- `)}function sw(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 u of[e,n])t.getShaderParameter(u,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(u),s=ow(t.getShaderSource(u),o,0)+`
85
- Error compiling: ${o}`,t.deleteShader(u));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function vo(t,e,n,r){return r?_f(t,r,n,e):r=Qr(t,{...e,src:n}),r}function aw(...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 uw(t){return W(t)||me(t)||ai(t)}const cw="SAMPLE_FACET_UNIFORM",K0="SAMPLE_FACET_TEXTURE";class Wr{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.viewUniformInfo=void 0,this.rangeMap=new lw,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>(n==null?void 0:n.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=aw(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 Ln(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return uw(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding({...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=O1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return K0;if(this.unitView.getFacetAccessor())return cw}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(Ge(d))o.push(zb(p,d.value));else{const g=Pe(d)&&d.resolutionChannel||p,m=this.unitView.getScaleResolution(g).getScale(),A=Ob(p,m,d);o.push(A.glsl),A.domainUniform&&this.domainUniforms.push(A.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
84
+ `)}function cw(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 u of[e,n])t.getShaderParameter(u,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(u),s=uw(t.getShaderSource(u),o,0)+`
85
+ Error compiling: ${o}`,t.deleteShader(u));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function vo(t,e,n,r){return r?_f(t,r,n,e):r=Qr(t,{...e,src:n}),r}function lw(...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 fw(t){return W(t)||me(t)||ai(t)}const hw="SAMPLE_FACET_UNIFORM",q0="SAMPLE_FACET_TEXTURE";class Wr{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.viewUniformInfo=void 0,this.rangeMap=new dw,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>(n==null?void 0:n.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=lw(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 Ln(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return fw(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding({...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=G1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return q0;if([...this.unitView.getAncestors()].find(e=>"samples"in e.spec))return hw}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(Ge(d))o.push(Ob(p,d.value));else{const g=Pe(d)&&d.resolutionChannel||p,m=this.unitView.getScaleResolution(g).getScale(),A=Gb(p,m,d);o.push(A.glsl),A.domainUniform&&this.domainUniforms.push(A.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
86
86
  `+this.domainUniforms.map(h=>` ${h}
87
87
  `).join("")+`};
88
88
 
89
89
  `:"",c=[`precision highp float;
90
- `,...r,j0,Jb,a,...o,_b,$b,e],f=[...r,j0,ew,n],l=this.gl;this.programStatus=sw(l,this.glHelper.compileShader(l.VERTEX_SHADER,c),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=cb(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=S0(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=S0(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Ee(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Rr(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):yo(r.scale.type)?Qa(+n.datum):+n.datum;Ee(this.programInfo,{[Ga+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&&wx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=Ex(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){const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=Fb(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[s,a]of Object.entries(this.domainUniformInfo.setters)){const u=s.substring(z0.length),c=this.encoding[u],f=Pe(c)&&c.resolutionChannel||u,l=this.unitView.getScaleResolution(f);if(l){const h=l.getScale();i.push(()=>{const p=Yt(h.type)?[0,h.domain().length]:h.domain();a(yo(h.type)?Hb(p):p)})}}i.push(()=>D0(r,this.programInfo,this.domainUniformInfo))}for(const[s,a]of Object.entries(this.encoding))if(Pe(a)){const u=Pe(a)&&a.resolutionChannel||s,c=this.unitView.getScaleResolution(u),f=n.rangeTextures.get(c);f&&i.push(()=>Ee(this.programInfo,{[Ua+s]:f}))}this.getSampleFacetMode()==K0&&i.push(()=>{let s;for(const a of this.unitView.getAncestors())if(s=a.getSampleFacetTexture(),s)break;if(!s)throw new Error("No facet texture available. This is bug.");Ee(this.programInfo,{uSampleFacetTexture:s})});const o=(e.picking??!1)&&this.isPickingParticipant();return i.push(()=>B0(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}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){var f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),s=o&&Te(o.type),a=["index","locus"].includes(o==null?void 0:o.type)?-1:0,u=[0,0];i=l=>{if(s&&l.xIndex){const h=o.domain(),p=l.xIndex(h[0]+a,h[1],u),d=p[0],g=p[1]-d;g>0&&e(d,g)}else e(l.offset,l.count)};const c=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){c.count&&r.prepareSampleFacetRendering(n)&&i(c)}:function(){c.count&&i(c)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,u=(o.xOffset||0)+a,c=(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(b=>b*r),m=g.map(b=>Math.floor(b)),[A,y]=g.map((b,C)=>b-m[C]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(u+h+A)/l.width,-(c+p-y)/l.height],uViewScale:d}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+u)/s.width,(s.height-e.y-c-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return B0(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),D0(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class lw extends Tt{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function Ya(t,e){const n=Q1(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(Ge(r)||Ge(i))){if(r){if(!Pe(t[e]))return;if(i){if(r.type!="quantitative"){const o=(1-(r.band||1))/2;r.band=o,i.band=-o}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const o=(1-(r.band??1))/2;r.band=0+o,i.band=1-o}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function q0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),Ge(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function J0(t,e){Ge(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill={resolutionChannel:"color",...t.color},!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity={resolutionChannel:"opacity",...t.opacity}:t.fillOpacity={value:0})}class fw extends Wr{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 Ln(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ge(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Ya(e,"x"),Ya(e,"y"),q0(e,this.properties.filled),J0(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!(Ge(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(Rb,Lb,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[e.cornerRadiusTopRight??e.cornerRadius,e.cornerRadiusBottomRight??e.cornerRadius,e.cornerRadiusTopLeft??e.cornerRadius,e.cornerRadiusBottomLeft??e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Wb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Ke(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))}}const hw=`/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;out float vRadius;out float vRadiusWithPadding;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out lowp float vShape;out lowp float vHalfStrokeWidth;out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
90
+ `,...r,Y0,ew,a,...o,tw,nw,e],f=[...r,Y0,rw,n],l=this.gl;this.programStatus=cw(l,this.glHelper.compileShader(l.VERTEX_SHADER,c),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=lb(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=S0(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=S0(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Se(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Rr(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):yo(r.scale.type)?j0(+n.datum):+n.datum;Se(this.programInfo,{[Ga+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&&vx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=Sx(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){const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=Mb(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[s,a]of Object.entries(this.domainUniformInfo.setters)){const u=s.substring(z0.length),c=this.encoding[u],f=Pe(c)&&c.resolutionChannel||u,l=this.unitView.getScaleResolution(f);if(l){const h=l.getScale();i.push(()=>{const p=Yt(h.type)?[0,h.domain().length]:h.domain();a(yo(h.type)?Vb(p):p)})}}i.push(()=>D0(r,this.programInfo,this.domainUniformInfo))}for(const[s,a]of Object.entries(this.encoding))if(Pe(a)){const u=Pe(a)&&a.resolutionChannel||s,c=this.unitView.getScaleResolution(u),f=n.rangeTextures.get(c);f&&i.push(()=>Se(this.programInfo,{[Ua+s]:f}))}this.getSampleFacetMode()==q0&&i.push(()=>{let s;for(const a of this.unitView.getAncestors())if(s=a.getSampleFacetTexture(),s)break;if(!s)throw new Error("No facet texture available. This is bug.");Se(this.programInfo,{uSampleFacetTexture:s})});const o=(e.picking??!1)&&this.isPickingParticipant();return i.push(()=>B0(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}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){var l;const r=this;let i;const o=(l=this.unitView.getScaleResolution("x"))==null?void 0:l.getScale(),s=o&&Ee(o.type),a=["index","locus"].includes(o==null?void 0:o.type)?-1:0,u=[0,0];i=h=>{if(s&&h.xIndex){const p=o.domain(),d=h.xIndex(p[0]+a,p[1],u),g=d[0],m=d[1]-g;m>0&&e(g,m)}else e(h.offset,h.count)};const c=this.rangeMap.get(void 0).count==0?n.facetId:void 0,f=this.rangeMap.get(c);return n.sampleFacetRenderingOptions?function(){f.count&&r.prepareSampleFacetRendering(n)&&i(f)}:function(){f.count&&i(f)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,u=(o.xOffset||0)+a,c=(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(b=>b*r),m=g.map(b=>Math.floor(b)),[A,y]=g.map((b,C)=>b-m[C]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(u+h+A)/l.width,-(c+p-y)/l.height],uViewScale:d}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+u)/s.width,(s.height-e.y-c-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return B0(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),D0(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class dw extends Tt{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function Ya(t,e){const n=j1(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(Ge(r)||Ge(i))){if(r){if(!Pe(t[e]))return;if(i){if(r.type!="quantitative"){const o=(1-(r.band||1))/2;r.band=o,i.band=-o}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const o=(1-(r.band??1))/2;r.band=0+o,i.band=1-o}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function J0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),Ge(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function _0(t,e){Ge(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill={resolutionChannel:"color",...t.color},!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity={resolutionChannel:"opacity",...t.opacity}:t.fillOpacity={value:0})}class pw extends Wr{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 Ln(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ge(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Ya(e,"x"),Ya(e,"y"),J0(e,this.properties.filled),_0(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!(Ge(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(Lb,kb,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[e.cornerRadiusTopRight??e.cornerRadius,e.cornerRadiusBottomRight??e.cornerRadius,e.cornerRadiusTopLeft??e.cornerRadius,e.cornerRadiusBottomLeft??e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Kb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Ke(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))}}const gw=`/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;out float vRadius;out float vRadiusWithPadding;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out lowp float vShape;out lowp float vHalfStrokeWidth;out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
91
91
  #if defined(dx_DEFINED) || defined(dy_DEFINED)
92
92
  return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
93
93
  #else
94
94
  return vec2(0.0,0.0);
95
95
  #endif
96
- }void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,dw="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;in float vRadius;in float vRadiusWithPadding;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in lowp float vShape;in lowp float vHalfStrokeWidth;in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",at=1<<0,Bt=1<<1,pw={};class q{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",Kn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
96
+ }void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,mw="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;in float vRadius;in float vRadiusWithPadding;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in lowp float vShape;in lowp float vHalfStrokeWidth;in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",at=1<<0,Bt=1<<1,Aw={};class q{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",Kn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
97
97
  `)+`return function propagate(datum) {${Kn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
98
98
  `)}}`)(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])+`
99
- `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():pw}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 _0(t){return t.type=="file"}function gw(t){return t.type=="facet"}class $0 extends q{constructor(e){super(),this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function mw(t,e,n){const r=new $0({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const Aw={};class xw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...Aw}}fixEncoding(e){return q0(e,this.properties.filled),J0(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(mw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(hw,dw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Zb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Pu(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ee(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&jr(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const yw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",bw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;in vec4 vColor;in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class ww extends Wr{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&&Pe(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Pe(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=vw(this.properties.strokeDash);this.dashTexture=Qr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(yw,bw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Xb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Ee(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function vw(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}const Cw=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
99
+ `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():Aw}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 $0(t){return t.type=="file"}function xw(t){return t.type=="facet"}class eh extends q{constructor(e){super(),this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function yw(t,e,n){const r=new eh({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const bw={};class ww extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...bw}}fixEncoding(e){return J0(e,this.properties.filled),_0(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(yw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(gw,mw)}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 Jb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Pu(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Se(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&jr(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const vw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",Cw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;in vec4 vColor;in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class Ew extends Wr{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&&Pe(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Pe(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=Sw(this.properties.strokeDash);this.dashTexture=Qr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(vw,Cw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new qb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Se(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function Sw(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}const Dw=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
100
100
  #ifdef size2_DEFINED
101
101
  float mixedSize=mix(getScaled_size(),getScaled_size2(),t);
102
102
  #else
@@ -108,7 +108,7 @@ vec3 color=mix(getScaled_color(),getScaled_color2(),t);
108
108
  #else
109
109
  vec3 color=getScaled_color();
110
110
  #endif
111
- vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,Ew="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class Sw extends Wr{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(Cw,Ew)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Kb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:Dw(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,{...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&&a.numComponents&&a.divisor&&(a.offset=r*this.arrays[s].numComponents*4)}Pn(n,this.programInfo,this.bufferInfo),jr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function Dw(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const Bw=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
111
+ vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,Bw="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class Fw extends Wr{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(Dw,Bw)}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 _b({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:Mw(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,{...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&&a.numComponents&&a.divisor&&(a.offset=r*this.arrays[s].numComponents*4)}Pn(n,this.programInfo,this.bufferInfo),jr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function Mw(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const Iw=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
112
112
  #ifdef x2_DEFINED
113
113
  uniform float uPaddingX;uniform bool uFlushX;
114
114
  #endif
@@ -128,7 +128,7 @@ vec2 pos=applySampleFacet(vec2(x,y));
128
128
  #ifdef y2_DEFINED
129
129
  float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
130
130
  #endif
131
- if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,Fw="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;in vec4 vColor;in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float opa=clamp((sigDist-0.5)*vSlope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",Mw={left:-1,center:0,right:1},Iw={top:-1,middle:0,bottom:1,alphabetic:1};class Tw extends Wr{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 Lr)this.properties.fitToBand&&Ya(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Bw,Fw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ee(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[Mw[e.align],Iw[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?oe(r.text.format):c=>c;for(const c of n){const f=s(i(c)),l=W(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new qb({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap.migrateEntries(u.rangeMap),this.updateBufferInfo(u)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ee(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function eh(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+=Co(d.px)+(Wa(d)?0:n),a+=Co(d.grow);s-=n;const u=Math.max(0,e-s),c=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 A=0;A<g;A++)l.push({location:p+(A+1)/(g+1)*m,size:0});p+=m,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&Wa(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(Wa(g))f.push(g);else{h(l.length>0);const m=Co(g.px)+(a?Co(g.grow)/a*u:0);o&&(p-=m),l.push({location:c(p),size:c(m)}),o?p-=n:p+=m+n}}return p+=o?n:-n,h(!1),l}function Pw(t){let e=0,n=0;for(const r of t)e=Math.max(e,r.px??0),n=Math.max(n,r.grow??0);return{px:e,grow:n}}const uu=class{constructor(e,n){he(this,qr);this.width=e,this.height=n}addPadding(e){return ue(this,qr,lu).call(this,e.width,e.height)}subtractPadding(e){return ue(this,qr,lu).call(this,-e.width,-e.height)}};let en=uu;qr=new WeakSet,lu=function(e,n){return new uu({px:(this.width.px??0)+e,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};const Xr=Object.freeze({px:0,grow:0}),Rw=new en(Xr,Xr);function Wa(t){return!t.px&&!t.grow}function Co(t){return t||0}function Lw(t){return t&&(me(t.px)||me(t.grow))}function th(t){if(oh(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(Lw(t))return t;if(me(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class Qe{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new Qe(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Qe(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Qe(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Xa}static createFromRecord(e){return new Qe(e.top,e.right,e.bottom,e.left)}static zero(){return Xa}static createUniformPadding(e){return new Qe(e,e,e,e)}}const Xa=Qe.createUniformPadding(0);Object.freeze(Xa);const kw=/^([A-Za-z]+:)?\/\//;function Nw(t,e){if(e&&kw.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n??e}const nh="VISIT_SKIP",Zr="VISIT_STOP",rh=t=>t;class ih{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={},Y0(this),this.opacityFunction=rh,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>Qe.createFromConfig(this.spec.padding))}getOverhang(){return Qe.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Rw)}getSizeFromSpec(){const e=n=>{var i;let r=this.spec[n];if(oh(r)){const o=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let a=0;if(Yt(s.type))a=s.domain().length;else if(["locus","index"].includes(s.type)){const c=s.domain();a=vn(c)-c[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return a=Ys(a,u.paddingInner(),u.paddingOuter()),{px:a*o,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(r&&th(r))??{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new en(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}getEffectiveOpacity(){var e;return this.opacityFunction(((e=this.parent)==null?void 0:e.getEffectiveOpacity())??1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const 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!==Zr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===rh)&&(this.opacityFunction=Ow(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Pr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Cn(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return Nw(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return W(e)?e:e.text}_cache(e,n){return Ln(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":wo(this,e);break;case"ancestors":for(const r of this.getAncestors())wo(r,e);break;case"progeny":this.visit(r=>wo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function zw(t){return"unitsPerPixel"in t}function Ow(t){const e=t.spec.opacity;if(e!==void 0){if(me(e))return n=>n*e;if(zw(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=zs().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=ui(r.domain())/1e3;return i(a)*o}}}return n=>n}const oh=t=>!!(t!=null&&t.step);class kn extends ih{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===Zr)return n;if(n!==nh){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Zr)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 kn)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Zr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){return this.getConfiguredResolution(e,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(e,n)}}function Eo(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||Nn(s)&&Nn(a)||Nn(s)&&a===!0||s===!0&&Le(a),o=s=>{for(let a in s){const u=s[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(Nn(c))Nn(u)&&(r[a]=Eo([c,u],a));else if(Nn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Eo([{},u],a)}else r[a]=u}}};for(const s of t)o(s);return r}function Nn(t){return Le(t)&&!Array.isArray(t)}/*!
131
+ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,Tw="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;in vec4 vColor;in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float opa=clamp((sigDist-0.5)*vSlope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",Pw={left:-1,center:0,right:1},Rw={top:-1,middle:0,bottom:1,alphabetic:1};class Lw extends Wr{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 Lr)this.properties.fitToBand&&Ya(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Iw,Tw)}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:[Pw[e.align],Rw[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?oe(r.text.format):c=>c;for(const c of n){const f=s(i(c)),l=W(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new $b({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap.migrateEntries(u.rangeMap),this.updateBufferInfo(u)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Se(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Pn(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function th(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+=Co(d.px)+(Wa(d)?0:n),a+=Co(d.grow);s-=n;const u=Math.max(0,e-s),c=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 A=0;A<g;A++)l.push({location:p+(A+1)/(g+1)*m,size:0});p+=m,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&Wa(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(Wa(g))f.push(g);else{h(l.length>0);const m=Co(g.px)+(a?Co(g.grow)/a*u:0);o&&(p-=m),l.push({location:c(p),size:c(m)}),o?p-=n:p+=m+n}}return p+=o?n:-n,h(!1),l}function kw(t){let e=0,n=0;for(const r of t)e=Math.max(e,r.px??0),n=Math.max(n,r.grow??0);return{px:e,grow:n}}const uu=class{constructor(e,n){he(this,qr);this.width=e,this.height=n}addPadding(e){return ue(this,qr,lu).call(this,e.width,e.height)}subtractPadding(e){return ue(this,qr,lu).call(this,-e.width,-e.height)}};let en=uu;qr=new WeakSet,lu=function(e,n){return new uu({px:(this.width.px??0)+e,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};const Xr=Object.freeze({px:0,grow:0}),Nw=new en(Xr,Xr);function Wa(t){return!t.px&&!t.grow}function Co(t){return t||0}function zw(t){return t&&(me(t.px)||me(t.grow))}function nh(t){if(sh(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(zw(t))return t;if(me(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class Qe{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new Qe(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Qe(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Qe(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Xa}static createFromRecord(e){return new Qe(e.top,e.right,e.bottom,e.left)}static zero(){return Xa}static createUniformPadding(e){return new Qe(e,e,e,e)}}const Xa=Qe.createUniformPadding(0);Object.freeze(Xa);const Ow=/^([A-Za-z]+:)?\/\//;function Gw(t,e){if(e&&Ow.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n??e}const rh="VISIT_SKIP",Zr="VISIT_STOP",ih=t=>t;class oh{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={},X0(this),this.opacityFunction=ih,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>Qe.createFromConfig(this.spec.padding))}getOverhang(){return Qe.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Nw)}getSizeFromSpec(){const e=n=>{var i;let r=this.spec[n];if(sh(r)){const o=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let a=0;if(Yt(s.type))a=s.domain().length;else if(["locus","index"].includes(s.type)){const c=s.domain();a=vn(c)-c[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return a=Ys(a,u.paddingInner(),u.paddingOuter()),{px:a*o,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(r&&nh(r))??{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new en(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}getEffectiveOpacity(){var e;return this.opacityFunction(((e=this.parent)==null?void 0:e.getEffectiveOpacity())??1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const 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!==Zr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===ih)&&(this.opacityFunction=Hw(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Pr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Cn(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return Gw(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return W(e)?e:e.text}_cache(e,n){return Ln(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":wo(this,e);break;case"ancestors":for(const r of this.getAncestors())wo(r,e);break;case"progeny":this.visit(r=>wo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function Uw(t){return"unitsPerPixel"in t}function Hw(t){const e=t.spec.opacity;if(e!==void 0){if(me(e))return n=>n*e;if(Uw(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=zs().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=ui(r.domain())/1e3;return i(a)*o}}}return n=>n}const sh=t=>!!(t!=null&&t.step);class kn extends oh{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===Zr)return n;if(n!==rh){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Zr)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 kn)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Zr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){return this.getConfiguredResolution(e,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(e,n)}}function Eo(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||Nn(s)&&Nn(a)||Nn(s)&&a===!0||s===!0&&Le(a),o=s=>{for(let a in s){const u=s[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(Nn(c))Nn(u)&&(r[a]=Eo([c,u],a));else if(Nn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Eo([{},u],a)}else r[a]=u}}};for(const s of t)o(s);return r}function Nn(t){return Le(t)&&!Array.isArray(t)}/*!
132
132
  * Adapted from vega-encode:
133
133
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
134
134
  *
@@ -136,7 +136,7 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
136
136
  * All rights reserved.
137
137
  *
138
138
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
139
- */function sh(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(ui(t.domain())/n)||1)),Le(e)&&(e.step,e=e.interval),e}function ah(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(ke(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],ke(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=s)}return e}function Gw(t,e){return t.bins?ah(t,Uw(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function Uw(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function Hw(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?oe(n):String;if(_l(t.type)){var i=jw(n);r=t.bins?i:Qw(r,i)}return r}function Qw(t,e){return function(n){return t(n)?e(n):""}}function jw(t){var e=lt(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return Vw(oe(e),oe(".1f")(1)[1])}else return oe(e)}function Vw(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=Yw(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function Yw(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}/*!
139
+ */function ah(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(ui(t.domain())/n)||1)),Le(e)&&(e.step,e=e.interval),e}function uh(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(ke(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],ke(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=s)}return e}function Qw(t,e){return t.bins?uh(t,jw(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function jw(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function Vw(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?oe(n):String;if(_l(t.type)){var i=Ww(n);r=t.bins?i:Yw(r,i)}return r}function Yw(t,e){return function(n){return t(n)?e(n):""}}function Ww(t){var e=lt(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return Xw(oe(e),oe(".1f")(1)[1])}else return oe(e)}function Xw(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=Zw(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function Zw(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}/*!
140
140
  * Adapted from vega-encode:
141
141
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
142
142
  *
@@ -144,12 +144,12 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
144
144
  * All rights reserved.
145
145
  *
146
146
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
147
- */const Ww="locus",Xw="index";var Zw=5;function Kw(t){const e=t.type;return!t.bins&&(e===yn||e===br||e===wr)}function uh(t){return Te(t)&&![Ze,Xw,Ww].includes(t)}function ch(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var qw=li(["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 lh(t,e,n){n=ch(n);for(const r in t)if(!qw[r]){if(r==="padding"&&uh(e.type))continue;ge(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}iv(e,t,rv(e,t,ev(e,t,n)))}function Jw(t,e){const n=_w(t),r=N(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return lh(t,i,e),i}function _w(t){var e=t.type,n="",r;return e===Ze?Ze+"-"+yn:($w(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ze+"-":r===3?bn+"-":""),(n+e||yn).toLowerCase())}function $w(t){const e=t.type;return Te(e)&&e!==Vl&&e!==Yl&&(t.scheme||t.range&&t.range.length&&t.range.every(W))}function ev(t,e,n){if(!t.domain)return 0;n=ch(n);var r=tv(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&Kw(t),a,u;return i?(uh(o)&&e.padding&&i[0]!==ke(i)&&(i=nv(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&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(fh(o,i,n)),o===Xs&&t.unknown(e.domainImplicit?ps:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&sh(t,e.nice)||null),i.length):0}function tv(t,e,n){return e?(t.domain(fh(t.type,e,n)),e.length):-1}function nv(t,e,n,r,i,o){var s=Math.abs(ke(n)-n[0]),a=s/(s-2*r),u=t===yt?xu(e,null,a):t===wr?Po(e,null,a,.5):t===br?Po(e,null,a,i||1):t===Ui?dd(e,null,a,o||1):Au(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function fh(t,e,n){if(_l(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: "+ci(e))}return e}function rv(t,e,n){let r=e.bins;if(r&&!Fe(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?ke(i):r.stop,a=r.step;a||Y("Scale bins parameter missing step property."),r=Kn(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Ks&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function iv(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=ov(r,e,n);else if(e.scheme&&(o=sv(r,e,n),ge(o))){if(t.interpolator)return t.interpolator(o);Y(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Qi(r))return t.interpolator(ji(Za(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate($l(e.interpolate,e.interpolateGamma)):ge(t.round)?t.round(i):ge(t.rangeRound)&&t.interpolate(i?xr:At),o&&t.range(Za(o,e.reverse))}function ov(t,e,n){t!==Zl&&t!==Zs&&Y("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Zs?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Ys(n,i,r)]}function sv(t,e,n){var r=e.schemeExtent,i,o;return Fe(e.scheme)?o=ji(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Js(i),o||Y(`Unrecognized scheme name: ${e.scheme}`)),n=t===Xl?n+1:t===Ks?n-1:t===Ws||t===Wl?+e.schemeCount||Zw:n,Qi(t)?hh(o,r,e.reverse):ge(o)?mA(hh(o,r),n):t===Xs?o:o.slice(0,n)}function hh(t,e,n){return ge(t)&&(e||n)?gA(t,Za(e||[0,1],n)):t}function Za(t,e){return e?t.slice().reverse():t}const dh=oe(",d");function av(t,e){return t.chrom+":"+dh(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+dh(Math.ceil(e.pos))}const uv="https://genomespy.app/data/genomes/";class cv{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=uv;try{this.setChromSizes(lv(await Si({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={...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=sn(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 av(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,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 lv(t){return Pd(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function ph(t){return Le(t)&&"chrom"in t}function fv(t){return t.every(ph)}class Kr extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Kr&&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 Ka extends Kr{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 gh extends Kr{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 mh extends gh{constructor(){super(),this.type="nominal"}}class hv extends Kr{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 Ah={quantitative:Ka,index:Ka,locus:Ka,nominal:mh,ordinal:gh};function xh(t,e){if(t=="quantitative"&&dv(e)){const n=new hv(e);return n.type=t,n}else if(Ah[t]){const n=new Ah[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function dv(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function pv(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const yh="quantitative",bh="ordinal",wh="nominal",vh="locus",gv="index";class mv{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=aa(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&&!Nr(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 Ln(this,"mergedScaleProps",()=>{const e=this.members.map(n=>aa(n.view,n.channel).scale).filter(n=>n!==void 0);return Eo(e,"scale",["domain"])})}getScaleProps(){return Ln(this,"scaleProps",()=>{const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=Av(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Yt(n.type)&&(n.domain=new mh),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&Yt(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),xv(n,this.channel),n})}getInitialDomain(){return this.getConfiguredDomain()??(this.type==vh?this.getGenome().getExtent():this.getDataDomain())}getConfiguredDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){V0(this,"scaleProps");const e=this.getScaleProps();lh(e,this._scale),Te(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=Jw(e);return this._scale=n,rm(n)&&n.genome(this.getGenome()),Te(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e;return((e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return this.isZoomable()&&rf(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!yf(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=ld(s,r||0),s=Au(s,a,e);break;case"log":s=fd(s,r||0),s=xu(s,a,e);break;case"pow":case"sqrt":{const u=i;s=hd(s,r||0,u.exponent()),s=Po(s,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=pd(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>s[u]!=o[u])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(ai(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 u=s[1]-s[0],c=s[0]+u/2,f=r[1]-r[0],l=r[0]+f/2,h=yl([c,0,u],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:pv,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()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ui(this._zoomExtent)/ui(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(yv(n)&&Fe(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),kr(n)?r.nice=!this.isExplicitDomain():Kt(n)?r.scheme=e==wh?"tableau10":e==bh?"blues":"viridis":qi(n)?r.range=wf(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 ph(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&fv(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 Av(t,e){if(e==gv||e==vh){if(yf(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][[wh,bh,yh].indexOf(e)]:e==yh?"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 xv(t,e){kr(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Te(t.type)&&(t.clamp=!0)}function yv(t){return Le(t)}function qa(...t){for(const e of t)if(e!==void 0)return e}class bv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=vn(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return Ln(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:Eo(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=aa(o.view,o.channel);if(!Ge(s))return{member:o,explicitTitle:qa((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:qa(Pr(s)?s.field:void 0,ua(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(Nr(o.member.channel)&&!o.explicitTitle){const a=Cn(o.member.channel);return((s=n.find(u=>u.member.view==o.member.view&&u.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>qa(o.explicitTitle,o.implicitTitle)).filter(W));return i.size?[...i].join(", "):null}}class Ch extends ih{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class tn extends kn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(nu(o)||tu(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()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class Eh{constructor(e,n){this.n=e,this.maxCols=n??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let s=0;s<n;s++){const a=i*n+s;a<this.n&&o.push(a)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let s=0;s<r;s++){const a=s*n+i;a<this.n&&o.push(a)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function ut(t){return()=>t}const ct=class{static create(e,n,r,i){return new ct(ut(e),ut(n),ut(r),ut(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"?ut(i):typeof i=="function"?i:this._passThrough(r)};return new ct(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new ct(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 ct(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 ct(()=>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 ct(ut(this.x),ut(this.y),ut(this.width),ut(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let zn=ct;$h(zn,"ZERO",ct.create(0,0,0,0));function wv(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 q{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Sh(t){const e={...t.format};if(e.type??(e.type=Sv(t)&&vv(t.url)),e.parse??(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function vv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const So=t=>typeof t!="object"?Cv:Ev,Cv=t=>({data:t}),Ev=t=>t;function Sv(t){return"url"in t}function Dv(t){return"dynamicCallbackSource"in t}class Dh 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=So(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Bh="chromosome_ticks_and_labels",Fh={x:"width",y:"height"};function Ja(t){return t=="x"?"y":"x"}const _a={x:["bottom","top"],y:["left","right"]},Mh=Object.fromEntries(Object.entries(_a).map(([t,e])=>e.map(n=>[n,t])).flat(1));function nn(t){return Mh[t]}class Bv extends tn{constructor(e,n,r,i){const o=n=="locus",s={...o?Iv:Ih,...Mv(n,e),...e};if(super(o?Tv(s):Th(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 Dh(()=>this.ticks),o){const a=nn(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(Bh).getDynamicDataSource=()=>new Dh(()=>u.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Mh[this.axisProps.orient]=="x"?new en(n,e):new en(e,n)}getPerpendicularSize(){return $a(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=nn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(rf(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=Fv(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[Fh[nn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function $a(t){const e=nn(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 Fv(t,e,n,r=[]){const i=a=>25+60*wv(100,700,a);let o=me(t.tickCount)?t.tickCount:Math.round(n/i(n));o=sh(e,o,t.tickMinStep);const s=t.values?ah(e,t.values,o):Gw(e,o);if(wA(s,r,a=>a,a=>a.value))return r;{const a=Hw(e,o,t.format);return s.map(u=>({value:u,label:a(u)}))}}const Ih={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 Mv(t,e){const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=e.labelAngle??((n=="top"||n=="bottom")&&r?-90:0);switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(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 Th(t){const e={...t,extent:$a(t)},n=nn(e.orient),r=Ja(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},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),c=()=>({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(u()),e.labels&&h.layer.push(a()),h},l={[Fh[Ja(nn(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(c()),l}const Iv={...Ih,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 Tv(t){const e={...t,extent:$a(t)},n=nn(e.orient),r=Ja(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}}),s=()=>{let c;switch(e.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...c},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 u=Th({...t,...a});if(t.chromTicks||t.chromLabels){const c={name:Bh,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&c.layer.push(o()),t.chromLabels){c.layer.push(s());let f;u.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))}u.layer.push(c)}return u}const Ph={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},Pv={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},Rv={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},Lv={start:0,middle:.5,end:1},kv={start:"left",middle:"center",end:"right"};function Nv(t){if(!t)return;const e=W(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n={"track-title":Pv,overlay:Rv}[e.style]??{},r={...Ph,...n,...e};let i={},o={x:0,y:0};const s=Lv[r.anchor??"middle"];switch(r.orient){case"top":o={x:s,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-s},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:s,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:s},i={baseline:"alphabetic",angle:-90};break}const a={...Ph,...i,...n,...e},u={xOffset:0,yOffset:0};switch(r.orient){case"top":u.yOffset=-a.offset;break;case"right":u.xOffset=a.offset;break;case"bottom":u.yOffset=a.offset;break;case"left":u.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...u,text:a.text,align:a.align??kv[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}function zv(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:s,y:a}=t.point;if(r){const u=r.mark.encoders;u.x&&!u.x2&&(s=+u.x(r.datum)*e.width+e.x),u.y&&!u.y2&&(a=(1-+u.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:a,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:s,y:a,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const s=u=>{n({x:o.clientX,y:o.clientY,xDelta:u.clientX-o.clientX,yDelta:u.clientY-o.clientY,zDelta:0}),o=u},a=u=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a,!1),document.addEventListener("mousemove",s,!1)}}class Rh extends kn{constructor(n,r,i,o,s){super(n,r,i,o);he(this,Jr);he(this,$e);he(this,Bo);he(this,Fo);he(this,rn);he(this,_r);he(this,$r);he(this,ei);he(this,Mo);he(this,Gn,1/0);he(this,Un,10);he(this,Re,[]);he(this,Hn,0);this.spec=n,Yn(this,Un,n.spacing??10),Yn(this,Gn,s),Yn(this,Re,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){n.parent??(n.parent=this),Q(this,Re).push(ue(this,Jr,fu).call(this,n)),ed(this,Hn)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=Q(this,Re).findIndex(o=>o.view==n);if(i>=0)Q(this,Re)[i]=ue(this,Jr,fu).call(this,r);else throw new Error("Not my child view!")}get children(){return Q(this,Re).map(n=>n.view)}get childCount(){return Q(this,Re).length}onScalesResolved(){super.onScalesResolved(),ue(this,Fo,rd).call(this)}*[Symbol.iterator](){for(const n of Q(this,Re)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=ue(this,rn,ni).call(this,"column"),r=ue(this,rn,ni).call(this,"row");return!n.length||!r.length?Qe.zero():new Qe(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new en(ue(this,$r,du).call(this,"column"),ue(this,$r,du).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},s=eh(ue(this,_r,hu).call(this,"column"),r.width,o),a=eh(ue(this,_r,hu).call(this,"row"),r.height,o),u=new Eh(Q(this,$e,Ft).length,Q(this,Gn)??1/0);for(const[c,f]of Q(this,$e,Ft).entries()){const{view:l,axes:h,background:p,title:d}=f,[g,m]=u.getCellCoords(c),A=s[ue(this,ei,pu).call(this,"column",g)],y=a[ue(this,ei,pu).call(this,"row",m)],b=l.getSize(),C=l.getPadding().subtract(l.getOverhang()),B=A.location+C.left,E=y.location+C.top,w=(b.width.grow?A.size:b.width.px)-C.width,X=(b.height.grow?y.size:b.height.px)-C.height,H=new zn(()=>r.x+B,()=>r.y+E,()=>w,()=>X);f.coords=H,p==null||p.render(n,H,i);const ae=Uv(l);ae&&l.render(n,H,i);for(const[M,Se]of Object.entries(h)){const _=Se.axisProps;let ve;const je=Se.getPerpendicularSize();M=="bottom"?ve=H.translate(0,H.height+_.offset).modify({height:je}):M=="top"?ve=H.translate(0,-je-_.offset).modify({height:je}):M=="left"?ve=H.translate(-je-_.offset,0).modify({width:je}):M=="right"&&(ve=H.translate(H.width+_.offset,0).modify({width:je})),Se.render(n,ve)}ae||l.render(n,H,i),d==null||d.render(n,H,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=Q(this,$e,Ft).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof we||i instanceof tn)&&zv(n,r.coords,o=>ue(this,Mo,id).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Gn=new WeakMap,Un=new WeakMap,Re=new WeakMap,Hn=new WeakMap,Jr=new WeakSet,fu=function(n){var i;const r={view:n,background:void 0,axes:{},coords:zn.ZERO};if(n instanceof we||n instanceof tn){const o=(i=n.spec)==null?void 0:i.view;if(o!=null&&o.fill||o!=null&&o.stroke){const a=new we(Ov(o),this.context,n,"background"+Q(this,Hn));a.blockEncodingInheritance=!0,r.background=a}const s=Nv(n.spec.title);if(s){const a=new we(s,this.context,n,"title"+Q(this,Hn));a.blockEncodingInheritance=!0,r.title=a}}return r},$e=new WeakSet,Ft=function(){return Q(this,Re).filter(n=>n.view.isVisible())},Bo=new WeakSet,nd=function(){return new Eh(Q(this,$e,Ft).length,Q(this,Gn)??1/0)},Fo=new WeakSet,rd=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of Q(this,Re)){const{view:r,axes:i}=n,o=(s,a,u)=>{const c=s.getAxisProps();if(c!==null){if(!c.orient){for(const f of _a[a])if(!i[f]){c.orient=f;break}if(!c.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(c.title??(c.title=s.getTitle()),!_a[a].includes(c.orient))throw new Error(`Invalid axis orientation "${c.orient}" on channel "${a}"!`);if(i[c.orient])throw new Error(`An axis with the orient "${c.orient}" already exists!`);i[c.orient]=new Bv(c,s.scaleResolution.type,this.context,u)}};if(r instanceof we||r instanceof tn)for(const s of["x","y"]){const a=r.resolutions.axis[s];a&&o(a,s,r)}if(r instanceof tn){for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&c.orient&&o(u,a,s)}for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&!c.orient&&o(u,a,s)}}}},rn=new WeakSet,ni=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(s,a)=>s.map(u=>{const c=Q(this,$e,Ft)[u].axes[r[a]];if(c)return Math.max(c.getPerpendicularSize()+c.axisProps.offset,0);const f=Q(this,$e,Ft)[u].view.getOverhang();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((u,c)=>Math.max(u,c),0);return Q(this,Bo,nd)[n=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:o(s,0),axisAfter:o(s,1),view:Pw(s.map(a=>Q(this,$e,Ft)[a].view.getSize()[i]))}))},_r=new WeakSet,hu=function(n){const r=ue(this,rn,ni).call(this,n),i=[];i.push(Xr);for(const[o,s]of r.entries())o>0&&i.push({px:Q(this,Un),grow:0}),(o==0||this.wrappingFacet)&&i.push(Xr),i.push({px:s.axisBefore,grow:0}),i.push(s.view),i.push({px:s.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Xr);return i},$r=new WeakSet,du=function(n){let r=0,i=0;const o=(n=="row"&&this.spec.height)??(n=="column"&&this.spec.width);if(o||o===0)return th(o);const s=ue(this,rn,ni).call(this,n);for(const[a,u]of s.entries())a>0&&(i+=Q(this,Un)),(a==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=u.view.px??0,r+=u.view.grow??0,i+=u.axisAfter,(a==s.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},ei=new WeakSet,pu=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Mo=new WeakSet,id=function(n,r,i){for(const[o,s]of Object.entries(Gv(r))){if(s.size<=0)continue;const a=n.normalizePoint(i.x,i.y),u=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const f of s)f.zoom(2**i.zDelta,o=="y"?1-a[o]:a[o],o=="x"?c.x:-c.y)}this.context.animator.requestRender()};function Ov(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function Gv(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function Uv(t){let e=!0;return t.visit(n=>{n instanceof we&&e&&(e=n.mark.properties.clip)}),e}class eu extends Rh{constructor(e,n,r,i){super(e,n,r,i,iu(e)?e.columns:ru(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=iu(e)?e.concat:ru(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class Hv{constructor(){this.types=[];const e=n=>(r,i,o,s)=>new n(r,i,o,r.name??s);this.addViewType(Qv,e(Ch)),this.addViewType(nu,e(tn)),this.addViewType(tu,e(we)),this.addViewType(ru,e(eu)),this.addViewType(jv,e(eu)),this.addViewType(iu,e(eu))}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??"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 tu(t){return"mark"in t&&(W(t.mark)||Le(t.mark))}function nu(t){return"layer"in t&&Le(t.layer)}function Lh(t){return t&&(tu(t)||nu(t))&&"aggregateSamples"in t}function Qv(t){return"import"in t}function ru(t){return"vconcat"in t&&Fe(t.vconcat)}function jv(t){return"hconcat"in t&&Fe(t.hconcat)}function iu(t){return"concat"in t&&Fe(t.concat)}const Vv={point:xw,rect:fw,rule:ww,link:Sw,text:Tw};class we extends kn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=Vv[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()&&(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!Pe(i))continue;let o=Cn(i.resolutionChannel??r);if(e=="axis"&&!kr(o))continue;let s=this;for(;s.parent instanceof kn&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(o,e))&&s.getConfiguredOrDefaultResolution(o,e)!="excluded";)s=s.parent;s.resolutions[e][o]||(s.resolutions[e][o]=e=="scale"?new mv(o):new bv(o)),kr(r)?s.resolutions[e][o].pushUnitView(this,r):e=="scale"&&s.resolutions[e][o].pushUnitView(this,r)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(Nr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Pe(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??e);return xh(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type??"nominal",i=a=>{let u;const c=this.mark.encoding[a];if(c){const f=this.context.accessorFactory.createAccessor(c);if(f)if(u=xh(r),f.constant)u.extend(f({}));else{const l=this.getCollector();l!=null&&l.completed&&l.visitData(h=>u.extend(f(h)))}}return u};let o=i(e);const s=ca[e];if(s){const a=i(s);a&&o.extendAll(a)}return o}getZoomLevel(){const e=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return Lr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){if(Lh(this.spec))for(const e of this.spec.aggregateSamples){const n=e.transform??[];n.length&&vn(n).type!="collect"&&n.push({type:"collect"}),n.push({type:"mergeFacets"}),e.transform=n,e.encoding={...e.encoding??{},sample:null};const r=this.context.createView(e,this,"summaryView");r.getFacetFields=i=>{},this.sampleAggregateViews.push(r)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*ou(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ou(r,[...e,n]))yield i;else yield[[...e,n],r]}class su extends q{constructor(e){super(),this.params=e??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Tt([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){gw(e)&&(this._data=[],this.facetBatches.set(Ke(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?yu(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(u=>O(u)),a=hi(this._data,...s);this.facetBatches.clear();for(const[u,c]of ou(a))this.facetBatches.set(u,c)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const u={type:"facet",facetId:s};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}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 Do{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,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 u=this.ids[s],c=this.values[s];const f=this.values[a];if(a<this.length&&f<c&&(s=a,u=this.ids[a],c=f),c>=r)break;this.ids[o]=u,this.values[o]=c,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]}shrink(){this.ids.length=this.values.length=this.length}}class Yv extends q{get behavior(){return at}constructor(e){super(),this.params=e,this.startAccessor=O(e.start),this.endAccessor=O(e.end),this.chromAccessor=e.chrom?O(e.chrom):n=>{},this.weightAccessor=e.weight?O(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 Do}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 u,c,f,l=0,h;const p=this.ends;p.clear();const d=(m,A,y)=>{if(m==A)return;let b=!1;u&&(u[e]===y?(u[n]=A,b=!0):u[e]!=0&&this._propagate(u)),b||(u=this.createSegment(m,A,y,f))},g=()=>{let m;for(;(m=p.peekValue())!==void 0;)d(h,m,l),h=m,l-=p.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=m=>{const A=i(m);let y;for(;(y=p.peekValue())!==void 0&&y<A;)d(h,y,l),h=y,l-=p.pop();if(r){let C=s(m);C!==c&&(g(),f=C,c=f)}h!==void 0&&d(h,A,l),h=A;const b=a(m);l+=b,p.push(b,o(m))},this.complete=()=>{g(),super.complete()}}}function Wv(t,e,n=0,r=t.length){const i=new Do,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const c=t[n+s];c>=i.peekValue()&&(i.push(s,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class Xv{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 Zv extends q{constructor(e,n){if(super(),this.params=e,this._data=[],this.channel=e.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=O(this.params.pos),this.posBisector=fi(this.posAccessor),this.scoreAccessor=O(this.params.score),this.widthAccessor=O(this.params.width),this.laneAccessor=this.params.lane?O(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new Xv(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=Wv(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const u=this._data[a],c=e(this.posAccessor(u))*n,f=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-f,c+f)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class Kv extends q{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=sa(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const qv="0".charCodeAt(0);function*Jv(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-qv}yield r}class _v extends q{get behavior(){return at}constructor(e){super();const n=O(e.exons??"exons"),r=O(e.start??"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=s=>{let a=r(s),u=a,c=!0;const f=n(s);for(const l of Jv(f)){if(c)u=a+l;else{a=u+l;const h=Object.assign({},s);h[i]=u,h[o]=a,this._propagate(h)}c=!c}}}}class $v extends q{get behavior(){return at}constructor(e){super();const n=Ke(e.field).map(o=>O(o)),r=Ke(e.separator),i=Ke(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(u=>!u(o)))return;const s=n.map((u,c)=>u(o).split(r[c]));eC(s,o);const a=s[0].length;for(let u=0;u<a;u++){const c=Object.assign({},o);for(let f=0;f<n.length;f++)c[i[f]]=s[f][u];this._propagate(c)}}}}function eC(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 tC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=sa(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class kh extends q{get behavior(){return Bt}constructor(e,n){super();const r=e.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=O(e.chrom),s=Ke(e.pos).map(d=>O(d)),a=Ke(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Ke(e.offset);let c;if(u.length==0)c=new Array(s.length).fill(0);else if(u.length==1)c=new Array(s.length).fill(u[0]);else if(u.length==s.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((d,g)=>`datum[${JSON.stringify(d)}] = chromOffset + +posAccessors[${g}](datum) - ${c[g]};`).join(`
148
- `));let l,h=0;const p=d=>{if(d!==l){if(h=i.cumulativeChromPositions.get(d),h===void 0)throw new Error("Unknown chromosome/contig: "+d);l=d}return h};this.handle=d=>{f(d,p(o(d)),s),this._propagate(d)}}}const Nh={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 nC extends q{get behavior(){return Bt}constructor(e){super();const n=Va(Nh),r=O(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 rC=65536;class iC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=me(e.spacing)?e.spacing:1,i=O(e.start),o=O(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(rC),a=O(e.preference),u=e.preferredOrder;let c=1/0;this.handle=f=>{const l=i(f);l<c&&s.fill(-1/0),c=l;const h=u.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 Do,a=new Do;let u=-1/0,c=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<u);){const p=s.pop();a.push(p,p)}u=l;let h=a.pop();h===void 0&&(h=c++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class oC extends q{get behavior(){return at}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=>O(i)),r=e.as?e.as:n.map(Z);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class sC extends q{get behavior(){return Bt}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=O(e.field);this.handle=o=>{const s=i(o);if(W(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 u=0;u<r.length;u++)o[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)o[r[u]]=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 aC extends q{get behavior(){return at}constructor(e){super();const n=Ke(e.columnRegex).map(h=>new RegExp(h)),r=Ke(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let s,a,u;const c=h=>{var m;const p=Object.keys(h),d=new Map;for(const[A,y]of n.entries())for(const b of p){const C=(m=y.exec(b))==null?void 0:m[1];if(C!==void 0){let B=d.get(C);B||(B=[],d.set(C,B)),B[A]=b}}s=[...d.entries()],a=p.filter(A=>!n.some(y=>y.test(A))&&!(i&&i.test(A)));const g=[...a.map(A=>JSON.stringify(A)+": datum["+JSON.stringify(A)+"]"),JSON.stringify(o)+": sampleId",...r.map(A=>JSON.stringify(A)+": null")];u=new Function("datum","sampleId",`return {
147
+ */const Kw="locus",qw="index";var Jw=5;function _w(t){const e=t.type;return!t.bins&&(e===yn||e===br||e===wr)}function ch(t){return Ee(t)&&![Ze,qw,Kw].includes(t)}function lh(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var $w=li(["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 fh(t,e,n){n=lh(n);for(const r in t)if(!$w[r]){if(r==="padding"&&ch(e.type))continue;ge(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}av(e,t,sv(e,t,rv(e,t,n)))}function ev(t,e){const n=tv(t),r=N(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return fh(t,i,e),i}function tv(t){var e=t.type,n="",r;return e===Ze?Ze+"-"+yn:(nv(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ze+"-":r===3?bn+"-":""),(n+e||yn).toLowerCase())}function nv(t){const e=t.type;return Ee(e)&&e!==Vl&&e!==Yl&&(t.scheme||t.range&&t.range.length&&t.range.every(W))}function rv(t,e,n){if(!t.domain)return 0;n=lh(n);var r=iv(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&_w(t),a,u;return i?(ch(o)&&e.padding&&i[0]!==ke(i)&&(i=ov(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&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(hh(o,i,n)),o===Xs&&t.unknown(e.domainImplicit?ps:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&ah(t,e.nice)||null),i.length):0}function iv(t,e,n){return e?(t.domain(hh(t.type,e,n)),e.length):-1}function ov(t,e,n,r,i,o){var s=Math.abs(ke(n)-n[0]),a=s/(s-2*r),u=t===yt?xu(e,null,a):t===wr?Po(e,null,a,.5):t===br?Po(e,null,a,i||1):t===Ui?pd(e,null,a,o||1):Au(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function hh(t,e,n){if(_l(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: "+ci(e))}return e}function sv(t,e,n){let r=e.bins;if(r&&!Me(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?ke(i):r.stop,a=r.step;a||Y("Scale bins parameter missing step property."),r=Kn(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Ks&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function av(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=uv(r,e,n);else if(e.scheme&&(o=cv(r,e,n),ge(o))){if(t.interpolator)return t.interpolator(o);Y(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Qi(r))return t.interpolator(ji(Za(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate($l(e.interpolate,e.interpolateGamma)):ge(t.round)?t.round(i):ge(t.rangeRound)&&t.interpolate(i?xr:At),o&&t.range(Za(o,e.reverse))}function uv(t,e,n){t!==Zl&&t!==Zs&&Y("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Zs?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Ys(n,i,r)]}function cv(t,e,n){var r=e.schemeExtent,i,o;return Me(e.scheme)?o=ji(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Js(i),o||Y(`Unrecognized scheme name: ${e.scheme}`)),n=t===Xl?n+1:t===Ks?n-1:t===Ws||t===Wl?+e.schemeCount||Jw:n,Qi(t)?dh(o,r,e.reverse):ge(o)?AA(dh(o,r),n):t===Xs?o:o.slice(0,n)}function dh(t,e,n){return ge(t)&&(e||n)?mA(t,Za(e||[0,1],n)):t}function Za(t,e){return e?t.slice().reverse():t}const ph=oe(",d");function lv(t,e){return t.chrom+":"+ph(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+ph(Math.ceil(e.pos))}const fv="https://genomespy.app/data/genomes/";class hv{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=fv;try{this.setChromSizes(dv(await Si({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={...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=sn(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 lv(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,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 dv(t){return Rd(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function gh(t){return Le(t)&&"chrom"in t}function pv(t){return t.every(gh)}class Kr extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Kr&&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 Ka extends Kr{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 mh extends Kr{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 Ah extends mh{constructor(){super(),this.type="nominal"}}class gv extends Kr{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 xh={quantitative:Ka,index:Ka,locus:Ka,nominal:Ah,ordinal:mh};function yh(t,e){if(t=="quantitative"&&mv(e)){const n=new gv(e);return n.type=t,n}else if(xh[t]){const n=new xh[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function mv(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Av(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const bh="quantitative",wh="ordinal",vh="nominal",Ch="locus",xv="index";class yv{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=aa(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&&!Nr(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 Ln(this,"mergedScaleProps",()=>{const e=this.members.map(n=>aa(n.view,n.channel).scale).filter(n=>n!==void 0);return Eo(e,"scale",["domain"])})}getScaleProps(){return Ln(this,"scaleProps",()=>{const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=bv(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Yt(n.type)?n.domain=new Ah:n.scheme&&(n.domain=[0,1]),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&Yt(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),wv(n,this.channel),n})}getInitialDomain(){return this.getConfiguredDomain()??(this.type==Ch?this.getGenome().getExtent():this.getDataDomain())}getConfiguredDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){W0(this,"scaleProps");const e=this.getScaleProps();fh(e,this._scale),Ee(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=ev(e);return this._scale=n,im(n)&&n.genome(this.getGenome()),Ee(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e;return((e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return this.isZoomable()&&rf(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!yf(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=fd(s,r||0),s=Au(s,a,e);break;case"log":s=hd(s,r||0),s=xu(s,a,e);break;case"pow":case"sqrt":{const u=i;s=dd(s,r||0,u.exponent()),s=Po(s,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=gd(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>s[u]!=o[u])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(ai(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 u=s[1]-s[0],c=s[0]+u/2,f=r[1]-r[0],l=r[0]+f/2,h=yl([c,0,u],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:Av,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()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ui(this._zoomExtent)/ui(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(vv(n)&&Me(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),kr(n)?r.nice=!this.isExplicitDomain():Kt(n)?r.scheme=e==vh?"tableau10":e==wh?"blues":"viridis":qi(n)?r.range=wf(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 gh(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&pv(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 bv(t,e){if(e==xv||e==Ch){if(yf(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][[vh,wh,bh].indexOf(e)]:e==bh?"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 wv(t,e){kr(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Ee(t.type)&&(t.clamp=!0)}function vv(t){return Le(t)}function qa(...t){for(const e of t)if(e!==void 0)return e}class Cv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=vn(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return Ln(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:Eo(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=aa(o.view,o.channel);if(!Ge(s))return{member:o,explicitTitle:qa((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:qa(Pr(s)?s.field:void 0,ua(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(Nr(o.member.channel)&&!o.explicitTitle){const a=Cn(o.member.channel);return((s=n.find(u=>u.member.view==o.member.view&&u.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>qa(o.explicitTitle,o.implicitTitle)).filter(W));return i.size?[...i].join(", "):null}}class Eh extends oh{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class tn extends kn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(nu(o)||tu(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()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class Sh{constructor(e,n){this.n=e,this.maxCols=n??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let s=0;s<n;s++){const a=i*n+s;a<this.n&&o.push(a)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let s=0;s<r;s++){const a=s*n+i;a<this.n&&o.push(a)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function ut(t){return()=>t}const ct=class{static create(e,n,r,i){return new ct(ut(e),ut(n),ut(r),ut(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"?ut(i):typeof i=="function"?i:this._passThrough(r)};return new ct(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new ct(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 ct(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 ct(()=>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 ct(ut(this.x),ut(this.y),ut(this.width),ut(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let zn=ct;ed(zn,"ZERO",ct.create(0,0,0,0));function Ev(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 q{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Dh(t){const e={...t.format};if(e.type??(e.type=Fv(t)&&Sv(t.url)),e.parse??(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function Sv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const So=t=>typeof t!="object"?Dv:Bv,Dv=t=>({data:t}),Bv=t=>t;function Fv(t){return"url"in t}function Mv(t){return"dynamicCallbackSource"in t}class Bh 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=So(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Fh="chromosome_ticks_and_labels",Mh={x:"width",y:"height"};function Ja(t){return t=="x"?"y":"x"}const _a={x:["bottom","top"],y:["left","right"]},Ih=Object.fromEntries(Object.entries(_a).map(([t,e])=>e.map(n=>[n,t])).flat(1));function nn(t){return Ih[t]}class Iv extends tn{constructor(e,n,r,i){const o=n=="locus",s={...o?Rv:Th,...Pv(n,e),...e};if(super(o?Lv(s):Ph(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 Bh(()=>this.ticks),o){const a=nn(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(Fh).getDynamicDataSource=()=>new Bh(()=>u.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Ih[this.axisProps.orient]=="x"?new en(n,e):new en(e,n)}getPerpendicularSize(){return $a(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=nn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(rf(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=Tv(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[Mh[nn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function $a(t){const e=nn(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 Tv(t,e,n,r=[]){const i=a=>25+60*Ev(100,700,a);let o=me(t.tickCount)?t.tickCount:Math.round(n/i(n));o=ah(e,o,t.tickMinStep);const s=t.values?uh(e,t.values,o):Qw(e,o);if(vA(s,r,a=>a,a=>a.value))return r;{const a=Vw(e,o,t.format);return s.map(u=>({value:u,label:a(u)}))}}const Th={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 Pv(t,e){const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=e.labelAngle??((n=="top"||n=="bottom")&&r?-90:0);switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(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 Ph(t){const e={...t,extent:$a(t)},n=nn(e.orient),r=Ja(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},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),c=()=>({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(u()),e.labels&&h.layer.push(a()),h},l={[Mh[Ja(nn(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(c()),l}const Rv={...Th,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 Lv(t){const e={...t,extent:$a(t)},n=nn(e.orient),r=Ja(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}}),s=()=>{let c;switch(e.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...c},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 u=Ph({...t,...a});if(t.chromTicks||t.chromLabels){const c={name:Fh,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&c.layer.push(o()),t.chromLabels){c.layer.push(s());let f;u.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))}u.layer.push(c)}return u}const Rh={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},kv={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},Nv={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},zv={start:0,middle:.5,end:1},Ov={start:"left",middle:"center",end:"right"};function Gv(t){if(!t)return;const e=W(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n={"track-title":kv,overlay:Nv}[e.style]??{},r={...Rh,...n,...e};let i={},o={x:0,y:0};const s=zv[r.anchor??"middle"];switch(r.orient){case"top":o={x:s,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-s},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:s,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:s},i={baseline:"alphabetic",angle:-90};break}const a={...Rh,...i,...n,...e},u={xOffset:0,yOffset:0};switch(r.orient){case"top":u.yOffset=-a.offset;break;case"right":u.xOffset=a.offset;break;case"bottom":u.yOffset=a.offset;break;case"left":u.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...u,text:a.text,align:a.align??Ov[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight}}}function Uv(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:s,y:a}=t.point;if(r){const u=r.mark.encoders;u.x&&!u.x2&&!u.x.constantValue&&(s=+u.x(r.datum)*e.width+e.x),u.y&&!u.y2&&!u.y.constantValue&&(a=(1-+u.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:a,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:s,y:a,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const s=u=>{n({x:o.clientX,y:o.clientY,xDelta:u.clientX-o.clientX,yDelta:u.clientY-o.clientY,zDelta:0}),o=u},a=u=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a,!1),document.addEventListener("mousemove",s,!1)}}class Lh extends kn{constructor(n,r,i,o,s){super(n,r,i,o);he(this,Jr);he(this,$e);he(this,Bo);he(this,Fo);he(this,rn);he(this,_r);he(this,$r);he(this,ei);he(this,Mo);he(this,Gn,1/0);he(this,Un,10);he(this,Re,[]);he(this,Hn,0);this.spec=n,Yn(this,Un,n.spacing??10),Yn(this,Gn,s),Yn(this,Re,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){n.parent??(n.parent=this),Q(this,Re).push(ue(this,Jr,fu).call(this,n)),td(this,Hn)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=Q(this,Re).findIndex(o=>o.view==n);if(i>=0)Q(this,Re)[i]=ue(this,Jr,fu).call(this,r);else throw new Error("Not my child view!")}get children(){return Q(this,Re).map(n=>n.view)}get childCount(){return Q(this,Re).length}onScalesResolved(){super.onScalesResolved(),ue(this,Fo,id).call(this)}*[Symbol.iterator](){for(const n of Q(this,Re)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=ue(this,rn,ni).call(this,"column"),r=ue(this,rn,ni).call(this,"row");return!n.length||!r.length?Qe.zero():new Qe(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new en(ue(this,$r,du).call(this,"column"),ue(this,$r,du).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){if(!this.isVisible())return;this.parent||(r=r.shrink(this.getPadding())),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},s=th(ue(this,_r,hu).call(this,"column"),r.width,o),a=th(ue(this,_r,hu).call(this,"row"),r.height,o),u=new Sh(Q(this,$e,Ft).length,Q(this,Gn)??1/0);for(const[c,f]of Q(this,$e,Ft).entries()){const{view:l,axes:h,background:p,title:d}=f,[g,m]=u.getCellCoords(c),A=s[ue(this,ei,pu).call(this,"column",g)],y=a[ue(this,ei,pu).call(this,"row",m)],b=l.getSize(),C=l.getPadding().subtract(l.getOverhang()),B=A.location+C.left,E=y.location+C.top,w=(b.width.grow?A.size:b.width.px)-C.width,X=(b.height.grow?y.size:b.height.px)-C.height,H=new zn(()=>r.x+B,()=>r.y+E,()=>w,()=>X);f.coords=H,p==null||p.render(n,H,i);const ae=jv(l);ae&&l.render(n,H,i);for(const[M,De]of Object.entries(h)){const _=De.axisProps;let ve;const je=De.getPerpendicularSize();M=="bottom"?ve=H.translate(0,H.height+_.offset).modify({height:je}):M=="top"?ve=H.translate(0,-je-_.offset).modify({height:je}):M=="left"?ve=H.translate(-je-_.offset,0).modify({width:je}):M=="right"&&(ve=H.translate(H.width+_.offset,0).modify({width:je})),De.render(n,ve)}ae||l.render(n,H,i),d==null||d.render(n,H,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=Q(this,$e,Ft).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof we||i instanceof tn)&&Uv(n,r.coords,o=>ue(this,Mo,od).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Gn=new WeakMap,Un=new WeakMap,Re=new WeakMap,Hn=new WeakMap,Jr=new WeakSet,fu=function(n){var i;const r={view:n,background:void 0,axes:{},coords:zn.ZERO};if(n instanceof we||n instanceof tn){const o=(i=n.spec)==null?void 0:i.view;if(o!=null&&o.fill||o!=null&&o.stroke){const a=new we(Hv(o),this.context,n,"background"+Q(this,Hn));a.blockEncodingInheritance=!0,r.background=a}const s=Gv(n.spec.title);if(s){const a=new we(s,this.context,n,"title"+Q(this,Hn));a.blockEncodingInheritance=!0,r.title=a}}return r},$e=new WeakSet,Ft=function(){return Q(this,Re).filter(n=>n.view.isVisible())},Bo=new WeakSet,rd=function(){return new Sh(Q(this,$e,Ft).length,Q(this,Gn)??1/0)},Fo=new WeakSet,id=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of Q(this,Re)){const{view:r,axes:i}=n,o=(s,a,u)=>{const c=s.getAxisProps();if(c!==null){if(!c.orient){for(const f of _a[a])if(!i[f]){c.orient=f;break}if(!c.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(c.title??(c.title=s.getTitle()),!_a[a].includes(c.orient))throw new Error(`Invalid axis orientation "${c.orient}" on channel "${a}"!`);if(i[c.orient])throw new Error(`An axis with the orient "${c.orient}" already exists!`);i[c.orient]=new Iv(c,s.scaleResolution.type,this.context,u)}};if(r instanceof we||r instanceof tn)for(const s of["x","y"]){const a=r.resolutions.axis[s];a&&o(a,s,r)}if(r instanceof tn){for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&c.orient&&o(u,a,s)}for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&!c.orient&&o(u,a,s)}}}},rn=new WeakSet,ni=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(s,a)=>s.map(u=>{const c=Q(this,$e,Ft)[u].axes[r[a]];if(c)return Math.max(c.getPerpendicularSize()+c.axisProps.offset,0);const f=Q(this,$e,Ft)[u].view.getOverhang();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((u,c)=>Math.max(u,c),0);return Q(this,Bo,rd)[n=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:o(s,0),axisAfter:o(s,1),view:kw(s.map(a=>Q(this,$e,Ft)[a].view.getSize()[i]))}))},_r=new WeakSet,hu=function(n){const r=ue(this,rn,ni).call(this,n),i=[];i.push(Xr);for(const[o,s]of r.entries())o>0&&i.push({px:Q(this,Un),grow:0}),(o==0||this.wrappingFacet)&&i.push(Xr),i.push({px:s.axisBefore,grow:0}),i.push(s.view),i.push({px:s.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Xr);return i},$r=new WeakSet,du=function(n){let r=0,i=0;const o=(n=="row"&&this.spec.height)??(n=="column"&&this.spec.width);if(o||o===0)return nh(o);const s=ue(this,rn,ni).call(this,n);for(const[a,u]of s.entries())a>0&&(i+=Q(this,Un)),(a==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=u.view.px??0,r+=u.view.grow??0,i+=u.axisAfter,(a==s.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},ei=new WeakSet,pu=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Mo=new WeakSet,od=function(n,r,i){for(const[o,s]of Object.entries(Qv(r))){if(s.size<=0)continue;const a=n.normalizePoint(i.x,i.y),u=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const f of s)f.zoom(2**i.zDelta,o=="y"?1-a[o]:a[o],o=="x"?c.x:-c.y)}this.context.animator.requestRender()};function Hv(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function Qv(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function jv(t){let e=!0;return t.visit(n=>{n instanceof we&&e&&(e=n.mark.properties.clip)}),e}class eu extends Lh{constructor(e,n,r,i){super(e,n,r,i,iu(e)?e.columns:ru(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=iu(e)?e.concat:ru(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class Vv{constructor(){this.types=[];const e=n=>(r,i,o,s)=>new n(r,i,o,r.name??s);this.addViewType(Yv,e(Eh)),this.addViewType(nu,e(tn)),this.addViewType(tu,e(we)),this.addViewType(ru,e(eu)),this.addViewType(Wv,e(eu)),this.addViewType(iu,e(eu))}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??"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 tu(t){return"mark"in t&&(W(t.mark)||Le(t.mark))}function nu(t){return"layer"in t&&Le(t.layer)}function kh(t){return t&&(tu(t)||nu(t))&&"aggregateSamples"in t}function Yv(t){return"import"in t}function ru(t){return"vconcat"in t&&Me(t.vconcat)}function Wv(t){return"hconcat"in t&&Me(t.hconcat)}function iu(t){return"concat"in t&&Me(t.concat)}const Xv={point:ww,rect:pw,rule:Ew,link:Fw,text:Lw};class we extends kn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=Xv[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()&&(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!Pe(i))continue;let o=Cn(i.resolutionChannel??r);if(e=="axis"&&!kr(o))continue;let s=this;for(;s.parent instanceof kn&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(o,e))&&s.getConfiguredOrDefaultResolution(o,e)!="excluded";)s=s.parent;s.resolutions[e][o]||(s.resolutions[e][o]=e=="scale"?new yv(o):new Cv(o)),kr(r)?s.resolutions[e][o].pushUnitView(this,r):e=="scale"&&s.resolutions[e][o].pushUnitView(this,r)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(Nr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Pe(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??e);return yh(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type??"nominal",i=a=>{let u;const c=this.mark.encoding[a];if(c){const f=this.context.accessorFactory.createAccessor(c);if(f)if(u=yh(r),f.constant)u.extend(f({}));else{const l=this.getCollector();l!=null&&l.completed&&l.visitData(h=>u.extend(f(h)))}}return u};let o=i(e);const s=ca[e];if(s){const a=i(s);a&&o.extendAll(a)}return o}getZoomLevel(){const e=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return Lr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){if(kh(this.spec))for(const e of this.spec.aggregateSamples){const n=e.transform??[];n.length&&vn(n).type!="collect"&&n.push({type:"collect"}),n.push({type:"mergeFacets"}),e.transform=n,e.encoding={...e.encoding??{},sample:null};const r=this.context.createView(e,this,"summaryView");r.getFacetFields=i=>{},this.sampleAggregateViews.push(r)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*ou(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ou(r,[...e,n]))yield i;else yield[[...e,n],r]}class su extends q{constructor(e){super(),this.params=e??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Tt([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){xw(e)&&(this._data=[],this.facetBatches.set(Ke(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?yu(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(u=>O(u)),a=hi(this._data,...s);this.facetBatches.clear();for(const[u,c]of ou(a))this.facetBatches.set(u,c)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const u={type:"facet",facetId:s};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}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 Do{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,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 u=this.ids[s],c=this.values[s];const f=this.values[a];if(a<this.length&&f<c&&(s=a,u=this.ids[a],c=f),c>=r)break;this.ids[o]=u,this.values[o]=c,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]}shrink(){this.ids.length=this.values.length=this.length}}class Zv extends q{get behavior(){return at}constructor(e){super(),this.params=e,this.startAccessor=O(e.start),this.endAccessor=O(e.end),this.chromAccessor=e.chrom?O(e.chrom):n=>{},this.weightAccessor=e.weight?O(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 Do}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 u,c,f,l=0,h;const p=this.ends;p.clear();const d=(m,A,y)=>{if(m==A)return;let b=!1;u&&(u[e]===y?(u[n]=A,b=!0):u[e]!=0&&this._propagate(u)),b||(u=this.createSegment(m,A,y,f))},g=()=>{let m;for(;(m=p.peekValue())!==void 0;)d(h,m,l),h=m,l-=p.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=m=>{const A=i(m);let y;for(;(y=p.peekValue())!==void 0&&y<A;)d(h,y,l),h=y,l-=p.pop();if(r){let C=s(m);C!==c&&(g(),f=C,c=f)}h!==void 0&&d(h,A,l),h=A;const b=a(m);l+=b,p.push(b,o(m))},this.complete=()=>{g(),super.complete()}}}function Kv(t,e,n=0,r=t.length){const i=new Do,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const c=t[n+s];c>=i.peekValue()&&(i.push(s,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class qv{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 Jv extends q{constructor(e,n){if(super(),this.params=e,this._data=[],this.channel=e.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=O(this.params.pos),this.posBisector=fi(this.posAccessor),this.scoreAccessor=O(this.params.score),this.widthAccessor=O(this.params.width),this.laneAccessor=this.params.lane?O(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new qv(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=Kv(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const u=this._data[a],c=e(this.posAccessor(u))*n,f=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-f,c+f)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class _v extends q{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=sa(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const $v="0".charCodeAt(0);function*eC(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-$v}yield r}class tC extends q{get behavior(){return at}constructor(e){super();const n=O(e.exons??"exons"),r=O(e.start??"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=s=>{let a=r(s),u=a,c=!0;const f=n(s);for(const l of eC(f)){if(c)u=a+l;else{a=u+l;const h=Object.assign({},s);h[i]=u,h[o]=a,this._propagate(h)}c=!c}}}}class nC extends q{get behavior(){return at}constructor(e){super();const n=Ke(e.field).map(o=>O(o)),r=Ke(e.separator),i=Ke(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(u=>!u(o)))return;const s=n.map((u,c)=>u(o).split(r[c]));rC(s,o);const a=s[0].length;for(let u=0;u<a;u++){const c=Object.assign({},o);for(let f=0;f<n.length;f++)c[i[f]]=s[f][u];this._propagate(c)}}}}function rC(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 iC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=sa(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Nh extends q{get behavior(){return Bt}constructor(e,n){super();const r=e.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=O(e.chrom),s=Ke(e.pos).map(d=>O(d)),a=Ke(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Ke(e.offset);let c;if(u.length==0)c=new Array(s.length).fill(0);else if(u.length==1)c=new Array(s.length).fill(u[0]);else if(u.length==s.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((d,g)=>`datum[${JSON.stringify(d)}] = chromOffset + +posAccessors[${g}](datum) - ${c[g]};`).join(`
148
+ `));let l,h=0;const p=d=>{if(d!==l){if(h=i.cumulativeChromPositions.get(d),h===void 0)throw new Error("Unknown chromosome/contig: "+d);l=d}return h};this.handle=d=>{f(d,p(o(d)),s),this._propagate(d)}}}const zh={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 oC extends q{get behavior(){return Bt}constructor(e){super();const n=ja(zh),r=O(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 sC=65536;class aC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=me(e.spacing)?e.spacing:1,i=O(e.start),o=O(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(sC),a=O(e.preference),u=e.preferredOrder;let c=1/0;this.handle=f=>{const l=i(f);l<c&&s.fill(-1/0),c=l;const h=u.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 Do,a=new Do;let u=-1/0,c=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<u);){const p=s.pop();a.push(p,p)}u=l;let h=a.pop();h===void 0&&(h=c++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class uC extends q{get behavior(){return at}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=>O(i)),r=e.as?e.as:n.map(Z);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class cC extends q{get behavior(){return Bt}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=O(e.field);this.handle=o=>{const s=i(o);if(W(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 u=0;u<r.length;u++)o[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)o[r[u]]=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 lC extends q{get behavior(){return at}constructor(e){super();const n=Ke(e.columnRegex).map(h=>new RegExp(h)),r=Ke(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let s,a,u;const c=h=>{var m;const p=Object.keys(h),d=new Map;for(const[A,y]of n.entries())for(const b of p){const C=(m=y.exec(b))==null?void 0:m[1];if(C!==void 0){let B=d.get(C);B||(B=[],d.set(C,B)),B[A]=b}}s=[...d.entries()],a=p.filter(A=>!n.some(y=>y.test(A))&&!(i&&i.test(A)));const g=[...a.map(A=>JSON.stringify(A)+": datum["+JSON.stringify(A)+"]"),JSON.stringify(o)+": sampleId",...r.map(A=>JSON.stringify(A)+": null")];u=new Function("datum","sampleId",`return {
149
149
  `+g.join(`,
150
150
  `)+`
151
- };`)},f=h=>{s||c(h);for(const[p,d]of s){const g=u(h,p);for(let m=0;m<d.length;m++)g[r[m]]=h[d[m]];this._propagate(g)}},l=h=>{c(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{_0(h)&&(this.handle=l),super.beginBatch(h)}}}class uC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const e=this.params,n=e.as||["y0","y1"],r=e.sort?yu(e.sort.field,e.sort.order):void 0,i=e.field?O(e.field):()=>1,o=e.groupby.map(f=>O(f)),s=Xd(this.buffer,f=>o.map(l=>l(f)).join()).map(f=>f[1]);let a=f=>!0;if(e.baseField){const f=O(e.baseField);a=l=>f(l)!==null}let u,c;switch(e.offset){case"normalize":u=(f,l)=>f/l,c=(f,l)=>pi(f,l);break;case"center":u=(f,l)=>f-l/2,c=(f,l)=>pi(f,l);break;case"information":{const f=Math.log2(e.cardinality??4);u=(l,h)=>l/h,c=(l,h)=>{const d=pi(l,y=>+!a(y)),g=pi(l,h),m=g-d;let A=0;for(let y=0;y<l.length;y++){const b=l[y];if(a(b)){const C=h(b)/m;A-=C*Math.log2(C)}}return m/(f-(A+0))*(m/g)}}break;default:u=(f,l)=>f,c=(f,l)=>1}for(const f of s){r&&f.sort(r);const l=c(f,i);let h=0;for(const p of f){const d=h+i(p);a(p)&&(p[n[0]]=u(h,l),p[n[1]]=u(d,l),this._propagate(p),h=d)}}super.complete()}}class cC extends q{get behavior(){return at}constructor(e){super();const n=O(e.field??"sequence"),[r,i]=e.as??["pos","sequence"];this.handle=o=>{const s=Object.assign({},o,{[i]:"",[r]:0}),a=n(o);for(let u=0;u<a.length;u++){const c=Object.assign({},s);c[r]=u,c[i]=a.charAt(u),this._propagate(c)}}}}class lC extends q{get behavior(){return at}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=>O(o)),i=hi(this.buffer,...r);for(const[o,s]of ou(i)){const a={count:s.length};for(let u=0;u<n.length;u++)a[n[u]]=o[u];this._propagate(a)}super.complete()}}const fC="_uniqueId",zh=1e4,Oh=[null];class Gh extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.as=e.as??fC,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%zh==0&&(this._id=this._getBlock()*zh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Oh.length;return Oh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const hC={aggregate:lC,collect:su,coverage:Yv,filterScoredLabels:Zv,filter:Kv,flattenCompressedExons:_v,flattenDelimited:$v,flattenSequence:cC,formula:tC,identifier:Gh,linearizeGenomicCoordinate:kh,measureText:nC,pileup:iC,project:oC,regexExtract:sC,regexFold:aC,sample:$0,stack:uC};function dC(t,e){const n=hC[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function pC(t){return"values"in t}class gC extends On{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=So(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Ec(e,Sh(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 mC(t){return"url"in t}class AC 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=>Si({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=Ec(o,Sh(this.params));this.beginBatch({type:"file",url:s});for(const u of a)this._propagate(u)}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 xC(t){return"sequence"in t}class yC extends On{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 bC(t){return"dynamicSource"in t}class wC extends On{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=So(r)),this._propagate(n(r));this.complete()}async load(){}}function vC(t,e){if(pC(t))return new gC(t);if(mC(t))return new AC(t,e);if(xC(t))return new yC(t);if(bC(t))return new wC;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function CC(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
152
- `)+" };");return n.properties=e,n}class Uh extends q{get behavior(){return at}constructor(){super();const e=n=>{const r=CC(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{_0(n)&&(this.handle=e),super.beginBatch(n)}}}function EC(t){return"name"in t}class Hh extends On{constructor(n,r){super();he(this,ti,void 0);this.provider=r,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){Yn(this,ti,n),this.loadSynchronously()}loadSynchronously(){const n=Q(this,ti)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(n))n.length>0&&(r=So(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}ti=new WeakMap;class Qh{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)}findNamedDataSource(e){let n,r=[];for(const[i,o]of this._dataSourcesByHost.entries())if(o instanceof Hh&&e==o.identifier){if(n&&n!==o)throw new Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);n=o,r.push(i)}if(n)return{dataSource:n,hosts:r}}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 SC(t,e){const n=[];let r;const i=e??new Qh,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 u(f,l){for(const h of f){let p;try{p=dC(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&Bt&&a(new Uh),a(p)}}const c=f=>{if(n.push(r),f.spec.data){const l=Dv(f.spec.data)?f.getDynamicDataSource():EC(f.spec.data)?new Hh(f.spec.data,f.context.getNamedDataFromProvider):vC(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&u(f.spec.transform,f),f instanceof we){if(!r)throw new Error("A unit view has no (inherited) data source");const l=DC(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new Gh({type:"identifier"}));const h=new su({type:"collect",groupby:f.getFacetFields(),sort:BC(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}Lh(f.spec)};return c.postOrder=f=>{r=n.pop()},t.visit(c),o.forEach(f=>f()),i}function DC(t){var o;const e=[],n={},r=[];for(const[s,a]of Object.entries(t.getEncoding())){const u=s;kr(u)&&xf(a)&&r.push({channel:u,chromPosDef:a})}const i=hi(r,s=>Cn(s.channel),s=>s.chromPosDef.chrom);for(const[s,a]of i.entries())for(const[u,c]of a.entries()){const f=[],l=[],h=[];for(const{channel:p,chromPosDef:d}of c){const g=y=>y.replace(/[^A-Za-z0-9_]/g,""),m=["_linearized_",g(d.chrom),"_",g(d.pos)].join(""),A={...((o=t.spec.encoding)==null?void 0:o[p])??t.getEncoding()[p]??{},field:m};delete A.chrom,delete A.pos,!A.type&&d.type&&(A.type=d.type),n[p]=A,f.push(d.pos),h.push(d.offset??0),l.push(m)}e.push(new kh({type:"linearizeGenomicCoordinate",channel:s,chrom:u,pos:f,offset:h,as:l},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},V0(t.mark,"encoding")}}:void 0}function BC(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Pe(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Pr(n))return{field:n.field};if(!Rr(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function jh(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!jh(n,t))return!1;return!0}function au(t,e=!1){if(t instanceof su&&(e=!0),t instanceof Uh)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&au(n,e);return}t.behavior&at&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)au(t.children[n],e||n<r-1)}function FC(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 MC(t){if(au(t),!jh(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function IC(t){for(const e of t.dataSources)MC(e);FC(t)}function TC(t){t.visit(n=>{n instanceof we&&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 we&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function PC(t){for(const e of Lr){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}async function RC(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Si({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}
153
- 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 Vh(t){const e=[];t.visit(n=>{if(n instanceof Ch)return e.push(n),nh});for(const n of e){const r=n.context,i=await RC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Vh(o)}}class Yh{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Wh extends Yh{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=hi(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(...s.prepareRender(this.globalOptions).map(c=>r(c)));let u;for(const c of a){const f=c.coords;f.equals(u)||this.batch.push(r(()=>{n=s.setViewport(f,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class LC extends Yh{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class kC{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class NC{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 zC=t=>new Promise(e=>setTimeout(e,t));function OC(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),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(c-u)+u,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"):zC(t.delay).then(r):r()}class GC{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 OC({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function Xh(){const t=e=>e;return t.invert=e=>e,t.copy=Xh,t.invertRange=()=>{},t}class UC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new cv(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const HC="data:image/png;base64,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",QC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class jC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Tt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Va(Nh),texture:this._createTextureNow(HC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(W(r)&&(r=QC[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=YC(r,n),o=this.fontRepository+Zh(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=>Va(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Zh(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=>VC(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)=>{Qr(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=Qr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?s(a):o(u)})});return this._promises.push(i),r}}function Zh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function VC(t){const e=t.split(`
154
- `),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 YC(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 WC(t,e){const n=[];let r;for(const i of t.split(`
155
- `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class XC{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=Cd([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 ZC(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 KC(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((u,c)=>{const f=()=>{clearTimeout(r),i=l=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(f,e)})}}const Kh=new Map;async function qC(t,e,n){const r=t.symbol;let i=Kh.get(r)??await $C(t.symbol);return i?(Kh.set(r,i),nt`<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 JC(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 _C=KC(JC,500);function $C(t){return _C(t)}const eE=oe(".4~r"),tE=oe(".4~e");function nE(t){return t===null?nt`<span class="na">NA</span>`:W(t)?t.substring(0,30):Number.isInteger(t)?""+t:me(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?tE(t):eE(t):ai(t)?t?"True":"False":"?"+typeof t+" "+t}async function rE(t,e,n){const r=(a,u)=>{var c;for(const[f,l]of Object.entries(e.encoders))if((c=l==null?void 0:l.accessor)!=null&&c.fields.includes(a))switch(f){case"color":case"fill":case"stroke":return nt`<span class="color-legend" style="${`background-color: ${l(u)}`}"></span>`}return""},i=nt`<table class="attributes">${Object.entries(t).filter(([a,u])=>!a.startsWith("_")).map(([a,u])=>nt`<tr><th>${a}</th><td>${nE(u)} ${r(a,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),s=o?nt`<div class="title"><strong>${o}</strong></div>`:"";return nt`${s}${i}`}class iE extends Rh{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}N("index",ds,["continuous"]),N("locus",nm,["continuous"]),N("null",Xh,[]),Cc("fasta",WC);class qh{constructor(e,n,r={}){this.container=e,this.spec=n,this.accessorFactory=new j1,this.viewFactory=new Hv,this.namedDataProviders=[],this.animator=new GC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new XC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:rE,refseqgene:qC,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(o=>{for(const s of Object.values(o.resolutions.scale))s.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new iw(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new vA(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 UC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Qh,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new jC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Vh(this.viewRoot),(this.viewRoot instanceof we||this.viewRoot instanceof tn)&&(this.viewRoot=new iE(n,this.viewRoot)),TC(this.viewRoot),PC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof we&&i.push(a)});const o=SC(this.viewRoot,n.dataFlow);IC(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(u=>{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 u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>wo(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),oE(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new NC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=u=>{this.viewRoot.propagateInteractionEvent(new kC(s,u)),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 u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=ZC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...c,deltaMode:0,deltaX:0,deltaY:f});a(l)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var 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 we){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:s.mark,datum:u,uniqueId:i})})}if(this._currentHover)return Zr}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{if(!s.isPickingParticipant())return;const u=s.properties.tooltip;if(u!==null){const c=(u==null?void 0:u.handler)??"default",f=this.tooltipHandlers[c];if(!f)throw new Error("No such tooltip handler: "+c);return f(a,s,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Wh({picking:!1},this._glHelper),this._pickingContext=new Wh({picking:!0},this._glHelper),e.render(new LC(this._renderingContext,this._pickingContext),zn.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof we&&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 oE(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const sE="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function aE(t,e,n={}){let r;if(W(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const o=Le(e)?e:await Jh(e);if(o.baseUrl??(o.baseUrl=""),o.width??(o.width="container"),o.padding??(o.padding=10),r==document.body){const s=document.createElement("div");s.style.position="fixed",s.style.inset="0",s.style.overflow="hidden",r.appendChild(s),r=s}i=new qh(r,o,n),uE(i,n),await i.launch()}catch(o){r.innerText=o.toString(),console.error(o)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(o,s){const a=i._eventListeners;let u=a.get(o);u||(u=new Set,a.set(o,u)),u.add(s)},removeEventListener(o,s){var u;(u=i._eventListeners.get(o))==null||u.delete(s)},getScaleResolutionByName(o){return i.getNamedScaleResolutions().get(o)},updateNamedData:i.updateNamedData.bind(i)}}function uE(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Jh(t){let e;try{e=JSON.parse(await Si().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}P.GenomeSpy=qh,P.embed=aE,P.html=nt,P.icon=sE,P.loadSpec=Jh,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})});
151
+ };`)},f=h=>{s||c(h);for(const[p,d]of s){const g=u(h,p);for(let m=0;m<d.length;m++)g[r[m]]=h[d[m]];this._propagate(g)}},l=h=>{c(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{$0(h)&&(this.handle=l),super.beginBatch(h)}}}class fC extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const e=this.params,n=e.as||["y0","y1"],r=e.sort?yu(e.sort.field,e.sort.order):void 0,i=e.field?O(e.field):()=>1,o=e.groupby.map(f=>O(f)),s=Zd(this.buffer,f=>o.map(l=>l(f)).join()).map(f=>f[1]);let a=f=>!0;if(e.baseField){const f=O(e.baseField);a=l=>f(l)!==null}let u,c;switch(e.offset){case"normalize":u=(f,l)=>f/l,c=(f,l)=>pi(f,l);break;case"center":u=(f,l)=>f-l/2,c=(f,l)=>pi(f,l);break;case"information":{const f=Math.log2(e.cardinality??4);u=(l,h)=>l/h,c=(l,h)=>{const d=pi(l,y=>+!a(y)),g=pi(l,h),m=g-d;let A=0;for(let y=0;y<l.length;y++){const b=l[y];if(a(b)){const C=h(b)/m;A-=C*Math.log2(C)}}return m/(f-(A+0))*(m/g)}}break;default:u=(f,l)=>f,c=(f,l)=>1}for(const f of s){r&&f.sort(r);const l=c(f,i);let h=0;for(const p of f){const d=h+i(p);a(p)&&(p[n[0]]=u(h,l),p[n[1]]=u(d,l),this._propagate(p),h=d)}}super.complete()}}class hC extends q{get behavior(){return at}constructor(e){super();const n=O(e.field??"sequence"),[r,i]=e.as??["pos","sequence"];this.handle=o=>{const s=Object.assign({},o,{[i]:"",[r]:0}),a=n(o);for(let u=0;u<a.length;u++){const c=Object.assign({},s);c[r]=u,c[i]=a.charAt(u),this._propagate(c)}}}}class dC extends q{get behavior(){return at}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=>O(o)),i=hi(this.buffer,...r);for(const[o,s]of ou(i)){const a={count:s.length};for(let u=0;u<n.length;u++)a[n[u]]=o[u];this._propagate(a)}super.complete()}}const pC="_uniqueId",Oh=1e4,Gh=[null];class Uh extends q{get behavior(){return Bt}constructor(e){super(),this.params=e,this.as=e.as??pC,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%Oh==0&&(this._id=this._getBlock()*Oh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Gh.length;return Gh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const gC={aggregate:dC,collect:su,coverage:Zv,filterScoredLabels:Jv,filter:_v,flattenCompressedExons:tC,flattenDelimited:nC,flattenSequence:hC,formula:iC,identifier:Uh,linearizeGenomicCoordinate:Nh,measureText:oC,pileup:aC,project:uC,regexExtract:cC,regexFold:lC,sample:eh,stack:fC};function mC(t,e){const n=gC[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function AC(t){return"values"in t}class xC extends On{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=So(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Ec(e,Dh(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 yC(t){return"url"in t}class bC 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=>Si({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=Ec(o,Dh(this.params));this.beginBatch({type:"file",url:s});for(const u of a)this._propagate(u)}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 wC(t){return"sequence"in t}class vC extends On{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 CC(t){return"dynamicSource"in t}class EC extends On{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=So(r)),this._propagate(n(r));this.complete()}async load(){}}function SC(t,e){if(AC(t))return new xC(t);if(yC(t))return new bC(t,e);if(wC(t))return new vC(t);if(CC(t))return new EC;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function DC(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
152
+ `)+" };");return n.properties=e,n}class Hh extends q{get behavior(){return at}constructor(){super();const e=n=>{const r=DC(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{$0(n)&&(this.handle=e),super.beginBatch(n)}}}function BC(t){return"name"in t}class Qh extends On{constructor(n,r){super();he(this,ti,void 0);this.provider=r,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){Yn(this,ti,n),this.loadSynchronously()}loadSynchronously(){const n=Q(this,ti)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(n))n.length>0&&(r=So(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}ti=new WeakMap;class jh{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)}findNamedDataSource(e){let n,r=[];for(const[i,o]of this._dataSourcesByHost.entries())if(o instanceof Qh&&e==o.identifier){if(n&&n!==o)throw new Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);n=o,r.push(i)}if(n)return{dataSource:n,hosts:r}}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 FC(t,e){const n=[];let r;const i=e??new jh,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 u(f,l){for(const h of f){let p;try{p=mC(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&Bt&&a(new Hh),a(p)}}const c=f=>{if(n.push(r),f.spec.data){const l=Mv(f.spec.data)?f.getDynamicDataSource():BC(f.spec.data)?new Qh(f.spec.data,f.context.getNamedDataFromProvider):SC(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&u(f.spec.transform,f),f instanceof we){if(!r)throw new Error("A unit view has no (inherited) data source");const l=MC(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new Uh({type:"identifier"}));const h=new su({type:"collect",groupby:f.getFacetFields(),sort:IC(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}kh(f.spec)};return c.postOrder=f=>{r=n.pop()},t.visit(c),o.forEach(f=>f()),i}function MC(t){var o;const e=[],n={},r=[];for(const[s,a]of Object.entries(t.getEncoding())){const u=s;kr(u)&&xf(a)&&r.push({channel:u,chromPosDef:a})}const i=hi(r,s=>Cn(s.channel),s=>s.chromPosDef.chrom);for(const[s,a]of i.entries())for(const[u,c]of a.entries()){const f=[],l=[],h=[];for(const{channel:p,chromPosDef:d}of c){const g=y=>y.replace(/[^A-Za-z0-9_]/g,""),m=["_linearized_",g(d.chrom),"_",g(d.pos)].join(""),A={...((o=t.spec.encoding)==null?void 0:o[p])??t.getEncoding()[p]??{},field:m};delete A.chrom,delete A.pos,!A.type&&d.type&&(A.type=d.type),n[p]=A,f.push(d.pos),h.push(d.offset??0),l.push(m)}e.push(new Nh({type:"linearizeGenomicCoordinate",channel:s,chrom:u,pos:f,offset:h,as:l},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},W0(t.mark,"encoding")}}:void 0}function IC(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Pe(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Pr(n))return{field:n.field};if(!Rr(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function Vh(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Vh(n,t))return!1;return!0}function au(t,e=!1){if(t instanceof su&&(e=!0),t instanceof Hh)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&au(n,e);return}t.behavior&at&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)au(t.children[n],e||n<r-1)}function TC(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 PC(t){if(au(t),!Vh(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function RC(t){for(const e of t.dataSources)PC(e);TC(t)}function LC(t){t.visit(n=>{n instanceof we&&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 we&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function kC(t){for(const e of Lr){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}async function NC(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Si({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}
153
+ 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 Yh(t){const e=[];t.visit(n=>{if(n instanceof Eh)return e.push(n),rh});for(const n of e){const r=n.context,i=await NC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Yh(o)}}class Wh{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Xh extends Wh{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=hi(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(...s.prepareRender(this.globalOptions).map(c=>r(c)));let u;for(const c of a){const f=c.coords;f.equals(u)||this.batch.push(r(()=>{n=s.setViewport(f,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class zC extends Wh{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 OC{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 GC{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 UC=t=>new Promise(e=>setTimeout(e,t));function HC(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),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(c-u)+u,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"):UC(t.delay).then(r):r()}class QC{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 HC({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function Zh(){const t=e=>e;return t.invert=e=>e,t.copy=Zh,t.invertRange=()=>{},t}class jC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new hv(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const VC="data:image/png;base64,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",YC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class WC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Tt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:ja(zh),texture:this._createTextureNow(VC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(W(r)&&(r=YC[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=ZC(r,n),o=this.fontRepository+Kh(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=>ja(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Kh(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=>XC(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)=>{Qr(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=Qr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?s(a):o(u)})});return this._promises.push(i),r}}function Kh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function XC(t){const e=t.split(`
154
+ `),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 ZC(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 KC(t,e){const n=[];let r;for(const i of t.split(`
155
+ `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class qC{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=Ed([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 JC(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 _C(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((u,c)=>{const f=()=>{clearTimeout(r),i=l=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(f,e)})}}const qh=new Map;async function $C(t,e,n){const r=t.symbol;let i=qh.get(r)??await nE(t.symbol);return i?(qh.set(r,i),nt`<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 eE(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 tE=_C(eE,500);function nE(t){return tE(t)}const rE=oe(".4~r"),iE=oe(".4~e");function oE(t){return t===null?nt`<span class="na">NA</span>`:W(t)?t.substring(0,30):Number.isInteger(t)?""+t:me(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?iE(t):rE(t):ai(t)?t?"True":"False":"?"+typeof t+" "+t}async function sE(t,e,n){const r=(u,c)=>{var f;for(const[l,h]of Object.entries(e.encoders))if((f=h==null?void 0:h.accessor)!=null&&f.fields.includes(u))switch(l){case"color":case"fill":case"stroke":return nt`<span class="color-legend" style="${`background-color: ${h(c)}`}"></span>`}return""},i=Object.entries(t).filter(([u,c])=>!u.startsWith("_"));if(i.length===0)return;const o=nt`<table class="attributes">${i.map(([u,c])=>nt`<tr><th>${u}</th><td>${oE(c)} ${r(u,t)}</td></tr>`)}</table>`,s=e.unitView.getTitleText(),a=s?nt`<div class="title"><strong>${s}</strong></div>`:"";return nt`${a}${o}`}class aE extends Lh{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}N("index",ds,["continuous"]),N("locus",rm,["continuous"]),N("null",Zh,[]),Cc("fasta",KC);class Jh{constructor(e,n,r={}){this.container=e,this.spec=n,this.accessorFactory=new V1,this.viewFactory=new Vv,this.namedDataProviders=[],this.animator=new QC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new qC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:sE,refseqgene:$C,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(o=>{for(const s of Object.values(o.resolutions.scale))s.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new aw(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new CA(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 jC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new jh,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new WC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Yh(this.viewRoot),(this.viewRoot instanceof we||this.viewRoot instanceof tn)&&(this.viewRoot=new aE(n,this.viewRoot)),LC(this.viewRoot),kC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof we&&i.push(a)});const o=FC(this.viewRoot,n.dataFlow);RC(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(u=>{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 u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>wo(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),uE(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new GC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=u=>{this.viewRoot.propagateInteractionEvent(new OC(s,u)),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 u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=JC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...c,deltaMode:0,deltaX:0,deltaY:f});a(l)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var 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 we){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:s.mark,datum:u,uniqueId:i})})}if(this._currentHover)return Zr}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{if(!s.isPickingParticipant())return;const u=s.properties.tooltip;if(u!==null){const c=(u==null?void 0:u.handler)??"default",f=this.tooltipHandlers[c];if(!f)throw new Error("No such tooltip handler: "+c);return f(a,s,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Xh({picking:!1},this._glHelper),this._pickingContext=new Xh({picking:!0},this._glHelper),e.render(new zC(this._renderingContext,this._pickingContext),zn.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof we&&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 uE(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const cE="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function lE(t,e,n={}){let r;if(W(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const o=Le(e)?e:await _h(e);if(o.baseUrl??(o.baseUrl=""),o.width??(o.width="container"),o.padding??(o.padding=10),r==document.body){const s=document.createElement("div");s.style.position="fixed",s.style.inset="0",s.style.overflow="hidden",r.appendChild(s),r=s}i=new Jh(r,o,n),fE(i,n),await i.launch()}catch(o){r.innerText=o.toString(),console.error(o)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(o,s){const a=i._eventListeners;let u=a.get(o);u||(u=new Set,a.set(o,u)),u.add(s)},removeEventListener(o,s){var u;(u=i._eventListeners.get(o))==null||u.delete(s)},getScaleResolutionByName(o){return i.getNamedScaleResolutions().get(o)},updateNamedData:i.updateNamedData.bind(i)}}function fE(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function _h(t){let e;try{e=JSON.parse(await Si().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}P.GenomeSpy=Jh,P.embed=lE,P.html=nt,P.icon=cE,P.loadSpec=_h,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})});